8bitdo USB Receiver Woes
-
So I bought an 8bitdo USB receiver to use with my Pi (https://www.amazon.com/Wireless-Bluetooth-Adapter-Nintendo-Switch-Raspberry/dp/B0786JC6VW/ this one in particular), thinking it would make it easier to switch my SN30 Pro controller between devices, including my Pi and my computer. I've got it working, but not without a few hurdles along the way.
The adapter has three modes it can switch between: X-Input (shows up as Xbox 360 in Emulationstation), D-Input (shows up as "8bitdo Receiver 8bitdo Receiver" in Emulationstation), and MacOS (shows up as a PS4 controller in Emulationstation). Trying to set the controller up via the receiver has led to a few issues:
- In X-Input mode, I can't map the L2/R2 buttons. The buttons don't register being pressed when mapping controls, even if I set all inputs, skip the L2/R2 buttons, and then go back and try to set them afterwards. I thought it might be an issue with the RetroPie Xbox 360 driver, but I don't think that's the case. If I set the SN30 Pro into X-Input mode and connect it to the Pi via wired connection, it works as expected (although if I attempt to map it connected with the receiver and then switch to the wired connection which uses the same button input mapping, L2/R2 are mapped as the Select and Start buttons respectively, and Start and Select are unmapped). But I don't think it's a problem with the receiver itself, because if I plug the receiver into my PC and test the buttons in X-Input mode, the buttons all work correctly as if it were a proper Xbox 360 controller.
- D-Input mode works correctly, with the one exception that I can't map the Star/Screenshot button, or the 8bitdo/Home button. Mapping the Star button didn't work when the controller was connected via native bluetooth instead of the adapter, so that was expected, but in D-input mode over built in bluetooth on my Pi 3B+, the Home button could be mapped as a hotkey button, so it's odd that over the receiver it wouldn't work.
- I've had complete success using MacOS/PS4 mode. All inputs work correctly, including the trigger buttons and Home button.
So the adapter seems to only work fully in MacOS mode or D-Input mode (to a lesser extent). I'm curious why X-Input mode doesn't seem to work properly when it does on a PC. As the adapter does work over alternate modes, this isn't a major issue for me, although I thought I'd raise the question regarding X-Input mode in case anyone has some insight. For reference, it doesn't matter what mode the SN30 Pro itself is set to when paired to the USB Receiver, because the mode the receiver is set to controls how the controller appears to RetroPie.
-
@G30FF said in 8bitdo USB Receiver Woes:
So I bought an 8bitdo USB receiver to use with my Pi (https://www.amazon.com/Wireless-Bluetooth-Adapter-Nintendo-Switch-Raspberry/dp/B0786JC6VW/ this one in particular), thinking it would make it easier to switch my SN30 Pro controller between devices, including my Pi and my computer. I've got it working, but not without a few hurdles along the way.
The adapter has three modes it can switch between: X-Input (shows up as Xbox 360 in Emulationstation), D-Input (shows up as "8bitdo Receiver 8bitdo Receiver" in Emulationstation), and MacOS (shows up as a PS4 controller in Emulationstation). Trying to set the controller up via the receiver has led to a few issues:
- In X-Input mode, I can't map the L2/R2 buttons. The buttons don't register being pressed when mapping controls, even if I set all inputs, skip the L2/R2 buttons, and then go back and try to set them afterwards. I thought it might be an issue with the RetroPie Xbox 360 driver, but I don't think that's the case. If I set the SN30 Pro into X-Input mode and connect it to the Pi via wired connection, it works as expected (although if I attempt to map it connected with the receiver and then switch to the wired connection which uses the same button input mapping, L2/R2 are mapped as the Select and Start buttons respectively, and Start and Select are unmapped). But I don't think it's a problem with the receiver itself, because if I plug the receiver into my PC and test the buttons in X-Input mode, the buttons all work correctly as if it were a proper Xbox 360 controller.
- D-Input mode works correctly, with the one exception that I can't map the Star/Screenshot button, or the 8bitdo/Home button. Mapping the Star button didn't work when the controller was connected via native bluetooth instead of the adapter, so that was expected, but in D-input mode over built in bluetooth on my Pi 3B+, the Home button could be mapped as a hotkey button, so it's odd that over the receiver it wouldn't work.
- I've had complete success using MacOS/PS4 mode. All inputs work correctly, including the trigger buttons and Home button.
So the adapter seems to only work fully in MacOS mode or D-Input mode (to a lesser extent). I'm curious why X-Input mode doesn't seem to work properly when it does on a PC. As the adapter does work over alternate modes, this isn't a major issue for me, although I thought I'd raise the question regarding X-Input mode in case anyone has some insight. For reference, it doesn't matter what mode the SN30 Pro itself is set to when paired to the USB Receiver, because the mode the receiver is set to controls how the controller appears to RetroPie.
Hello. I'm having this same issue. I'm using a 8bitdo USB receiver with my sn30 pro on Retropie and can not map the L2 or R2 buttons? Anyone know why this doesn't work?
Thanks
-
Anyone use a 8bitdo sn30 pro on retropie?
-
Hi all,
I'm also having this problem and I cant seem to get around it. I'm using an SN30 pro and the 8bitdo wireless bluetooth receiver. Both are on the current firmware. I have read some posts that suggest in direct input mode or switch mode this will work, but I have found it will only connect in x input. This works fine except for the L2 and R2 buttons, which simply are not registered on the input configuration screen.
I'm at a loss as to what to do. Is there any potential of a fix for this? I'm somewhat confused as to why this is happening as afaik the connection should just be seen like it's a wired controller by retropie.
Thanks for any advice.
-
When connected to the USB retro receiver, it doesn't matter what mode the controller is in, because it's the mode of the receiver that matters. Setting the receiver to MacOS mode gives the best results with the most button compatibility. To set the receiver to MacOS mode, press and hold Select+Right on the controller for 3 seconds. RetroPie will then see the receiver as a PS4 controller.
-
@G30FF Thanks so much, appears this may have sorted it! made a nice xu4 based cigar box build so would have been a shame for it to fall at the last hurdle :)
-
One of the problems with the Linux kernel's
xpad
driver (for Xbox adapters) is that it treats triggers as analog (and not as buttons), so that would be one of the cause of you seeing L2/R2 not working. You didn't specify which RetroPie release you're using, but I'd suggest updating to the latest version of the RetroPie-Setup script and trying to re-install thexpad
driver from the drivers section, then give it another try (over Bluetooth). -
I am on 4.4. I updated the RetroPie-Setup script, and reinstalled the xpad driver, but have the same results. It's worth noting that using the controller wired in X-input mode, the L2/R2 buttons work as expected. It's just when used over the Retro Receiver that it doesn't.
-
@G30FF Can you use
jstest
to see if the L2/R2 are detected (and how) ? -
According to jstest, when the receiver is in X-input mode, the buttons map as follows:
0 - B
1 - A
2 - Y
3 - X
4 - L
5 - R
6 - L2
7 - R2
8 - Select
9 - Start
10 - Home/Star
11 - L3
12 - R3Out of curiosity, I tried plugging in the controller in wired X-input mode, and the button mapping is identical. So jstest is seeing the controller inputs correctly, but they don't map correctly in Emulationstation or Retroarch.
-
I realize this topic is old now, but after recently updating the xpad driver in RetroPie-Setup, I was suddenly able to map L2/R2 in X-input mode. So whatever update was added to the xpad driver, it seems to have resolved this mapping issue, or at least how the driver reads the L2/R2 inputs on 8bitdo controllers. So this issue is now resolved for me.
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.