Help detecting Hyperkin X91
-
Hi All. I finally decided to install Retropie (4.4) in a raspberry pi 3b+. It was mainly after getting two X91's for my pc, that I realized a retropie console would be portable to play with friends. The thing is, it recognizes all my other controllers (xbox 360 wired, ps4 wired, even an off brand copy of a super nintendo controller), but with the X91, it doesn't even recognize it as an input device.
I searched around the web, and some people apparently made it work (afaik in 4.3) by modding xpad and recompiling it, but I had no success.
Steps I followed:
#move to xpad folder
/opt/retropie/supplementary/xpad#edit xpad.c file to include the x91 as a device, and hyperkin as a vendor, by adding the following lines:
#in declaration of vector xpad_device
{ 0x2e24, 0x1688, "Hyperkin X91", 0, XTYPE_XBOXONE },
#in declaration of vector usb_device_id
XPAD_XBOXONE_VENDOR(0x2e24), /* Hyperkin Controllers */#Then I removed xpad in its current state with :
sudo dkms remove -m xpad -v 0.4 --all#And recompiled it with:
sudo dkms install -m xpad -v 0.4Device wasn't recognized as an input device even after reboot. Also, don't know if noteworthy, but when using lsusb to determine if it was being picked up, the vendor Id and Product ID were picked up, but not the name; but with dmesg and udevadm monitor they picked up the name. None recognized it as an input device.
I know xpad is working because it picked up the 360 controller.Also, is there a way to get the old Retropie Images?, It would be interesting to try this method in the version I think it was said it worked (posts dated pre 4.4 update)
Thanks in advance, I really hope this can get figured out because the form factor of the controllers is great, and has the retro-console vibe.
-
Have you plugged the controller into a pc and verified the usb device id? Source code syntax isn't my forte but I noticed this line in the code "The Xbox One controller uses subclass 71 and protocol 208" Maybe usb_device_id needs to be "XPAD_XBOXONE_VENDOR_PROTOCOL((0x2e24), 208)"
I believe you can get older retropie versions here
https://github.com/RetroPie/RetroPie-Setup/releases -
@GoldManSex778 Thanks for answering. Regarding device ID it was the same one I was given.
And somehow the old release didn't work, it couldn't boot (likely my mistake). I flashed the sd card again with 4.4, performed the same steps I did before (but using --force in dkms), rebooted and voila, it worked.Thanks again, I'll see to make a more detailed post with the exact procedure I made, just in case anyone else wants to do it too.
-
@thebarry1394 said in Help detecting Hyperkin X91:
And somehow the old release didn't work, it couldn't boot (likely my mistake)
A 3B+ model would not work with older releases, the kernel doesn't have support for it - only the 4.4 image is ok.
If you give more details about the device (
lsbusb -v
) and confirm it's working, we can submit the IDs to be included in the upstreamxpad
repository, so other don't have to re-compile.Another trick, that doesn't require recompiling, is to bind the driver (
xpad
) to the device IDs with an udev rule - https://github.com/atar-axis/xpadneo/blob/master/hid-xpadneo/src/udev_rules/99-xpadneo.rules. -
Thank you. Regarding the device info, here's the paste with the result for lsusb on the device : https://pastebin.com/HeVn2Zsg
I have tested with some roms, it was picked up and I was able to map all buttons, so far is working well. Also, now I have this result in dmesg:
[ 2.321644] usb 1-1.1.2: new full-speed USB device number 5 using dwc_otg [ 2.455005] usb 1-1.1.2: New USB device found, idVendor=2e24, idProduct=1688 [ 2.455023] usb 1-1.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2.455032] usb 1-1.1.2: Product: Hyperkin X91 [ 2.455040] usb 1-1.1.2: Manufacturer: DDR [ 2.455049] usb 1-1.1.2: SerialNumber: 000041295584D593 [ 3.159216] xpad: loading out-of-tree module taints kernel. [ 3.160893] input: Hyperkin X91 as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/input/input2 [ 3.161210] usbcore: registered new interface driver xpad
-
@thebarry1394 Thanks. It looks like somebody already submitted a request to be included in the upstream
xpad
project - https://github.com/paroj/xpad/pull/125 - so hopefully in the future it will be easily recognized, without manual patching.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.