New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Does not seem to work on a Raspberry Pi 4 #3
Comments
As it happened, I asked for hid-steam to be enabled in the default RPi kernel in this issue, and it was finally there in kernel 4.19.106. Anyway if you do not have the latest kernel revision you do not need to compile the whole kernel; you can compile this driver out-of-tree, and even in the RPi itself it will take just a couple of minutes. Something like this:
You just need the GCC compiler and the linux-headers package. About why But looking at your strace, it looks like permissions are not a problem:
Other possibility is that the latest firmware has a bug that makes the device reboot itself every 10 seconds or so, if no application or kernel driver is using it. You'll notice that because there is a beep every few seconds. You can prevent the controller from rebooting just reading from the hidraw* device:
And then you can try the Let me know if this makes a difference. |
Thanks for the instructions on building the kernel module! I had tried building it just by itself on the RPi, but not knowing what I was doing, I couldn't get the Pi to accept that the module was built (modprobe/insmod would fail saying that the hid-steam module didn't exist). I spent about 45 minutes on it before just building everything. On my RPi I have Ok, now for some testing.
Now I can reliably get the serial when I pass steamctrl the
steamctrl does not appear to have any effect on the controller... in emulation station I can press A to select a menu item and B to cancel, but then when I start a game, the A and B buttons don't do the A and B button actions. If, while in-game, I run That said, you have a Pi, and you have a SteamController ... you're only about 2 steps away from testing in RetroPie with EmulationStation. Maybe you can tell? Another test is
|
So... you are using the wireless adaptor, I didn't notice before. That makes things tricky. Can you try to work with a cable? Also, the hid-steam.ko driver had a bug, that made the wireless SC practically unusable. It was fixed a while ago, and even got backported to 4.19. Can you check whether your kernel has this patch? If not, can you patch and recompile? If nothing helps, I've added an extra option to |
I connected with wire, and EmulationStation detected it as "Steam Controller" (v. "Steam Controller Wireless"). I mapped all the buttons. There was no difference, as far as I could tell, with the behavior of the SC when it was wired v. when it was wireless (it worked great in EmulationStation, when I started an emulator it would not send the proper A and B button commands, and steamctrl disable_keys_cursor did not disable the keyboard behavior -- testing with updated steamctrl). My kernel hid-steam.c has the patch you mention. md5sum of hid-steam.c is I pulled the latest steamctrl source, and rebuilt it. Here is the output of get_serial when the SC is connected with a cable, as requested:
Here's the output of disable_keys_cursor (when connected with the wire):
Btw, when I was testing with the wire, I'd unplug the Wireless dongle. |
You have the latest hid-steam.c, great! About As they are, the And maybe I will install EmulationStation in my RPi this weekend and see for myself... |
The problem with the Steam controller being recognized by EmulationStation but not being recognized by the various emulators is not a problem with the hid_steam driver or the steamctrl utility. It is a configuration in RetroArch. One has to tell RetroArch to map the "Wireless Steam Controller" to the RetroArch "virtual controller" connected to a "virtual port". The hid_steam driver actually performs quite well, being detected and re-detected through numerous power cycles. Basically I think everything I said earlier can be put to bed, except for the command
|
Yes, I noticed that also in the RetroArch, that I tried installing into my RPi. It looks like every layer in the menus has its own input configuration... weird. Going back to Compare how my controller replies to this command:
and then it retries and gets the correct answer. But in your case there is no error, so no retry, I don't understand why. About the Anyway, I would like you to do a couple tests, if you are willing...
|
Hey Rodrigo,
I'm testing on a Raspberry Pi 4 with RetroArch. I configured the Steam Controller as I described in https://retropie.org.uk/forum/topic/26254/steam-controller/9. I'm able to map a bunch of buttons, so it seems like while EmulationStation is running, your driver is working as described ("This driver will disable the lizard mode when the input device is opened and re-enable it when the input device is closed").
The trouble is, the emulators I've tried have all failed to recognize the Steam Controller properly -- I think the device is staying in lizard mode. So I thought I'd test that first via
steamctrl disable_keys_cursor
but it doesn't seem to be doing anything. I get no output on the command line, and no changes in controller behavior. So I tried just getting the serial number and ... no output. I did check the exit code via $? (and strace), and it's 0.My conclusion is that steamctrl is unable to find the Steam Controller on the RPi. But ... I don't know what I'm doing :-p..
Here is the output of
strace steamctrl get_serial
if it helps.I ran gdb too, but i didn't get anything useful:
Since hid-steam is not yet packaged as part of the raspberry pi kernel binaries, in order to test on a Pi you have to build the kernel yourself (or use pi-update, but that'll take you to the rpi-5.4.y kernel branch and the stable kernel branch is 4.19). Since RetroArch uses the stable kernel tree I figured I would too, and built 4.19 from the default branch; It's very easy with the step-by-step instructions. Takes about 30 mins to cross-compile on an Intel CPU.
The text was updated successfully, but these errors were encountered: