Setting up a Zotac ZBOX with XBMC as a home theater PC

I have wanted a Home theater
for awhile to play
movies, music, Hulu, and more through my TV. I
thought briefly about buying a prebuilt device (like a
Roku), but I decided to hack one together myself. My main motivation was flexibility and the fact that I like to
tinker. Furthermore, I wanted a device with a hard drive that I could
load up with files and play directly to a TV.

I asked around for recommendations, and several of my coworkers
recommended Zotac. After looking through their
options, I decided on a Zotac ZBOX

(here it is on Amazon).

Setting up Ubuntu

I decided to run Ubuntu 11.10 Oneiric
for the operating system.
The Zotac ZBOX has no CD drive, so I downloaded the Ubuntu ISO from the
website, and I used UNetbootin to
make a bootable USB drive.

I plugged an HDMI cable from the Zotac into my TV, and I plugged a wired
USB keyboard and mouse in the Zotac. I inserted the USB drive and booted
it up. It automatically booted from the drive, and I selected Install.

Once the installation was finished, I had to go to Settings -> Sound
and choose the HDMI output. Then, sound correctly played through my TV.

Setting up XMBC

There is a lot of software for home theater PCs. I chose
XBMC since it seems very polished and has a lot of plugins for different video sources (such as
Youtube). It’s also optimized for a remote instead of requiring a full keyboard.

I had to add an extra apt repository in order to install the latest
version of XMBC (11.0 beta1). Here are the commands I ran:

sudo add-apt-repository ppa:nathan-renniewaldock/xbmc-stable  
sudo apt-get update  
sudo apt-get install xbmc  

Then, I launched XBMC from Ubuntu. I was greeted with a screen that
looked like:

{.alignnone .size-medium .wp-image-22442 width="300" height="179"}

I went to Settings and changed my region to where I live. I also told
XBMC to update my library on start. Then, I went to Weather and entered
my zip code to get local weather. Next I went to Videos -> Add ons
and installed a bunch of video add ons (such as Youtube, HGTV, etc).

At this point, I had to manually run XBMC whenever I restarted the
computer. There are many strategies to boot directly into XBMC. I
decided to just add XBMC as a Startup Item in Ubuntu. I also allowed
Ubuntu to boot without a password. So Ubuntu boots up and then runs XBMC
when it’s finished. If I need to go back to Ubuntu, I can just exit from

Uploading media

XMBC uses filenames to figure out which movie or TV show a file
represents. For example, with default settings, episodes of a TV show
need to be named in one of the following formats:


These files should be in a folder with the name of the show. The full
set of instructions can be found on the XBMC website at TV Shows (Video

I created a Movies directory and a TV Shows directory under
/home/paul/Videos and uploaded my media. Then, I added these directories to XMBC and set the content type to Movies and TV Shows respectively
(see Media Sources).

Finally, I quit XBMC and restarted it. It scanned my directories and
added the movies and TV shows to the library.


Unfortunately, there are no officially supported Hulu plugins for XBMC.
I managed to get an unoffical plugin working with some extra effort
using Bluecop’s beta video plugin

I downloaded the zip file from the site above and saved it to the Zotac.
Then, in XBMC, I went to Settings -> Add ons and chose to install add
ons from a zip file. At this point, the Hulu plugin appeared in the list
of available plugins to install. I installed the plugin, but it still
didn’t work.

By looking in the XBMC log (~/.xbmc/temp/xbmc.log), I discovered that
Hulu requires a newer version of
rtmpdump than Ubuntu ships with.

I built the latest rtmpdump from source with the following commands:

sudo apt-get install libssl-dev  
git clone git://  
cd rtmpdump  
make sys=posix  
cp librtmp/ /usr/lib/i386-linux-gnu/  

The last step copies the new librtmp on top of the existing one, which
isn’t great. Unfortunately, XBMC runs with a specified library path, so
I couldn’t find an easy way to add a different directory to the path.

Now, Hulu works. Unfortunately, I have to browse for videos to play. If
I search for a video, and then play it, I get the following error in the

ERROR: Error Type:  
ERROR: Error Contents: _Info instance has no attribute 'videoid'  
ERROR: Traceback (most recent call last):  
                      File "/home/paul/.xbmc/addons/", line 56, in 
                        modes ( )
                      File "/home/paul/.xbmc/addons/", line 36, in modes
                      File "/home/paul/.xbmc/addons/", line 148, in __init__
                      File "/home/paul/.xbmc/addons/", line 420, in queueAD
                        u += '&videoid="'+urllib.quote_plus(common.args.videoid)+'"'
                    AttributeError: _Info instance has no attribute 'videoid'

Browsing works just fine, though, so I only browse for videos.

Next Steps

I’m still using a wired USB keyboard and mouse, but I’m planning to get
a home theater friendly wireless keyboard/mouse combo. Something along
the lines of a Rii Mini Wireless

There are also hundreds of XBMC plugins I haven’t checked out yet, as
well as other ways to customize XBMC.