There are two main ways of using a Nintendo Switch Pro Controller on Linux while there’s no proper driver for it. We’ll solve the issue that the analog sticks don’t register full range going right or up (still no rumble or proper player led indicator until there’s a driver specific for it).
It only works via bluetooth until there are drivers for wired mode.
If you wish to change the calibration values, I recommend Dolphin Emulator for checking your calibration for Method 1 (while configuring a Game Cube controller, the red dot should reach the outer square borders and neutral position should be centralized) and jstest-gtk for Method 2 (use the numbers on the axis bars).
Method 1 is more direct and fixes the evdev device, used for SDL, Steam and recent emulators. Method 2 (xboxdrv) creates virtual joystick, evdev and udev devices, so it works with pretty much anything.
- Connect it to your pc via bluetooth. I use blueman and Gnome Bluetooth. LEDs still blink left-right even when connected.
- Find your device id via “sudo evtest”
Method 1: Calibrate the evdev device
- Configure the calibration as follows, changing from eventX to your device’s id:
And you’re good to go!
Method 2: xboxdrv
Run the following command:
This maps the buttons for their physical position rather than their labels. Games will show Xbox button labels, wich are mirrored from Nintendo’s: A=B, B=A, X=Y, Y=X.
As of now, I’ve tested the Nintendo Switch Pro Controller on Linux:
Wired: Controller is listed as HID, but no input is registered. The same happens on Windows.
Bluetooth: It connects and works, but analog calibration is off. Both sticks’ up and right don’t register their full range (you’d have Mario moving at normal speed backwards but slowly forwards in Super Mario 64, for example). The same happens on Android.
And calibration on jstest-gtk just messes everything up: the axis overflows as you move it and goes all around. Won’t do.
If you know of any driver for this controller on Linux please share with us on the comments below, as this tutorial is only a workaround.
Last edited: 03/09/2018 - some clean-up and improvements to text.