Mayflash 4-Ports Gamecube Adapter PC mode has choppy inputs on bazzite (on steam input)
While trying to play platform fighters on steam, while using PC mode, the controller has janky inputs. It's unplayable in this state.
This problem does not persist while playing the game with steam input disabled, which might seem like a steam driver issue. However, on other Linux distributions I use: - Void Linux and Linux Mint - this adapter doesn't have this problem with Steam Input enabled.
There is no error reported on dmesg apparently (I can provide the output later - not different between the distros I use).
While I can play solo with GC controllers without Steam Input, this computer is mostly used for local offline play, and many different controllers are used through hotplug in a single session, requiring Steam Input.
There are 3 videos showcasing the issue. It seems to appear in plasma settings, that's how the inputs gets garbled - even though the controller is usable with steam input disabled.
I am not sure how I should debug this! Any help is appreciated.
10 Replies
Also: other gamecube adapters with PC mode (offshoots and no-brands in general) seem to have this same issue on this bazzite machine
Hey, so I just tried my 4 port gamecube controller adapter (hyperkin or mayflash, seems to be the same), I thought it would work out of the box, but I have the same issue than you, though I can add some details:
The controller configuration, like in your second video, show the input of all 4 controllers.
If I press A on 1 controller, it flickers.
If I press A on all 4 controllers, it is shown as pressed.
I got the device working on Ubuntu out of the box for information.
Do you also have a 4 ports adapter, or another one?
On Ubuntu, the controllers shown on controller configuration are /dev/input/js{0,1,2,3}
On Bazzite, the controller shown on controller configuration is /dev/hidraw2
It might be the reason?
Ubuntu (Kubuntu 24.04): KDE 5, the KDE config is checking manually /dev/input/js0 to js4
Bazzite: KDE 6, the KDE config is using the SDL API to get all controllers
Yes, it is the 4 port adapter. I changed the title to make it clearer.
I can confirm the same happens on void linux, all ports are recognized as different controllers.
I also created an issue on GitHub: https://github.com/ublue-os/bazzite/issues/3468
GitHub
Mayflash gamecube controller adapter detects all controllers incorr...
Describe the bug When I try to use my gamecube usb adapter (for 4 gamecube controllers) both 4 controllers are recognised as one, making the inputs flutter and impossible to use any controller. It ...
Nice, I'll add details on this issue tomorrow.
Just confirming here, while our adapters are different, they have the same idVendor and idProduct
I was thinking that the issue could be steam input messing with the inputs, but it seems that it is a combination of all four ports as you shown. Have you tested the adapter in steam with steam input disabled?
If I remember correctly I tried with and without and it doesn't change anything.
I think I've figured it out.
It seems to be some udev rule shenanigans that are binding all the controller ports in the adapter to a single hidraw device. I've deleted the
dev/hidraw# file that it is bound to and the by-id device link, restarted steam and the adapter worked normally with steam input on again.
i've logged what udev does with udevadm monitor --property as per https://codeberg.org/fabiscafe/game-devices-udev/src/branch/main on both my bazzite machine and my void linux machine to see what udev does behind the scenes, and it does seem that the binding happens in bazzite.Here are the output logs.
An udev rule should do the trick, but I'm unsure how to make it and what should go into it. Perhaps something that blocks the system from binding it to a hidraw device.
if possible, try removing the hidraw device files and then test the controller in plasma settings. If it works normally in the plasma settings, it will likely work in steam after you restart the client.
Thank you very much for your research:
It works, the 4 controllers are recognised by the controller configuration menu, and also from Steam, if Steam input is enabled and also if it is not.
Strangely steam recognises 3 controllers as Gamecube
_o__, __o_, ___o and the last one a generic controller. (or first one maybe)
I will let you add information on the GitHub issue 😉