Reverse Engineer Game Controller with custom PS2 Interface

shanus: I had something similar and couldn't work out why it didn't show up as a USB device. Spent hours trying to re-flash the firmware onto the device in different ways.

Then I read the code and realized it does not initialize USB connection until the throttle is plugged in! I changed the code (as I didn't have the wiring ready) and it showed up!

This may not be your problem, but might help someone else?

My problem now is the device seems to disconnect after a random amount of time, and then immediately windows 10 says its now an unrecognized device as getting "USB Device Not Recognized, Unknown USB Device (Device Descriptor Request Failed)" :(

Update: I've not lost USB Device connection (so far) since preventing windows from putting the device to sleep. I've noticed I do get this message sometimes on initial connect, but remove and replug works. Seems there is maybe a USB timing issue or something ...

Hmmm... As I remember, I also tried plugging USB in with the throttle connected (I purchased a socket for that, so that I do not have to cut the plug from the wire), but it did not work either. Anyway, I will try again, as it is well possible that I miswired the plug and the microcontroller... :-)

Thanks again for the info!

OK, making progress... sort of.

Last time I probably made something wrong with the wiring, because when now I connected everything again (wires from the separate PS2 socket to the Leonardo, plug of the throttle quadrant to the socket), uploaded the compiled unmodified code to the Leonardo, and replugged it to USB, my laptop started to pick it up. Not without weird things, though... :-(

Weird thing #1: Sometimes (once or twice out of every 10 attempt, or so) Windows says Unrecognized USB device. Another replug fixes it, so albeit annoying, but this is something one can live with.

Weird thing #2: When not unrecognized, the Leonardo gets properly detected as USB Input device in Device Manager (sometimes it takes 10-20 seconds after plugging it in - maybe I did not wait this long when fiddling with it last time), and if the Throttle quadrant drivers from Logitech are downloaded, extracted and installed manually, it even gets detected as Flight Throttle Quadrant (USB). Hooray! BUT...!!!

After an additional 15-20 or so seconds, a yellow exclamation mark appears on the device name, and on the General tab of the device, the message "This device cannot start. (Code 10) The I/O request was canceled." appears. Also, on the Events tab, the message "Device USB\VID_06A3&PID_0C2D\0 was not migrated due to partial or ambiguous match." appears, with "Status: 0xC0000719". All this sound like if the throttle quadrant/Leonardo is not willing to communicate through USB.

My conclusion is that the potential cause is one of the following: 1. The Leonardo code has some sort of issue/bug. I don't think this is the case, as others have it up and running. 2. My particular Leonardo board has an issue. As it can run other code, and can be detected/flashed without issues, this might not be the cause either. 3. Something is still misconnected/miswired. I also think this is not likely, I have the green LED on the throttle lit, and USB connection is up, so it gets detected by the Leonardo. 4. USB port is not capable of supplying enough current. Not sure about this. 5. Something software on my laptop. Trying to figure this out. Win10 is up to date (20H2), and AFAIK in good shape, no issues with it.

Any help is really appreciated! I will drop a line if I get any further on my own.

Same issue on a desktop computer, so power issues (No. 4) can be rules out I think.

I may give old Saitek drivers a shot...

rokapet: OK, making progress... sort of.

Last time I probably made something wrong with the wiring, because when now I connected everything again (wires from the separate PS2 socket to the Leonardo, plug of the throttle quadrant to the socket), uploaded the compiled unmodified code to the Leonardo, and replugged it to USB, my laptop started to pick it up. Not without weird things, though... :-(

Weird thing #1: Sometimes (once or twice out of every 10 attempt, or so) Windows says Unrecognized USB device. Another replug fixes it, so albeit annoying, but this is something one can live with.

Weird thing #2: When not unrecognized, the Leonardo gets properly detected as USB Input device in Device Manager (sometimes it takes 10-20 seconds after plugging it in - maybe I did not wait this long when fiddling with it last time), and if the Throttle quadrant drivers from Logitech are downloaded, extracted and installed manually, it even gets detected as Flight Throttle Quadrant (USB). Hooray! BUT...!!!

After an additional 15-20 or so seconds, a yellow exclamation mark appears on the device name, and on the General tab of the device, the message "This device cannot start. (Code 10) The I/O request was canceled." appears. Also, on the Events tab, the message "Device USB\VID_06A3&PID_0C2D\0 was not migrated due to partial or ambiguous match." appears, with "Status: 0xC0000719". All this sound like if the throttle quadrant/Leonardo is not willing to communicate through USB.

My conclusion is that the potential cause is one of the following: 1. The Leonardo code has some sort of issue/bug. I don't think this is the case, as others have it up and running. 2. My particular Leonardo board has an issue. As it can run other code, and can be detected/flashed without issues, this might not be the cause either. 3. Something is still misconnected/miswired. I also think this is not likely, I have the green LED on the throttle lit, and USB connection is up, so it gets detected by the Leonardo. 4. USB port is not capable of supplying enough current. Not sure about this. 5. Something software on my laptop. Trying to figure this out. Win10 is up to date (20H2), and AFAIK in good shape, no issues with it.

Any help is really appreciated! I will drop a line if I get any further on my own.

Did you try my solution in post #20? Since disabling power-saving for the device in windows it's been rock steady once recognized. Still have the occasional device unrecognized when I do remove and re-plug it in, but I can easily live with that as I tend to just leave it connected.

shanus:
Did you try my solution in post #20? Since disabling power-saving for the device in windows it’s been rock steady once recognized. Still have the occasional device unrecognized when I do remove and re-plug it in, but I can easily live with that as I tend to just leave it connected.

I did disable power management on the USB controller items, yes. The controller does not have such a tab.
BTW, old Saitek drivers did not make a difference…

I was thinking of designing a PCB that would take a Arduino Pro Micro and a 6 pin mini din and convert the Logitech customer mini DIN connection to USB so I can use my Logitech throttle quadrant without the Yoke.

I take it you would be okay with me using your code solution for personal use, but would you be okay with me putting your code solution on items I manufacture and sell on Etsy/eBay etc?

I would be happy to make the PCB design open-source so anyone who wishes to print a PCB themselves would be welcome to do so.

I wouldn't be charging a heap for them. Just enough to get the per-unit cost down for myself as getting a single PCB printed is quite expensive whilst getting 10 or so printed doesn't cost that much extra.

Thanks

Mike

Hey Mike,

That's a cool idea. Please feel free to use the code for your project.

1 Like

That's awesome.

Thanks.

Do you have your work on GitHub so I can credit you?

Mike

I've sent you a DM