SteelSeries Stratus XL (Windows and Android) can't bind 2 buttons
-
Hi,
I am trying to get my SteelSeries Stratus XL working through bluetooth. So far it's been tough, but I have it paired, and recognized in Emulation Station. But the problem is the SELECT button and what I guess is supposed to be the XBOX button don't register at all.
I have added my own rules file for udev, which is how I got Emulation Station to recognize it as a controller to begin with. Below is some information that might help someone more knowledgeable than me:
results of cat /proc/bus/input/devices
I: Bus=0005 Vendor=0111 Product=1419 Version=0109
N: Name="SteelSeries Stratus XL"
P: Phys=b8:27:eb:23:75:bb
S: Sysfs=/devices/platform/soc/3f201000.uart/tty/ttyAMA0/hci0/hci0:11/0005:0111:1419.0006/input/input7
U: Uniq=28:9a:4b:04:81:27
H: Handlers=kbd mouse1 event2 js0
B: PROP=0
B: EV=2001f
B: KEY=ffff0000 1f0000 0 0 1000 40000800 0 0 0 0
B: REL=103
B: ABS=ffffff00 30627
B: MSC=10
B: LED=fjstest works except for those two buttons. It is recognized as a 32 axis controller with 21 buttons (it's basically an xbox 360 controller clone) so it's not correct.
Any help would be appreciated!
-
Do the buttons at least register in evtest?
-
Thanks for replying.
evtest does not list this controller. the cat ../devices shows it's handled by event2, but evtest skips that event totally:
/dev/input/event0: Logitech USB Receiver
/dev/input/event1: Logitech USB Receiver
/dev/input/event3: Xbox Gamepad (userspace driver)
/dev/input/event4: Xbox Gamepad (userspace driver) #2 -
Try running
evtest /dev/input/event2
to see if the system registers any input from those particular buttons.Edit: the userspace driver (xboxdrv I assume) might be interfering with it.
-
I get:
evtest: No such file or directory
Oops.. The controller powered off on me.. trying again..
evtest registers all button presses
Edit: Here's the output of the keys in question:
Select:
Event: time 1464139499.568293, -------------- EV_SYN ------------
Event: time 1464139557.911248, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0224
Event: time 1464139557.911248, type 1 (EV_KEY), code 158 (KEY_BACK), value 1
Event: time 1464139557.911248, -------------- EV_SYN ------------
Event: time 1464139557.989988, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0224
Event: time 1464139557.989988, type 1 (EV_KEY), code 158 (KEY_BACK), value 0Home(XBOX):
Event: time 1464139599.142817, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0223
Event: time 1464139599.142817, type 1 (EV_KEY), code 172 (KEY_HOMEPAGE), value 1
Event: time 1464139599.142817, -------------- EV_SYN ------------
Event: time 1464139599.255305, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0223
Event: time 1464139599.255305, type 1 (EV_KEY), code 172 (KEY_HOMEPAGE), value 0
Event: time 1464139599.255305, -------------- EV_SYN ------------ -
Someone might have a better plan of attack, but if you're stuck for a solution, i believe you can disable xboxdrv from the "RetroPie Setup" menu, find the event codes for those buttons using evtest and then proceed to manually map those events into an instance of xboxdrv in
/etc/rc.local
.Edit: If you chose to proceed in this direction, you can find a full guide below. Just keep in mind that the run-time command in the given example would be inserted into
/etc/rc.local
for your purposes.https://steamcommunity.com/app/221410/discussions/0/558748653738497361/
-
Thanks for your help. I'll look into that and post back.
-
I followed the guide, but had no luck. I'm at a loss, obviously.
-
Did you add the full path to xboxdrv (
/opt/retropie/supplementary/xboxdrv/bin/xboxdrv
) in/etc/rc.local
? Also, did you remember to reboot afterward? -
I did not put the full path to xboxdrv originally. I copied the input that was placed by retropie when I enabled the xboxdrv through setup. I have since added the full path, however, I have the same issue still.
Here is the line I added to rc.local:
/opt/retropie/supplementary/xboxdrv/bin/xboxdrv --evdev /dev/input/event3 --evdev-absmap ABS_RZ=y2,ABS_Z=x2,ABS_X=x1,ABS_Y=y1,ABS_HAT0Y=dpad_y,ABS_HAT0X=dpad_x --axismap -Y1=Y1,-Y2=Y2 --evdev-keymap BTN_NORTH=y,BTN_EAST=b,BTN_SOUTH=a,BTN_WEST=x,BTN_THUMBR=tr,BTN_THUMBL=tl,BTN_TL=lb,BTN_TR=rb,ABS_BRAKE=lt,ABS_GAS=rt,BTN_START=start,KEY_BACK=back -mimic-xpad --silent
If I watch the boot text it errors out with -mimic-xpad requires an argument.
-
So, I finally got the entry correct I believe, and the error I'm running into is there is no event3. I believe this stems from the bluetooth not having paired at this point in the boot process, and so there is nothing to be found. The controller often doesn't pair until just before or just after Emulationstation loads.
Edit:
I connected to the pi via SSH, and manually loaded xboxdrv with the same lines, and it works! Now, is there a way to execute this after the device is paired automatically? Or perhaps to delay the startup of Emulationstation until the device is paired, and the xboxdrv is loaded?
-
If a line can be added to
/etc/rc.local
just before the xboxdrv command that initiates the pairing first, you might be home free. However, I don't know if that's advisable or even possible. I'm going to experiment with this a little later this evening. -
Well, it's always something. A friend of mine made off with all my Bluetooth controllers to test with one of his own projects. What I was going to try was following this guide:
Specifically step 2.5 if the bookmark doesn't load properly.
After following all the steps, the command:
sudo systemctl enable /etc/systemd/system/connect-bluetooth.service
would be added to/etc/rc.local
right before the xboxdrv command rather than executing it normally as per the guide's instructions. This should do the job, but again, I am unable to test it myself. -
Not to try to revive an old thread... But, what did your udev rules file you manually added look like? I have a Steelseries Stratus XL that I am also trying to get working with RetroPie. Unfortunately google searching yields this as the only real source of information at all.
-
Same here... the Steelseries Stratus Controllers are perfect for me. I have two of them. Any chance of making them work with RetroPie?
-
I too am having a problem getting retropie to communicate with this device.
evtest and jstest all work just fine and recognize every single button, but I can not get retropie to use the controller.
What file was used to get it to start initially? Can you give steps for this? I would be happy with any keys working at this point.
-
@ninjasinpjs @WastlJ @OneAdam12
I used to have a SS Stratus XL. Did you try updating the firmware with SteelSeries engine 3 on PC? Use the MicroUSB port inside the battery compartment.
-
Has anyone been able to map all buttons on the Steelseries Stratus xl? I can map everything but 2 buttons and left of the right thumb stick. when it is connected, it shows up as /dev/input/js0, event4,event5,event7 and mouse0, jtest shows all buttons but those 3, evtest /dev/input/event4 shows the missing buttons. I am new at this, does anyone have any ideas. I have updated firmware, and the joypad is detect when Retropie starts.
thanks
Joe -
I was trying the same tonight. Only bought the joypad a few months ago. It always failed to detect the "start/xbox button" and "back" type buttons, and also seemed to easily skip through some of the key-presses for emulationstation device configuration.
I could see using the evtest tool that it would pick up those buttons for me on event6 (but those buttons only):
/dev/input/event6: SteelSeries Stratus XL Keyboard
/dev/input/event7: SteelSeries Stratus XL Mouse
/dev/input/event8: SteelSeries Stratus XL
/dev/input/event9: SteelSeries Stratus XLThis joypad seems to have a strange mode where it can emulate a mouse as well. Even just in Windows using Steam I had to turn off some settings to make it usable as a normal joypad as you would expect. In Windows it doesn't even detect as a Xbox 360 type device until the custom windows driver has been loaded and it's been rebooted - then it re-detects itself in windows as an xbox 360 controller. Took me a while just in Windows just to get it behaving as a normal xbox360 clone device.
I suspect due to the proprietress of this it may not be easy. I guess the question would be can retroarch/retropad handle a virtual device that is using say /dev/input/js0 and /dev/input/event6 and combine them?
Discovered in a box my old xbox 360 USB controller interface so I've given up on perusing this further.
-
Hi, @TheGuruAU :
I had the same problem and had to change the approach. Instead of directly trying to remap the direct bluetooth configuration, I have used the xboxdrv to change the default driver. Now Retropie sees my Stratus XL as an XBox joypad and I can use it in any emulator.
Full instructions are here. I removed the --force-feedback option.
My final command line to be included in /etc/rc.local to launch the xboxdrv was:
sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \ --evdev /dev/input/js1 \ --silent \ --detach-kernel-driver \ --deadzone-trigger 15% \ --deadzone 4000 \ --mimic-xpad \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_Z=x2,ABS_RZ=y2,ABS_BRAKE=lt,ABS_GAS=rt,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \ --evdev-keymap BTN_SOUTH=a,BTN_EAST=b,BTN_NORTH=x,BTN_WEST=y,BTN_THUMBL=lb,BTN_THUMBR=rb,BTN_TL=tl,BTN_TR=tr,KEY_HOMEPAGE=guide,KEY_BACK=back,BTN_START=start \ &
Please note that I had to point directly to /dev/input/js1, and that this might change in your setup. If you only have that joypad, it will probably js0 instead.
KR,
JP
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.