The Silverstone SG05 “steambox” and HTPC

I’ve long wanted to set up my idea of the trinity of home computer hardware, and I finally got around to doing it a couple of months ago. I previously posted about procuring a small server for NAS/backup purposes and mentioned that I had a new mac laptop for general use, and this “steambox” was the final piece of the puzzle.

I already had an Acer Revo that I was using for XBMC purposes, and after enjoying playing a few lightweight games on it I thought a more powerful (but still small and quiet) box would be a great way to play controller-compatible Steam games in its “Big Picture Mode”, as well as using it for XBMC, Netflix, and AFLTV.

I chose the Silverstone SG05 case because it was the smallest case I could find that would fit a full-sized GPU card. The other components were just whatever I thought were the best bang for buck at the time. I didn’t bother with an optical drive (installed Windows via USB stick) and I took the GPU card out of my old desktop.

There’s not a lot else to say about this except that I’ve been using it for two months, and it works beyond my expectations. It was a bit fiddly to get everything in, but not as bad as I thought it’d be. I shouldn’t need to open it again until I upgrade the video card in the next year or two. Its best feature is that it’s incredibly quiet, I can barely hear a thing from it. Just out of the box it’s quieter than my fan-modified NAS, and it’s much, much quieter than my PS3. This is one of the many reasons I can’t see myself buying a console again. I’m loving playing Steam games from the comfort of my couch.

VGA video with HDMI audio on the Acer Revo

This information is for a specific setup of the Acer AspireRevo 3700 with XBMC, but it shows that there is no hardware limitation and may provide hints for achieving the same result with other models and configurations.


Since 2004 my original Xbox has served as a cheap entertainment centre. Until last week it was running XBMC4Xbox, a branch of XBMC that has been built specifically for the console since the main project began to target newer, beefier hardware. However, the Xbox struggles with most high definition content, so to play such files I was forced to use my PS3 and the excellent PS3 Media Server.

As great as that software is, using the PS3 for any kind of media management after being spoiled my XBMC is a pain. I recently bit the bullet and bought a net-top computer in order to install XBMC and use it to play all of my content. I chose the Revo 3700 because it ticks a number of boxes – particularly its support for VGA-out. Most similar devices have dumped this feature, making them incompatible with my Sony Wega CRT.

XBMC comes in a number of flavours, but a third-party Linux distribution called OpenELEC appealed to me because it is built from scratch specifically for XBMC. It also provides a version compiled for the ION GPU used by the Revo. This means it boots quickly, runs efficiently, and is incredibly easy to install. For most setups this would have been the end of the story, but I had a specific configuration in mind.


Although I require VGA for video, my Yamaha receiver takes HDMI and I was keen to take advantage of the benefits it has over optical audio. This is where I ran into trouble – if the HDMI cable was connected the system would assume that it was being used for video, and would switch off the VGA.

OpenELEC allows the user to edit the X.Org configuration by creating an xorg.conf file in a specific config folder. I found that I could specify that the graphics device (an NVIDIA ION2) should use the CRT display, but when I did that the HDMI would be disabled entirely – the HDMI indicator on my receiver would turn off. It seems that in order to use the HDMI audio, X needs to send HDMI video, too.

What I’ve done is simply enable the NVIDIA feature “TwinView”, and set its orientation option to “clone” mode. This means that the same video is being sent to both the VGA and HDMI outputs. I’ve pasted my xorg.config file below; in most setups just the Device section would suffice but I was required to flesh it out a bit more to accommodate my TV.

# X.Org configuration: /storage/.config/xorg.conf

# define the mode required by the TV
Section "Modes"
  Identifier "modes"
  Modeline   "1280x720" 74.250 1280 1330 1370 1650 720 725 730 750 +hsync +vsync

# define the device and enable cloning
Section "Device"
  Identifier "device"
  Driver     "nvidia"
  Option     "TwinView" "true"
  Option     "TwinViewOrientation" "Clone"

# define a monitor so that we can select the custom modes
Section "Monitor"
  Identifier "monitor"
  UseModes   "modes"

# define the screen and select the mode
Section "Screen"
  Identifier "screen"
  Device     "device"
  Monitor    "monitor"
  SubSection "Display"
    Depth      24
    Modes      "1280x720"


X could not retrieve the TV’s EDID, so I had to define a modeline manually. I found this by connecting my PC to the TV and using PowerStrip to set my desired resolution and calibration. The software then provided the “Modeline” above.

Finally, in order to use the correct sound device I had to set custom values in XBMC’s audio settings. These values were provided by Therio on the OpenELEC forums:

Audio output:       HDMI
Output device:      custom -> plughw:1,7
Passthrough device: custom -> plughw:1,7

Everything is now working perfectly.