Adding Steamlink to v9.0.0

  • Hi

    Great work, annoyingly i am having a few teething issues with getting this working mainly; running rpi4


    mkdir x


    mount -o loop,ro,offset=50331648 -t ext4 2018-11-13-raspbian-stretch-full.img x


    only gives me

    mount: mounting /dev/loop1 on x failed: Invalid argument


    (this is following the instructions) running latest libreelec (though i wonder if some stuff are out of date as even unzip was having issues) any advice would be appreciated!

  • ddwangnz, I had a similar issue on the raspberry pi 4. Had to perform the extraction and mounting of the img on another Ubuntu/linux box (vm or otherwise).


    Running this on a raspberry pi fails with an error "failed to add service - already in use?". Based on the FAQ/Support thread over at steam forums, here is what it says


    * Running on the console on Debian Buster isn't supported, the graphics device isn't available for EGL context creation. Try running under X11 instead.


    Steam Link Raspberry Pi Troubleshooting :: Steam Link Raspberry Pi

  • yeah ive been scratching my head over this but managed to get at least abit further but just having issues with eg something after making sure i disabled the line mentioned in the previous posts to get it working but im wondering if its QT at this point not being compiled correctly for the rpi 4's gpu....i really want this going instead of having to use raspbian as my media centre os aswell as i think something barebones would be better imo but it also creates headaches, even going the docker route failed me too so hmm



    Code
    1. QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/storage/steamlink/.tmp/runtime-root'
    2. Unable to query physical screen size, defaulting to 100 dpi.
    3. To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
    4. INFO: Couldn't open /storage/.local/share/Valve Corporation/SteamLink/streaming_settings.bin for reading
    5. INFO: Couldn't open /storage/.local/share/Valve Corporation/SteamLink/client_id_map.txt for reading
    6. INFO: Couldn't open /storage/.local/share/Valve Corporation/SteamLink/speaker_configuration.txt for reading
    7. INFO: Warning: Couldn't set IPV6_ADD_MEMBERSHIP on discovery network socket
    8. "No carrier"
    9. Steam Link UI desktop resolution 3840 x 2160 coordinate scale = 2.1
    10. EGL Error : Could not create the egl surface: error = 0x300b

    Edited once, last by ddwagnz ().

  • Hi everyone!


    Is there any chance this going to be packaged for LibreElec any time soon?

    Thanks for your work.

  • Has anyone had any luck getting this running on a rpi4? I'm having the same previously reported issues. Wondering if anyone has made progress?

  • Hello chaps,


    I have run through these instructions as I would quite like to see how capable the RPi4 is as a 4k streaming client device.


    However, the I have inevitably got stuck at the "replace steamlink.sh file with this version" step because the link to the replacement file has now gone dead.


    Does anyone have a copy of said-file? I had a look at the original, and I could try butcher it and do the minimum amount of modification to make it work, but if there is already a working version floating around somewhere, I'd much prefer to use that.

  • Hi conbag, I'm also on an rpi4 and I'm stuck because of the same problem as you. I hope someone will be nice and will give a link to the script to be modified.

    Edited once, last by Alan700 ().

  • Wanted to play something on the tv again so decided to update this. The new steamlink is quite slick now. So anyway some updates to this.


    Grabbed the newest steamlink steamlink-rpi3-1.1.61.156.tar.gz and the newest raspbian 2020-02-13-raspbian-buster-full.img . Installed steamlink the usual way, no real change there. Here are the newest libs required (md5 76ad404d0165fa2a8d84e831b43de39a).


    And I added this change to my steamlink.sh script.


    Code
    1. # changed cleanup() to
    2. pulseaudio -k
    3. kill $CEC_PID 2>/dev/null
    4. screenblank -k
    5. # and added after line -- pulseaudio -D -n -F "$TOP/pulse_default.pa"
    6. echo 'starting cec'
    7. cec-client </dev/null | steamlink-cec &
    8. CEC_PID="$(jobs -p) $!"

    there are probably more changes I should make but this worked.


    For the handful of people that care, here are the changes to grab everything.


    Code
    1. mount -o loop,ro,offset=272629760 -t ext4 2020-02-13-raspbian-buster-full.img x
    2. # and
    3. for i in libpng16.so.16 libjpeg.so.62 libicui18n.so.63 libicuuc.so.63 libicudata.so.63 libX11-xcb.so.1 libX11.so.6 libXext.so.6 libxcb.so.1 libxkbcommon-x11.so.0 libXau.so.6 libXdmcp.so.6 libxcb-xkb.so.1 libbsd.so.0; do cp "$(find -name $i)" .. ; done

    and also for the people that want to install everything from within their rpi and don't run linux desktop/vm, here is a way to grab all the libs from the raspbian image without mounting it (as you can't from within libreelec). I got all the file positions from the img from a little script I wrote. so the results of that are (filename size position [size2 position2])

    you could just dd if=2020-02-13-raspbian-buster-full.img of=FILENAME bs=1 count=SIZE skip=POSITION . in the case of libicudata.so.63 just append the second dd.

  • Here is the current steamlink.sh. I see the newest official steamlink.sh uses uinput now but since libreelec has it compiled in everything is still good.


  • Can somebody explain to me (or link the answer) why Steamlink is only running on some Raspberry devices and not on all devices the are using an ARM64 processor?

  • I'm fuzzy on the details, but ISTR some internal conversation/moaning about the close-source bits of steamlink being compiled with dependencies on pi-specific libs that don't exist on other devices, or something similar..

  • Okay thanks, that sounds incredible stupid from Valves point of view.

    I would think that it would be in there interest to make their games playable on most devices, so they can compete with Google Stadia etc...


    Nevermind, I will keep following the development and hope to see a "generic solution" sooner or later :)