ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.21k stars 174 forks source link

Stratus Duo can't be found #6908

Closed dubrowgn closed 2 years ago

dubrowgn commented 4 years ago

Your system information

Please describe your issue in as much detail as possible:

Steam detects my Stratus Duo controller, but won't use it for some reason. Running steam via terminal shows:

Local Device Found
  type: 1038 1430
  path: sdl://1
  serial_number:  - 0
  Manufacturer: 
  Product:      SteelSeries Stratus Duo
  Release:      175
  Interface:    -1

But, the controller is not usable, and the UI shows "No Controllers Detected." This may be hardware (maybe USB controller?) related, as the same controller, connected to a system running the same software stack on older Intel hardware, is able to be detected and used without issue by the same version of steam. I've tried moving the receiver to each of the available USB ports on the machine without success.

Hardware summary - I'm running a Ryzen 3700X based system with the generic Ubuntu 5.3 kernel. I've also tried the 5.0 and 5.5 kernels with the same result.

I tried udev rules for setting the mode to 0666. I confirmed that the new mode was being applied, but the issue persists.

I've seen reports of issues with the 5.3 kernel and systemd 243. However, I'm running systemd 237, and I've tried downgrading to the 5.0 kernel without success.

jstest detects and is able to use the controller without issue.

Steps for reproducing this issue:

  1. Plug in Stratus Duo receiver, and turn on controller
  2. Run steam via terminal, notice controller is detected
  3. Notice controller is unusable, and steam UI shows "No Controllers Detected"
dubrowgn commented 4 years ago

To help rule out the USB controllers, I tried installing a PCIe add-in card. I got the same behavior when plugging into the PCIe card. In case it helps, lspci shows the following for USB controllers on my machine. Renesas is the add-in card.

$ lspci | grep USB
02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] Device 43d0 (rev 01)
06:00.0 USB controller: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev 02)
07:00.0 USB controller: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller
0d:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
iliaan commented 4 years ago

+1 same problem here

jstest shows that device working, but steam UI shows "No Controllers Detected" Added to /lib/udev/rules.d/99-steam-controller-perms.rules

# SteelSeries Duo
KERNEL=="uinput", MODE="0666"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1038", ATTRS{idProduct}=="1430", MODE="0666"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", KERNELS=="0005:1038:1430.*", MODE="0666"

and

sudo udevadm control --reload-rules
sudo udevadm trigger

this did not help.

@dubrowgn how did you run steam from shell so it would show ?:

Local Device Found
  type: 1038 1430

System info:

System:    Host: ilia-antec Kernel: 5.3.0-40-generic x86_64 bits: 64
           Desktop: Gnome 3.28.4 Distro: Ubuntu 18.04.4 LTS
Machine:   Device: desktop System: Gigabyte product: N/A serial: N/A
           Mobo: Gigabyte model: X79-UD3 serial: N/A
           UEFI: American Megatrends v: F20 date: 03/19/2014
Battery    hidpp__0: charge: N/A condition: NA/NA Wh
CPU:       Quad core Intel Core i7-4820K (-MT-MCP-) speed/max: 1200/3900 MHz
Graphics:  Card: NVIDIA GP104 [GeForce GTX 1070]
           Display Server: x11 (X.Org 1.20.5 )
           drivers: nvidia (unloaded: modesetting,fbdev,vesa,nouveau)
           Resolution: 2560x1440@144.00hz
           OpenGL: renderer: GeForce GTX 1070/PCIe/SSE2
           version: 4.6.0 NVIDIA 440.64
Network:   Card: Intel 82579V Gigabit Network Connection driver: e1000e
Drives:    HDD Total Size: 3037.6GB (21.0% used)
Info:      Processes: 360 Uptime: 33 min Memory: 2531.1/15930.1MB
           Client: Shell (bash) inxi: 2.3.56 

lsusb

Bus 002 Device 006: ID 1038:1430 SteelSeries ApS 
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 003: ID 1532:005c Razer USA, Ltd 
Bus 005 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
dubrowgn commented 4 years ago

@iliaan I just ran steam from a terminal and it showed up during launch. You can also switch on the controller after steam has started, and it displays the same output for me.

iliaan commented 4 years ago

I had found some ugly workaround

1) Pair Controller with my Android mobile 2) Launch Steam on my PC 3) Launch Steam Link on my mobile (Steam link recognizes Stratus Duo ) and connects to PC 4) Play, controller passed though android->steam link->pc, ugly, but works

Next step would be to test with Bluetooth dongle plugged directly to my PC, don't have dongle yet.

dubrowgn commented 4 years ago

I can get the controller to work on my setup using a bluetooth dongle. It works, but it's unfortunate because the controller battery life is a lot shorter.

dubrowgn commented 4 years ago

I can confirm the same behavior using Ubuntu 20.04.

bender-the-greatest commented 4 years ago

I'm not sure why I have to set the environment variable for this but I was able to get my Stratus Duo to work with the USB dongle by generating an SDL configuration and exporting the SDL_GAMECONROLLERCONFIG variable I created. For convenience I added the following line to /etc/environment (the config string is mine but I have it here as an example):

SDL_GAMECONTROLLERCONFIG="03000000381000003014000075010000,SteelSeries Stratus Duo,a:b0,b:b1,x:b2,y:b3,back:b6,guide:b8,start:b7,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,"

I used this tool to generate my SDL configuration string which goes on the righthand side of the above line of code. This fixed my SteelSeries not being seen by Steam as well as several games that weren't able to work with it out of the box either.

dubrowgn commented 4 years ago

@bender-the-greatest thank you! Setting SDL_GAMECONROLLERCONFIG worked for me as well. I ended up with the same configuration, but I see there are two guids for the Stratus Duo with the same mappings in https://github.com/gabomdq/SDL_GameControllerDB/blob/master/gamecontrollerdb.txt

anti-mony commented 3 years ago

@bender-the-greatest Thanks ! Setting the environment variable worked for me too.

kisak-valve commented 2 years ago

Hello, is anyone still experiencing this issue on an up to date system?

This reads like @bender-the-greatest's SDL_GAMECONTROLLERCONFIG should be sent to upstream libSDL to go beside https://github.com/libsdl-org/SDL/blob/7fd46ec581d45ec3fea3fcfe226bbc2ae824fc7c/src/joystick/SDL_gamecontrollerdb.h#L767. After that is in place and confirmed healthy, then someone should open a pull request for the udev line in https://github.com/ValveSoftware/steam-devices/blob/master/60-steam-input.rules.

iliaan commented 2 years ago

Working fine, out of the box, for the past year, on Ubuntu 22.04/20.04, can be closed

dubrowgn commented 2 years ago

I retested on a fresh install of Linux Mint 21 (Ubuntu 22.04 base) without the work around, and the controller works as expected. Thanks everyone!