Wednesday, October 21, 2015

Removing Steam Link Bandwidth Limit

A reddit thread brought to my attention that there is a bandwidth limit on the steam link. I've finally figured out where the stream settings are saved and how to read / write them.You will also have to make one file called streaming_args.txt, I'll explain below.

streaming_settings.bin This config file has its maximum_bitrate_kbps set to 0. Which signifies no limit.
streaming_settings_100000.bin This config file has its maximum_bitrate_kbps set to 100,000 for 100mbps.

To use these you can either scp them into your /mnt/config/system/ folder as streaming_settings.bin or you can put the file on a USB pendrive as /steamlink/config/system/streaming_settings.bin and reboot with the pendrive inserted. (Note: You need to hard 'reboot' un-plug and re-plug the power, you should see the steamlink on a blue background icon thing.)

To see if it worked goto your Streaming settings and press Y to go into Advanced Settings. If it worked your Bandwidth Limit row will be blank. You can change any other settings but just make sure you don't go left/right and change the setting on the Bandwidth Limit or you'll need to replace the streaming_settings.bin again.

Now to disable the 25mbps hardware encoding limit inside the streaming_client binary you need to create a file called `streaming_args.txt` inside that file put `--hardwarebitratelimit 0` (Note: 0 will disable the limit but you may get black flickering, setting it to 35000 seems to work the best for me) and save it either with scp to /mnt/config/system/ or with a USB drive at /steamlink/config/system/.

Those two changes will allow you to exceed 25mbps bandwidth limit in the hardware encoder. Another interesting thing to play with is in the streaming_args.txt you can specify other arguments. Like --novsync. Below is a full list of the supported arguments that you can put in the streaming_args.txt

--fullscreen
--windowed
--[no]vsync
--[no]hwaccel
--noinput
--scale [1?]
--quality [1-3]
--captureres [WxH]
--framerate [N]
--hardwarebitratelimit [N (Kbit/s)]
--bitrate [N (Kbit/s)]
--burst [N (Kbit/s)]
--debug
--server [IP:PORT]
--settings [PATH]
--showdebugoverlay
--gameid ?

Tuesday, October 20, 2015

Steam Link Developer Builds

Notice for anyone that hasn't found the dev_build.txt and the two indev builds 'available' to the public right now. I've been neglecting to post the dev_builds.txt just to avoid anyone from grabbing the 337 and 341 and flashing them to their links. The 337 build works fine but I see no notable changes, the 341 build actually fails to run on the steam link. On startup the 341 build gives you an error telling you to contact a internal valve employee. The message is a little more specific but I'm trying to avoid names. 

But if you're feeling technical and comfortable in your ability to fix your steam link should something mess up then you can flash the 337 and 341 builds manually with a USB drive, see the S01config script in /etc/init.d/startup in there you can see how to change your update branch to dev and flash the dev images. Once again I'm being ambiguous just to avoid hand-holding anyone into messing something up. All in all though the two dev builds don't hold anything useful to the public, the 341 is fairly interesting with its error message though. 

Also 04_2015 is a valid hardware branch, but I doubt any of those SystemUpdate images will cooperate on our public 06_2015 hardware. Tinker carefully my friends.

Saturday, October 17, 2015

Root and SSH Access on the Steam Link

Alright this was a lot easier than I expected. Thanks Valve!

After digging through the full 332 update zip I found that Valve left their developer init scripts in /etc/init.d/startup. Not sure if they did this intentionally or not but I like it. So first and foremost I was wrong about the Android AOSP thing, it looks like its just a custom linux and the android stuff I was seeing earlier was just from them using the android signing utility for their updates. Basically they use signapk on their zip files which leaves some android stuff in META-INF. So sorry about the false alarm there.

As for enabling ssh on your Steam Link its very easy. All you need to do is get a pendrive and make this file in these folders: /steamlink/config/system/enable_ssh.txt (Note: the file must have some data in it, if enable_ssh.txt is empty it will not work)

Then reboot the Steam Link with the pendrive inserted, after its done connecting to the network you can ssh into the Steam Link as root with the password `steamlink123`

Have fun!

If you want to dig into it some more look in the /etc/init.d/startup/S01config, in there you can see that you can overwrite any system files or flash a older/custom firmware with a usb pendrive.

Steam Link Software Update System

Currently looking into the updater system for the Steam Link.

As for the update system its fairly simple, the first thing the Link does is send a request to. http://media.steampowered.com/steamlink/06_2015/public_builds.txt

That returns a newline delimited list of the 'public' Steam Link builds. If there is a higher version in that list somewhere then it will send a request to http://media.steampowered.com/steamlink/06_2015/SystemUpdate_delta_[current_version]_[latest_version].zip

That will download the delta update and the system will reboot. Its actually pretty well thought out how they designed the update system, it uses bsdiff to keep the updates small. 

Also after some trial and error I found that http://media.steampowered.com/steamlink/06_2015/SystemUpdate_full_[version].zip is also available for full updates, these zips even contain the recovery/bootloader files.

Wow I haven't used this site in forever. Might have some updates about the Steam Link here soon.