• Stars
    star
    460
  • Rank 95,202 (Top 2 %)
  • Language
  • Created over 6 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SDK for the Valve Steam Link

This is the SDK for the Valve Steam Link

Hardware

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 1 GB of usable flash storage.

Software

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.14.1
  • SDL 2.0

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

Repository Contents

examples

Examples to demonstrate how to build applications using the SDK. Each application directory has a build_steamlink.sh script to build and package the example.

Native app icons should be 116x116, and will be scaled to that size if needed.

external

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

kernel

Steam Link linux kernel source code

rootfs

Steam Link root filesystem

Debug symbols for binaries in the latest build are available from: http://media.steampowered.com/steamlink/steamlink-sdk-symbols.tar.xz

toolchain

GCC toolchain for Steam Link

setenv.sh

Script to configure build environment

Building

Steam Link applications are built using this SDK on Linux.

To set up the build environment, source the top level setenv.sh.

# source setenv.sh

This is done inside the build script for each example, as needed.

Deploying

Put the files in a folder with the app name on a FAT32 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 FAT32 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.

Debugging

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

Preparation

First, configure environment for SDK:

# source setenv.sh

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 [email protected]:/mnt/scratch

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/create_gdbinit.sh example 10.1.211.126:8080

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) 7.7.0.20140425-cvs
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
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:
<http://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
0xb6f6ba00 in _start () from /valve/marvell/sdk/rootfs/lib/ld-linux-armhf.so.3
(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
Continuing.
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 warranty 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

More Repositories

1

Proton

Compatibility tool for Steam Play based on Wine and additional components
C++
23,893
star
2

GameNetworkingSockets

Reliable & unreliable messages over UDP. Robust message fragmentation & reassembly. P2P networking / NAT traversal. Encryption.
C++
7,851
star
3

openvr

OpenVR SDK
C++
6,085
star
4

steam-for-linux

Issue tracking for the Steam for Linux beta client
4,120
star
5

source-sdk-2013

The 2013 edition of the Source SDK
C++
3,657
star
6

halflife

Half-Life 1 engine based games
C++
3,016
star
7

steam-audio

Steam Audio
C++
2,140
star
8

ToGL

Direct3D to OpenGL abstraction layer
C++
2,021
star
9

SteamOS

SteamOS community tracker
1,582
star
10

Dota2-Gameplay

Public Bug Tracker for Dota2
1,475
star
11

vogl

OpenGL capture / playback debugger.
C++
1,417
star
12

wine

Wine with a bit of extra spice
C
1,227
star
13

steam-runtime

A runtime environment for Steam applications
Shell
1,153
star
14

steamvr_unity_plugin

SteamVR Unity Plugin - Documentation at: https://valvesoftware.github.io/steamvr_unity_plugin/
C#
1,033
star
15

SteamVR-for-Linux

Issue tracker for the Linux port of SteamVR
924
star
16

csgo-osx-linux

Counter-Strike: Global Offensive
755
star
17

Source-1-Games

Source 1 based games such as TF2 and Counter-Strike: Source
612
star
18

Fossilize

A serialization format for various persistent Vulkan object types.
C++
542
star
19

counter-strike

CS:GO
JavaScript
495
star
20

IndexHardware

486
star
21

csgo-demoinfo

CS:GO demo parsing tool
C++
474
star
22

Dota-2

Tracker for issues specific to Linux and Mac in the Reborn client. If you have a general issue or non-system-specific feature request please go to dev.dota2.com
454
star
23

steamos_kernel

SteamOS kernel branches
C
395
star
24

dxvk

dxvk tree containing branches used by Proton
C++
368
star
25

unity-xr-plugin

OpenVR plugin for Unity's XR API
C#
309
star
26

ArtifactDeckCode

Reference code and documentation for Artifact deck codes
PHP
276
star
27

the_lab_renderer

Valveโ€™s VR renderer used in The Lab (Valveโ€™s VR launch title for the HTC Vive).
C#
274
star
28

voglperf

Benchmarking tool for Linux OpenGL games. Spews frame information, logs frametimes.
C
199
star
29

steamvr_unreal_plugin

SteamVR Input Unreal Plugin - Documentation at: https://github.com/ValveSoftware/steamvr_unreal_plugin/wiki Sample project (UE4.15-4.23): https://github.com/ValveSoftware/steamvr_unreal_plugin/wiki/sample/SteamVRInputPlugin.zip Sample Project (UE.424+): https://github.com/ValveSoftware/steamvr_unreal_plugin/wiki/sample/SteamVRInputPlugin_UEIntegrated.7z
C++
168
star
30

Moondust

C#
160
star
31

steamos_mesa

Patched branches of Mesa used in SteamOS
C
155
star
32

vkd3d

C
144
star
33

portal2

Issues for the Linux port of Portal 2
138
star
34

steamworks-vr-api

Source for the Steamworks VR API
135
star
35

steam-devices

List of devices Steam and SteamVR will want read/write permissions on, to help downstream distributions create udev rules/etc
133
star
36

steamos-compositor

SteamOS session compositing window manager
C
120
star
37

driver_hydra

OpenVR Driver for Razer Hydra using Sixense SDK
C++
100
star
38

Dota-2-Vulkan

Tracker for issues specific to the Vulkan version of Dota 2 on Windows, Linux, and macOS
95
star
39

virtual_display

An example OpenVR driver for demonstrating the IVRVirtualDisplay interface.
C++
82
star
40

openxr_engine_plugins

Contains Valve-provided plugins for using OpenXR extensions with various game engines
Mathematica
47
star
41

linux

SteamOS fork of the Debian kernel packaging repository at https://anonscm.debian.org/git/kernel/linux.git/
45
star
42

eigen

Fork of Eigen release version 3.4. Adds ability to use alternate threading systems from Open MP.
C++
23
star
43

Dota-Underlords

Tracker for issues specific to the Linux and macOS client of Dota Underlords
22
star
44

OpenXR-Canonical-Pose-Tool

A tool to help OpenXR runtime developers match their poses to other runtimes' poses.
C
10
star
45

VR-Community-Bugs

Repository for VR Bugs reported through tickets and community outreach
9
star