Ewan
New member
- Joined
- May 11, 2022
- Messages
- 11
I posted this on Reddit but it didn't really "take" as it were so I'm hoping people here might find it useful.
So, I don't have my Steamdeck yet so I'm unable to test this on SD specifically but it's working perfectly from my laptop.
What am I doing here and why would you want to do it?
The plan is if I move to my livingroom, Steamdeck in hand, I can switch my TV to Steamlink, the CEC will automatically power on the Steamlink, and the steamlink-clac tool will auto log me in and I can use my Steamdeck as a controller (essentially) for TV gaming. Yes, the display will be duplicated between the deck and the TV but hey ho, you can't have everything! (I believe you could do something about this but I've not looked into it).
The problem is a) the Steamlink has no power button (annoying) and you need a controller attached to turn it on (or wireless but that's a bit of a mess tbh) and b) unless you have a keyboard or controller attached it doesn't get past an initial screen asking you to plug one in and once you're in you need a keyboard or controller to select the Steam instance you wish to connect to.
This awesome human being made an auto login tool for Steamlink:
Please note: I AM NOT THE DEV OF THIS TOOL. I JUST FOUND IT AND IT'S REALLY USEFUL!
https://gitlab.com/void-li/steamlink-clac
Please note - if you have any issues - don't spam the poor dev as they don't know I'm posting this. I'm a newbie to Linux (I run a few servers and some docker stuff but I've got to look up nearly every command repeatedly, also I'm used to Ubuntu and this is based on Debian which can be different in some respects - my hope is the Linux folk will add anything they think is relevant to this.) but I will help in any way I can here.
I've specifically written this guide as in-depth as I can, but also as straightforward as I can. I'm very conscious that many Steamdeck people might be using Linux for the first time so wanted to be verbose but have also potentially done things the long way round as it's easier to understand what's going on (for instance, this could mostly be done on the Debian command line within the Steamlink but avoided that and opted for the GUI option everywhere!).
What you are going to be doing is enabling SSH on your Steamlink (this is a way to communicate with the Steamlink over the network), then grabbing some files, then putting them onto the Steamlink in the correct place and a reboot and you'll be done. Hopefully this guide will help you avoid the 100 dumb mistakes I made.
Following the instructions provided is entirely done at your own risk, I take no responsibility if you break, brick or otherwise screw something up!
I'm working from a PC and although there are lots of options for below I used:
Additional Notes:
Enable CEC
If you (with a controller or keyboard attached to the Steamlink) go into the settings you can turn HDMI CEC on or off. Switch this to On if it isn't already, this means that your Steamlink will get a signal from your TV when you switch HDMI channel to instruct the device to switch on (provided your TV is CEC enabled and the specific HDMI port is too), while you're here you can go into network settings and grab your Steamlink IP address.
Unfortunately this is the part of the process where it might all fall down, my LG TV is perfectly happy to use CEC to switch on the Steamlink, my Samsung, not so much, CEC can be really fickle so it's worth testing this part before you do everything else (plug in Steamlink, switch it off from the GUI, switch to a different input, personally I'd switch the TV off and on, switch back to the Steamlink input and make sure that the instruction from the TV to the Steamlink actually switches it on)
Enable SSH on Steamlink:
Note: this will enable ssh on the Steamlink permanently, it cannot be deactivated (I believe) until you factory reset the device.
You can do this by putting a file called enable_ssh.txt on a FAT32 USB drive under \steamlink\config\system, inserting it into the Steam Link and power cycle the device.
(take a usb drive, reformat it as FAT32, create a folder in the empty drive called "steamlink", create a folder inside that folder called "config" and a folder inside that folder called "system" then create an .txt file called enable_ssh.txt and ensure it's not empty. You can put anything in there. I just wrote enablessh but you could easily just write "1". Just make sure it's not empty.
Check SSH is working and password reset:
On a computer grab PuTTY (or your SSH client of choice) and upon opening you are asked for a "host name" input the IP address for your Steamlink device that you collected at the beginning. Double check it says "Port 22" on the right hand side and hit "open" you should get a command prompt with "user:"
Username: root
Password: steamlink123
For the love of god, please do not skip this next step.
Once you're successfully in type passwd, this will prompt you to change the password to something better than steamlink123.
(for all the more technical folk reading, yes ssh keys would be a better idea but it's way too complex for this simple arrangement and I wouldn't even know where to start doing this on the Steamlink)
Please be aware, this arrangement means that you effectively have a Linux machine, which is open to SSH whenever it's switched on. This isn't a massive issue in my opinion as it's not switched on for more than 10 mins while not in use but I would be remiss to not mention it.
You can disconnect the session (close the window) now, this was just a check.
Get hold of the files from Github:
If you go to the link at the top of this page this will take you to github - in the installation instructions you can find the link to the pre-complied files - on the download page download Steamlink-Clac (it's under "Other") you get a file Steamlink-Clac.tar.gz, use 7-zip to extract this and you'll get a file called Steamlink-Clac.tar, and again, extract the contents of this file to get a folder called "Steamlink-Calc". We now have the folder we need, we're going to move it to the Steamlink now!
Connect to Steamlink via Filezilla and copy files:
Open Filezilla, and like PuTTy, we're going to put the IP address for the Steamlink into the Host box, username: root and password is the password you set up earlier. Hit quick connect.
On the window on the right side of the program you now have access to all the files that make up the Steamlink.
You got this far? Awesome! You could randomly delete files and potentially brick your Steamlink so let's be careful yeah?
You're looking for a folder called "home", you might need to double click the folder with the ".." to get you back to the root directory to find it. Once inside home, open the folder "apps".
Then you can just drag the entire folder that you extracted before (Steamlink-Clac) into this folder (mine had another folder called "Lost+Found" - ignore this) and let it copy across.
I don't know if this step is vital because it's not in the original instructions but it wouldn't work until I did it. Enter the Steamlink-Clac folder, right click on the file Clac and select "file permissions" (it's at the bottom) and tick the executable box.
Once this is done, we have one more job! We need to copy across the file that tells the Steamlink to start up in this way.
In Filezilla, click the ".." icon until you get back to root. You are looking for a folder called "etc", open this, then a folder called "init.d", then a folder called "startup".
Go to the original folder you extracted on your PC and open it, you'll see a file called "S90Clac", copy this file into the Startup folder. Once you have done this right click the copied S90Clac file and select "file permissions" and tick the box that says "executable" like you did before.
At this point you can go to your Steamlink, shut it down (pull the power) and when you switch it on (plug in the power) it will a) ignore the fact there is no keyboard or controller attached and b) automatically connect to the first available server, which, with Steamdeck in hand, will be your Steamdeck.
Enjoy!!!!
P.S. I do technical writing for a living and frankly I would sack myself at the mess of this guide. I'll take some feedback and maybe rewrite it if it's a total mess for people to follow.
So, I don't have my Steamdeck yet so I'm unable to test this on SD specifically but it's working perfectly from my laptop.
What am I doing here and why would you want to do it?
The plan is if I move to my livingroom, Steamdeck in hand, I can switch my TV to Steamlink, the CEC will automatically power on the Steamlink, and the steamlink-clac tool will auto log me in and I can use my Steamdeck as a controller (essentially) for TV gaming. Yes, the display will be duplicated between the deck and the TV but hey ho, you can't have everything! (I believe you could do something about this but I've not looked into it).
The problem is a) the Steamlink has no power button (annoying) and you need a controller attached to turn it on (or wireless but that's a bit of a mess tbh) and b) unless you have a keyboard or controller attached it doesn't get past an initial screen asking you to plug one in and once you're in you need a keyboard or controller to select the Steam instance you wish to connect to.
This awesome human being made an auto login tool for Steamlink:
Please note: I AM NOT THE DEV OF THIS TOOL. I JUST FOUND IT AND IT'S REALLY USEFUL!
https://gitlab.com/void-li/steamlink-clac
Please note - if you have any issues - don't spam the poor dev as they don't know I'm posting this. I'm a newbie to Linux (I run a few servers and some docker stuff but I've got to look up nearly every command repeatedly, also I'm used to Ubuntu and this is based on Debian which can be different in some respects - my hope is the Linux folk will add anything they think is relevant to this.) but I will help in any way I can here.
I've specifically written this guide as in-depth as I can, but also as straightforward as I can. I'm very conscious that many Steamdeck people might be using Linux for the first time so wanted to be verbose but have also potentially done things the long way round as it's easier to understand what's going on (for instance, this could mostly be done on the Debian command line within the Steamlink but avoided that and opted for the GUI option everywhere!).
What you are going to be doing is enabling SSH on your Steamlink (this is a way to communicate with the Steamlink over the network), then grabbing some files, then putting them onto the Steamlink in the correct place and a reboot and you'll be done. Hopefully this guide will help you avoid the 100 dumb mistakes I made.
Following the instructions provided is entirely done at your own risk, I take no responsibility if you break, brick or otherwise screw something up!
I'm working from a PC and although there are lots of options for below I used:
- PuTTY - this is a tool for using SSH
- Filezilla - this is an FTP tool (but we can use it for this purpose!)
- Your Steamlink IP - easiest way to get this is to go into the settings of your Steamlink and go to information and it will provide the IP, you could also grab this from your router
- 7-Zip: for extracting from archives
Additional Notes:
- Due to the lack of power switch you will need to power on your Steamlink by plugging the power in and to switch it off, removing the power.
- I haven't covered the Steam configuration side of this, there are thousands of tutorials that cover this (enabling Steamlink and pairing etc)
- This guide is on the assumption that I will only be using one device with my Steamlink, the Steamdeck. I have no idea how this will behave with two available servers.
- Once I have my Steamdeck I'm going to investigate getting this up and running with Moonlight.
Enable CEC
If you (with a controller or keyboard attached to the Steamlink) go into the settings you can turn HDMI CEC on or off. Switch this to On if it isn't already, this means that your Steamlink will get a signal from your TV when you switch HDMI channel to instruct the device to switch on (provided your TV is CEC enabled and the specific HDMI port is too), while you're here you can go into network settings and grab your Steamlink IP address.
Unfortunately this is the part of the process where it might all fall down, my LG TV is perfectly happy to use CEC to switch on the Steamlink, my Samsung, not so much, CEC can be really fickle so it's worth testing this part before you do everything else (plug in Steamlink, switch it off from the GUI, switch to a different input, personally I'd switch the TV off and on, switch back to the Steamlink input and make sure that the instruction from the TV to the Steamlink actually switches it on)
Enable SSH on Steamlink:
Note: this will enable ssh on the Steamlink permanently, it cannot be deactivated (I believe) until you factory reset the device.
You can do this by putting a file called enable_ssh.txt on a FAT32 USB drive under \steamlink\config\system, inserting it into the Steam Link and power cycle the device.
(take a usb drive, reformat it as FAT32, create a folder in the empty drive called "steamlink", create a folder inside that folder called "config" and a folder inside that folder called "system" then create an .txt file called enable_ssh.txt and ensure it's not empty. You can put anything in there. I just wrote enablessh but you could easily just write "1". Just make sure it's not empty.
Check SSH is working and password reset:
On a computer grab PuTTY (or your SSH client of choice) and upon opening you are asked for a "host name" input the IP address for your Steamlink device that you collected at the beginning. Double check it says "Port 22" on the right hand side and hit "open" you should get a command prompt with "user:"
Username: root
Password: steamlink123
For the love of god, please do not skip this next step.
Once you're successfully in type passwd, this will prompt you to change the password to something better than steamlink123.
(for all the more technical folk reading, yes ssh keys would be a better idea but it's way too complex for this simple arrangement and I wouldn't even know where to start doing this on the Steamlink)
Please be aware, this arrangement means that you effectively have a Linux machine, which is open to SSH whenever it's switched on. This isn't a massive issue in my opinion as it's not switched on for more than 10 mins while not in use but I would be remiss to not mention it.
You can disconnect the session (close the window) now, this was just a check.
Get hold of the files from Github:
If you go to the link at the top of this page this will take you to github - in the installation instructions you can find the link to the pre-complied files - on the download page download Steamlink-Clac (it's under "Other") you get a file Steamlink-Clac.tar.gz, use 7-zip to extract this and you'll get a file called Steamlink-Clac.tar, and again, extract the contents of this file to get a folder called "Steamlink-Calc". We now have the folder we need, we're going to move it to the Steamlink now!
Connect to Steamlink via Filezilla and copy files:
Open Filezilla, and like PuTTy, we're going to put the IP address for the Steamlink into the Host box, username: root and password is the password you set up earlier. Hit quick connect.
On the window on the right side of the program you now have access to all the files that make up the Steamlink.
You got this far? Awesome! You could randomly delete files and potentially brick your Steamlink so let's be careful yeah?
You're looking for a folder called "home", you might need to double click the folder with the ".." to get you back to the root directory to find it. Once inside home, open the folder "apps".
Then you can just drag the entire folder that you extracted before (Steamlink-Clac) into this folder (mine had another folder called "Lost+Found" - ignore this) and let it copy across.
I don't know if this step is vital because it's not in the original instructions but it wouldn't work until I did it. Enter the Steamlink-Clac folder, right click on the file Clac and select "file permissions" (it's at the bottom) and tick the executable box.
Once this is done, we have one more job! We need to copy across the file that tells the Steamlink to start up in this way.
In Filezilla, click the ".." icon until you get back to root. You are looking for a folder called "etc", open this, then a folder called "init.d", then a folder called "startup".
Go to the original folder you extracted on your PC and open it, you'll see a file called "S90Clac", copy this file into the Startup folder. Once you have done this right click the copied S90Clac file and select "file permissions" and tick the box that says "executable" like you did before.
At this point you can go to your Steamlink, shut it down (pull the power) and when you switch it on (plug in the power) it will a) ignore the fact there is no keyboard or controller attached and b) automatically connect to the first available server, which, with Steamdeck in hand, will be your Steamdeck.
Enjoy!!!!
P.S. I do technical writing for a living and frankly I would sack myself at the mess of this guide. I'll take some feedback and maybe rewrite it if it's a total mess for people to follow.