RemoteController icon indicating copy to clipboard operation
RemoteController copied to clipboard

Problem installing on SteamDeck

Open Kamikaze01git opened this issue 6 months ago • 10 comments

Describe the bug when i try to execute the downloaded linux installation file on SteamDeck, nothing happens... when i try to open the file in console, i get following error: /home/deck/Downloads/RemoteController-linux-amd64: error while loading shared libraries: libwebkit2gtk-4.0.so.37: cannot open shared object file: No such file or directory

i followed the guide from here: https://github.com/PiterWeb/LibreRemotePlay/wiki/installation-&-execution and also do all steps sudo usermod -aG input $USER lsmod | grep uinput sudo modprobe uinput

To Reproduce try to execute the downloaded RemoteController-linux-amd64 on a SteamDeck

Expected behavior a working program after installation, so i can use LibreRemotePlay between two SteamDeck, or between a SteamDeck and a windows pc ;)

Desktop (please complete the following information): Operating System: SteamOS 3.7.8 Build: 20250522.2 KDE Plasma Version: 6.2.5 KDE Frameworks Version: 6.9.0 Qt Version: 6.8.1 Kernel Version: 6.11.11-valve14-1-neptune-611-g96885212a919 (64-bit) Graphics Platform: X11 Partition: A Processors: 8 × AMD Custom APU 0405 Memory: 14.5 GiB of RAM Graphics Processor: AMD Custom GPU 0405 Manufacturer: Valve Product Name: Jupiter System Version: 1

Browser (please complete the following information): Google Chrome Version 137.0.7151.119 (Official Build) (64-bit)

Kamikaze01git avatar Jun 19 '25 09:06 Kamikaze01git

Hi, first thank you for taking your time to try LibreRemotePlay. In second place I will try to explain what I think that is going wrong:

LibreRemotePlay uses under the hood your "native" webview in the case of linux is webkitgtk-4.0 by default, the error on the console seems that is caused because webkitgtk for some reason is not installed or maybe there is a different version like webkitgtk-4.1.

I have investigated about webkitgtk on SteamOS and looks that it is not bundled on the OS, but first check by yourself if you have webkit2gtk-4.1 installed (if this is the case I will have to make a custom build for you).

If not you might have to install webkitgtk-4.0 using the package manager.

I think that SteamOS is based on arch so I searched for the package and should be this. https://archlinux.org/packages/extra/x86_64/webkit2gtk/

Expected behavior a working program after installation, so i can use LibreRemotePlay between two SteamDeck, or between a SteamDeck and a windows pc ;)

If you want to Stream from Windows to SteamDeck you can install the App in Windows and use the Web client in Steam Deck (In generall is better using the web in the case of client but web and desktop are not in the same version so might be more bugs than expected)

Hope this helps you :)

PiterWeb avatar Jun 19 '25 11:06 PiterWeb

hello and thank you very much for your fast and helpful answer. i checked all installed packages and you were right: there is no webkitgtk on SteamOS, so i followed your advice and downloaded the mentioned package and installed it with sudo pacman -U --noconfirm /home/deck/Downloads/webkit2gtk-2.48.3-1-x86_64.pkg.tar.zst

This worked and the package is now installed. BUT... now i get following /home/deck/Downloads/RemoteController-linux-amd64: error while loading shared libraries: libicui18n.so.76: cannot open shared object file: No such file or directory

i tried RemotePlayTogether from Steam, but my friend and me always had some problems between two SteamDecks. We also tried Sunshine and Moonlight with VPN, but way also a lot of different problems... parsec do not support linux and with the git repo RemotePlayWhatever it also does not work proper... so i was more than happy to try your thing for two SteamDecks.

hopefully i get it to work somehow ;)

Kamikaze01git avatar Jun 19 '25 12:06 Kamikaze01git

i tried RemotePlayTogether from Steam, but my friend and me always had some problems between two SteamDecks. We also tried Sunshine and Moonlight with VPN, but way also a lot of different problems... parsec do not support linux and with the git repo RemotePlayWhatever it also does not work proper... so i was more than happy to try your thing for two SteamDecks.

Unlucky, I hope you can play together soon.

This worked and the package is now installed. BUT... now i get following /home/deck/Downloads/RemoteController-linux-amd64: error while loading shared libraries: libicui18n.so.76: cannot open shared object file: No such file or directory

This is the package that gives libicu18n https://archlinux.org/packages/core/x86_64/icu/ but I have no clue about why is not already installed and why your system needs it.

PiterWeb avatar Jun 19 '25 12:06 PiterWeb

:( ...yeah. Unlucky me run from one problem into the next... tried to install and run into next error. maybe this is note made for SteamDeck :(

(deck@steamdeck ~)$ sudo pacman -U --noconfirm /home/deck/Downloads/icu-76.1-1-x86_64.pkg.tar.zst
loading packages...
resolving dependencies...
looking for conflicting packages...
error: failed to prepare transaction (could not satisfy dependencies)
:: installing icu (76.1-1) breaks dependency 'libicuuc.so=75-64' required by freerdp
:: installing icu (76.1-1) breaks dependency 'libicuuc.so=75-64' required by freerdp2
:: installing icu (76.1-1) breaks dependency 'libicuuc.so=75-64' required by harfbuzz-icu
(deck@steamdeck ~)$ 

Kamikaze01git avatar Jun 19 '25 12:06 Kamikaze01git

Oh what a pity. I might cannot help you more with this as I don't have Arch nor SteamOS to advance with this issues. Also is very strange that even Steam Remote Play doesn't work in a SteamDeck.

PiterWeb avatar Jun 19 '25 13:06 PiterWeb

No problem :) Keep doing, I think this is a great thing anyway. Thank you so much for your work !!

Kamikaze01git avatar Jun 19 '25 13:06 Kamikaze01git

I have find out other way that could work for you, I had created a .AppImage from the available executable that should bundle all the necesary dependencies to work.

I will upload to releases, I hope it resolves your ploblem.

https://github.com/PiterWeb/LibreRemotePlay/releases/download/release-v3.1/Remote_Controller-x86_64.AppImage

PiterWeb avatar Jun 19 '25 16:06 PiterWeb

thank you so much for your effort,... but i am not that important for an extra solution :)

unfortunately the appimage also not work. :(

this is the output, if youre interested. but pls dont waste more of your time for me-... even, if you got it to work, my friend is on holliday and we cant play right now... maybe you can test it at a later moment when SteamOS is fully released for every PC :)

2025/06/19 19:21:24 listen tcp :8080: bind: address already in use
Gtk-Message: 19:21:24.503: Failed to load module "colorreload-gtk-module"
Gtk-Message: 19:21:24.503: Failed to load module "window-decorations-gtk-module"
Overriding existing handler for signal 10. Set JSC_SIGNAL_FOR_GC if you want WebKit to use a different signal

** (AppRun.wrapped:30132): ERROR **: 19:21:24.841: Unable to spawn a new child process: Failed to spawn child process “/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitNetworkProcess” (No such file or directory)
SIGTRAP: trace trap
PC=0x7fe1c22a8777 m=0 sigcode=128
signal arrived during cgo execution

goroutine 1 gp=0xc000002380 m=0 mp=0x180b700 [syscall, locked to thread]:
runtime.cgocall(0xa67af0, 0xc0000399f0)
        /usr/local/go/src/runtime/cgocall.go:167 +0x4b fp=0xc0000399c8 sp=0xc000039990 pc=0x47ab6b
github.com/wailsapp/wails/v2/internal/frontend/desktop/linux._Cfunc_SetupWebview(0x26e8f2a0, 0x27096260, 0x0, 0x2, 0x0, 0x0)
        _cgo_gotypes.go:803 +0x47 fp=0xc0000399f0 sp=0xc0000399c8 pc=0x9e8547
github.com/wailsapp/wails/v2/internal/frontend/desktop/linux.NewWindow.func8(...)
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/linux/window.go:108
github.com/wailsapp/wails/v2/internal/frontend/desktop/linux.NewWindow(0xc0001942c0, 0x0, 0x0)
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/linux/window.go:108 +0x51d fp=0xc000039b58 sp=0xc0000399f0 pc=0x9f04fd
github.com/wailsapp/wails/v2/internal/frontend/desktop/linux.NewFrontend({0x12e8850, 0xc0001c5710}, 0xc0001942c0, 0xc000010810, 0xc0001ba3f0, {0x12e3a80, 0xc000041880})
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/linux/frontend.go:198 +0x5a9 fp=0xc000039d50 sp=0xc000039b58 pc=0x9eba89
github.com/wailsapp/wails/v2/internal/frontend/desktop.NewFrontend(...)
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/desktop_linux.go:16
github.com/wailsapp/wails/v2/internal/app.CreateApp(0xc0001942c0)
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/app/app_production.go:86 +0x5af fp=0xc000039e98 sp=0xc000039d50 pc=0x9f8e8f
github.com/wailsapp/wails/v2/pkg/application.(*Application).Run(0xc00010da20)
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/pkg/application/application.go:58 +0x25 fp=0xc000039eb8 sp=0xc000039e98 pc=0x9f9ba5
github.com/wailsapp/wails/v2.Run(0xc0001942c0?)
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/wails.go:14 +0x9a fp=0xc000039ee0 sp=0xc000039eb8 pc=0x9f9d9a
main.main()
        /home/piter/programacion/RemoteController/main.go:36 +0x307 fp=0xc000039f50 sp=0xc000039ee0 pc=0x9fa0c7
runtime.main()
        /usr/local/go/src/runtime/proc.go:283 +0x28b fp=0xc000039fe0 sp=0xc000039f50 pc=0x44a36b
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000039fe8 sp=0xc000039fe0 pc=0x484f21

goroutine 18 gp=0xc00009a380 m=nil [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:435 +0xce fp=0xc00005e7a8 sp=0xc00005e788 pc=0x47dc4e
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:441
runtime.forcegchelper()
        /usr/local/go/src/runtime/proc.go:348 +0xb3 fp=0xc00005e7e0 sp=0xc00005e7a8 pc=0x44a6b3
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005e7e8 sp=0xc00005e7e0 pc=0x484f21
created by runtime.init.7 in goroutine 1
        /usr/local/go/src/runtime/proc.go:336 +0x1a

goroutine 19 gp=0xc00009a540 m=nil [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:435 +0xce fp=0xc00005ef80 sp=0xc00005ef60 pc=0x47dc4e
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:441
runtime.bgsweep(0xc0000aa000)
        /usr/local/go/src/runtime/mgcsweep.go:276 +0x94 fp=0xc00005efc8 sp=0xc00005ef80 pc=0x434f14
runtime.gcenable.gowrap1()
        /usr/local/go/src/runtime/mgc.go:204 +0x25 fp=0xc00005efe0 sp=0xc00005efc8 pc=0x4293e5
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005efe8 sp=0xc00005efe0 pc=0x484f21
created by runtime.gcenable in goroutine 1
        /usr/local/go/src/runtime/mgc.go:204 +0x66

goroutine 20 gp=0xc00009a700 m=nil [GC scavenge wait]:
runtime.gopark(0xc0000aa000?, 0x12dc208?, 0x1?, 0x0?, 0xc00009a700?)
        /usr/local/go/src/runtime/proc.go:435 +0xce fp=0xc00005f778 sp=0xc00005f758 pc=0x47dc4e
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:441
runtime.(*scavengerState).park(0x1809a00)
        /usr/local/go/src/runtime/mgcscavenge.go:425 +0x49 fp=0xc00005f7a8 sp=0xc00005f778 pc=0x4329c9
runtime.bgscavenge(0xc0000aa000)
        /usr/local/go/src/runtime/mgcscavenge.go:653 +0x3c fp=0xc00005f7c8 sp=0xc00005f7a8 pc=0x432f3c
runtime.gcenable.gowrap2()
        /usr/local/go/src/runtime/mgc.go:205 +0x25 fp=0xc00005f7e0 sp=0xc00005f7c8 pc=0x429385
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005f7e8 sp=0xc00005f7e0 pc=0x484f21
created by runtime.gcenable in goroutine 1
        /usr/local/go/src/runtime/mgc.go:205 +0xa5

goroutine 2 gp=0xc000003880 m=nil [finalizer wait]:
runtime.gopark(0x1b8?, 0xc000002380?, 0x1?, 0x23?, 0xc000062688?)
        /usr/local/go/src/runtime/proc.go:435 +0xce fp=0xc000062630 sp=0xc000062610 pc=0x47dc4e
runtime.runfinq()
        /usr/local/go/src/runtime/mfinal.go:196 +0x107 fp=0xc0000627e0 sp=0xc000062630 pc=0x4283a7
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000627e8 sp=0xc0000627e0 pc=0x484f21
created by runtime.createfing in goroutine 1
        /usr/local/go/src/runtime/mfinal.go:166 +0x3d

goroutine 3 gp=0xc000003dc0 m=nil [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:435 +0xce fp=0xc000062f18 sp=0xc000062ef8 pc=0x47dc4e
runtime.chanrecv(0xc00007e460, 0x0, 0x1)
        /usr/local/go/src/runtime/chan.go:664 +0x445 fp=0xc000062f90 sp=0xc000062f18 pc=0x41a985
runtime.chanrecv1(0x0?, 0x0?)
        /usr/local/go/src/runtime/chan.go:506 +0x12 fp=0xc000062fb8 sp=0xc000062f90 pc=0x41a512
runtime.unique_runtime_registerUniqueMapCleanup.func2(...)
        /usr/local/go/src/runtime/mgc.go:1796
runtime.unique_runtime_registerUniqueMapCleanup.gowrap1()
        /usr/local/go/src/runtime/mgc.go:1799 +0x2f fp=0xc000062fe0 sp=0xc000062fb8 pc=0x42c52f
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000062fe8 sp=0xc000062fe0 pc=0x484f21
created by unique.runtime_registerUniqueMapCleanup in goroutine 1
        /usr/local/go/src/runtime/mgc.go:1794 +0x79

goroutine 5 gp=0xc0001d41c0 m=nil [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:435 +0xce fp=0xc000063ef8 sp=0xc000063ed8 pc=0x47dc4e
runtime.chanrecv(0xc0001ba380, 0xc000063fb8, 0x1)
        /usr/local/go/src/runtime/chan.go:664 +0x445 fp=0xc000063f70 sp=0xc000063ef8 pc=0x41a985
runtime.chanrecv2(0x0?, 0x0?)
        /usr/local/go/src/runtime/chan.go:511 +0x12 fp=0xc000063f98 sp=0xc000063f70 pc=0x41a532
github.com/wailsapp/wails/v2/internal/frontend/desktop/linux.(*Frontend).startRequestProcessor(...)
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/linux/frontend.go:521
github.com/wailsapp/wails/v2/internal/frontend/desktop/linux.NewFrontend.gowrap1()
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/linux/frontend.go:183 +0x65 fp=0xc000063fe0 sp=0xc000063f98 pc=0x9ebf25
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000063fe8 sp=0xc000063fe0 pc=0x484f21
created by github.com/wailsapp/wails/v2/internal/frontend/desktop/linux.NewFrontend in goroutine 1
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/linux/frontend.go:183 +0x825

goroutine 6 gp=0xc0001d4380 m=nil [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:435 +0xce fp=0xc0000646f8 sp=0xc0000646d8 pc=0x47dc4e
runtime.chanrecv(0xc0001ba310, 0xc0000647b8, 0x1)
        /usr/local/go/src/runtime/chan.go:664 +0x445 fp=0xc000064770 sp=0xc0000646f8 pc=0x41a985
runtime.chanrecv2(0x0?, 0x0?)
        /usr/local/go/src/runtime/chan.go:511 +0x12 fp=0xc000064798 sp=0xc000064770 pc=0x41a532
github.com/wailsapp/wails/v2/internal/frontend/desktop/linux.(*Frontend).startMessageProcessor(...)
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/linux/frontend.go:214
github.com/wailsapp/wails/v2/internal/frontend/desktop/linux.NewFrontend.gowrap2()
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/linux/frontend.go:186 +0x5d fp=0xc0000647e0 sp=0xc000064798 pc=0x9ebe7d
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000647e8 sp=0xc0000647e0 pc=0x484f21
created by github.com/wailsapp/wails/v2/internal/frontend/desktop/linux.NewFrontend in goroutine 1
        /home/piter/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/linux/frontend.go:186 +0x4db

rax    0x0
rbx    0x1
rcx    0x26dce010
rdx    0x1
rdi    0x7fe1b23c4f90
rsi    0x0
rbp    0x3
rsp    0x7ffdb415af40
r8     0x7fe1b9ff6ac0
r9     0x6
r10    0x0
r11    0x246
r12    0x0
r13    0x7ffdb415af90
r14    0x7fe1c2383ca0
r15    0x7fe1c2383cf8
rip    0x7fe1c22a8777
rflags 0x202
cs     0x33
fs     0x0
gs     0x0

this is the end and nothing more happened on my deck...

Kamikaze01git avatar Jun 19 '25 17:06 Kamikaze01git

thank you so much for your effort,... but i am not that important for an extra solution :)

Well I wanted to try this little thing at least.

unfortunately the appimage also not work. :(

Oh :(

this is the output, if youre interested.

Actually I am very interested, the error now at least is Go code so it executes.

but pls dont waste more of your time for me-... even, if you got it to work, my friend is on holliday and we cant play right now... maybe you can test it at a later moment when SteamOS is fully released for every PC :)

Ok don't worry about and thank you for your time

PiterWeb avatar Jun 19 '25 18:06 PiterWeb

no problem mate :) i will follow your work and maybe use it with windows or maybe Linux handhelds at a later moment in the future ;) thank YOU for your participation in my problem and your time :)

Kamikaze01git avatar Jun 19 '25 18:06 Kamikaze01git