ValveSoftware / steam-for-linux

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

Disabled Steam Input, steam still converts Joystick to XBOX Controller #10376

Open kralle71 opened 8 months ago

kralle71 commented 8 months ago

Your system information

Please describe your issue in as much detail as possible:

I bought a new Joystick (TurtleBeach VelocityOne Flightstick) to play MSFS.

My OS recognizes it as intended. evtest, jstest, AntiMicroX all work.

Game is running fine but Steam converts my Joystick to a XBOX Controller. That leads to problems with axis mapping to the triggers, buttons are mapped to xbox buttons, missing axes.

I tried multiple games, all games recognize a controller, but no flightstick.

I tried Steam Repo Version (OpensuseTumbleweed) and Flatpak Version.

I tried to disable/enable Steam Input for per game settings.

I tried chmod 666 to

/dev/uinput

/dev/input

I tried to chown those.

I tried SDL_JOYSTICK_DISABLE_UDEV=1

I tried to modify

/lib/udev/rules.d/60-steam-controller.rules

/etc/udev/rules.d/90-steam-controller.rules

with

# TurtleBeach VelocityOne Flightstick
KERNEL=="hidraw*", ATTRS{idVendor}=="10f5", KERNELS=="*10f5:7055*", MODE="0666", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="10f5", ATTRS{idProduct}="7055", MODE="0666", TAG+="uaccess"
KERNEL=="event[0-9]*", ATTRS{idVendor}=="10f5", KERNELS=="*10f5:7055*", MODE="0666", TAG+="uaccess"
KERNEL=="event[0-9]*", ATTRS{idVendor}=="10f5", ATTRS{idProduct}="7055", MODE="0666", TAG+="uaccess"

udevadmn gives:

udevadm info -an /dev/input/event4

looking at device '/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4:1.0/0003:10F5:7055.000B/input/input36/event4':
    KERNEL=="event4"
    SUBSYSTEM=="input"
    DRIVER==""
    ATTR{power/async}=="disabled"
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_enabled}=="disabled"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"
    ATTR{power/runtime_usage}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4:1.0/0003:10F5:7055.000B/input/input36':
    KERNELS=="input36"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{capabilities/abs}=="300ff"
    ATTRS{capabilities/ev}=="10001b"
    ATTRS{capabilities/ff}=="0"
    ATTRS{capabilities/key}=="ff 0 0 0 0 0 0 ffff00000000 0 0 0 0"
    ATTRS{capabilities/led}=="0"
    ATTRS{capabilities/msc}=="10"
    ATTRS{capabilities/rel}=="0"
    ATTRS{capabilities/snd}=="0"
    ATTRS{capabilities/sw}=="0"
    ATTRS{id/bustype}=="0003"
    ATTRS{id/product}=="7055"
    ATTRS{id/vendor}=="10f5"
    ATTRS{id/version}=="0111"
    ATTRS{inhibited}=="0"
    ATTRS{name}=="Turtle Beach VelocityOne Flightstick"
    ATTRS{phys}=="usb-0000:02:00.0-4/input0"
    ATTRS{power/async}=="disabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{properties}=="0"
    ATTRS{uniq}=="75238026183594@A"

  looking at parent device '/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4:1.0/0003:10F5:7055.000B':
    KERNELS=="0003:10F5:7055.000B"
    SUBSYSTEMS=="hid"
    DRIVERS=="hid-generic"
    ATTRS{country}=="00"
    ATTRS{power/async}=="enabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4:1.0':
    KERNELS=="1-4:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usbhid"

Steam Logs:

steam-logs.tar.gz

cat .steam/steam/logs/controller.txt

[2024-01-09 10:51:25] Local Device Found
  type: 10f5 7055
  path: sdl://1
  serial_number:  - 0
[2024-01-09 10:51:25]   Manufacturer: 
[2024-01-09 10:51:25]   Product:      Turtle Beach VelocityOne Flightstick
[2024-01-09 10:51:25]   Release:      111
[2024-01-09 10:51:25]   Interface:    -1

[2024-01-09 10:51:30] Opted-in Controller Mask for AppId 0: 4
[2024-01-09 10:51:30] BYieldingMarkControllerConfigsInUse
[2024-01-09 10:51:30] Local Device Found
  type: 10f5 7055
  path: sdl://1
  serial_number:  - 0
[2024-01-09 10:51:30]   Manufacturer: 
[2024-01-09 10:51:30]   Product:      Generic X-Box pad
[2024-01-09 10:51:30]   Release:      111
[2024-01-09 10:51:30]   Interface:    -1

[2024-01-09 10:51:30] !! Steam controller device opened for index 0.
[2024-01-09 10:51:30] Steam Controller reserving XInput slot 0
[2024-01-09 10:51:30] Controller has an Invalid or missing unit serial number, setting to '10f5-7055-763380'
[2024-01-09 10:51:31] Controller PollState Changed from 0 to 1
[2024-01-09 10:51:31] BYieldingQueryAccountsRegisteredToController
[2024-01-09 10:51:31] Controller PollState Changed from 1 to 2
[2024-01-09 10:51:31] Opted-in Controller Mask for AppId 0: 4
[2024-01-09 10:51:31] Opted-in Controller Mask for AppId 413080: 4
[2024-01-09 10:51:31] ConfigSet - found config set file on-disk: /home/$USER/.local/share/Steam/steamapps/common/Steam Controller Configs/7746432/config/configset_controller_generic.vdf
[2024-01-09 10:51:31] Set Account Config Sets 0 0 0
[2024-01-09 10:51:32] No cached sticky mapping in ActivateActionSet.
[2024-01-09 10:51:32] CClientJobFetchPersonalizationFileID - AutoCloud

Any idea how to use my flightstick?

kralle71 commented 8 months ago

Now I tried in Windows. Steam recognizes the Flightstick. MSFS recognizes the Flightstick and everything works.

provided some screenshots https://imgur.com/a/TSYaEDt

as you can see. Linux Steam converts both my Flightstick and my Xbox Gamepad to "Generic X-BOX Pad"

kralle71 commented 8 months ago

Maybe the problem is because of the vendor "Turtle Beach"? The logs say: [2024-01-09 10:51:25] Local Device Found type: 10f5 7055 path: sdl://1 serial_number: - 0 Controller has an Invalid or missing unit serial number, setting to '10f5-7055-763380'

braye commented 7 months ago

Confirming that I have the same issue using Flatpak Steam on NixOS 23.11 with the VelocityOne Flightstick.

Trying to run MSFS with Proton Experimental.

I tried slightly different udev rules:

KERNEL=="hidraw*", ATTRS{idVendor}=="10f5", ATTRS{idProduct}=="7055", MODE="0660", TAG+="uaccess"
KERNEL=="js*", ATTRS{idVendor}=="10f5", ATTRS{idProduct}=="7055", MODE="0660", TAG+="uaccess"

They didn't seem to change anything.

controller.txt shows the following when I plug in the controller:

[2024-01-27 01:54:02] Local Device Found
  type: 10f5 7055
  path: sdl://13
  serial_number:  - 0
[2024-01-27 01:54:02]   Manufacturer: 
[2024-01-27 01:54:02]   Product:      Generic X-Box pad
[2024-01-27 01:54:02]   Release:      111
[2024-01-27 01:54:02]   Interface:    -1

[2024-01-27 01:54:02] !! Steam controller device opened for index 0.
[2024-01-27 01:54:02] Steam Controller reserving XInput slot 0
[2024-01-27 01:54:02] Controller has an Invalid or missing unit serial number, setting to '10f5-7055-24364d6'
[2024-01-27 01:54:02] Controller PollState Changed from 0 to 1
[2024-01-27 01:54:03] BYieldingQueryAccountsRegisteredToController
[2024-01-27 01:54:03] CClientJobFetchPersonalizationFileID - AutoCloud
[2024-01-27 01:54:03] BYieldingRegisterSteamController
[2024-01-27 01:54:03] BYieldingCompleteSteamControllerRegistration
[2024-01-27 01:54:04] BYieldingCompleteSteamControllerRegistration - Error committing registration completion of controller & account pair: 10f5-7055-24364d6 Invalid Parameter

The controller does show up in the controller test window, with the correct vendor/product IDs, and the input does move the joysticks/triggers in the test window.

Probably worth mentioning that I have a Bottles installation running wine-ge-proton-8-25, and the joystick shows up as expected in the wine control panel.

braye commented 7 months ago

Tested X-Plane 12 running natively today and the flight stick works fine. Output in controller.txt is different:

[2024-02-02 05:11:48] Local Device Found
  type: 10f5 7055
  path: sdl://14
  serial_number:  - 0
[2024-02-02 05:11:48]   Manufacturer: 
[2024-02-02 05:11:48]   Product:      Generic X-Box pad
[2024-02-02 05:11:48]   Release:      111
[2024-02-02 05:11:48]   Interface:    -1

[2024-02-02 05:11:48] !! Steam controller device opened for index 0.
[2024-02-02 05:11:48] Steam Controller reserving XInput slot 0
[2024-02-02 05:11:48] Controller has an Invalid or missing unit serial number, setting to '10f5-7055-24364d6'
[2024-02-02 05:11:48] Controller PollState Changed from 0 to 1
[2024-02-02 05:11:49] BYieldingQueryAccountsRegisteredToController
[2024-02-02 05:11:49] CClientJobFetchPersonalizationFileID - AutoCloud
[2024-02-02 05:12:03] Controller 0 mapping uses xinput : false
[2024-02-02 05:12:06] Controller 0 mapping uses xinput : false
[2024-02-02 05:12:06] Controller 0 mapping uses xinput : false
[2024-02-02 05:12:06] Controller 0 mapping uses xinput : false

The last four lines appear after launching the game.

I tested the joystick in DCS: A-10C Warthog and it also shows up as "Generic X-Box Pad". Seems to point to an issue with Proton games only - native games (at least X-Plane 12) work fine.

wysiwyng commented 3 months ago

I have the same issue, running on Arch Linux with Arch repo Steam installation, also Turtle Beach Velocity One Flightstick. MSFS 2020 using Proton Experimental only picks up the joystick as a generic gamepad, leading to axes and buttons not being available. This seems like an issue with wine, after resetting the wine (proton) prefix for MSFS 2020 and applying these: https://www.reddit.com/user/xatrekak/comments/12hnz0d/fixing_vkb_and_virpil_hotas_running_on_linux/ steps, the joystick is correctly recognized as such.