Hey today I’d like to talk about the setup of my media center at home. Maybe you can take some inspiration from my setup or you can show me the path to wisdom and explain why your setup is better than mine.
This article is about organisation of your media files and making them universally available to be played on all devices of your choosing. So it’s not about Speakers, AV-Receivers or 5.1 etc.
In my opinion there are three facts that are important for a media center:
- Storage – A place where all your media files are available.
- A playback/streaming unit – Something which has access to the media files, downloads additional information about them (metadata) and makes them accessible for a smart tv, an AV-Receiver or any other device.
- Online availability – A solution to make your playing unit or your media files available from outside of your home network.
For storing your media files a NAS (Network Attached Storage) is easily the best solution. I for one got a NAS from Zyxel to do that job for me. In my opinion this has the best price-performance ratio and furthermore has a really great open source community, which made a lot of software available for it. For instructions and more information about it I would suggest you pay a visit to their forum and this website (warning German). I got the NSA-325v2 (hehe NSA) version of their NAS. If you are someone who does not need additional software on your NAS like me though, there are cheaper solutions available for network storage. The needed storage space plays a heavy role in choosing the right solution for you. The NSA-325v2 is a 2 bay NAS of which each can hold a hard disk with up to 4 TB of space. That’s enough for me but maybe not enough if you want to save all your BluRays in 1080p for whatever reason.
Now that we’ve made it clear where your media files sit and wait we need something to download the extra meta data and play the files to an HDMI output. That sounds like a job for XBMC (XBox Media Center). Originally developed for the xbox this piece of software now runs on nearly every device known to mankind. After setting up your file system and the first scan of your files it allows you to play the files and serves them via UPnP. So they can be played on your usual smart tv if it’s in the same network. I personally use the interface of the XBMC mostly for the additional information as well as the amount of plugins which are available for XBMC.
XBMC in my setup runs on a low-priced 35 € raspberry pi. And it runs damn smoothly for an affordable piece of hardware like that. There are currently 2 operating systems which come with xbmc. OpenELEC and Raspbmc. I prefer to use Raspbmc but that’s because it’s based on raspbian (Debian for the pi) and therefore it makes it easy to install additional software.
Sidenote: If you don’t need the XBMC, there are many NAS solutions which come with a built-in UPnP Server (the NSA-325v2 does) and therefore you could play your media files directly on your smart tv. It’s possible but you would miss out on some nice features that come with XBMC like trakt.tv syncing and twitch.tv live streaming.
Now we are able to store and play our media files and it even works on all devices in your local network thanks to UPnP. But what if you want to listen to your stored music on the go, or what if we want to show our friend the latest episode of “Adventure Time” at his place ?
That’s where it gets a little tricky. Because of the way UPnP is designed it’s not possible to “just” use a VPN and connect through that. Of course you could connect to you home network via VPN and copy the file you want to play to your device over the internet. But that wouldn’t really be comfortable would it? And it would definitely not be “on-demand”. If I’m out and want to listen to that one artist right now and don’t have his tracks on my mobile phone, I certainly don’t want to connect to the VPN first and copy the files I want to listen to them after it’s done copying.
As a solution to this I discovered BubbleUPnP. It is used as a UPnP proxy over HTTP and serves a remote UPnP-Server as a local one. So it’s possible to use a BubbleUPnP-Server at home to stream my files to any device that has a BubbleUPnP-Client (iOS and Android) installed. For every other device your client can act as a proxy. So your BubbleUPnP-Client acts as another UPnP-Server but it can only offer the media files that are available on the remote UPnP-Server. So I always have my music on the go and I can stream the latest episode of Adventure Time to the smart tv at my friend’s place.
Making the decision where I should install the server software was pretty easy, as it needs Java to run. My NAS is already quite busy doing stuff and I definitely didn’t want to put the “burden” of Java on top of that. But the raspberry on the other hand was perfect for this task as it’s quite bored while I’m not at home watching stuff, as it only serves the XBMC. How to install Java and the BubbleUPnP-Server software on a raspberry pi is explained pretty nicely over at this blog. A word of caution though, the pi is not capable of doing the encoding offered by the BubbleUPnP-Server software to save bandwidth. The little raspberry just can’t handle that much encoding on the go. Live streaming of original files is possible though and runs smoothly.
That’s all I have to say about my setup for now, if you have any questions, suggestions or ideas for improvement that I should consider, please leave a comment down below. All input is appreciated!