Forking GIMX to Support 3rd Party Controllers
Posted: Sat Dec 19, 2020 1:35 am
So today I created a fork from the GIMX source code, and have been combing through it to try to figure out if there's a way to add support for 3rd-party xbox360 controllers. I understand that the controller is necessary in order to provide the encrypted security signal so that the xbox360 will accept the adapter's input, but since many 3rd-party controllers have the security chip, and work fine on their own with the xbox, it seems like it shouldn't be too hard to make one work with GIMX.
I checked through the code, and looking at the file \core\connectors\usb_con.c at line 619 it appears that the program looks for a connected controller based on the VID and PID of the official wired xbox controller. These are defined in \shared\gimxcontroller\include\x360.h Since my third-party controller works the exact same way as an official controller, and has a security chip, it seems that if I can just get GIMX to connect to it, it should work, right? So all I did was change the hard-coded vendor id and product id (which are 0x045e and 0x028e) to the VID and PID of my 3rd-party controller (which I got using lsusb in the terminal.)
However, upon connecting everything and starting GIMX-launcher (after recompiling the code, of course,) it still gives me the same old message that it couldn't find a wired 360 controller on usb ports.
Does anyone with more familiarity with the source code have any pointers on where else I might need to change the code? Or am I just on a wild goose chase here, and there's really no way to accomplish what I want?
Thanks in advance for any help!
I checked through the code, and looking at the file \core\connectors\usb_con.c at line 619 it appears that the program looks for a connected controller based on the VID and PID of the official wired xbox controller. These are defined in \shared\gimxcontroller\include\x360.h Since my third-party controller works the exact same way as an official controller, and has a security chip, it seems that if I can just get GIMX to connect to it, it should work, right? So all I did was change the hard-coded vendor id and product id (which are 0x045e and 0x028e) to the VID and PID of my 3rd-party controller (which I got using lsusb in the terminal.)
However, upon connecting everything and starting GIMX-launcher (after recompiling the code, of course,) it still gives me the same old message that it couldn't find a wired 360 controller on usb ports.
Does anyone with more familiarity with the source code have any pointers on where else I might need to change the code? Or am I just on a wild goose chase here, and there's really no way to accomplish what I want?
Thanks in advance for any help!