Fedora Account System
Red Hat Associate
Red Hat Customer
Description of problem: When using Wayland, the steam controller's touchpad does not function as a mouse as it does in Xorg. I apologise as I'm not sure which project this should be reported to. It could be Steam, Wayland or Libinput (or something else entirely). Please point me in the right direction if libinput is not the correct location for this bug. My first thought was Steam-Linux, but there is a bug report there: https://github.com/ValveSoftware/steam-for-linux/issues/4738#issuecomment-271682124 and Valve said: "If something works well in Steam's native X environment and not in Wayland, odds are it's an issue or decision that has to do with Wayland's X compatibility; please raise this to the appropriate distro folks instead. If it turns out we can do something slightly different to work around their issue, then we'd be happy to hear about it." Version-Release number of selected component (if applicable): libinput 1.14.2 xf86-input-libinput 0.29.0 (not that this should be relevant for Wayland?) wayland 1.17.0 How reproducible: Always Steps to Reproduce: 1. Log in to a wayland session (any desktop environment) 2. Open Steam 3. Try to use the steam controller as a mouse Actual results: The steam controller's touchpad should act as a mouse Expected results: The steam controller's input does nothing Additional info: Output of evemu-describe: # evemu-describe Available devices: /dev/input/event0: Sleep Button /dev/input/event1: Power Button /dev/input/event2: Power Button /dev/input/event3: PC Speaker /dev/input/event4: flirc.tv flirc Keyboard /dev/input/event5: flirc.tv flirc Consumer Control /dev/input/event6: flirc.tv flirc System Control /dev/input/event7: Valve Software Steam Controller /dev/input/event9: Video Bus /dev/input/event10: HDA Intel PCH HDMI/DP,pcm=3 /dev/input/event11: HDA Intel PCH HDMI/DP,pcm=7 /dev/input/event12: HDA Intel PCH HDMI/DP,pcm=8 /dev/input/event13: HDA Intel PCH HDMI/DP,pcm=9 /dev/input/event14: HDA Intel PCH HDMI/DP,pcm=10 Select the device event number [0-14]: 7 # EVEMU 1.3 # Kernel: 5.3.7-arch1-1-ARCH # DMI: dmi:bvnAmericanMegatrendsInc.:bvr5.12:bd07/01/2018:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnDefaultstring:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring: # Input device name: "Valve Software Steam Controller" # Input device ID: bus 0x03 vendor 0x28de product 0x1142 version 0x111 # Supported events: # Event type 0 (EV_SYN) # Event code 0 (SYN_REPORT) # Event code 1 (SYN_CONFIG) # Event code 2 (SYN_MT_REPORT) # Event code 3 (SYN_DROPPED) # Event code 4 ((null)) # Event code 5 ((null)) # Event code 6 ((null)) # Event code 7 ((null)) # Event code 8 ((null)) # Event code 9 ((null)) # Event code 10 ((null)) # Event code 11 ((null)) # Event code 12 ((null)) # Event code 13 ((null)) # Event code 14 ((null)) # Event code 15 (SYN_MAX) # Event type 1 (EV_KEY) # Event code 1 (KEY_ESC) # Event code 2 (KEY_1) # Event code 3 (KEY_2) # Event code 4 (KEY_3) # Event code 5 (KEY_4) # Event code 6 (KEY_5) # Event code 7 (KEY_6) # Event code 8 (KEY_7) # Event code 9 (KEY_8) # Event code 10 (KEY_9) # Event code 11 (KEY_0) # Event code 12 (KEY_MINUS) # Event code 13 (KEY_EQUAL) # Event code 14 (KEY_BACKSPACE) # Event code 15 (KEY_TAB) # Event code 16 (KEY_Q) # Event code 17 (KEY_W) # Event code 18 (KEY_E) # Event code 19 (KEY_R) # Event code 20 (KEY_T) # Event code 21 (KEY_Y) # Event code 22 (KEY_U) # Event code 23 (KEY_I) # Event code 24 (KEY_O) # Event code 25 (KEY_P) # Event code 26 (KEY_LEFTBRACE) # Event code 27 (KEY_RIGHTBRACE) # Event code 28 (KEY_ENTER) # Event code 29 (KEY_LEFTCTRL) # Event code 30 (KEY_A) # Event code 31 (KEY_S) # Event code 32 (KEY_D) # Event code 33 (KEY_F) # Event code 34 (KEY_G) # Event code 35 (KEY_H) # Event code 36 (KEY_J) # Event code 37 (KEY_K) # Event code 38 (KEY_L) # Event code 39 (KEY_SEMICOLON) # Event code 40 (KEY_APOSTROPHE) # Event code 41 (KEY_GRAVE) # Event code 42 (KEY_LEFTSHIFT) # Event code 43 (KEY_BACKSLASH) # Event code 44 (KEY_Z) # Event code 45 (KEY_X) # Event code 46 (KEY_C) # Event code 47 (KEY_V) # Event code 48 (KEY_B) # Event code 49 (KEY_N) # Event code 50 (KEY_M) # Event code 51 (KEY_COMMA) # Event code 52 (KEY_DOT) # Event code 53 (KEY_SLASH) # Event code 54 (KEY_RIGHTSHIFT) # Event code 55 (KEY_KPASTERISK) # Event code 56 (KEY_LEFTALT) # Event code 57 (KEY_SPACE) # Event code 58 (KEY_CAPSLOCK) # Event code 59 (KEY_F1) # Event code 60 (KEY_F2) # Event code 61 (KEY_F3) # Event code 62 (KEY_F4) # Event code 63 (KEY_F5) # Event code 64 (KEY_F6) # Event code 65 (KEY_F7) # Event code 66 (KEY_F8) # Event code 67 (KEY_F9) # Event code 68 (KEY_F10) # Event code 69 (KEY_NUMLOCK) # Event code 70 (KEY_SCROLLLOCK) # Event code 71 (KEY_KP7) # Event code 72 (KEY_KP8) # Event code 73 (KEY_KP9) # Event code 74 (KEY_KPMINUS) # Event code 75 (KEY_KP4) # Event code 76 (KEY_KP5) # Event code 77 (KEY_KP6) # Event code 78 (KEY_KPPLUS) # Event code 79 (KEY_KP1) # Event code 80 (KEY_KP2) # Event code 81 (KEY_KP3) # Event code 82 (KEY_KP0) # Event code 83 (KEY_KPDOT) # Event code 86 (KEY_102ND) # Event code 87 (KEY_F11) # Event code 88 (KEY_F12) # Event code 96 (KEY_KPENTER) # Event code 97 (KEY_RIGHTCTRL) # Event code 98 (KEY_KPSLASH) # Event code 99 (KEY_SYSRQ) # Event code 100 (KEY_RIGHTALT) # Event code 102 (KEY_HOME) # Event code 103 (KEY_UP) # Event code 104 (KEY_PAGEUP) # Event code 105 (KEY_LEFT) # Event code 106 (KEY_RIGHT) # Event code 107 (KEY_END) # Event code 108 (KEY_DOWN) # Event code 109 (KEY_PAGEDOWN) # Event code 110 (KEY_INSERT) # Event code 111 (KEY_DELETE) # Event code 119 (KEY_PAUSE) # Event code 125 (KEY_LEFTMETA) # Event code 126 (KEY_RIGHTMETA) # Event code 127 (KEY_COMPOSE) # Event code 272 (BTN_LEFT) # Event code 273 (BTN_RIGHT) # Event code 274 (BTN_MIDDLE) # Event code 275 (BTN_SIDE) # Event code 276 (BTN_EXTRA) # Event type 2 (EV_REL) # Event code 0 (REL_X) # Event code 1 (REL_Y) # Event code 8 (REL_WHEEL) # Event code 11 (REL_WHEEL_HI_RES) # Event type 4 (EV_MSC) # Event code 4 (MSC_SCAN) # Event type 17 (EV_LED) # Event code 0 (LED_NUML) # State 0 # Event code 1 (LED_CAPSL) # State 0 # Event code 2 (LED_SCROLLL) # State 0 # Event code 3 (LED_COMPOSE) # State 0 # Event code 4 (LED_KANA) # State 0 # Event type 20 (EV_REP) # Event code 0 (REP_DELAY) # Event code 1 (REP_PERIOD) # Properties: N: Valve Software Steam Controller I: 0003 28de 1142 0111 P: 00 00 00 00 00 00 00 00 B: 00 0b 00 00 00 00 00 00 00 B: 01 fe ff ff ff ff ff ff ff B: 01 ff ff cf 01 df ff 80 e0 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 1f 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 02 03 09 00 00 00 00 00 00 B: 03 00 00 00 00 00 00 00 00 B: 04 10 00 00 00 00 00 00 00 B: 05 00 00 00 00 00 00 00 00 B: 11 1f 00 00 00 00 00 00 00 B: 12 00 00 00 00 00 00 00 00 B: 14 03 00 00 00 00 00 00 00 B: 15 00 00 00 00 00 00 00 00 B: 15 00 00 00 00 00 00 00 00
run libinput record please and record a short movement of the touchpad (it's in libinput-utils.rpm). I don't see anything immediately sticking out, the touchpad should be detected and handled as normal mouse. Also, "under Wayland" means GNOME on Wayland, right?
It happens in both GNOME and KDE. I'm not seeing any output in linpinput-record. I get this output: # Event type 2 (EV_REL) # Event code 0 (REL_X) # Event code 1 (REL_Y) # Event code 8 (REL_WHEEL) # Event code 11 (REL_WHEEL_HI_RES) # Event type 4 (EV_MSC) # Event code 4 (MSC_SCAN) # Event type 17 (EV_LED) # Event code 0 (LED_NUML) # State 0 # Event code 1 (LED_CAPSL) # State 0 # Event code 2 (LED_SCROLLL) # State 0 # Event code 3 (LED_COMPOSE) # State 0 # Event code 4 (LED_KANA) # State 0 # Event type 20 (EV_REP) # Event code 0 (REP_DELAY) # Event code 1 (REP_PERIOD) # Properties: name: "Valve Software Steam Controller" id: [3, 10462, 4418, 273] codes: 0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] # EV_SYN 1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 96, 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 119, 125, 126, 127, 272, 273, 274, 275, 276] # EV_KEY 2: [0, 1, 8, 11] # EV_REL 4: [4] # EV_MSC 17: [0, 1, 2, 3, 4] # EV_LED 20: [0, 1] # EV_REP properties: [] hid: [5, 1, 9, 6, 149, 1, 161, 1, 133, 1, 5, 7, 25, 224, 41, 231, 21, 0, 37, 1, 117, 1, 149, 8, 129, 2, 149, 1, 117, 8, 129, 1, 149, 5, 117, 1, 5, 8, 25, 1, 41, 5, 145, 2, 149, 1, 117, 3, 145, 1, 149, 6, 117, 8, 21, 0, 37, 101, 5, 7, 25, 0, 41, 101, 129, 0, 192, 5, 1, 9, 2, 161, 1, 133, 2, 9, 1, 161, 0, 5, 9, 25, 1, 41, 5, 21, 0, 37, 1, 149, 5, 117, 1, 129, 2, 149, 1, 117, 3, 129, 1, 5, 1, 9, 48, 9, 49, 9, 56, 21, 129, 37, 127, 117, 8, 149, 3, 129, 6, 192, 192 ] udev: properties: - ID_INPUT=1 - ID_INPUT_KEY=1 - ID_INPUT_KEYBOARD=1 - ID_INPUT_MOUSE=1 - LIBINPUT_DEVICE_GROUP=3/28de/1142:usb-0000:00:14.0-6 quirks: events: But nothing comes up under events on any press of the touchpad or buttons. Which is strange, because if I press the button I have assigned to right click, the right click menu appears so something is definitely responding to the controller. The same thing happens with the d-pad which I have bound to the arrow keys. If I'm in a program with a scroll bar I can move up and down. What I did notice is that there's a second device listed when steam starts. Steam seems to add a virtual X-Box 360 controller: sudo evemu-describe Available devices: /dev/input/event0: Sleep Button /dev/input/event1: Power Button /dev/input/event2: Power Button /dev/input/event3: PC Speaker /dev/input/event4: Logitech Logitech USB Keyboard /dev/input/event5: Logitech Logitech USB Keyboard /dev/input/event6: Valve Software Steam Controller /dev/input/event7: Video Bus /dev/input/event8: HDA Intel PCH HDMI/DP,pcm=3 /dev/input/event9: HDA Intel PCH HDMI/DP,pcm=7 /dev/input/event10: HDA Intel PCH HDMI/DP,pcm=8 /dev/input/event11: HDA Intel PCH HDMI/DP,pcm=9 /dev/input/event12: HDA Intel PCH HDMI/DP,pcm=10 /dev/input/event13: Microsoft X-Box 360 pad Select the device event number [0-13]: 13 # EVEMU 1.3 # Kernel: 5.3.7-arch1-2-ARCH # DMI: dmi:bvnAmericanMegatrendsInc.:bvr5.12:bd07/01/2018:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnDefaultstring:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring: # Input device name: "Microsoft X-Box 360 pad" # Input device ID: bus 0x03 vendor 0x28de product 0x11ff version 0x01 # Supported events: # Event type 0 (EV_SYN) # Event code 0 (SYN_REPORT) # Event code 1 (SYN_CONFIG) # Event code 2 (SYN_MT_REPORT) # Event code 3 (SYN_DROPPED) # Event code 4 ((null)) # Event code 5 ((null)) # Event code 6 ((null)) # Event code 7 ((null)) # Event code 8 ((null)) # Event code 9 ((null)) # Event code 10 ((null)) # Event code 11 ((null)) # Event code 12 ((null)) # Event code 13 ((null)) # Event code 14 ((null)) # Event code 15 (SYN_MAX) # Event type 1 (EV_KEY) # Event code 304 (BTN_SOUTH) # Event code 305 (BTN_EAST) # Event code 307 (BTN_NORTH) # Event code 308 (BTN_WEST) # Event code 310 (BTN_TL) # Event code 311 (BTN_TR) # Event code 314 (BTN_SELECT) # Event code 315 (BTN_START) # Event code 316 (BTN_MODE) # Event code 317 (BTN_THUMBL) # Event code 318 (BTN_THUMBR) # Event type 3 (EV_ABS) # Event code 0 (ABS_X) # Value 0 # Min -32767 # Max 32767 # Fuzz 16 # Flat 128 # Resolution 0 # Event code 1 (ABS_Y) # Value 0 # Min -32767 # Max 32767 # Fuzz 16 # Flat 128 # Resolution 0 # Event code 2 (ABS_Z) # Value 0 # Min 0 # Max 255 # Fuzz 0 # Flat 0 # Resolution 0 # Event code 3 (ABS_RX) # Value 0 # Min -32767 # Max 32767 # Fuzz 16 # Flat 128 # Resolution 0 # Event code 4 (ABS_RY) # Value 0 # Min -32767 # Max 32767 # Fuzz 16 # Flat 128 # Resolution 0 # Event code 5 (ABS_RZ) # Value 0 # Min 0 # Max 255 # Fuzz 0 # Flat 0 # Resolution 0 # Event code 16 (ABS_HAT0X) # Value 0 # Min -1 # Max 1 # Fuzz 0 # Flat 0 # Resolution 0 # Event code 17 (ABS_HAT0Y) # Value 0 # Min -1 # Max 1 # Fuzz 0 # Flat 0 # Resolution 0 # Event type 21 (EV_FF) # Event code 80 (FF_RUMBLE) # Properties: N: Microsoft X-Box 360 pad I: 0003 28de 11ff 0001 P: 00 00 00 00 00 00 00 00 B: 00 0b 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 db 7c B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 02 00 00 00 00 00 00 00 00 B: 03 3f 00 03 00 00 00 00 00 B: 04 00 00 00 00 00 00 00 00 B: 05 00 00 00 00 00 00 00 00 B: 11 00 00 00 00 00 00 00 00 B: 12 00 00 00 00 00 00 00 00 B: 14 00 00 00 00 00 00 00 00 B: 15 00 00 00 00 00 00 00 00 B: 15 00 00 01 00 00 00 00 00 A: 00 -32767 32767 16 128 0 A: 01 -32767 32767 16 128 0 A: 02 0 255 0 0 0 A: 03 -32767 32767 16 128 0 A: 04 -32767 32767 16 128 0 A: 05 0 255 0 0 0 A: 10 -1 1 0 0 0 A: 11 -1 1 0 0 0 Regardless, libinput-record has no output in the events list. I did work something else out. There is a mouse cursor somewhere. If use the touchpad to move mouse around the screen I can see things getting highlighted, menus appearing, etc and I can control the mouse by this. So the cursor is being tracked and the input is being registered. What's not happening is that the pointer is not being moved on the screen to the correct position. I'm not sure why nothing is appearing in libinput-record for either "Valve Software Steam Controller" or "Microsoft X-Box 360 pad". With that in mind, I'm guessing it may not be a libinput issue?
Created attachment 1630130 [details] libinput-record after closing steam Some additional testing. 1. If I exit steam (from big picture mode), the controller works for about 3 seconds and correctly controls the mouse pointer! 2. After exiting steam, the controller shows as "Wireless Steam Controller" and it does record events (log attached) but it does not move the cursor. I'm guessing steam breaks it because it converts "Wireless Steam Controller" into "Microsoft X-Box 360 Pad". But that doesn't explain why the mouse pointer doesn't work when steam isn't running and the controller is recognised as "Wireless Steam Controller".
Please attach any libinput record, it makes it easier to download and analyze compared to having to copy/paste incomplete logs. > What I did notice is that there's a second device listed when steam starts. Steam seems to add a virtual X-Box 360 controller sounds about alright, steam most likely uses uinput to map the controller to a games-compatible 360 controller. If steam issues an EVIOCGRAB on the original device no-one else will get events from that device. Run the evtest tool against the device it has a condition to print a complaint if the device is grabbed by something. That'll verify it but it's almost certainly the case. (neither evemu nor libinput record have that bit because it's too uncommon these days). libinput explicitly doesn't handle joysticks. libinput debug-events --verbose has more info but it'll reject that device. From the recorded event sequence in attachment 1630130 [details] the device is an ID_INPUT_JOYSTICK device and libinput rejects those. Under X most likely you're falling back to the evdev driver which will just map axes as they appear on the device without trying to be smart about it. That means ABS_X and ABS_Y should be mapped to x/y and then the other axes on the device to the next lot of axes. all the event data is on the rotational axes (RX and RY) however. So first: check which driver is assigned under X, in the xorg.log or by running xinput list-props "Wireless Steam Controller", the prefix of the properties will tell you the driver. Then run xinput test-xi2 and check which axes ("valuators") update - most likely it's valuators 2 and 3 (0-indexed) and those don't move the pointer. But TLDR: under wayland the issue is simply that we don't have a solution for joystick devices yet and this thing is very much a joystick device.
This bug appears to have been reported against 'rawhide' during the Fedora 32 development cycle. Changing version to 32.
This message is a reminder that Fedora 32 is nearing its end of life. Fedora will stop maintaining and issuing updates for Fedora 32 on 2021-05-25. It is Fedora's policy to close all bug reports from releases that are no longer maintained. At that time this bug will be closed as EOL if it remains open with a Fedora 'version' of '32'. Package Maintainer: If you wish for this bug to remain open because you plan to fix it in a currently maintained version, simply change the 'version' to a later Fedora version. Thank you for reporting this issue and we are sorry that we were not able to fix it before Fedora 32 is end of life. If you would still like to see this bug fixed and are able to reproduce it against a later version of Fedora, you are encouraged change the 'version' to a later Fedora version prior this bug is closed as described in the policy above. Although we aim to fix as many bugs as possible during every release's lifetime, sometimes those efforts are overtaken by events. Often a more recent Fedora release includes newer upstream software that fixes bugs or makes them obsolete.
Fedora 32 changed to end-of-life (EOL) status on 2021-05-25. Fedora 32 is no longer maintained, which means that it will not receive any further security or bug fix updates. As a result we are closing this bug. If you can reproduce this bug against a currently maintained version of Fedora please feel free to reopen this bug against that version. If you are unable to reopen this bug, please file a new report against the current release. If you experience problems, please add a comment to this bug. Thank you for reporting this bug and we are sorry it could not be fixed.