For a while now, I’ve been using DLNA to push video to my TV from my computer. The biggest problem I’ve had with that is that is my Sony TV is very picky about the video format. I’ve been stuck experimenting with options to pass to ffmpeg to convert the video from whatever format the file is in and the format that the TV likes, MPEG2. Among the many problems include poor resolution, out of sync audio, and no audio at all. I had been using MiniDLNA on my Debian box as the server for the content. It’s pretty simplistic. It’s little more than a file server that implements the DLNA protocol. I found another DLNA server, Serviio, that will do some conversion on the fly. This worked better. No need to convert video formats or worry if the TV would not even see the file. The biggest problem occurs whenever I pause a video. When I resume, the TV thinks the DLNA server has gone away. So basically, no pause, fast forward, or rewind. I’d consider that a show stopper. Several times, I have resorted to connecting my laptop to the TV using HDMI and playing the videos that way.
That brought a thought to my mind. Obviously, Linux has no problem playing the videos. Maybe I can build a cheap set-top box, throw Linux on it, and connect it to the TV. I tried a project like this many years ago. I had gotten a mini-ITX form factor computer from a friend. It was basically a 5″ x 5″ x 12″ enclosure. It was non-functional, so my friend just gave it to me. It wasn’t too difficult to determine that the problem was a few bad capacitors on the motherboard. Replacing them was fairly simple and I had a functional system to throw Linux and MythTV on. This worked fairly well, until the motherboard died again. The biggest downside was that the RCA connection left the user interface barely readable, but the video looked fine.
So, back to present day, I’m looking for something that will talk to the TV over HDMI and won’t break the bank. Enter the Raspberry Pi.It’s a $35 single board computer with video and sound both output via HDMI. All I need is an old cell phone charger for power, HDMI cable, SD card, and a USB WiFi adapter. I already had all of that except for the WiFi adapter. I ordered a Raspberry Pi and a “WiPi” USB WiFi adapter for just over $50 with shipping and tax.
On the software side, I found RaspBMC. It’s a Raspbian based Linux distribution (itself derived from Debian) set up expressly for running XBMC (a Linux media player). Installation was pretty simple. Just have to execute the provided python script to load the bootstrap program to the SD card, then plug it into the Raspberry Pi and boot from it. From there, it downloads and configured itself. The entire process was very painless.
The final hurtle was to figure out a way to control it. My first plan was to use Synergy. It allows you to use the keyboard and mouse of one computer on another computer over the network. Works on Windows, Mac and Linux under X. I got the server installed on my laptop and the client installed on the Raspberry Pi. Unfortunately, I discovered that XBMC doesn’t run under X. I did find that there is a remote control app on Android and IOS. It works over the network connection, so I installed it on my phone. After pointing it at the RaspBMC install, it worked beautifully with almost no latency. Maybe a future project will be to build a hardware remote for it.