moonlight-stream / moonlight-embedded

Gamestream client for embedded systems
https://github.com/moonlight-stream/moonlight-embedded/wiki
GNU General Public License v3.0
1.48k stars 323 forks source link

PS4 controller is detected as two XBOX controllers in Steam Big Picture #800

Closed LucasStromberg closed 2 years ago

LucasStromberg commented 3 years ago

Please provide the following info.

NVidia Geforce Experience version: 3.20.4.14

Moonlight Embedded version: 2.4.10

Moonlight Embedded source: repository/included in distribution/compiled from source/... deb http://archive.itimmer.nl/raspbian/moonlight wheezy main

Moonlight Embedded running on: Raspberry Pi/Cubox-i/Hummingboard/Other linux device/... Raspberry Pi

Moonlight Embedded running on distribution: Arch Linux/Raspbian/OpenELEC/... Raspbian (Retropie image)

Verbose output -verbose of Moonlight Embedded: moonlight stream -1080 -verbose Moonlight Embedded 2.4.10 (PI;MMAL;SDL;X11;ALSA;PULSE;EMBEDDED) Searching for server... Connect to 192.168.0.195... NVIDIA GeForce GTX 1070, GFE 3.20.4.14 (gs_04_24_28591776, 7.1.424.0) Platform Raspberry Pi (Broadcom) Loading mappingfile /usr/local/share//moonlight/gamecontrollerdb.txt Detected Sony Interactive Entertainment Wireless Controller (030000004c050000cc09000011810000) on /dev/input/event2 as PS4 Controller Detected Sony Interactive Entertainment Wireless Controller Touchpad (030000004c050000cc09000011810000) on /dev/input/event0 as PS4 Controller Detected Sony Interactive Entertainment Wireless Controller Motion Sensors (030000004c050000cc09000011810000) on /dev/input/event1 as PS4 Controller Stream 1920 x 1080, 30 fps, 10000 kbps Initializing platform...done Resolving host name...done Starting RTSP handshake...done Initializing control stream...done Initializing video stream...done Initializing audio stream...done Initializing input stream...done Starting control stream...done Starting video stream...done Starting audio stream...done Starting input stream...done Error: cannot keep up Error: cannot keep up Returning RTP packet queued for too long Received OOS audio data (expected 944, but got 948) ^CStopping input stream...done Stopping audio stream...ENet wait interrupted Control stream connection failed: -1 done Stopping video stream...done Stopping control stream...done Cleaning up input stream...done Cleaning up audio stream...done Cleaning up video stream...done Cleaning up control stream...done Cleaning up platform...done

What is the expected result? I'm expecting my PS4 controller to be recognized normally in Steam Big Picture.

What happens instead of that? The controller is being recognized as two XBOX controllers.

I have tried turning off and on the "support for..." settings with no change. Opening Big Picture on my PC directly detects no controllers.

LucasStromberg commented 3 years ago

I updated the verbose output since I did it wrong the last time. I see now that three separate PS4 entries are detected. In Big Picture three separate controllers are actually detected sometimes.

Any way to disable the motion and touchpad entries?

kurac338 commented 3 years ago

@LucasStromberg I had a similar issue way back when I was initially trying to set up Moonlight using different DS4 (v1 and v2) controllers on a Raspberry Pi 3 running OSMC.

More specifically I had really terrible input lag caused by the gimmicky touchpad and motion sensors.

You can permanently disable those features / inputs using these LINK contents in your file placed at the following "/etc/udev/rules.d/51-disable-DS4-excess-inputs.rules" path. Make sure the are chowned by root:root and that they can be read. They will apply when you reboot the system and connect your controller.

If you find a better method let me know 👍

LucasStromberg commented 3 years ago

Hi again. With some help from the Discord channel I realized that I could simply pass the desired controller (/dev/input/event2) with the -input flag. This works quite well for now!

GregDMeyer commented 3 years ago

I ran into this issue today too---took the udev path and it works great. (seems like the other way works too, though). @LucasStromberg how did you determine which /dev/input/* device was the one you wanted? trial and error?

LucasStromberg commented 3 years ago

@GregDMeyer Yes, by trial and error. I'm sure that you could write a script that automatically finds which one to use, but for me the input numbers haven't changed, so hardcoding input 2 worked for me at least.

cgutman commented 2 years ago

Fixed in v2.5.0