ValveSoftware / steam-for-linux

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

Xbox Series X controller detected as a generic gamepad #7767

Open mhalano opened 3 years ago

mhalano commented 3 years ago

Your system information

Please describe your issue in as much detail as possible:

After I connect my Xbox Series X controller over cable (can't pair over Bluetooth, but I think this is another issue), Steam detects the device as a generic X-Box game pad, as showed below: image Also, the picture is the same as the Xbox One controller: image I updated the firmware of this controller using a Windows machine with the correspondent app.

Steps for reproducing this issue:

  1. Plug the Xbox Series X controller on a Linux computer
  2. Check in the configurations the name and the picture
  3. Be disappointed :(

Very similar problem with this issue #7644 but that was a 3rd-party Xbox One controller. This problem occurs with an official Microsoft controller.

mhalano commented 3 years ago

I was capable to pair over Bluetooth with another laptop and also appears as a Xbox One controller, not a Xbox Series X one.

DanMan commented 3 years ago

And the actual issue is? That the one button front center can't be configured? How is that pad functionally different to the XB1 pad? Or is this just about cosmetics?

mhalano commented 3 years ago

@DanMan It's cosmetic, but is also an issue. An Xbox Series X controller should appear as an Xbox Series X controller, with correct photo and description. Another problem, there is a "share" button, just present on the Series X controller, not the One controller, that not show in the screen to be configured. It's strange because IIRC the Sony's DualSense controller already is supported, but not this controller.

DanMan commented 3 years ago

Check ~/.local/share/Steam/tenfoot/resource/images/library/controller to see for which controllers images exist. XB1X is actually in there, so your device might have a new, unknown USB device ID. Might want to post the output of lsusb here while it's connected.

mhalano commented 3 years ago

I checked that directory as you said, and there is an image for Xbox Series X controller. So exists a real bug, because even the controller is supported, it doesn't show as expected when plugged (over cable or Bluetooth).

mhalano commented 3 years ago

Here are Gists with the console logs for me opening and closing Steam with multiple controllers connected. I saw an error about how Steam is dealing with the serial number of both Xbox controllers (Series X, One S and One ELite), but I don't know if this is the real reason to not detect the right model. ~Could be, because The Xbox One controller seems the fallback model, so if a problem occurs I couldn't say because the fallback model is the same as the one I connected initially.~ The Xbox One Elite Series 2 is recognized correctly over cable, even with the message about the serial number. The Elite controller is recognized as a regular Xbox One controller over Bluetooth, but could be another issue. Here are the gists: Xbox Series X controller - https://gist.github.com/mhalano/1aa7a690bf5ac7e4a84edae4d6419250 Xbox One S controller - https://gist.github.com/mhalano/faf687990385874a936ef0439f3f56ff PS5/DualSense controller - https://gist.github.com/mhalano/d62997f5640ddd79109bcc83cde7d500 PS4/DualShock 4 controller - https://gist.github.com/mhalano/2d4034a151844672bd28fcda90741a5c Steam controller - https://gist.github.com/mhalano/4309e76f8e4c51a8ddc8f694503c50d1 Xbox One Elite Series 2 controller - https://gist.github.com/mhalano/ad847fc1430149ea0a7f38653828b631

mhalano commented 3 years ago

I did some updates to my previous comment because I got a new Xbox One Elite Series 2 controller.

mhalano commented 3 years ago

Any news about this issue?

mhalano commented 2 years ago

Any news? Now I'm using Ubuntu 21.10. It showed in the log the correct model, a Xbox Series X controller, but inside Steam still recognized as Xbox One controller

mhalano commented 2 years ago

I was trying to understand the behavior, but I think is related to how Steam recognizes the controller. Here is the Elite Series 2 controller with path as sdl://0 image Here is the PS4 controller recognized using hidraw: image @kisak-valve Do you know anyone who understands SDL, hidraw and the input part, so we can move the issue on?

mhalano commented 2 years ago

After a lot of research, I think the problem is beyond Steam. The controllers are recognized as Xbox One model by kernel itself. So someone has to change the Linux code itself to recognize the controllers correctly. The one perk was the Elite 2 was recognized correctly via USB.

X6205 commented 2 years ago

Linux kernel does not support new XBOX Series controller. Only working driver which i know is xpadneo. After installation it's working as expected (via BT). Without installation of xpadneo i can still pair it via BT but in games is everything broken and buttons/joystick don't behave properly.

Maybe one day will be xpadneo mainlined, but meanwhile we are out of luck. https://github.com/atar-axis/xpadneo/issues/44

Unfortunatelly in my country is not possble to buy previous XBOX One controller which has working driver in the kernel.

mhalano commented 2 years ago

@X6205 Very meaningful, thanks.

A long shot: can be all string related. My Xbox Series S|X controller is recognized, via USB, as an Xbox One controller because the string used as identifier. See that: image May be Steam parses that and found "One" and defines the controller is for Xbox One (I'm working to fix that). Strange the Steam's logs inform the correct device "Xbox Series X Controller", may be because SDL, but Steam seems doesn't care.

mhalano commented 2 years ago

The thing which bugs me is the Xbox Elite Series 2 controller is recognized correctly, but just over USB and kernel identifies as a generic Xbox pad. image So, I question if the way kernel recognizes the controller is meaningful for Steam.

ArtyIF commented 1 year ago

I'm using xpadneo and an Xbox Series controller over Bluetooth. Mine gets detected as an Xbox 360 controller after I accidentally hit the Setup Device Inputs in the new Deck-like Big Picture mode and had to rebind all the controls. And because by default xpadneo turns the Share button into F11 (or was it F12?), I skipped it when Steam prompted me to, after which my Xbox Wireless Controller turned into an Xbox 360 controller, including all the prompts and the graphic. OS is Fedora 37 KDE, latest kernel

IMG_20230305_200457

Balderick commented 1 year ago

Due to Steams Define Layout ui and nbpm Setup Input Device are broken we can use a standalone SDL configurator sdl2-gamepad-mapper https://gitlab.com/ryochan7/sdl2-gamepad-mapper

This is a great reminder of how awesomely configurable Steam SDL used to be though unlike the old Define Layout ui from large or obpm we can not choose which supported controller type we can set. Which is also completely missing from nbpm.

Steam is not detecting controllers like expected and is not applying controller layouts like expected.

My 8BitDo Pro 2 controller in X mode gets detected as xbox 360 controller using BT but gets detected as Xbox One controller using usb. Only xb1 config with xbox config and extended xbox feature set drivers enabled gets share (star) button working for screenshot in game. The paddles on back are never mappable or detected by Steam SDL.
Steam used to detect it as ps type controller ootb in d mode but then started telling me a generic controller is being used. So lost ps support in Steam SDL. Using ds4windows to emulate ps4 controller through 8BitDo Pro 2 got PS support working again in Steam SDL. Even when ds4windows is not running. Doing this makes controller configs that get saved to config.vdf - which is where nbpm should save new controller layouts created by end user but it doesnt.

All this shows how broken Steam SDL ui is. Steam uses sdl2 and sdl3 dlls

ArtyIF commented 1 year ago

UPD: doesn't seem to be Steam's fault as gamepad-tester.com also recognizes it as an Xbox 360 gamepad

Balderick commented 1 year ago

What you described in post from 5 days ago with reference to skipping button in nbpm Define Input Device ui, what you did was told Steam SDL that button does not exist as Skip actually clears any previous mapping. Bad design. Hiding that button from Steam SDL is enough to stop using the extended feature drivers so to stop that steam recategorised your controller type to xbox 360 instead of the expected xbox one type controller being set.

8Bit Do Pro 2 controller in xinput mode using BT gets seen by steam as xbox one controller but with usb it gets seen as xbox 360 controller.

imo we need a ui in steam where we can add buttons and not just skip to clear when making controller layouts. Valve also need to provide a way of managing controller type set from Define Input Device in a more supported way like what is found Define Layout ui when uploading any controller layout we can set any controller type from the drop down list of supported controllers. Steam also should be checking for other mapping software and doesnt seem to be detceting xpadneo or if it did you would not see the Define Input Device button in nbpm controller settings. Compare desktop modes define layout ui - no Define Layout button should show if xpadneo driver is being used since it maps controller too. There is active discussion on this in libsdl.org forum On steam for windows using 8BitDo Pro 2 set to A mode with ds4windows to emulate ps4 controller even when ds4windows is not running after steam installed steamxbox.sys driver to the wireless controller device seen by windows - Steam always sees a ps4 controller and no DEfine Layout ui button in controller settings is available. Equates to new expected behaviour for libsdl if you read the changelogs and the merge discussions on libsdl.org .

You are describing multiple steam input issues. The lack of transparency and support regarding the steam input changes from Valve is alarmingly concerning. imo somebody from Valve should be explaining the new expected behaviout in Steam Input uis. That way steam users have a better chance of understanding what is and what is not expected behaviour. i.e. plugging in xbox x/s controller using latest firmware showing as xbox 360 device by OS is expected behaviour

Fact is due to broken Steam Input ui's steam input is more hardcoded than ever. Which would be fine, if evrything just worked ootb. But we need more configurability with regard to detected controller types, changing controller types and managing controller layouts only then can we hope all our old game configs, custom desktop,big picture and global chord shortcut configs are usable again.