Apparently steamlink only runs on armhf, up to Raspbian Buster.
This is an attempt to make it work on modern aarm64 distros.
NOTE: I'm a docker newbie, and I know enough of it to be dangerous.
First off, ensure your user can actually use docker (refer to your distro's documentation).
Then build the docker image on your device:
docker build --no-cache --platform=linux/arm/v7 -t steamlink docker/
After all that, you can start anything steamlink via the bundled script
start.bash.
This script can be run from any location, and takes care of a multitude of parameters that need to be set at each launch:
- sets the correct arm platform
- connects to the user's X11 session
- connects the devices (input, video)
- connects the user folders where to save data:
- ~/.config/Valve Corporation
- ~/.local/share/SteamLink
- ~/.local/share/Valve Corporation
- connects the pulseaudio socket
You can use the --shell flag if you want/need to open up a shell whithin
the container.
The pulseaudio config for docker has been taken from here:
https://github.com/TheBiggerGuy/docker-pulseaudio-example/tree/master
Although this isn't in a working condition yet, some things do work:
- steamlink correctly starts up
- steamlink can pair with a Steam client on the network
- steam controller is detected
- all relevant data folders are correctly mounted as volumes, so persistency works
However, certain crucial features still don't work:
- audio (alsa can't find the sound card)
- streaming:
INFO: Connected to Remote Client service with session 8954947237924478593 INFO: Starting Streaming INFO: Received authorization proof request, responding with encrypted challenge INFO: Received start streaming response k_ERemoteDeviceStreamingSuccess Bad thread localDetected USB device 0x0e8f 0x2517, 0x0e8f 0x2517 at address 111 Couldn't find av_rpi_zc_frame_geometry in libavcodec.so.58, some functionality not available Couldn't find av_rpi_zc_length in libavcodec.so.58, some functionality not available Couldn't find av_rpi_zc_numbytes in libavcodec.so.58, some functionality not available Couldn't find av_rpi_zc_offset in libavcodec.so.58, some functionality not available Couldn't find av_rpi_zc_ref in libavcodec.so.58, some functionality not available Couldn't find av_rpi_zc_unref in libavcodec.so.58, some functionality not available Couldn't find av_rpi_zc_vc_handle in libavcodec.so.58, some functionality not available INFO: Initializing player INFO: Desktop mode: 1360x768 INFO: Refresh rate: 60.00 INFO: Effective rate: 59.75 INFO: Video rect: 0x0 at 0,0 INFO: Texture rect: 1360x768 at 0,0 INFO: Video size: 1360x768, output size: 1360x768, overlay size: 1360x768 INFO: Video rect: 1360x768 at 0,0 INFO: Texture rect: 1360x768 at 0,0 INFO: Video rect: 1360x768 at 0,0 INFO: Texture rect: 1360x768 at 0,0 INFO: Hardware: Unknown /home/steamlink/.local/share/SteamLink/steamlink.sh: line 186: 115 Segmentation fault (core dumped) "streaming_client" "--settings" "/home/steamlink/.local/share/Valve Corporation/SteamLink/streaming_settings.bin" "--stats" "/home/steamlink/.local/share/Valve Corporation/SteamLink/streaming_stats.bin" "--sdr_config" "/home/steamlink/.local/share/Valve Corporation/SteamLink/sdr_config.txt" "--burst" "90000" "--captureres" "1920x1080" "--performance-icons" "--transport" "k_EStreamTransportUDP" "--steamid" "76561197997810608" "--server" "192.168.1.13:27031" "ed718f44f4d5884e7087a7a20b3503e9"
Add user to docker group, so it can actually start stuff.
Build the image: docker build --no-cache --platform=linux/arm/v7 -t steamlink docker/
List images: docker image ls
Delete built image: docker image rm -f steamlink