8bitdo SN30 Pro controller vs Steam

I have an 8BitDo Sn30 Pro game controller, a nice little portable Bluetooth / USB game controller that works in various modes. I had some initial flakiness but now it’s working well. The best discussion I’ve found is this Steam forum thread; if you read past all the rude people flaming each other there’s some useful info.

Working with a USB wired connection is easy. Working with Bluetooth seems to work reliably for me, at least right now. But I had to remove and re-add the device in Windows Bluetooth settings at least once, for awhile it was acting flaky.

The first insight is that the 8bitdo controller works in several modes that you can switch between depending on how you turn it on / use it.

  • Start+Y: Nintendo Switch mode.
    Windows sees this as “Pro Controller”, Steam sees this as “Nintendo Switch Pro Controller”. It seems to work pretty well for PC games although Steam may have to remap some inputs for you because few PC games support this directly.
  • Start+B: “Android mode”, which I think is the older DirectInput API.
    Windows says “8Bitdo SN30 Pro”, Steam says “Bluetooth Wireless Controller”.
    Steam made me set up the button mappings, pressing each button in turn. All of them worked except the last share button.
  • Start+X: “Windows mode”, which I think is the newer XInput API.
    Windows says “8Bitdo SN30 Pro”, but gives it a different listing in the Bluetooth devices from the Android mode entry. Steam says “XInput Controller”. Works well but no share button.
  • Start+A: “macOS mode”.
    Windows calls it a “Wireless Controller”, Steam calls it a “PS4 Controller”. The buttons all seem to work as expected.

The second insight is that these modes look like completely different Bluetooth controller entries in Windows. It’s like you own four separate devices depending on which way you turn the controller on. You have to configure each one individually in Windows. (Or pick the one you want and stick with it). I think one time it got confused and that’s why removing the Bluetooth device and re-adding it helped.

I think XInput mode is probably the best choice for most PC games.

There’s a small Star button in lower left on the 8bitdo. This works as a regular button in Nintendo Switch mode. But in XInput mode (and DInput?) this is a Turbo button, if you hold it down with a different button it toggles that input rapidly. In that mode the button itself doesn’t seem visible to the PC. Not a big loss but it means you won’t have a Share button.

One extra quirk: I bought the Switch edition of the SN30 Pro which has Nintendo’s bizarro button layout painted on the controller. So the button at the bottom of the cross on the right says “B”, not “A”. Steam has you identify buttons more by position than the labels so it’s not too big a deal to adapt.

PS: a big raspberry to Sony whose PS5 controllers are prone to stick drift. I used Steam to see the numeric outputs from the device. The stick gives reading from -32767 to 32767 with ideally 0 when at rest, or at least close to 0. My stick regularly jumps between -20000 and 0 with no input at all. I can’t even set a deadzone easily, Steam’s max is 18000. (And mapping 2/3 of the range to 0 is not a great experience anyway.) This flaw is common among PS5 owners. They aren’t cheap at $70.