Inspired by Roku’s awesome Netflix video download box and impressed with Boxee’s free A/V media center platform, it was merely a matter of time before I’d create the “Boxee Box,” an Ubuntu-powered HTPC that I call my “one box to rule them all.” Here’s how it’s done.
In search of the ideal IP-STB
About a year ago, I began a quest to find — or build — a sub-$500 IP-STB (Internet protocol set-top box) capable of delivering virtually unlimited A/V content to my entertainment center without monthly cable TV fees, service charges (other than an inexpensive Netflix membership), or pay-per-view fees.
Early in my journey, I heard that Roku was readying a $99 device (pictured at right) that would offer the joys of unlimited Netflix video downloads. I quickly procured a unit and published one of its first reviews.
The “Netflix Roku Box” (later renamed “Digital Video Player”) is great at what it does, has been upgraded with a 720p HD mode via an automatic firmware update, and continues to be a favorite enabler of family entertainment.
But its capabilities remain limited. Although the company promises to expand the box’s content options beyond Netflix during Q1 of 2009, let’s face it: the tiny STB has limited resources and probably can’t be pushed too far without a hardware overhaul.
No doubt everyone’s requirements for an IP-STB differ. Here are mine:
- Satisfy my TV’s video needs: SD (required now); 720p (required now); 1080i (desired now); and 1080p (desired later)
- Play content from A/V aggregation sites such as Hulu and YouTube
- Play content from TV network websites such as NBC, CBS, ABC, CNN, Fox, etc.
- Provide a full-featured web browser, complete with plugins for Flash and the most popular multimedia formats
- Capability for software (required) and hardware (desired) add-ons and extensions, to support new format standards and content sources
- Sufficient hardware and software muscle to perform its current — and future — functions effectively
In short, I’m after “One rockin’ box to rule them all!”
Sizing up what’s out there
Despite TiVo’s dominance, the emerging ubiquity of broadband Internet has begun to tilt the playing field away from cable, toward the Internet as a content source. This, in turn, has opened up a window of opportunity for companies wanting to exploit the home entertainment market with various configurations of IP-STBs.
Not surprisingly, the list of candidates is growing fast. Besides Roku’s nifty little Netflix box, examples include:
- Syabas’s Popcorn Hour NMT — this compact, low-power IP-STB includes digital media player, network attached storage, and media server functions within a low-power, compact unit (users can add an internal HDD). It offers access to a broad range of A/V content from both Internet-based sources and from sources on the home LAN (e.g. uPnP, Samba, NFS). Access to a wide array of Internet A/V content is facilitated by a free “Media Service Portal” web service that accompanies the device.
- Vudu’s Vudu Box — this compact IP-STB has a built-in 250GB HDD, a high-quality RF-wireless remote, and a rich set of A/V outputs. It’s pretty much a one-trick pony, though, aimed squarely at rentals and purchases from Vudu’s extensive on-demand movie library. Although Vudu recently launched “Vudu Lab,” through which users can access A/V content from the likes of YouTube, Flickr, and various TV networks, the options available at this time are fairly limited.
- Blockbuster’s video-on-demand service/STB — Blockbuster currently is providing a customized 2Wire Mediapoint Digital Media Player “free” with an advance rental of 25 on-demand movies for $99; thereafter, movies cost $1.99 per viewing. Like the Vudu Box, this IP-STB appears to be a one-trick pony, in this case for instant access to Blockbuster’s pay-per-view movies.
- Myka’s Myka STB — provides a BitTorrent client for TVs, a capability the company dubs “TorrentTV.” Additionally, the company says it plans to add access to other Internet-based A/V content over time. Time will tell.
Each of these STBs has its strengths, but none adequately satisfies my list of requirements.
The Popcorn Hour probably comes the closest, at least in terms of functionality, but I suspect it lacks the hardware resources to meet the performance demands that are likely to be encountered in actual use. The Vudu Box, meanwhile, has beefier resources, but currently lacks the application and content-source breadth and flexibility that I want.
Perhaps more importantly, all the IP-STBs I’ve listed or heard about are locked down from the hardware perspective, so they’re likely to run out of A/V-gas in a couple of years.
Based on this assessment, I decided to roll my own full-featured IP-STB, using a microATX motherboard in an A/V-style enclosure, and powering it with Linux.
Initially, I figured I’d use either MythTV or LinuxMCE as the media center platform for my project. They’re both free, community-developed software projects with large user communities and active discussion forums. I downloaded, installed, and played a bit with each, but neither seemed to be what I was looking for.
Then I discovered Boxee, a free media center platform targeting Linux, Mac OS, AppleTV, and Windows PCs. Boxee, which could be characterized as a fork of the open-source Xbox Media Center project, had just entered an invitational “alpha test” phase. So I wasted no time getting it installed on my Ubuntu-based BlackTower system and trying it out.
Boxee gives you easy access to an extensive array of Internet-based A/V content, such as movies and TV episodes from Comedy Central, YouTube, Hulu, BitTorrent sources, and so on. It also includes functions for enjoying video, music, and pictures located on your PC or elsewhere on your local network. Additionally, it provides interesting social networking functions, like being able to track your friends’ multimedia fancies.
Best of all, Boxee delivers all these features within an attractive and user-friendly user interface (UI) that can be navigated using either a mouse or a handful of keys (left/right, space, esc, enter, etc.). What’s more, Boxee’s UI is clear and simple enough to serve as a “10-foot UI” for an IP-STB.
Thanks to Boxee being an open source project, Boxee’s paid staff and the XMBC project’s volunteer developers are continually fine-tuning the user interface (UI) and media player functions, and incorporating additional Internet-based A/V content sources.
Along these lines, one significant update in the works is the addition of Netflix movie streaming, for use by subscribers to Netflix’s low-cost movie rental service. Unfortunately, dealing with Netflix’s DRM requirements on Linux has taken longer than planned, but I’ve got a Roku Netflix box so I can wait 😉
For those unfamiliar with Boxee, here are a few screenshots illustrating what Boxee’s UI looks like, and what it can do:
(Click each thumbnail for a larger view)
An assortment of Boxee UI screenshots
(Click each thumbnail for a larger view)
Needless to say, I soon fell under Boxee’s spell, and set about building the Linux-based HTPC that I’ve dubbed the “Boxee Box.”
Constructing the Boxee Box
The Boxee Box is essentially a PC running Ubuntu 8.10 as its OS, and with Boxee serving as its primary media center UI. It packs a 2.5GHz Intel dual-core Pentium E5200 processor, 2GB of DDR2 SDRAM, a 1-terabyte SATA hard drive, a slimline CD-RW/DVD-ROM drive, 12 USB ports (2 front, 4 internal, 6 rear), two Firewire ports (1 front, 1 rear), and a serial port.
The Boxee Box looks like a consumer A/V device
The system’s all-important A/V connections include HDMI, DVI-D, and RGB video outputs, along with eight-channel surround sound outputs, of both the analog and digital variety. (Further details on its A/V specs are are here.)
The Boxee Box’s rear-panel I/O
The Boxee Box’s motherboard is an Asus P5Q-EM microATX form-factor (9.6 x 9.6 inches) motherboard. That board is built around Intel’s G45/ICH10R chipset, and supports a variety of socket 775 processors. It provides slots for four DDR2 DIMM RAM modules, and expansion via PCI and PCIe add-on cards.
The Boxee Box’s Asus P5Q-EM motherboard
The system is packaged in a Silverstone Lascala LC19, a sleek, quiet enclosure with the look and feel of consumer A/V equipment. The box measures a trim 15.4 x 13.7 x 2.7 inches (width x depth x height). As you can see from the photo below, the motherboard does a good job filling it up.
Not shown in the photo is a riser for PCI or PCIe expansion, which may come in handy at some point in the future (the enclosure kit included risers and cables for a choice of either type of expansion card).
The enclosure has a small, quiet fan in the rear corner behind the HDD (partially visible in the above photo). Its 120W fanless switching power supply is implemented in two parts; an external block converts 120VAC to 12VDC, while the internal portion (located in the front-right corner of the enclosure) generates the multiple required voltages. A Silverstone-sourced quiet, low-profile CPU fan (45mm tall) enabled me to put the lid on the case.
The parts cost for the system ran about 20 percent higher than I had anticipated. Here’s a list of the approximate costs, which total around $610 (not including sales tax):
- Motherboard: $130
- Processor: $75
- 2GB RAM: $30
- 1TB HDD: $130
- Slimline optical drive: $30
- Enclosure: $190
- Low-profile CPU fan: $25
- Remote control: “tbd”
In defense of my original estimate, I could have used a spare 85GB PATA HDD instead of the 1TB SATA drive. On the other hand, the cost of the remote control isn’t shown (more on that later).
Of course, with different component choices you could raise or lower the parts cost substantially. For example, at the start of the project I toyed with using a sub-$100 (including processor and heat sink) Via miniITX motherboard, but ended up rejecting it due to software compatibility issues and the lack of an HDMI output port.
Incidentally, the TV I’m initially using the Boxee Box with is an aging HD-ready Sony KV-27HS420. It has a maximum video display resolution of 1080i (rather than 1080p), but to my eye that’s completely satisfactory on a 27-inch CRT screen.
Powering up the Boxee Box
After carefully installing all the hardware components in the enclosure, I hooked up a keyboard, mouse, and LCD VGA monitor, held my breath, and applied power to the system.
To my immense disappointment, the CPU fan spun for an instant, and then nothing else happened! With the help of my trusty DVM, I determined that the power supply was immediately going into standby mode. No harm done, other than a nonfunctional Boxee Box 🙁
Was it the motherboard? The power supply? Some sort of incompatibility between the two of them? After removing the power supply from the Boxee Box, attempting to power up two other available motherboards with it, and observing the same problem, I concluded that the internal DC-to-DC converter portion of the power supply (shown at right) was the culprit.
Within a few days, after receiving a replacement DC-to-DC converter board, I was happily watching BIOS POST messages showing up on an LCD monitor attached to the Boxee Box’s RGB port.
Finally I could start making the Boxee Box do something interesting.
Installing and configuring Ubuntu
I won’t provide comprehensive information here regarding the basic installation and configuration of Ubuntu 8.10 on the Boxee Box, since I’ve covered most of what’s involved in two earlier posts. You may want to click on the links provided in these two software installation steps:
- Basically, I used the standard 32-bit Ubuntu 8.10 download as a starting point, and performed most of the configuration steps described in my earlier article about Ubuntu 8.10.
- Once Ubuntu was up, running, and configured, I added wbar, prism, and Google Gadgets, as described in this article.
For reference purposes, here’s a simplified outline of my OS installation and configuration steps up to this point (read the above two articles for instructions and details):
- Download Ubuntu 8.10 ISO, burn CD, boot system, proceed with standard installation (I made the root partition 10GB and used the rest as /home)
- Tweak GNOME appearance settings (theme, desktop background, fonts, panel layout, etc) as desired
- Initial repository configuration (enable all ubuntu repos)
- Perform update (sudo apt-get update; sudo apt-get upgrade)
- Add medibuntu repositories and install medibuntu key (sudo apt-get install medibuntu-keyring; sudo apt-get update)
- Install desired apps that aren’t in the standard Ubuntu install (e.g.: xine-ui msttcorefonts adobe-flashplugin sun-java6-plugin ntfsprogs w32codecs libdvdcss2 build-essential acroread skype realplayer xine-ui amarok amarok-engines mplayer)
- Install prism, google gadgets, and wbar
Now it was time to get Boxee onto the system and make the system behave like a consumer appliance.
Add Boxee and stir
In most cases, this should be a quick and easy process. Here’s what to do:
- Open up the Synaptic Package Manager (Menu > System > Administration > Synaptic Package Manager)
- Go to Settings > Repositories, and on the Third-party Software tab click “Add” and type the following line (assuming you’re using Ubuntu 8.10, aka “intrepid ibex”):
- deb http://apt.boxee.tv intrepid main
- Click the “Add source” button followed by the “Close” button
- Click the “Reload” button at the top of Synaptic
- Type “boxee” in the Quick Search field at the top of Synaptic
- Assuming boxee shows up, click the box to the left of its name, and click “Mark for installation” when the prompt appears
- Finally, click the “Apply” button at the top of Synaptic, and the additional “Apply” button in the resulting confirmation prompt
- Close Synaptic after it finishes installing Boxee
Here’s what the Boxee Box’s desktop looked after I performed all of the above installation and configuration procedures, which included tweaking the GNOME deskop’s setup to my tastes:
And here’s what the Boxee Box’s GNOME menus looked like:
(Click each thumbnail for a larger image)
The Boxee Box desktop’s application menus
(Click each thumbnail for a larger image)
Testing and configuring Boxee
To start configuring and testing Boxee, launch the program (Menu > Sound & Video > Boxee), and provide your Boxee username and password at its login prompt.
Once in Boxee, navigate to its settings area and make any configuration changes that seem appropriate. The program’s quite user-friendly, so I’ll mostly refrain from giving advice on its standard configuration and use.
Since Boxee is meant to be usable without a mouse (via arrow keys, enter, spacebar, Esc, Enter, etc.), it has a setup option for disabling mouse use within its UI. I prefer to disable Boxee’s mouse support, due to some apparent glitches, but you might have better luck with it.
After you’ve checked out the settings and made any desired changes, navigate to Video > Internet, select a channel from which to stream some video (e.g. Comedy Central), and try watching something.
Before you too get carried away with viewing video on Boxee, though, here’s a current Boxee glitch you’ll want to be aware of:
Please NoteCurrently, a number of Boxee’s media streaming functions don’t handle the pause/unpause, stop, fast forward, and rewind functions very well. For example, in Hulu (and some other areas), pressing the pause key (spacebar) causes the video to freeze, but the audio track continues playing; and there’s no way to back out from that condition.
Boxee is well aware of the problem, as evidenced by numerous posts on the Boxee User Forum. The company hastens to remind us that its software currently remains in an “alpha” phase.
Making the Boxee Box act like an appliance
Although I normally avoid this sort of thing for security reasons, I want the Boxee Box to behave like a consumer appliance. So, throwing caution to the wind, I made the following configuration tweaks so the system would work without prompting its users for passwords:
- As the system’s default user, open up a console window (Menu > Accessories > Terminal) and type gconf-editor to run GNOME’s Configuration Editor. Once that tool opens up, select “apps > gnome-power-manager > lock” and from there, uncheck all of the boxes for various lock functions. Then close the console window.
- Open up GNOME’s Login Window Preferences tool (Menu > System > Administration > Login Window). From there, select the “Security” tab. On that tab check the boxes for “Enable automatic login” and “Enable timed login,” use the dropdown menus beside each of those options to select the default user (boxee, in the Boxee Box’s case), and set the “Pause before login” value to the minimum (10 seconds).
One more tweak to GNOME settings can arrange for the Boxee Box to automatically launch Boxee on system startup. Here’s what to do:
- From the GNOME desktop, navigate to Menu > System > Preferences > Sessions
- In the Sessions Preferences dialog, click the “Add”
- For Name, type: Boxee startup
- For Command, type: /opt/boxee/run-boxee-desktop
- Then click the Add button to make the configuration active
From now on, Boxee will automatically take over the desktop as soon as GNOME starts. Later, if desired, this automatic Boxee-loading feature can be disabled by unchecking the box to the left of the Boxee startup session in GNOME’s Sessions Preferences tool.
Following all the above procedures, the Boxee Box was working quite well using my RGB LCD display. All that remained was to move the device to my entertainment center, hook it up to my HD-ready TV, and begin enjoying free, Internet-sourced A/V content galore.
Or so I thought….
Journey to Modeline Hell and back
I cleared a space atop by multimedia cabinet and released the Boxee Box into its new domain. After connecting it to power, the TV’s HDMI port, the home LAN, and a keyboard and mouse, I turned on both the TV and the Boxee Box and watched to see what would happen.
Amazingly enough — considering all the horror stories about getting PCs to pump out video over HDMI — I found myself viewing BIOS POST messages directly on my TV, followed by Ubuntu’s animated system startup screen. Things looked promising.
My joy was short-lived, though, for the moment the startup process reached the stage where the X server launched, the TV’s screen went blank.
To figure out what was wrong, I hooked up an LCD monitor and investigated the situation using xrandr, a utility that reports a computer’s connected displays’ video capabilities and currently-active modes. From xrandr’s output information, I eventually learned that the X server was initializing the “HDMI-2” port connected to the TV in an 800×600 resolution mode, one that evidently doesn’t work on the TV.
Using xrandr, I could read the TV’s available modes and attempt to drive them with video. The only mode that seemed to display reliably on the TV was standard 640×480 VGA. Actually that created a crisp, clear SD (standard definition) digital video display, which wasn’t bad at all.
Over the next few days’ journey to Modeline Hell and back, I learned…
- The X server (xorg) does its best to adapt to what’s connected to the system (which is why you can typically delete xorg.conf and not know the difference). But get this: it senses attached monitors whether they’re turned on or off (there must be sensing lines on the video interface cables that are pulled to a high or low logic-level when a monitor is connected, with or without being powered up).
- On top of what X is doing, GNOME, too, adapts the desktop’s resolution to the monitors it thinks are connected to the system. This function is performed by a plugin that invokes xrandr and uses that tool’s output to initialize the desktop’s resolution.
Since I was having enough trouble getting the Boxee Box to display video over HDMI without having X and GNOME ganging up on me, I did what I could to eliminate these uncontrollable influences.
- Disabling GNOME’s xrandr plugin. To do this, open up a console window, type gconf-editor, navigate to Apps > gnome-settings-daemon > plugins > xrandr, and uncheck the box for “active.”
- Customizing the xorg.conf file to ignore any modes not explicitly defined.
Initially, I only allowed 640×480 to be used. As mentioned above, that worked quite well for watching Internet-sourced SD-quality digital video. But that wasn’t enough — I had to get at least one HD mode working to feel satisfied with phase one of the project.
After persistent googling and experimentation, I managed to come up with one HD modeline — for 720p — that produced a stable display, but unfortunately the picture not lining up properly on the screen. Here’s the modeline I was using:
ModeLine “720p1” 74.2 1280 1390 1430 1650 720 725 730 750 +hsync +vsync
Although this partially-working xorg.conf modeline bolstered my confidence that I’d eventually get the Boxee Box to use the TV in an HD mode, it didn’t actually work well enough do be useful, as much of the desktop was off screen.
So, taking a break from Modeline Hell, I took some time out to enjoy the Boxee Box in its working 640×480 SD mode. I browsed the web, checked my mail on gmail, and watched some TV shows and movie clips on Boxee. Yes, this was going to be fun.
And then, out of the blue, Boxee came to my rescue.
As I was investigating some of Boxee’s setup options, I noticed that it was offering me the option of my custom 720p1 video mode in its Screen settings area (Settings > Appearance > Screen). There I found an option to select various video modes.
I went ahead and selected the 720p1 option, wondering what would happen. Next, I selected the Video Calibration tool that was offered on the same screen, and with it, I was able to adjust the 720p picture to be aligned just right on the TV. The settings that make it look “picture perfect” are:
- Top/left: 67, 37
- Bottom/right: 74, 36
- Pixel ratio: 0.950
I spent a few more minutes enjoying the Boxee Box’s new HD capability, and then exited Boxee. On returning to the GNOME desktop, I noticed that once again the display was partly off-screen, though.
To avoid this problem, I created a simple shell that sets the Boxee Box’s HDMI output to 720p HD mode when I start Boxee, and then restores it to 640×480 SD mode when Boxee closes. After testing the script, which I call hd-boxee, I reconfigured the Boxee launcher icons on the GNOME desktop and lower panel to reference the script instead of using the default boxee-start command.
Here’s the script that does the trick:
xrandr –output HDMI-2 –mode 720p1 –pos 0x0
xrandr –output HDMI-2 –mode 640×480 –pos 0x0
To ensure that the GNOME desktop starts reliably at a resolution of 640×480, I also implemented the following command as one of GNOME’s Startup Programs (Menu > System > Preferences > Sessions):
xrandr –output HDMI-2 –mode 640×480 –pos 0x0
Thanks to Boxee’s video mode sensing and tweaking capability, along with the little hacks I’ve done, the Boxee Box now reliably runs Boxee at 720p HD resolution, and everything else at 640×480 SD resolution.
I’m confident that I’ll eventually come up with modelines for using 720p — and even 1020i — outside of Boxee. In the meantime, however, the Boxee Box is already doing a superb job of delivering tons of new content and capabilities to my TV.
What about the remote control?
You may be wondering about my choice for the Boxee Box’s remote control. So far, I’ve simply used a normal USB keyboard and mouse to control the device. Obviously they need to be replaced with some sort of wireless remote.
Rather than picking from one of the multitude of available media center remotes, I’ve selected Logitech’s cool little diNovo Mini remote keyboard/pointing devices to be the Boxee Box’s remote control.
Logitech’s diNovo Mini will be the Boxee Box’s remote
I really like having the ability to type text from a QWERTY keyboard, albeit a small one, given the wealth of content alternatives — beyond simply searching for, selecting, starting, pausing, and stopping multimedia — available to the Boxee Box. I particularly like the diNovo Mini’s use of Bluetooth as its wireless format, since that eliminates the directionality issues associated with normal remotes.
It hasn’t arrived yet, so I can’t report on how well it works, or whether there are any software compatibility issues (I’ve heard it works in Linux, though).
Now that the Boxee Box is working satisfactorily, I’m looking forward to taking a break from this project to sit back, relax, and enjoy some video on my “one box to rule them all.”
But after a few days of that, I’ll descend back into Modeline Hell where I’ll tackle the illusive task of perfecting the Boxee Box’s 720p mode and coming up with one for 1020i. Wish me luck!
When Boxee announced its new Boxee TV product in October of 2012, it also stated that the original Boxee Box, which had already ceased being manufactured, would soon transition into “maintenance mode.” Additionally, the company promised one last firmware update, which would “update the Flash player and fix some key bugs.” Additional information is available in DeviceGuru’s coverage:
R.I.P. Boxee Box: 2010-2013