Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
This branch is 96 commits ahead of mcd1992:master.

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

#SDK for the Valve Steam Link

This is the SDK for the Valve Steam Link


The Steam Link hardware is a single core ARMv7 processor using the hard-float ABI, running at 1 GHz, with neon instruction support. It has approximately 256 MB of available RAM and 500 MB of usable flash storage.


The Steam Link software is custom Linux firmware based on kernel 3.8 and glibc 2.19.

###API support The Steam Link SDK has support for the following major APIs:

  • OpenGL ES 2.0
  • Qt 5.4
  • SDL 2.0

The SDL game controller API is recommended for Steam Controller support on the Steam Link.

##Repository Contents ###examples Very simple example applications to demonstrate how to build applications using the SDK

###external Source code to 3rd party components of the Steam Link, each directory has a script to rebuild the component.

###kernel Steam Link linux kernel source code

###rootfs Steam Link root filesystem

###toolchain GCC toolchain for Steam Link Script to configure build environment


Steam Link applications are built using this SDK on Linux.

To set up the build environment, source the top level

# source

Go to the examples and look at their files to see how to build them


Put the files in a folder with the app name on a USB drive under \steamlink\apps, insert it into the Steam Link and power cycle the device.

The app will be copied onto the system at boot and can be launched from the menu.

##SSH Access

You may need to enable ssh access to the Steam Link for advanced debugging. You can do this by putting a file called enable_ssh.txt on a USB drive under \steamlink\config\system, inserting it into the Steam Link and power cycle the device.

The root password is steamlink123 and should be changed using the passwd command the first time you log in.

SSH access will remain enabled until a factory reset.


Recommended way is to run gdbserver on the Steam Link and use a local gdb to connect to it and debug an application.


First, configure environment for SDK:

# source

Second, make sure that the install path of the SDK is on gdb's auto-load-safe-path by:

# echo "add-auto-load-safe-path $MARVELL_SDK_PATH" >> ~/.gdbinit

Build an example application and transfer it into the steam link:

# cd examples/linux
# make
# scp example root@

On the steam link, run the application:

# gdbserver :8080 example

Or you can attach to a running process with:

# gdbserver --attach :8080 $(pidof example)

On the host, create a .gdbinit file for your application and target:

$ ../../scripts/ example

On the host, run gdb and attach to the gdbserver:

ubuntu:/valve/marvell/sdk/examples/linux $ armv7a-cros-linux-gnueabi-gdb
GNU gdb (Gentoo 7.7.1 p1 e02ddb0f2eea465662e99fee14e9c41f23769624)
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-pc-linux-gnu --target=armv7a-cros-linux-gnueabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
Find the GDB manual and other documentation resources online at:
For help, type "help".
Type "apropos word" to search for commands related to "word".
0xb6f6ba00 in _start () from /valve/marvell/sdk/rootfs/lib/
(gdb) break printf
Function "printf" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (printf) pending.
(gdb) c
Breakpoint 1, __printf (format=0xb6f8c764 "Hello world!\n") at printf.c:28
28	printf.c: No such file or directory.
(gdb) where
#0  __printf (format=0xb6f8c764 "Hello world!\n") at printf.c:28
#1  0xb6f8c704 in main (argc=1, argv=0xbed64e64) at example.c:7

Building the kernel

Follow these steps in addition to setting up the build environment as described above.

WARNING: Steam Link devices will only boot with a kernel signed by Valve. If you attempt to replace the kernel with an unsigned binary you will void your warrantee and render your Steam Link unbootable.

Set environment variables for kernel build

# export ARCH=arm; export LOCALVERSION="-mrvl"

Configure kernel for Steam Link target

#  make bg2cd_penguin_mlc_defconfig

Customize kernel configuration (optional)

# make menuconfig

Build kernel

# make

Build modules (optional)

# make modules


An SDK for creating native Steam Link applications






No releases published


No packages published