Gamepad not recognized by raspbian/retropie : SOG-WXGP (Shanwan)
-
Hello :)
I'm asking for some help about a gamepad. It's a SOG-WXGP (spirit of gamer). It doesn't work at all (jstest gives nothing) on the raspberry pi (running raspbian stretch), but it works perfectly on a desktop computer (running debian stretch).
Rasperry pi :
Model 3B+, official power supply (5V 2.5A), OS on the sdcard
Raspbian stretch installed first (from the official raspbian website), and then Retropie installed from the git repo installer
Kernel : 4.14.52-v7+
USB devices connected : USB keyboard / USB hub (not self-powered) / SOG gamepad / Thrustmaster gamepad
Retropie setup script : 4.4.2
Retropie version : sorry i don't know, but installed few days ago (basic install)I've found some information with dmesg and lsusb, both on the debian dsktop computer and on the raspberry :
The SOG gamepad (on the raspberry) seems to change his USB vendor id and product id after a short time, from 2563:0575 to 045e:028e, which is a microsoft xbox game controler id... (and the constructor is always Shanwan). On the desktop computer, it's 20bc:5500 (no description)
lsusb -t says that the driver is xpad on the raspberry and on the desktop computer, it's usbhid.I blacklisted xpad and unload the module (and restart the raspberry), but when i plug the joypad, lsusb -t show no driver. usbhid driver is not handeling this pad automatically, but it does for the keyboard and the thrustmaster pad.
Another strange thing is that the usbhid module doesn't appears on the list from lsmod, but it's loaded
Do you know how to force usbhid to handle this gamepad, instead of xpad? Because usbhid works on the desktop computer, so...
I don't really know what to do next :(PS : I also tried xboxdrv and hid_dr, but it has done nothing
Please, you can ask for more information if you want :)
-
I forgot : For information, this is a wired joypad, not a wireless one
-
You mentioned a no-powered USB hub. Are you running the controller through the hub? If so try running it directly from the Pi without the hub. Your power supply may not be enough for the hub, or if you are using a USB hub, it probably won’t work at all. USB 2 hubs work fine, but USB 3 hubs are problematic
-
Thanks for the answer :)
It's an USB2 hub (icy box, IB-HUB1409-U3). I tried the SOG with and without the hub, no changes. I tried the trustmaster with and without it, it works in both case. I also tried only with the SOG, directly on the rasperry pi, no trustmaster, still not recognized
-
Sorry, the USB hub is USB3 compatible, my bad. But I don't think it's the problem, because it works with the trustmaster joypad, and the SOG-WXGP joypad doesn't work with or without the hub
-
Usually, controllers supporting several devices have a switch between the connection modes they support (PS3, X-Input, DirectInput, Switch, Android, etc.), but it seems your controller tries to guess which device is connected to and starts in a certain mode.
You can force a certain driver to handle the gamepad - see https://unix.stackexchange.com/questions/12005/how-to-use-linux-kernel-driver-bind-unbind-interface-for-usb-hid-devices - but that still might not work if the controller 'thinks' it's using a certain connection mode. -
There are drivers for Shanwan hardware on GitHub, but I also can't find one for my specific product ID. I did try one and got rumble to work for a day, but after rebooting I'm still unable to get it working again. I suggest writing to the seller and manufacture with a request to make Linux drivers for their products.
-
@Andrew-Przelucki Shanwan is a vendor providing more than a few input devices, I'm not sure the one you have is directly related to the one reported in this topic.
I suggest writing to the seller and manufacture with a request to make Linux drivers for their products.
The original poster hasn't been here in 5 years. If your request is for them, I'm not sure they'll get the message.
You can do the same and write to the manufacturer and let them know your issues with Linux support. Another option is to vote with your wallet instead and buy a Linux compatible device, returning the faulty one.
-
@mitu Thanks for the suggestions! First I need to stress that this subject (overall) is still relevant as many people have this manufacturer's hardware. I found several solutions, including a driver and script that modifies the device controller to enable rumble, but all these solutions aren't for my particular hardware ID (2563:0526). I actually did manage to enable rumble on Linux once, I played around with xboxdrv, loaded the custom driver and used the script, and eventually rumble did work - until I did a reboot. So far, I can't get rumble to work again, despite modifying a bit the driver source code. Whatever I did worked, somehow. I had properly working rumble which I tested with fftest and in-game using an emulator. My gamepad is generally supported by the usbhid driver, all axes, buttons and HAT work properly, but not rumble (fftest says functions not implemented). But my successful attempt proved that that the gamepad can be fully supported under Linux, it's just a matter of slight driver modification. It's a good gamepad, better than much more expensive alternatives which claim to have superior design. That being said, I did send an email to the manufacturer (link) and my local seller. There are many posts on the web about this hardware type, I'm searching everywhere. Those who have the product ID matching the script or driver have full hardware support on Linux. So this hardware can be fully working under Linux. Maybe future updates to usbhid will provide rumble.
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.