Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Steam Link for Raspberry Pi Addon #9625

Open
wants to merge 14 commits into
base: master
Choose a base branch
from

Conversation

antonlacon
Copy link
Contributor

@antonlacon antonlacon commented Dec 30, 2024

Valve released updates in November that allowed Steam Link for Raspberry Pi to work with the RPi OS Bookworm release without using the firmware's graphics stack. This is a revival of #4029. This updates that addon to work on 64-bit RPi4 (untested) and RPi5 (tested) images, as well as some quality of life improvements like not needing the systemd watchdog service. A 32-bit flavor is available, that would let it work on the RPi2 image for RPi3, but that won't work with this addon as written.

Some of the libraries need to be specific versions (ffmpeg-5.1, icu-72). Other libraries could use existing package files with -sysroot added (see steamlink-libpng for example), but I'd like to get feedback on this working for others, before streamlining that.

Testing will require another computer on the local network running steam. Once launched, Kodi closes and steam link opens. In the past, steam link had hdmi-cec support in the local program before launching streaming, but that either doesn't work or was removed, so one will need a controller or keyboard + mouse to use it. If unavailable, one can ssh in and kill the shell program.

Issues:

Building steamlink-icu: As mentioned, this needs icu-72 and that build fails with undefined references. icu-74 is the first build that works for me. I've worked around it by having the addon use the icu-72 .deb from Debian bookworm. If someone wants to dig into, that would be appreciated, but I'm fine with this solution as steamlink already comes bundled with some libraries that need to be catered to (SDL3, Qt).

Audio: It only uses alsa for audio. It could probably be configured to use pulseaudio, but as I don't use it, my adding it is unlikely.

Noisy dmesg. rpivid appears to print a status report every second. I haven't noticed any problems in using that didn't result from a poor wifi signal. I've switched to wired and will see if this clears up. This is poor network connection related. Switching to wired cleared it up. Messages look like:

[ 6707.719102] rpivid 1000800000.codec: Missing DPB ent 0, timestamp=1633000
[ 6707.839919] cma: number of available pages: 62@386+62@642+18@750+62@898+18@1006+48@1360+48@1488+18@1582+18@1646+18@1710+18@1774+77@1971+77@2227+77@2483+77@2739+77@2995+77@3251+77@3507+77@3763+77@4019=> 1083 free of 4096 total pages

Reusing library package.mk mentioned above.

@CvH
Copy link
Member

CvH commented Dec 30, 2024

just my 2c, obviously it is clusterfuck :D

  • I would avoid low level impact packages like zstd, png ... to duplicate and just add the needed stuff there IF it is feasible or do it the way you did it with libpng so there is no real overhead in maintaining
  • I really do not like the ffmpeg + needed patches, maybe just pump it into a gh.com/LE/ffmpeg-steam/ git repo instead into the normal LE git ?

As long the steam link software is that closed source and has such depends we can either do it that way or not support it.
Btw is there a generic x64 version too ?

@antonlacon
Copy link
Contributor Author

I really do not like the ffmpeg + needed patches, maybe just pump it into a gh.com/LE/ffmpeg-steam/ git repo instead into the normal LE git ?

It's the LE ffmpeg 5.1.2 package updated to 5.1.6 and the libspeex dependency removed. Speex isn't used and I remove it from my image. Dav1d could probably go too; they use av1 between steam clients but apparently not for steam link. I don't expect this ffmpeg to be updated short of the next major Debian release (which will require changes in the addon and its depends anyway).

Btw is there a generic x64 version too ?

Yes. It's provided as a flatpak. I don't know what flatpak needs to work.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Reuse wayland for most settings.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Reuse libepoxy for most settings.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Reuse zstd for most settings.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Reuse mtdev for most settings.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
This supports RPi4.aarch64 and RPi5.aarch64 devices only.

Icon artwork provided by chewitt.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants