mariotaku / moonlight-tv

Lightweight NVIDIA GameStream Client, for LG webOS TV and embedded devices like Raspberry Pi
GNU General Public License v3.0
854 stars 31 forks source link

Buggy Mouse Cursor on webOS 24 (9.x) #466

Open mariotaku opened 5 days ago

mariotaku commented 5 days ago

Moonlight Version

1.6.x

Device Type

webOS TV

Device Model

2022+ models with webOS 9 upgrade

Device OS

webOS 9

Host OS

None

Host Software

None

Host Setup

No response

Bug Description

On models running latest webOS 24 (9.x), magic remote control becomes unresponsive after starting a streaming session. This also affects usage outside Moonlight.

Reproduction Steps

No response

Expected Behavior

No response

Archimedes1986 commented 4 days ago

I started to dig deeper into this issue, and here’s what I’ve discovered so far:

Not Triggering the Bug:

Triggering the Bug:

What I’ve Tried:

Observations:

After closing Moonlight, the TV does not completely bug out. Sometimes it becomes responsive again, even to the magic remote. However, the stuttering consistently reappears the moment I use the scroll wheel. As soon as the cursor disappears, the TV remains responsive as long as only digital inputs (LG remote buttons or gamepad) are used. I have QuickStart+ enabled. Powering down does not immediately resolve the issue. However, leaving the TV in soft standby (without a full power cycle) for about five minutes completely resolves the bug until it is triggered again in Moonlight.

I further investigated CPU usage before, during, and after the bug. Even during the extreme stuttering, the TV remains responsive on the SSH terminal. The results of the "ps aux" command showed no increased CPU usage associated with the bug. To confirm this, I triggered the bug and opened the "System Information" page in KODI, which has a CPU graph. Interestingly, when I used the scroll wheel on the remote to trigger the bug, the CPU load even slightly decreased.

The time it takes for the TV to become responsive again after using the scroll wheel varies widely; sometimes it becomes responsive again after a few seconds, while other times it takes half a minute. The entire situation strangely reminds me on the behavior of a system that is running out of VRAM or maxing out the GPU. Unfortunately, I have no knowledge of how to debug GPU issues or how to check VRAM/GPU load.

#before bug

ps aux | sort -nrk 3,3 | head -n 10
<
root      2452 15.5  7.9 423136 162812 ?       SLsl 22:12   0:25 /usr/bin/com.webos.app.home {"@system_native_app":true,"reason":"undefined","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"com.webos.app.home","preload":"full","parameters":{"snapshot":true}}
root      3413  9.6  0.5 109492 11044 ?        SLl  22:12   0:15 /usr/sbin/sdx
root      5102  9.5  2.5 181428 51680 ?        Sl   22:13   0:13 node /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/devmode-helper.js
root      2640  7.8  0.5 355996 10536 ?        SLsl 22:12   0:12 /usr/sbin/pqcontroller
5168      6066  7.3  4.0 391464 82868 ?        SNLsl 22:13   0:08 /media/cryptofs/apps/usr/palm/applications/netflix/bin/netflix.bin {"@system_native_app":true,"reason":"preload","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"netflix","preload":"partial","parameters":{}}
root      2177  5.8  3.5 345180 71840 ?        SLsl 22:12   0:09 /usr/bin/surface-manager -platform eglfs_webos
6774      6189  4.9  6.1 502772 125160 ?       SLl  22:13   0:05 /media/cryptofs/apps/usr/palm/applications/youtube.leanback.v4/cobalt {"@system_native_app":true,"reason":"preload","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"youtube.leanback.v4","preload":"semi-full","parameters":{}}
root         1  4.8  0.4  16100  8492 ?        Ss   22:12   0:08 /sbin/init portProtection criu_enabled AR_PWR_DET cmdEnd
root      3781  3.7  1.0 523308 20624 ?        SLl  22:12   0:05 /usr/sbin/iconnectivity
root      1754  2.7  0.3  50564  8108 ?        Ssl  22:12   0:04 /usr/sbin/ls-hubd --conf /etc/luna-service2/ls-hubd.conf

#while Bugging out and beeing unresponsive :
ps aux | sort -nrk 3,3 | head -n 10
<
root      2640  7.8  0.4 356072  9168 ?        SLsl 22:12   0:35 /usr/sbin/pqcontroller
root      2452  7.6  7.8 431080 159928 ?       SLsl 22:12   0:35 /usr/bin/com.webos.app.home {"@system_native_app":true,"reason":"undefined","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"com.webos.app.home","preload":"full","parameters":{"snapshot":true}}
root      3413  4.1  0.5 109492 10600 ?        SLl  22:12   0:18 /usr/sbin/sdx
root      2177  3.7  3.5 344784 72244 ?        SLsl 22:12   0:17 /usr/bin/surface-manager -platform eglfs_webos
root      5102  3.0  2.1 182836 43700 ?        Sl   22:13   0:13 node /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/devmode-helper.js
root      4037  2.6  0.4 182044  9692 ?        SLsl 22:12   0:11 /usr/sbin/lginput2
root      7314  2.4  2.4 221988 49616 ?        SLl  22:18   0:03 /usr/bin/com.webos.app.voice {"@system_native_app":true,"reason":"preload","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"com.webos.app.voice","preload":"partial","parameters":{}}
6774      6189  2.2  6.0 501748 124428 ?       SLl  22:13   0:09 /media/cryptofs/apps/usr/palm/applications/youtube.leanback.v4/cobalt {"@system_native_app":true,"reason":"preload","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"youtube.leanback.v4","preload":"semi-full","parameters":{}}
5168      6066  2.1  4.0 391464 82700 ?        SNLsl 22:13   0:08 /media/cryptofs/apps/usr/palm/applications/netflix/bin/netflix.bin {"@system_native_app":true,"reason":"preload","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"netflix","preload":"partial","parameters":{}}
root         1  1.9  0.4  16628  9216 ?        Ss   22:12   0:08 /sbin/init portProtection criu_enabled AR_PWR_DET cmdEnd
>

after beeing "responsove" again:
ps aux | sort -nrk 3,3 | head -n 10
<
root      2640  7.8  0.4 356072  9148 ?        SLsl 22:12   0:46 /usr/sbin/pqcontroller
root      2452  6.7  7.6 435876 156692 ?       SLsl 22:12   0:40 /usr/bin/com.webos.app.home {"@system_native_app":true,"reason":"undefined","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"com.webos.app.home","preload":"full","parameters":{"snapshot":true}}
root      2177  3.2  3.5 344784 72364 ?        SLsl 22:12   0:19 /usr/bin/surface-manager -platform eglfs_webos
root      3413  3.1  0.5 109492 10600 ?        SLl  22:12   0:18 /usr/sbin/sdx
root      4037  2.7  0.4 182044  9692 ?        SLsl 22:12   0:16 /usr/sbin/lginput2
root      5102  2.3  2.1 182836 43700 ?        Sl   22:13   0:13 node /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/devmode-helper.js
6774      6189  2.0  6.0 501748 124168 ?       SLl  22:13   0:10 /media/cryptofs/apps/usr/palm/applications/youtube.leanback.v4/cobalt {"@system_native_app":true,"reason":"preload","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"youtube.leanback.v4","preload":"semi-full","parameters":{}}
root      7314  1.9  2.4 221988 49616 ?        SLl  22:18   0:05 /usr/bin/com.webos.app.voice {"@system_native_app":true,"reason":"preload","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"com.webos.app.voice","preload":"partial","parameters":{}}
5168      6066  1.6  4.0 391464 82688 ?        SNLsl 22:13   0:08 /media/cryptofs/apps/usr/palm/applications/netflix/bin/netflix.bin {"@system_native_app":true,"reason":"preload","interfaceVersion":2,"event":"launch","interfaceMethod":"registerApp","appId":"netflix","preload":"partial","parameters":{}}
root      4082  1.4  0.3 193536  7776 ?        S<Ll 22:12   0:08 /usr/sbin/webos-bluetooth-service
mariotaku commented 4 days ago

@Archimedes1986 Wow. I appreciate your great insight! When you feel laggy, the TV doesn't appear to have performance issue, but the sample rate of cursor movement becomes buggy. Your discovery will help me narrow down the root cause!