this post was submitted on 15 Oct 2025
37 points (95.1% liked)

Linux Gaming

21863 readers
274 users here now

Discussions and news about gaming on the GNU/Linux family of operating systems (including the Steam Deck). Potentially a $HOME away from home for disgruntled /r/linux_gaming denizens of the redditarian demesne.

This page can be subscribed to via RSS.

Original /r/linux_gaming pengwing by uoou.

No memes/shitposts/low-effort posts, please.

Resources

WWW:

Discord:

IRC:

Matrix:

Telegram:

founded 2 years ago
MODERATORS
 

I have an 8BitDo Pro 2 controller I've used a bunch without issue on Windows, now I'm moving to Linux (Mint specifically) and I'm having trouble getting the controller to work. It's supposed to work with Linux, but I can't get it to work. Steam doesn't detect the controller in its settings.

you are viewing a single comment's thread
view the rest of the comments
[–] mouse@midwest.social 18 points 2 weeks ago (3 children)

Check out this repo for udev rules: https://codeberg.org/fabiscafe/game-devices-udev

Instructions copied from repo:

  1. Download the archive.
  2. Extract the archive.
  3. Copy all the rule files to /etc/udev/rules.d.
  4. Create another file: /etc/modules-load.d/uinput.conf.
  5. Put uinput into that file.
  6. Reboot.
[–] scoot@programming.dev 3 points 2 weeks ago

Just to tag on to this, I only needed to enable the uinput module to fix my issue (steam suddenly stopped seeing my 8BitDo controller when it previously could). Didn't have to do anything with udev rules.

[–] ArchmageAzor@lemmy.world 2 points 2 weeks ago (1 children)

I did all that, but it's still no different than before. It still only works by cable.

[–] mouse@midwest.social 1 points 2 weeks ago

The last thing I can suggest are the last two comments on the steam-devices repo: https://github.com/ValveSoftware/steam-devices/issues/64#issuecomment-3092449971

Try adding these to a file such as /etc/udev/rules.d/71-8bitdo-pro-2.rules

# 8bitdo pro 2 bluetooth hidraw
ACTION!="remove", KERNEL=="hidraw*", KERNELS=="*2DC8:6006*", MODE="0660", TAG+="uaccess"

and/or

ACTION!="remove", KERNEL=="hidraw*", KERNELS=="*2DC8:6012*", MODE="0660", TAG+="uaccess"

The reason I added ACTION!="remove" is due to a recent change with systemd.

ACLs for device nodes requested by "uaccess" udev tag are now always applied/updated by systemd-udevd through "uaccess" udev builtin, and systemd-logind no longer applies/updates ACLs but triggers "change" uevents to make systemd-udevd apply/update ACLs. Hence, the "uaccess" udev tag should be set not only on "add" action but also on "change" action, and it is highly recommended that the rule is applied all actions except for "remove" action.

Recommended example:

ACTION!="remove", SUBSYSTEM=="hidraw", TAG+="uaccess"

The following example does not work since v258:

ACTION=="add", SUBSYSTEM=="hidraw", TAG+="uaccess"

[–] ArchmageAzor@lemmy.world 2 points 2 weeks ago (1 children)

I'm not sure I'm quite technical enough for this, what exactly is the uinput I need to put into the file from step 4?

[–] scoot@programming.dev 3 points 2 weeks ago

Its literally just the word uinput.

So you can do

sudo echo 'uinput' > /etc/modules-load.d/uinput.conf

Which just tells your system to load the uinput module on startup.