How to get SteelSeries Stratus XL gaming controller to work 100% in Linux
I love this controller! It works as advertised with Windows. I’ve used it extensively with Grand Theft Auto V. It works as advertised on Android. Which is awesome, because if you’re serious about playing games, virtual touchscreen controllers is just..hell no. I’ve used it extensively with APPs such as MAME4Droid, NEO.emu, Snes9X EX+, Nostalgia (NES), Mupen6 (N64). Dolphin (GameCube emulator) exists for Android. But my poor phone can’t handle it. However, my gaming laptop kicks Dolphin ass, which is why I needed this controller to work in Linux. The Stratus XL also uses Bluetooth wireless. It has built-in functionality for the XInput API, which I believe is currently the industry standard. Its compatible with Steam and VR. I cannot say enough praise about this controller.
Except for one thing. For the life of me, months into owning it, I could NOT get it to work in Linux (Mint 18.3 64-bit). Yes, I could get it to connect to my gaming laptop via Bluetooth. Yes, I could get the controller actions to display in real time using jstest-gtk, a joystick testing tool. But as for getting the controller to actually perform its function of controlling games? No luck. Nada.
For Linux users, there’s no support for this controller on the SteelSeries web site. Obviously that means the controller must not work with Linux, right? Wrong! I don’t know why their attitude is to hell with Linux users. If people are going to buy their product, I don’t know why they’re not interested in a certain segment of their customers getting the most out of it. Maybe they were never able to get their pushware “SteelSeries Engine 3” to work on Linux? I don’t know. But that’s fine. With what I know now, we don’t need your SE3, thank you very much.
Before we begin, I highly recommend you install the Dolphin GameCube emulator on your Linux system. I recommend the development version, not the stable version, because its updated and significantly more functional. I recommend it, even if your system can’t handle actually running any games. That’s OK. The Dolphin emulator’s “Controller Settings” module is necessary. Because once everything is set up, it gives you impeccable feedback that indicates whether your controller is actually functioning as a controller.
To install the development version of Dolphin in Linux Mint:
sudo apt-add-repository ppa:dolphin-emu/ppa
sudo apt update
sudo apt install dolphin-emu-master
Once you open Dolphin, click the Controllers icon.
This will open a sub-menu which will look something like this.
Click the Configure button for “Standard Controller”. It will open this window, which is the one we’re actually looking for:
What I want you to look at is the white squares with gray circles. They’re labeled MAIN STICK and C-STICK. What’s important to notice about them is there’s dark gray dots in the center of each circle. With a working, functioning controller, those dots would be red, not dark gray. Dark gray dots means the system is not detecting your Stratus XL at all. Even with it connected via Bluetooth. But no worries, we’ll fix that. Now close Dolphin, we’ll get back to it later.
After shit-tons of Googling how to get the Stratus XL to work in Linux, I finally found what should have been a workable solution here. (Link is provided for reference and credit only.) Of course, it didn’t work for me. But it led me in the right direction. The solution offered on that link gave me the following error:
couldn't convert 'BTN_SOUTH' to enum, not a member of EV_KEY
What???? Thefuck does that even mean?
Well, after I finished my cursing, hair-pulling, and face-palming…I was finally able to find a fix for that solution which eliminated the error. In case you’re curious, this was what fixed it for me:
Replace BTN_SOUTH with KEY_#304
Replace BTN_EAST with KEY_#305
Replace BTN_NORTH with KEY_#307
Replace BTN_WEST with KEY_#308
And so, starting from the beginning, this is how to get a SteelSeries Stratus XL gaming controller to work in Linux Mint:
- Install xboxdrv, which is available in Mint’s Software Manager.
- Connect your Stratus XL to your computer via Bluetooth.
- Open Terminal and enter
cat /proc/bus/input/devices
. Scroll through the output. Look for Name=”SteelSeries Stratus XL”. In that multi-line cluster of data that gives information about to your Stratus XL, look for the word “event” with trailing numbers. Mine says event23 so that’s what I’ll be using in the command line below. You should cat the event number every time you connect your controller, because it can sometimes be a different number than what it had been before. - Finally, using the event number gotten from step 3, paste this into Terminal:
sudo xboxdrv --evdev /dev/input/event23 --evdev-absmap ABS_X=X1,ABS_Y=Y1,ABS_Z=X2,ABS_RZ=Y2,ABS_GAS=RT,ABS_BRAKE=LT,ABS_HAT0X=DPAD_X,ABS_HAT0Y=DPAD_Y --axismap -Y1=Y1,-Y2=Y2 --evdev-keymap BTN_START=Start,KEY_HOMEPAGE=Guide,KEY_BACK=Back,KEY_#304=A,KEY_#305=B,KEY_#307=X,KEY_#308=Y,BTN_TL=LB,BTN_TR=RB,BTN_THUMBL=TL,BTN_THUMBR=TR --mimic-xpad --silent
You’ll see a message in the Terminal that says Your Xbox/Xbox360 controller should now be available as: (blah blah blah) Press Ctrl-c to quit
. Don’t press Ctrl-c, just minimize the Terminal and leave it as it is until you’re finished playing games.
Now, when you start the Dolphin emulator, click Controllers and Configure (Standard Controller). You’ll notice something has changed.
See the red dots in MAIN STICK and C-STICK? That’s what we want to see. It indicates your controller is now being recognized by the system, as a “Microsoft X-Box 360 pad.”
When you move the sticks on your Stratus XL, the red dots should move accordingly. However, on my system it takes about 30-40 seconds for the dots to actually begin corresponding to my stick movements. I don’t know why there’s that delay and its a bit baffling. I have a powerful I7 CPU. But once the dots do begin to correspond to your movements, the response is quick and instant, as it should be.
At this point, for playing Dolphin games, you should set up all the Stratus XL buttons and controls to correspond with each GameCube button, etc. Once you’ve gotten things set up perfectly, click the Save button under Profile. You can see I named mine SteelSeries. Simply load that profile whenever you’re ready to play.
This solution will also work with the Linux ZSnes emulator for SNES games. However, I still can’t get it to work with MAME for Linux. I can’t get it to work for Snes9X for Linux. A bit perplexing. But if/when I find further information I’ll post it here. Or send me some feedback via Twitter or the Contact form.
I hope this article helps Linux users get the most out of their SteelSeries Stratus XL controllers. Happy gaming! And let me just say, Resident Evil 4 is fucking EPIC!