I recently stumbled upon a new hobby that has been quite an adventure for me. One that requires both technical skills, as well as, creativity to solve problems. You see I have a fascination with system integration, and enjoy finding ways to make systems where you can not tell there is any integration at all. I hope to make a series of articles describing my adventure that will hopefully create a path that someone could use to help them along the path.
The first step I had to take was to jot down the requirements. The first thing I had to think about is what I wanted to accomplish with this system, and what kind of functionality I wanted to get out of the system. Then I looked at what resources I had lying around the house. I have three TVs lying around the house. One TV sits in the bedroom, living room and the kitchen. I knew that in the living room I wanted the full experience. I want it to play live tv, PVR, streamed internet tv, Blu-ray, and some gaming. It also has to support HDMI connections and be ready for a 7.1 surrond sound. For the kitchen and bedroom I would be happy with just live tv and streaming. I also wanted to make sure everything look cool and was consistent across different TVs. I also want to make sure that all the systems work together seamlessly. That when I change programs, I don’t need to change input device. I want to reuse as much as I can. I have an old computer I built back in middle school which has a dated hardware, and couple of laptops. So I figured I would need to pull a lot of different elements from different sources.
Requirements of the System
- Live TV
- Personal video recording
- Ability to stream from Amazon Instant Video, Hulu, and Netflix
- Playing local files (movies, music, images, etc…)
- Ability to play Blu-ray
- Visually appealing
- Synchronization across many TVs and sound systems
- Needs to be intuitive with multiple input devices
- The system should minimize the need to change input devices
- Gaming should ideally be done with a controller
- Has to be high-definition and surround sound capable
Now that I know what I wanted and what I had, It is now time to figure out how I wanted to run all of this. In my early experiments I used the laptop to get a feel for all the software. It was quite convenient since they are quite portable and have built-in wireless, but it wouldn’t accomplish what i had in mind. I decided I would have to build my own HTPC for the living room. Since this is not a full on gaming rig, and I am only planning on playing games that play well with a controller, it only needs to be a solid medium range build. I have also chosen to use Windows 7 as the operating system. This decision is influenced by my desire for gaming and easy Blu-ray.
Now the kitchen and bedroom I would need very little hardware and to have a low profile. Now recently, there has been a release of these Raspberry PIs. These are small computers that cost approximately $50-$60 when all the additions are purchased, and are quite capable to run the software and the videos that I want in the bedroom and the kitchen. On this system I was planning to run the Raspberry Pi flavor of XBMC running on Ubuntu. It is cheaper, easier to remotely manage, and keeps the cost down on these slim featured nodes. Fits the requirements and keeps costs low.
Now there is one final component. A server that helps synchronize everything. The servers duty is to combine all the sources of media and present them to the end point nodes and keep all the information. This server will be expected to be running constantly. Therefore, it is necessary that the server be designed with power consumption in mind. The operating system I have in mind is again Linux because it plays friendlier with all the different operating systems involved. It also keeps the overall cost down and is easier to manage via a secure shell connection.
In terms of software I like to use XBMC. It is quite versatile. It can play all kinds of file based and streamed movies and tv shows. The newest release can play live tv and PVR. Finally, it can run on just about any operating system and platform. There are others, but I like the degree of control and agnostic it is.
So this design centralizes everything in a server then gives you two flavors of hardware to allow you to control costs vs. functionality depending on the expected role. Future articles will go into further detail about each component, and how I built it.