Adding Steamlink to v9.0.0

  • I wanted to try steamlink without reinstalling anything, so after about an hour of screwing around here is how I got it working.


    This only makes changes within /storage/steamlink , nothing else is touched. If you do not have at least a novice understanding of linux shell or don't fully understand the commands here DO NOT ATTEMPT.


    First thing we download the newest Steamlink and extract it (run on rpi)

    Code
    1. cd /storage
    2. wget "$(wget -q -O - http://media.steampowered.com/steamlink/rpi/public_build.txt)"
    3. tar -zxf steamlink-rpi3-1.1.28.72.tar.gz

    Next we need to download the missing libs that aren't included in this or libreelec itself. These commands might work within the rpi itself but I did them on my desktop.

    Code
    1. curl --header 'Host: director.downloads.raspberrypi.org' --user-agent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' --header 'Accept-Language: en-US,en;q=0.5' --header 'DNT: 1' --header 'Upgrade-Insecure-Requests: 1' 'http://director.downloads.raspberrypi.org/raspbian_full/images/raspbian_full-2018-11-15/2018-11-13-raspbian-stretch-full.zip' --output '2018-11-13-raspbian-stretch-full.zip'
    2. unzip 2018-11-13-raspbian-stretch-full.zip
    3. rm -f 2018-11-13-raspbian-stretch-full.zip
    4. mkdir x
    5. mount -o loop,ro,offset=50331648 -t ext4 2018-11-13-raspbian-stretch-full.img x
    6. cd x
    7. for i in libpng16.so.16 libicui18n.so.57 libicuuc.so.57 libicudata.so.57 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
    8. cd ..
    9. umount x
    10. rmdir x

    Now we have extracted all the libs we need from raspbian, next step is to transfer them into steamlink's /lib folder (the hostname will be different for your setup)

    Code
    1. scp lib* [email protected]:/storage/steamlink/lib/

    Next we need to install the steamlink udev rules, but udev is readonly, so we just overlay it (run from rpi)

    Code
    1. mkdir /storage/steamlink/overlay_work
    2. mount -t overlay overlay -o lowerdir=/lib/udev/rules.d,upperdir=/storage/steamlink/udev/rules.d/,workdir=/storage/steamlink/overlay_work /lib/udev/rules.d
    3. udevadm trigger

    Now the steamlink.sh that comes with it is not geared for libreelec, so copy this one over it


    Now the final step is to stop kodi and start steamlink (run on rpi)

    Code
    1. systemctl stop kodi
    2. cd /storage/steamlink && ./steamlink.sh

    and when your done just restart kodi or "reboot"

    Code
    1. systemctl start kodi

    I am quite impressed how well this works, everything ran smooth as silk. gj Valve!

  • Systemd.mount file to take care of the overlay for you. Still need to create upper and workdir. Save as storage-steamlink-udev-rules.d.mount. Put it in /storage/.config/system.d/. Turn on with systemctl enable storage-steamlink-udev-rules.d.mount.

  • Audio didn't work. I figured it was because I was testing with a linux host but it didn't work in windows either.


    To fix add this to your config.txt

    Code
    1. mount -o remount,rw /flash
    2. nano /flash/config.txt
    3. ### add this then reboot
    4. dtparam=audio=on

    Then use this new steamlink.sh that does the udev stuff automatically and loads pulseaudio before steamlink

  • Question, I have Transmission and OpenVPN running through Kodi, I presume if I kill Kodi to launch Steamlink, will this kill my VPN as well?

  • OpenVPN runs in the OS independently of Kodi but it depends how the connection was started and whether any controlling Kodi add-on will terminate the connection when the add-on is unloaded on Kodi stop.

  • Wow just setup this up and thank you so much. It works surprisingly well, just need to figure out a way to launch it from a shortcut in kodi. I assume we could launch a script that would kill Kodi and launch Steamlink. Would still need a reboot to get back in to kodi tho.


    One note, the steps to mount the raspbian image file and extract the library files do not work on librelec, at least they didnt for me. Was quite a pain acutally, I had to fire up a VM, mount it there, extract the files, copy them over to my host and SSH up to my Pi. Anyway below is a link to a zip file with the library files if anyone else is having trouble.


    LibreElec_Steamlink_Libraries

  • Hi, it work really well thanks.

    I try to convert this code to Libreelec :

    GitHub - swetoast/steamlink-launcher: Steamlink launcher for OSMC

    By replacing in steamlink-launcher/addon.py at master · swetoast/steamlink-launcher · GitHub

    Every '/tmp/steamlink-launcher.sh' with '/storage/steamlink/steamlink.sh' in addon.py



    And commenting line 22 : create_files() to """create_files()"""

    

And it did work, I successfully launch Steamlink from Libreelec's Kodi.

    The only problem is that this script also tells OSMC to quit Kodi before launching Steamlink.



    And this doesn't work yet in Libreelec, so the keyboard doesn't work in Steamlink..

    

Apparently the script creates a steamlink-watchdog.sh that check if Steamlink is launched, and if so, start or quit Kodi.



    I don't know how to adapt this steamlink-watchdog.sh to Libreelec.

  • I made a no-frills launcher so people don't have to ssh in to start steamlink. To install download these three files


    addon.py


    script.steamlink.service


    steamlink_monitor.sh


    then run this from the rpi


    Code
    1. cd /storage
    2. wget https://github.com/swetoast/steamlink-launcher/releases/download/0.0.4/plugin.program.steamlink-v.0.0.4a.zip
    3. # install in kodi, disable updating
    4. # copy addon.py script.steamlink.service steamlink_monitor.sh to /storage/steamlink/
    5. mv /storage/steamlink/addon.py /storage/.kodi/addons/plugin.program.steamlink/
    6. chmod +x /storage/steamlink/steamlink_monitor.sh
    7. ln -s /storage/steamlink/script.steamlink.service /storage/.config/system.d/
    8. systemctl enable script.steamlink.service
    9. # reboot and test