**TLDR**  I reverse engineered the PCB inside a Logitech DFGT, so that you could use aftermarket wheels, add buttons but not have to use any external usb device, or solder wires to each button individually. These aftermarket buttons would be read just as the stock wheel, meaning plugged into a console the PS button or Xbox button would still function normally(** I don't own a console to test this but I'm pretty sure about it), on PC not a huge deal cause you usually can map whatever button to whatever. For PC simmers with a Logitech wheel means you can add buttons or even a button box(if you remove the stock wheel controls) but not have to add more cables to your setup and all buttons would be treated as stock.

Let me begin this is my first post of one of my projects, tbh I usually get a project working just good enough for me and don't release it cause I know there are issues. In this case I feel like maybe just maybe someone may find this of use or interest. Cause this completely was accidental/unexpected. First time I went down a rabbit hole and actually found the other side.. 

I recently purchased a new Logitech G920(primarily for the pedals but after a lot of driver issues and force feedback actually using the new wheel now), this is to replace my old bought used Logitech Driving Force GT. Which is still in great working order, have always been surprised how well this wheel has held up over the years, but now since I had a backup/replacement in the G920 it allowed me to dive into some mods I had been wanting to do. Mainly add a quick attach/release mount to the wheel, so I could attach aftermarket steering wheels, this thing https://www.thingiverse.com/thing:4680058 made quick work of that, and even allowed for a connection to still be made. The use case in his video which is attaching the stock wheel back to the base, the buttons would only work with the stock wheel. Not to say there is not another way to retain the factory buttons, this video the board from the wheel is removed and placed in he base then wires to each button are soldered and ran to the wheel, which great works factory buttons, but requires a full disassembly, a lot of soldering some of which like for start and Select you have to solder on the pads.  As well as just adding an Arduino Micro/Leonardo and making a whole new controller, which again works great but now you have another USB device. Honestly I would have gone one of these routes myself as I have tinkered with Arduinos for years and fusion 360 but have absolutely no formal education in electronics/engineering. But then I decided to just look at the buttons and noticed the same three chips and said what the heck lets google it..... 

Turns out the chips is a 74HC165(D), a common 8-bit Shift Register, and instantly recognized it as remembering using them with a 7 segment display. I am going to skip the step by step because honestly there was none, I just got my multimeter out and started poking around. I first identified ground and power, as I figured prolly best to know where those are to not fry anything. Not sure if this is a common thing but threw me for a loop for a little that ground was the red wire and 5v was the brown wire, after triple checking just with the wheel unplugged and continuity test, plugged in and measure the voltage and indeed found 5v and ground with out frying anything, WOOHOO. After this I knew I needed to find where the Serial output and Clock input as my idea was to grab an Arduino Nano and see if I could read the buttons, to me this meant I could make my own button board and feed it back to the Logitech stock board and emulate(but not really emulating cause I am giving it the same data just different board).  I started from the plug on the pcb then started probing(again wheel is unplugged and using continuity test) to trace what goes where on the plug to the chip closest to the plug.  I then referenced...

Read more »