Help with 8BitDo Controller and Retroarch compatibility

Hi everyone, I got a new controller for Christmas that I’ve been hoping to use as my main controller on my PC. It works in every other program (Steam, standalone emulators) but I’m having an issue specifically with Retroarch. I’ve listed the problem in as much detail as I can, as well as what I’ve tried to solve and what I feel the main issues are.

The controller is the 8BitDo Ultimate 2C Wireless. It has 2.4G and Wired Input for Windows, and Bluetooth for Android. I’m trying to use this with Retroarch on Windows 10.

Issue

  • With the controller connected by 2.4G Dongle, or wired connection, when I open Retroarch the controller seems to work and map fine, although for some reason Retroarch picks up 2 controllers. Under Device Index the controller is listed twice, with (1) and (2) for each entry. Controller (1) is bound to Port 1 and (2) to Port 2. Note there is only one controller connected so I’m unsure why this happens.

  • If I go to Settings -> Input -> Menu Controls -> All Users Control Menu and switch this to On, the cursor cycles upwards rapidly, as though something is constantly holding up. Strangely, if I turn the controller off, this stops, however the device index still shows a controller connected. If I restart Retroarch at this point it disappears and correctly shows no devices under device index.

  • Controller works fine as long as I don’t have “All Users Control Menu” on until a game is loaded. Whenever any game is loaded (tried multiple SNES games on different cores, as well as multiple PS1 and N64 games on multiple cores) the controller stops working altogether, as does the keyboard, so I can’t even bring up the menu or do anything. To be clear, Retroarch doesn’t freeze, the game works as normal, but none of the controller buttons do anything, and I can’t bring up the menu on Retroarch at all.

Things I’ve tried so far

I’ve tried using the Bluetooth mode of the controller (which operates on D-Input mode), and despite 8BitDo saying Bluetooth was for Android only, this actually works, however Retroarch doesn’t read the controller as 8BitDo Ultimate 2C but as some generic controller. It works, however one of the reasons I got the controller was for the 1000Hz polling and reduced input lag. I’ve noticed input lag is slightly worse in Bluetooth Mode (using Steam) compared to wired or 2.4G (I dont a direct comparison on Super Meat Boy on Steam since the controller works fine on either mode there). So this is a slight workaround but not ideal. I already had an 8BitDo Ultimate Bluetooth controller (the docked on) which worked fine, but I wanted to use this for my Switch and have the new 2C for my PC, so forcing it to run in Bluetooth mode sort of defeats the purpose in my opinion when it should work by 2.4G too.

Given that Bluetooth Mode works okay, but 2.4G and Wired doesn’t, I thought it might be an issue with Retroarch not picking up the X-Input mode, however Under Settings -> Driver -> Controller, this is set to X-Input, which is even more confusing. The Input driver is showing as D-Input, however there is no X-Input setting here.

I actually have 2 new 2C Ultimate controllers, which I thought could be why Retroarch is picking up 2 controllers, however I have been very careful to only have one connected at a time. I only ever have 1 dongle in my PC, and only connect one via USB at a time, while the other is completely off.

It’s also not an issue with my old Ultimate controller, as I have fully disconnected this, including the dock. During multiple restarts, I’ve tried using my old controller and it works absolutely fine. I can connect the dongle and it operates as normal, and I can connect it wired and again, it works fine, only picks up one controller and works in the game as expected.

I’ve included some screenshots of Retroarch to show the settings I’ve mentioned above. Happy to share any more information if needed. I’ve been trying to fix this for almost a full day on my own and not had any luck, so if anyone can provide some advice and support it would be massively helpful!

If it’s picking up two controllers, it’s probably Steam’s fault. You must have it opened. Notice that, if Steam Overlay is enabled, a virtual gamepad is created to act as an intermediary for your custom remappings, and that applies to all your PC. That’s why RetroArch recognizes two controllers: the real and the virtual one.

The solution is to totally close Steam (not only running in background) before opening RetroArch, or disabling Steam Overlay altogether.

After doing some tinkering I think what you’ve said is partly correct, in that the issue is definitely due to 2 controllers being picked up, but it’s not Steam’s issue this time.

I’ve had this issue in the past so I was careful to ensure Steam was fully closed before opening Retroarch. I’ve tested other controllers which all seem to work fine, it’s just my new Ultimate 2C that’s being picked up twice.

A temporary fix is that if I ensure port 1 is set to pick up the first Device Index and I limit the maximum number of users to 1, then it stops the second controller having any use and the controller works fine, but set maximum users to anything above 2 and the controller just doesn’t work. This suggests that the real and virtual controller are interfering somehow, but something else other than Steam is the issue this time.

After doing some tinkering I think what you’ve said is partly correct, in that the issue is definitely due to 2 controllers being picked up, but it’s not Steam’s issue this time.

I’ve had this issue in the past so I was careful to ensure Steam was fully closed before opening Retroarch. I’ve tested other controllers which all seem to work fine, it’s just my new Ultimate 2C that’s being picked up twice.

A temporary fix is that if I ensure port 1 is set to pick up the first Device Index and I limit the maximum number of users to 1, then it stops the second controller having any use and the controller works fine, but set maximum users to anything above 2 and the controller just doesn’t work. This suggests that the real and virtual controller are interfering somehow, but something else other than Steam is the issue this time.

Hmm… It’s really puzzling. I have the wired version for Linux and it works fine. Since it’s Windows, have you tried updating the controller firmware? Who knows if it’s some sort of a bug. Other stuff to try and pass time with:

  • Grabbing any joystick testing tool and see if two gamepads are also recognized there;
  • Manually mapping the controller profile inside RetroArch, instead of relying on autoconfiguration;
  • Opening task manager to make sure Steam and any of its subprocesses are closed.