Input Scrambled After Retropie Update
-
About a month ago I started using my Pi4 again. Long story short, I ended up flashing my SD card with a fresh Retropie image for the Pi4 about 3 weeks ago to ensure my installation was clean and that I could use a new screen I bought for it. I also purchased a usb SN30pro controller which had been working great so far. Last night I decided to update Retropie, so I ran the script for it in the Retropie menu.
After this, a few things happened. My start and select buttons stopped being recognized and I couldn't use my hotkeys for one. Secondly, instead of using my hotkey button and start, clicking my two analog sticks in would allow me to exit the game. I figured this was an input issue so I tried redoing my inputs and found that my trigger buttons are no longer recognized. I am not sure why this is suddenly a problem. This controller is recognized as an Xbox 360 controller so I tried reinstalling those drivers from the Retropie Setup menu as well but no change. Then I tried uninstalling them and still no change. I've restarted numerous times and tried other usb ports but nothing seems to affect this and it happens across all games and in EmulationStation. I cannot find a solution anywhere so far.
I am currently on Retropie 4.7.12. My power supply so far as shown no issues and I never go under-voltage. Performance of the unit is otherwise just fine, it's just input that is holding me back right now.
For clarification, my input on the SN30 Pro controller was basically what you would expect from a Super Nintendo with analog sticks. I had my hotkey button as the rightmost extra button, and the leftmost one was functionless. After this update, Start seems to be on L3 and select seems to be on this rightmost extra button. The actual Select and Start buttons do nothing, and like I said, the triggers are not recognized, which is really my main problem so far.
-
@gabraham said in Input Scrambled After Retropie Update:
This controller is recognized as an Xbox 360 controller so I tried reinstalling those drivers from the Retropie Setup menu as well but no change.
Which driver did you update ? You should update the
xpad
driver and restart, then re-do the mapping in EmulationStation - the triggers should be recognized. -
@mitu said in Input Scrambled After Retropie Update:
You should update the
xpad
driver and restart, then re-do the mapping in EmulationStation - the triggers should be recognized.I updated the xboxdrv drivers. I will try the xpad ones now.
-
@gabraham
xboxdrv
is NOT a driver for Xbox controllers - it just simulates ones. You should uninstall it, unless you've specifically configured it as detailed in https://retropie.org.uk/docs/Universal-Controller-Calibration-%26-Mapping-Using-xboxdrv/. -
@mitu I uninstalled the xboxdrv and reinstalled the xpad drivers from source, then restarted. No change.
Unfortunately I am not sure exactly what was updated as I ran the script for Retropie to update all packages. Starting to consider trying to roll back some drivers to see if that has an affect.
-
@gabraham said in Input Scrambled After Retropie Update:
Starting to consider trying to roll back some drivers to see if that has an affect.
You shouldn't need any special drivers for the SN30pro. How is the controller detected - the 8Bitdo controllers have various modes of operating and they change their name & behavior depending on the start mode (XInput/DInput/Switch/Android) ? What's the name shown in EmulationStation when you map the controller ?
-
@mitu This is not a bluetooth controller. The USB version does not have multiple modes. When trying to register input with EmulationStation, it is recognized as an xbox 360 controller. This, again, worked fine recently.
-
@gabraham said in Input Scrambled After Retropie Update:
The USB version does not have multiple modes.
If is this model, then it does, even if wired. However, it should work regardless.
The only driver that could be involved is the
xpad
driver, which handles Xbox wired drivers - there's nothing else involved. Can you post the output of the following command ?cat /proc/bus/input/devices
-
@mitu said in Input Scrambled After Retropie Update:
If is this model, then it does, even if wired. However, it should work regardless.
https://download.8bitdo.com/Manual/Controller/SN30pro-USB/SN30-Pro-USB.pdf
That is the manual. If there are multiple modes, there is no way in the manual to toggle between them. It may be that the controller decides on connection whether or not it is in one of the two modes but if it does, I don't know how to manipulate that and I've already tried reseating the usb cable to see if it does anything different.@mitu said in Input Scrambled After Retropie Update:
The only driver that could be involved is the
xpad
driver, which handles Xbox wired drivers - there's nothing else involved. Can you post the output of the following command ?cat /proc/bus/input/devices
I: Bus=0003 Vendor=045e Product=028e Version=0114 N: Name="Microsoft X-Box 360 pad" P: Phys=usb-0000:01:00.0-1.1/input0 S: Sysfs=/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0/input/input0 U: Uniq= H: Handlers=event0 js0 B: PROP=0 B: EV=20000b B: KEY=7cdb0000 0 0 0 0 0 0 0 0 0 B: ABS=3003f B: FF=1 7030000 0 0
-
@gabraham said in Input Scrambled After Retropie Update:
That is the manual. If there are multiple modes, there is no way in the manual to toggle between them
I see, so it's one of the models that tries to be 'smart' and guess which host is connected to in order to masquerade as either a Xbox 360 controller or a Switch Pro controller.
Based on the Vendor/Product ID (Vendor=045e Product=028e) detected, the driver used for it is clearly
xpad
. I wonder if the gamepad detection makes the driver fail to load.You can test how your buttons/joystick are detected on the controller by using
jstest
from the command line and pressing each input separately to see how it appears on screen:jstest /dev/input/js0
You can interrupt the test at any time using
Ctrl+C
. Can you check if your triggers are detected as buttons or axis ? -
@mitu said in Input Scrambled After Retropie Update:
Can you check if your triggers are detected as buttons or axis ?
They are detected as axis. I've seen this happen before but I just have no idea why it's suddenly a problem or how to make the Pi recognize them as buttons. I suppose it's possible it was in Switch mode this whole time and suddenly it's in PC mode or something. The switch controller doesn't have analog triggers so this would seem to make sense. The question of course becomes how do I either make the Pi understand they are really buttons, or I guess figure out how to force the modes.
-
@mitu said in Input Scrambled After Retropie Update:
I see, so it's one of the models that tries to be 'smart' and guess which host is connected to in order to masquerade as either a Xbox 360 controller or a Switch Pro controller.
After you mentioned the multiple modes I decided to see if there was an undocumented way to force one mode over the other and there does appear to be. If I hold down the Y button, it will, much like the bluetooth version, be recognized as a Pro Controller on my PC. When I do this on the Pi however, it fails to detect any button presses whatsoever. If I do not press anything when I plug the controller in or press one of the other face buttons while doing so, it reacts exactly as it has been and the triggers are not recognized properly.
-
@gabraham said in Input Scrambled After Retropie Update:
.. it's possible it was in Switch mode this whole time and suddenly it's in PC mode or something.
That's unlikely, since the name of the gamepad would have been different and (i.e. not Microsoft X-Box 360 pad).
They are detected as axis.
This means the
xpad
driver is either not loaded for the controller or it's not installed properly. Thexpad
driver included in RetroPie is configured to detect those as buttons - the situation you're describing (triggers appearing as axis) is common when the driver is not installed.Can you re-install the driver and then post the installation log file from
$HOME/RetroPie-Setup/logs
? -
@mitu https://pastebin.com/M9qA6rMe
No change. I even confirmed that the xpad.conf file to make sure the triggers to buttons option was set to 1. When I uninstalled it I lost the ability to use my controller too, so I would think it would have to be loaded.
-
OK, so the
xpad
driver is installed correctly, no issue here.
Try to see if it's loaded/used for the controller. Boot the Pi without the controller plugged in, then run from the terminaldmesg -w
and plug in the controller. The driver should load if the controller is properly detected. Post the messages shown by
dmesg
when plugging in the controller. -
@mitu said in Input Scrambled After Retropie Update:
Post the messages shown by
dmesg
when plugging in the controller.[ 132.541524] usb 1-1.1: new full-speed USB device number 3 using xhci_hcd [ 132.681834] usb 1-1.1: New USB device found, idVendor=045e, idProduct=028e, bcdDevice= 1.14 [ 132.681852] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 132.681866] usb 1-1.1: Product: Controller [ 132.681879] usb 1-1.1: Manufacturer: Controller [ 132.681892] usb 1-1.1: SerialNumber: Controller [ 132.758613] input: Microsoft X-Box 360 pad as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0/input/input0 [ 132.758925] usbcore: registered new interface driver xpad
-
Looks like the
xpad
driver is loaded for the controller - I have no idea why the configuration fromxpad.conf
(triggers_to_buttons=1
) doesn't work. -
I also tried xpadneo out of desperation but the controller is always recognized as an xpad.
The xpad driver doesn't appear to have been updated for a few months and I was pretty sure I had updated the drivers since reflashing this Pi weeks ago. Only since I had updated it recently did this start happening. Unfortunately if there is a way to roll back the driver I don't know how to do it and the Retropie-Setup menu always fetches the latest one from source.
I appreciate you helping me to look into it in any case, but it's a damn shame because before this started happening it was almost perfect and just worked like a charm all the time.
-
I also tried xpadneo out of desperation but the controller is always recognized as an xpad.
xpadneo
is for Bluetooth XBox controllers only, it doesn't work for wired gamepads.The xpad driver doesn't appear to have been updated for a few months and I was pretty sure I had updated the drivers since reflashing this Pi weeks ago
Maybe the
xpad
driver is not at fault here. Although it has received some updates since 4.7.1 was released last year, it shouldn't affect the patch that RetroPie applies to it. Unfortunately I don't have any compatible controllers to test, but we also haven't received any similar complains lately.Just to check that the module options are applied, can you run
sudo cat /sys/module/xpad/parameters/triggers_to_buttons
and see if the output is
Y
? -
Output is
Y
.Also, earlier I tried changing that property to 0 but it affected nothing so I changed it back.
I actually have an 8bitdo wireless. I believe they are in the same family so the USB version is essentially just a stripped down version of the bluetooth one. Interestingly when I plug the bluetooth controller in with a USB port to use USB mode, I can cycle through the Switch and X-Input modes basically the same way and the Pi reacts just like it does with the usb controller. Switch mode USB is not recognized at all and X-Input just causes it to behave like the usb controller version.
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.