The following instructions are based on a reddit comment of u/zolixes and cleaned up/modified by me.
- Arch Linux with kernel version 5.0.9
- Steam build
jenkins-steam-runtime-beta-release_0.20190320.2
(As seen from Help -> System Information -> Steam Runtime Version)
There is a file: /lib/udev/rules/99-steam-controller-perms.rules (if no rules related to steam are found install the steam-devices package and this file will appear).
NOTE: The file might be named differently and the number in front of it can differ from the example. In my case this was:
/lib/udev/rules.d/70-steam-input.rules
How to add switch controller into the rules:
You should see something like this:
# Valve USB devices
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0660", TAG+="uaccess"
# Steam Controller udev write access
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"
# Valve HID devices over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="28de", MODE="0660", TAG+="uaccess"
# Valve HID devices over bluetooth hidraw
KERNEL=="hidraw*", KERNELS=="*28DE:*", MODE="0660", TAG+="uaccess"
# DualShock 4 over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05c4", MODE="0660", TAG+="uaccess"
# DualShock 4 wireless adapter over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ba0", MODE="0660", TAG+="uaccess"
...
Try to search for a Nintendo Switch Pro if you can find a rule entry for the controller. Note that there might be two entries, one for wired and one for bluetooth connection.
If you cannot find any entries, use this template and copy this template entry into the file:
# Nintendo Switch Pro Controller over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="IDVENDOR_HERE", ATTRS{idProduct}=="IDPRODUCT_HERE", MODE="0660", TAG+="uaccess"
lsusb
One good tip is to run the command, and then plug your controller in and run it again and note which device shows up on the list
TAKE NOTE OF THE BUS AND DEVICE NUMBERS, example listing:
Bus 002 Device 024: ID xxxx:xxxx
Change the idVendor and idProduct values in the entry, you can find the values using the command
udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/002/012)
This returned correct results in my case, and requires less effort, which is always nice.
Unplug your controller and run:
sudo udevadm monitor -e | grep -m 1 PRODUCT | head -1
And then plug in your controller again. This should output this information:
PRODUCT=xxxx/xxxx/xxxx
The first "xxxx" is the idVendor and the second is idProduct. Copy these two values and use them in your udev rules entry.
sudo udevadm control --reload-rules
- Settings -> Controller settings
- Enable Switch Pro controller support
- Disconnect and connect the controller again