Skip to main content

8BitDo Ultimate 2.4g Controller on Steam Deck and Steam for Linux

The 8BitDo Ultimate 2.4g Controller has some weird behavior when using it on Linux. Its triggers aren't mapped to anything and the right stick is mapped to the triggers' axes. Here's how to get DINPUT mode working properly.

There's also a potential XINPUT fix here, but I wasn't able to make it work on my Steam Linux laptop.

To be fair, 8BitDo doesn't advertise the controller as supporting Linux or Steam Deck. However, they claim it supports Raspberry Pi, which runs Linux for many people, including myself. While trying to get the controller working properly with Moonlight-Qt, which uses SDL2 to handle controller input mapping, I also figured out how to fix it for Steam, which also uses SDL2.

  1. Run Steam at least once with the controller connected in DINPUT mode.
  2. Use it in Big Picture mode a bit so that Steam is aware of it.

  3. Exit Steam completely.

  4. Load ~/.steam/steam/config/config.vdf in your preferred text editor. You may need to enabled "Show hidden files" in your file browser to find this file.

  5. Find the SDL_GamepadBind section.

  6. Find the line that has the name of the controller, "8BitDo Ultimate wireless Controller for PC". It should be the last entry in the list.

  7. Delete everything on that line after the name and comma, but leave the quotation mark (") at the end if there is one (last controller listed). The first value (before the name) in the below examples might be different for your device, so keep yours and don't replace it with mine. So it should look like:
    03000000c82d00001330000011010000,8BitDo Ultimate wireless Controller for PC,"

  8. Insert this text after the name and comma: a:b0,b:b1,y:b4,x:b3,start:b11,guide:b12,back:b10,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,lefttrigger:a5,rightx:a2,righty:a3,righttrigger:a4,platform:Linux,
    Resulting in:
    03000000c82d00001330000011010000,8BitDo Ultimate wireless Controller for PC,a:b0,b:b1,y:b4,x:b3,start:b11,guide:b12,back:b10,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,lefttrigger:a5,rightx:a2,righty:a3,righttrigger:a4,platform:Linux,"

  9. Save the file and start Steam.

The controller should now be working with proper analog triggers and right stick.