SUMMARY *** When a USB joystick is connected to the system, it does not show up in Game Controller sub menu of System Settings. *** STEPS TO REPRODUCE 1. Open System Settings 2. Open Game Controller 3. Connect a USB joystick OBSERVED RESULT No Joystick shows up in the window EXPECTED RESULT The joystick to show up in the window SOFTWARE/OS VERSIONS Operating System: Arch Linux KDE Plasma Version: 6.0.2 KDE Frameworks Version: 6.0.0 Qt Version: 6.6.2 Kernel Version: 6.8.1-arch1-1 (64-bit) Graphics Platform: Wayland Processors: 32 × 13th Gen Intel® Core™ i9-13900HX Memory: 62.5 GiB of RAM Graphics Processor: Mesa Intel® Graphics Manufacturer: TUXEDO Product Name: PD5x_7xSNC_SND_SNE ADDITIONAL INFORMATION Tested with Logitech Logitech Extreme 3D, and Microsoft Sidewinder joystick. When plugging in a gamepad, that does show up in the menu. The joysticks tested shows up with evtest, and are usable in SDL, they just don't show up in the window. These joysticks were also working fine in QT5. Captured text from evtest: ``` [evert@Evert ~]$ evtest No device specified, trying to scan all of /dev/input/event* Not running as root, no devices may be available. Available devices: /dev/input/event0: Power Button /dev/input/event1: Sleep Button /dev/input/event10: FTCS1000:01 2808:0102 Mouse /dev/input/event11: FTCS1000:01 2808:0102 Touchpad /dev/input/event12: HDA NVidia HDMI/DP,pcm=3 /dev/input/event13: HDA NVidia HDMI/DP,pcm=7 /dev/input/event14: HDA NVidia HDMI/DP,pcm=8 /dev/input/event15: HDA NVidia HDMI/DP,pcm=9 /dev/input/event16: ImPS/2 Generic Wheel Mouse /dev/input/event17: Video Bus /dev/input/event18: Video Bus /dev/input/event19: HDA Intel PCH Mic /dev/input/event2: Lid Switch /dev/input/event20: HDA Intel PCH Headphone /dev/input/event21: HDA Intel PCH HDMI/DP,pcm=3 /dev/input/event22: HDA Intel PCH HDMI/DP,pcm=7 /dev/input/event23: HDA Intel PCH HDMI/DP,pcm=8 /dev/input/event24: HDA Intel PCH HDMI/DP,pcm=9 /dev/input/event25: MX MCHNCL Keyboard /dev/input/event26: Logitech Logitech Extreme 3D /dev/input/event3: Power Button /dev/input/event4: AT Translated Set 2 keyboard /dev/input/event5: Intel HID events /dev/input/event6: PC Speaker /dev/input/event7: TUXEDO Keyboard /dev/input/event8: Logitech USB Optical Mouse /dev/input/event9: USB PnP Audio Device Select the device event number [0-26]: 26 Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x46d product 0xc215 version 0x110 Input device name: "Logitech Logitech Extreme 3D" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 288 (BTN_TRIGGER) Event code 289 (BTN_THUMB) Event code 290 (BTN_THUMB2) Event code 291 (BTN_TOP) Event code 292 (BTN_TOP2) Event code 293 (BTN_PINKIE) Event code 294 (BTN_BASE) Event code 295 (BTN_BASE2) Event code 296 (BTN_BASE3) Event code 297 (BTN_BASE4) Event code 298 (BTN_BASE5) Event code 299 (BTN_BASE6) Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 510 Min 0 Max 1023 Fuzz 3 Flat 63 Event code 1 (ABS_Y) Value 509 Min 0 Max 1023 Fuzz 3 Flat 63 Event code 5 (ABS_RZ) Value 127 Min 0 Max 255 Flat 15 Event code 6 (ABS_THROTTLE) Value 69 Min 0 Max 255 Flat 15 Event code 16 (ABS_HAT0X) Value 0 Min -1 Max 1 Event code 17 (ABS_HAT0Y) Value 0 Min -1 Max 1 Event type 4 (EV_MSC) Event code 4 (MSC_SCAN) Properties: Testing ... (interrupt to exit) Event: time 1710929012.395659, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 72 Event: time 1710929012.395659, -------------- SYN_REPORT ------------ Event: time 1710929012.403652, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 69 Event: time 1710929012.403652, -------------- SYN_REPORT ------------ Event: time 1710929012.419649, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 72 Event: time 1710929012.419649, -------------- SYN_REPORT ------------ Event: time 1710929012.427656, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 69 Event: time 1710929012.427656, -------------- SYN_REPORT ------------ Event: time 1710929012.435672, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 72 Event: time 1710929012.435672, -------------- SYN_REPORT ------------ Event: time 1710929012.499712, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 69 Event: time 1710929012.499712, -------------- SYN_REPORT ------------ Event: time 1710929012.507725, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 72 Event: time 1710929012.507725, -------------- SYN_REPORT ------------ Event: time 1710929012.587684, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 69 Event: time 1710929012.587684, -------------- SYN_REPORT ------------ Event: time 1710929012.595676, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 72 Event: time 1710929012.595676, -------------- SYN_REPORT ------------ Event: time 1710929012.619631, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 75 Event: time 1710929012.619631, -------------- SYN_REPORT ------------ Event: time 1710929012.635623, type 3 (EV_ABS), code 6 (ABS_THROTTLE), value 77 Event: time 1710929012.635623, -------------- SYN_REPORT ------------ ```
I have the same issue with my Thrustmaster T-flight. Only it is also crashing the only application I use my HOTAS with. My system (also Arch Linux and KDE Plasma 6.0.4), correctly detects the HOTAS: Bus 003 Device 004: ID 044f:b108 ThrustMaster, Inc. T-Flight Hotas X Flight Stick It worked perfectly with Plasma 5. This has only started since 6. I normally use my HOTAS with Elite Dangerous (the only software I use it with) via Steam Proton. Since Plasma 6, Elite Dangerous (ED) crashes constantly on "Planetary generation system". Deleting ED's Bindings file worked for a while to get around that but any time I brought back any custom bindings, it's straight back to crashing. Since trying swapping USB ports, it crashes regardless and the game is now unplayable. I have tried installed joyutils, jstest-gtk (my HOTAS shows up there fine), swapping USB ports, different Proton versions, verifying game files, reinstalling the Elite Dangerous, switching from Wayland to X11. Other reports of same issue: - https://bbs.archlinux.org/viewtopic.php?pid=2170071 - https://www.reddit.com/r/kde/comments/1bti68v/kde_6_controller_calibrate/
This issue is still present in KDE as of 2024-06-11. All the game pads I have are detected, all the joysticks are not. Was there maybe some plan to have joysticks and game pads in different menus? I can't believe that this is only affecting me...
No, this is not just you. In plasma 6 we tried to update the gamepad kcm a bit moving away from the old joystick api to using SDL. In doing so we moved it to use the gamepad api in SDL instead of the lower level Joystick api. I hadn't considered that people still use joystick devices that aren't also mapped to the higher level gamepad api. I need to get back to this, we have other improvements that didn't make it in time for 6.0 or 6.1, I'll see if I can get them cleaned up for 6.2 most likely and also look into supporting SDL joysticks where those are found.
Thanks for the quick reply. While there may not be many people using Linux for gaming, but since Steam made it on to Linux the number of people using these devices have increased. Thank you, also, for the hard work that is put into making this work properly.
One thing I find interesting is that when the Logitech USB joystick is plugged in, it is visible with evtest, as per my original bug submission. This means that it is actually using the newer evdev API rather than the Joystick API, and should be visible? ``` [evert@Evert ~]$ sdl2-jstest --list Found 1 joystick(s) Joystick Name: 'Logitech Extreme 3D' Joystick GUID: 0300ed156d04000015c2000010010000 Joystick Number: 0 Number of Axes: 4 Number of Buttons: 12 Number of Hats: 1 Number of Balls: 0 GameControllerConfig: missing (see 'gamecontrollerdb.txt' or SDL_GAMECONTROLLERCONFIG) ``` Running sdl2-jstest --test 0, I can see that it works properly. I can see that it also is visible under the old API. ``` [evert@Evert ~]$ cd /dev/input/by-id/ [evert@Evert by-id]$ ls usb-0c76_USB_PnP_Audio_Device-event-if03 usb-Logitech_Logitech_Extreme_3D-joystick usb-Logitech_USB_Optical_Mouse-mouse usb-Logitech_Logitech_Extreme_3D-event-joystick usb-Logitech_USB_Optical_Mouse-event-mouse ``` Something is not adding up, because from my point of view, this joystick is available in both the joystick and evdev/SDL2 API, and so should be visible in the KDE input devices. Something else must be filtering out the joystick devices in that module.
Yeah, the only problem is that the rewritten kcm is using SDL's gamepad api to get available devices. There's also a lower level Joystick api in SDL that we are currently ignoring. Once we talk and use both of SDL's apis we will be showing everything that the kernel/evdev/SDL can see. Currently we are only using the gamepad api/methods that only see things that look similar to xbox style gaming devices with multiple buttons in addition to usually 2 or more sticks.
Fair enough. For now, we leave this bug open to let people know what's happening. The workaround here is to use lower-level tools to tune joysticks, and hopefully soon we'll have a nice GUI again. I found this Arch Linux wiki page quite helpful: https://wiki.archlinux.org/title/Gamepad
Not only gamepad or joystick problem. Wheel and handbrake are not showing up in system settings (Game Controller) after the May 17th update too (https://bugs.kde.org/show_bug.cgi?id=487694). Before the May 17th OS update my Logitech G29 and handbrake are showing in Game Controllers correctly.
(In reply to Evert Vorster from comment #7) > The workaround here is to use lower-level tools to tune joysticks, and > hopefully soon we'll have a nice GUI again. What tools can be used for tests and calibrates wheel (Logitech G29) and handbrake (x-axis + one button) on Fedora 40?
The issue is also observed in Plasma 6.2.0.
I've got the same problem - The joystick was working perfectly OK at the beginning of December but no longer. There's no sign of kcm_joystick in systemsettings --list, but there is a kcm_gamecontroller. Has one replaced the other? If so this bug report needs updating. Until there's a fix I have a piece of hardware which is non-functional Operating System: openSUSE Tumbleweed 20241209 KDE Plasma Version: 6.2.4 KDE Frameworks Version: 6.8.0 Qt Version: 6.8.1 Kernel Version: 6.11.8-1-default (64-bit) Graphics Platform: X11 Processors: 16 × AMD Ryzen 7 6800H with Radeon Graphics Memory: 30.5 GiB of RAM Graphics Processor: NVIDIA GeForce RTX 3070 Ti Laptop GPU/PCIe/SSE2 Manufacturer: LENOVO Product Name: 82RD System Version: Legion 5 15ARH7H
Git commit 9c0c319d635f2758d1d310a2a413b7af335c4005 by Joshua Goins, on behalf of Arthur Kasimov. Committed on 14/12/2024 at 15:43. Pushed by redstrate into branch 'master'. kcms/gamecontroller: Replace SDL Game Controller API with Joystick API Currently the KCM uses a mix of higher-level SDL "Game Controller" API and lower-level "Joystick" API. Unfortunately, this results in numerous bugs. The state of some buttons/axes, such as D-pad or right trigger, is not displayed properly. This happens due to the mismatch between Game Controller API and Joystick API that report different number and order of buttons/axes. Another issue is that some non-standard devices like racing wheels or handbrakes and not detected at all. The Game Controller API seems to be limited to standard gamepads only. This commit introduces new Device class that encapsulates SDL_Joystick object. Both ButtonModel and AxesModel now use Device object to report raw values from buttons and axes. DeviceModel now manages Device objects and shows them in the combo box. This ensures SDL Joystick API is used consistently across all code and avoids API mismatch issues. This should also properly detect joysticks, wheels and handbrakes. Unfortunately I don't have any of these devices and can't really test them. The Gamepad class encapsulates SDL_GameController object and provides higher-level access to gamepads. For now it is only used to display the coordinate of left stick in PositionWidget. In future it can be used to revamp the UI and show the symbolic view of standard gamepads. Related: bug 487694, bug 494705, bug 494913 M +1 -0 kcms/gamecontroller/CMakeLists.txt M +33 -14 kcms/gamecontroller/axesmodel.cpp M +10 -7 kcms/gamecontroller/axesmodel.h M +27 -28 kcms/gamecontroller/buttonmodel.cpp M +10 -12 kcms/gamecontroller/buttonmodel.h A +90 -0 kcms/gamecontroller/device.cpp [License: GPL(v2.0+)] A +49 -0 kcms/gamecontroller/device.h [License: GPL(v2.0+)] M +71 -30 kcms/gamecontroller/devicemodel.cpp M +16 -5 kcms/gamecontroller/devicemodel.h M +23 -32 kcms/gamecontroller/gamepad.cpp M +7 -20 kcms/gamecontroller/gamepad.h M +8 -3 kcms/gamecontroller/ui/main.qml https://invent.kde.org/plasma/plasma-desktop/-/commit/9c0c319d635f2758d1d310a2a413b7af335c4005
Created attachment 176617 [details] attachment-2878262-0.html Does this explain why a USB joystick doesn't even show up in systemsettings module kcm_gamecontroller? Alan Prescott alanjprescott@gmail.com On Sat, 14 Dec 2024 at 17:54, Joshua Goins <bugzilla_noreply@kde.org> wrote: > https://bugs.kde.org/show_bug.cgi?id=484046 > > Joshua Goins <josh@redstrate.com> changed: > > What |Removed |Added > > ---------------------------------------------------------------------------- > Status|REPORTED |RESOLVED > Latest Commit| | > https://invent.kde.org/plas > | > |ma/plasma-desktop/-/commit/ > | > |9c0c319d635f2758d1d310a2a41 > | |3b7af335c4005 > Resolution|--- |FIXED > > --- Comment #12 from Joshua Goins <josh@redstrate.com> --- > Git commit 9c0c319d635f2758d1d310a2a413b7af335c4005 by Joshua Goins, on > behalf > of Arthur Kasimov. > Committed on 14/12/2024 at 15:43. > Pushed by redstrate into branch 'master'. > > kcms/gamecontroller: Replace SDL Game Controller API with Joystick API > > Currently the KCM uses a mix of higher-level SDL "Game Controller" API > and lower-level "Joystick" API. Unfortunately, this results in numerous > bugs. The state of some buttons/axes, such as D-pad or right trigger, > is not displayed properly. This happens due to the mismatch between Game > Controller API and Joystick API that report different number and order > of buttons/axes. Another issue is that some non-standard devices like > racing wheels or handbrakes and not detected at all. The Game Controller > API seems to be limited to standard gamepads only. > > This commit introduces new Device class that encapsulates SDL_Joystick > object. Both ButtonModel and AxesModel now use Device object to report > raw values from buttons and axes. DeviceModel now manages Device objects > and shows them in the combo box. This ensures SDL Joystick API is used > consistently across all code and avoids API mismatch issues. This should > also properly detect joysticks, wheels and handbrakes. Unfortunately I > don't have any of these devices and can't really test them. > > The Gamepad class encapsulates SDL_GameController object and provides > higher-level access to gamepads. For now it is only used to display the > coordinate of left stick in PositionWidget. In future it can be used to > revamp the UI and show the symbolic view of standard gamepads. > Related: bug 487694, bug 494705, bug 494913 > > M +1 -0 kcms/gamecontroller/CMakeLists.txt > M +33 -14 kcms/gamecontroller/axesmodel.cpp > M +10 -7 kcms/gamecontroller/axesmodel.h > M +27 -28 kcms/gamecontroller/buttonmodel.cpp > M +10 -12 kcms/gamecontroller/buttonmodel.h > A +90 -0 kcms/gamecontroller/device.cpp [License: GPL(v2.0+)] > A +49 -0 kcms/gamecontroller/device.h [License: GPL(v2.0+)] > M +71 -30 kcms/gamecontroller/devicemodel.cpp > M +16 -5 kcms/gamecontroller/devicemodel.h > M +23 -32 kcms/gamecontroller/gamepad.cpp > M +7 -20 kcms/gamecontroller/gamepad.h > M +8 -3 kcms/gamecontroller/ui/main.qml > > > https://invent.kde.org/plasma/plasma-desktop/-/commit/9c0c319d635f2758d1d310a2a413b7af335c4005 > > -- > You are receiving this mail because: > You are on the CC list for the bug.