Experiments with SteamOS

Valve has released SteamOS into the wild, and invited us to play.
And so I have, well outside the recommended parameters of their system requirements… because where’s the fun otherwise?
For reference: http://store.steampowered.com/steamos/buildyourown

My SteamOS test machine is an old Intel Core2Duo-based Mac Mini with an nVidia Geforce 9400 GPU. Not really a beefy gaming box, but adequate for simple games and playing videos with hardware acclerated decoding.
I started with the custom installer from the link above, and the install went surprisingly smoothly following their directions – until it came time for the recovery partition steps. Those flat out didn’t work.
Everything else seemed to though, so I hopped into the system and took it for a spin.

No sound. Nada. Checked my inputs, and nope. (I realize later that this could be due to the volume in alsa being set to 0 by default, which is stoooopid. Too late to check now!)

That being a dealbreaker, I decided to try with something slightly more up-to-date than the Debian Wheezy distribution that SteamOS is based on, and opted to install Xubuntu 13.10 32bit. Initial install, I set up a “gameroom” user in the OS to log in automatically when the system boots. I also chose 32bit since the machine doesn’t have more than 4GB of RAM, and some packages used for Wine and such which I may use later just install much more smoothly with a 32bit system still.
To install the SteamOS portions, I mostly followed this post in the steamcommunity forums, with the exception of installing the SteamOS kernel (the linux-image-686 package install). I wanted to maintain the kernel included with Xubuntu that ensured I have complete support for the hardware in the Mac Mini.
I did enable the apt pinning by creating a file in /etc/apt/preferences.d/ named “steamos” with the lines listed in the article. This ensures that any older or backported packages in the SteamOS repos don’t try to replace packages in Xubuntu, which may cause conflict with other software.
I also ensured I had the latest listed nVidia driver installed via the proprietary driver manager in Xubuntu – the “Hardware Drivers” panel.

After running all the apt-get lines to install and update everything, I ran Steam to set up and finalize my login as directed – pretty standard Steam setup procedure.
Now, since I opted to have the user account log in automatically, I don’t have a session chooser with which to select SteamOS on login.
This is remedied by manually selecting the default user session:

sudo /usr/lib/lightdm/lightdm-set-defaults -s steamos

This resets the default session to SteamOS, and will launch the Steam client in the big picture mode when the system starts.
If this is all you’re looking to do, then you’re done! I do a bit more with the system, like launching XBMC and such, so I’ll continue on.

XBMC setup:
This gets a little tricky.
First off, since the steamos login session just starts Steam, there’s no underlying desktop to drop to in order to install packages and such. In this case, the virtual terminal sessions come in quite handy, ctrl+alt+1 (1 through 6, actually) will drop you to a commandline login session.
Log in with the user account you created, and then run these commands:

sudo add-apt-repository ppa:team-xbmc/ppa
sudo apt-get update
sudo apt-get install xbmc

These will add the XBMC repository, refresh the package list, and install XBMC and its dependencies.
Once that’s done, there’s one more little trick you have to do in order to make XBMC launchable.
XBMC checks to make sure you have OpenGL acceleration when it starts. It does this by running

glxinfo | grep “Direct Rendering”

Unfortunately, in this situation, glxinfo hangs and chews up an entire CPU core, causing XBMC to never start.

You’ll need to sudo to a root shell, and edit /usr/bin/xbmc. Paste this line in the top of the script underneath the LIBDIR= bit, like so:


This will make XBMC skip the accelerated GL test that may hang when starting XBMC from the Steam UI.

The next step is now adding XBMC to the installed “games” list in Steam. This cannot (as yet, or maybe ever) be accomplished from the pretty Big Picture mode, so you have to log in to a desktop session in order to do this.
As before, run

sudo /usr/lib/lightdm/lightdm-set-defaults -s xubuntu  (or your desktop session of choice)
sudo service lightdm restart

This will re-set your login session to the Xubuntu desktop, and restart the session manager to allow you to access it.
Once done, launch Steam, go to the Library menu and choose the “add a non-Steam game or application” selection. It will provide you with a list of currently installed applications, scroll toward the bottom of the list and choose XBMC.
Once done, open up a terminal and run:

sudo /usr/lib/lightdm/lightdm-set-defaults -s steamos
sudo service lightdm restart

That will return you to the SteamOS interface, and you should see XBMC listed in your installed library.

This procedure should work for all non-Steam games and apps you’d like to run, so if there are any DRM-free games from Humble Bundles, or open-source games from standard Ubuntu repositories that you’d like Steam to be able to launch, that’s how you do it.

I hope this helps some, it’s been a pretty educational experience for me!
But enough learning, on to the fun!

1 Comment

  1. james (Post author)

    One thing I’ve noticed, and I’m not sure why this happens:
    Some videos will play in XBMC but not show video, just the XBMC screen with a grey background – while others play fine.
    I’m seeing this more in relatively recent encodes, while older ones seem to play fine.
    It looks to be an issue with the hardware decoding. Steam running in the background may be interfering, but I have nothing to tie that together other than the fact that I’m launching XBMC from the SteamOS interface.
    Setting the video decoding method to “Software” in the XBMC settings alleviates the issue, at the expense of pushing all the video decoding efforts to the CPU.
    Not the best workaround, but it works for now.


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.