moonlight-stream / moonlight-embedded

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

PS3 controller left trigger stays pressed #747

Closed Pakoach closed 3 years ago

Pakoach commented 5 years ago

Please provide the following info.

NVidia Geforce Experience version: 3.18.0.102

Moonlight Embedded version: From master branch 763bcb76d6e69e939

Moonlight Embedded source: compiled from source https://github.com/irtimmer/moonlight-embedded.git

Moonlight Embedded running on: Raspberry Pi

Moonlight Embedded running on distribution: OSMC

Verbose output -verbose of Moonlight Embedded: osmc@osmc:~$ moonlight stream -app "Assassin's Creed: Origins" -verbose Moonlight Embedded 2.4.9 (PI;SDL;ALSA;PULSE;EMBEDDED) Searching for server... Connect to 192.168.1.76... NVIDIA GeForce GTX 770, GFE 3.18.0.102 (gs_04_13_26051692, 7.1.413.0) Platform Raspberry Pi (Broadcom) Loading mappingfile /usr/local/share//moonlight/gamecontrollerdb.txt Detected Sony Computer Entertainment Wireless Controller (050000004c0500006802000000810000) on /dev/input/event1 as Sony Computer Entertainment Wireless Controller Detected Sony Computer Entertainment Wireless Controller Motion Sensors (050000004c0500006802000000810000) on /dev/input/event0 as Sony Computer Entertainment Wireless Controller Stream 1280 x 720, 60 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 ENet disconnect event pending <------- After closing the game Server notified termination reason: 0x0100 Control stream received disconnect event Failed to send ENet control packet Loss Stats: Transaction failed: 0 Failed to send ENet control packet Input: sendInputPacketOnControlStream() failed: -1 Stopping input stream...done Stopping audio stream...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? When left trigger is not pressed, it should not be pressed in the game.

What happens instead of that?** Left trigger is always pressed in the game. I think it was working before but I was using the older version without SDL 2 game controller DB.

The PS3 controller I use is 050000004c0500006802000000810000. I tried to troubleshoot the issue and it seems that updating the gamecontrollerdb.txt can fix the issue. But I am not sure if it comes only from there or not.

I also noticed something unexpected. When creating the mapping manually with the command: moonlight map -input /dev/input/event1

I get the following line for my 2 PS3 controllers (they have the same ID): 050000004c0500006802000000810000,Sony Computer Entertainment Wireless Controller,a:b0,b:b1,x:b3,y:b2,start:b9,guide:b10,back:b8,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b15,dpdown:b14,dpright:b16,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,lefttrigger:b6,righttrigger:b7,platform:Linux

It seems that the left trigger is repeated twice with 2 different values as well as right trigger (lefttrigger:a2,righttrigger:a5,lefttrigger:b6,righttrigger:b7). I don't know if it is an error or not during the mapping command. In gamecontrollerdb.txt, only the first value appears (lefttrigger:a2,righttrigger:a5). I tried to use both values at the same time (like the map command suggest) and it did not fix it.

But if I use the second values instead (lefttrigger:b6,righttrigger:b7), everything works fine and lefttrigger does not stay pressed. Do you think updating the DB is enough? Should I post a request to update SDL 2 database? Or could it be due to the way moonlight-embedded uses the game controller inputs?

guibera commented 5 years ago

I just created an account to thank you, you saved me! And it seems that also happens with PS4 controllers finished in 810000.

Pakoach commented 5 years ago

I am happy it helped someone. I posted an issue also on gabomdq/SDL_GameControllerDB to update the gamecontrollerdb.txt file as there were no answer from @irtimmer yet. Unfortunately I don't have any PS4 controller but if the issue is fixed for PS3 controllers you should post something for PS4 as well!

Pakoach commented 4 years ago

After posting on SDL bugzilla, they are wondering if this could be a moonlight bug. If anyone from moonlight-embedded wants to join the conversation, here is the post: https://bugzilla.libsdl.org/show_bug.cgi?id=4686

railei commented 3 years ago

I had the same issue with my PS3 controller. For my setup it seems to be caused by the "Motion Sensors" device. When I start the client using "-input /dev/input/event1" (i.e. disable usage of motion sensors device), left trigger behaves as expected...

cgutman commented 3 years ago

Motion sensor bug was fixed in v2.5.0