I was asked to give a run down of the XBMC computer I am currently using. It was assembled from parts and is running openELEC.
The case looks good.
My XBMC PC is capable of:
- Playing 1080i video with no stutter or buffering. (Both local files and files from a Windows file server)
- Playing 1080i streams of local cable TV channels.
- Recoding those streams DVR style.
- Playing 720p streams of premium cable TV channels via USTVNOW. (The 720p limit is from USTVNOW, not the computer)
- Using my surround sound system for 5.1 sound.
- Playing older video games from Super Nintendo, NES, Game Boy, Genesis, ect.
- Throwing some colors on the wall with a Light Pack.
Total Cost: $638.26
Not cheap. You get what you pay for.
Some notes on the hardware:
My previous HTPC was an ASROCK Ion 330. It was prone to overheating. A lot of this was due to the small case size. The CPU fan lay under a spinning hard drive with a 1/4 inch gap. The fan blew hot air onto a hard drive producing its own heat. This was then blown out of the case by a 25mm fan. Because of the cramped quarters I didn’t have any other options for larger fans or moving parts. While the PC never got hot enough to shutdown it did get hot enough to make me worry about.
The case on this XBMC PC is roomy. The fan from the CPU isn’t constricted. It has a 65mm case fan with room for a second. I’m using an SSD drive as they produce little to no heat. The SSD has the added benefit of being silent. The PC as a whole is quiet enough that you cannot hear it without putting your ear near the case. Even under a load it doesn’t get hot enough to spin the fans up. Idle temperature is around 40C, loaded is around 55C.
The CPU has an integrated GPU. It comes with a heat sink and fan in the box. The CPU is overkill for playing videos. I went big with the CPU because someday I plan on emulating N64 and Playstation games. Possibly even Game Cube.
The HDHomeRun is for watching cable TV. If that’s not applicable to you, then no need to buy one.
The lighting arrangement can be had in a DIY kit for $50.
Putting it all together gets you this:
My camera is unable to capture the lighting effect. Here is a video from the vendor showing how it looks.
from adafruit industries
I was having trouble keeping hdhomerun_recorder always running under openELEC. Sometimes it wouldn’t start at boot, or sometimes it would randomly stop running, causing my shows not to be recorded. Below is a short Python script I came up with. It runs under CRON every five minutes. If hdhomerun_recorder isn’t running, it starts it. I have not had a problem since.
find = 'hdhomerun_recorder'
start = '/storage/etc/hdhomerun_recorder/start.sh &'
f = os.popen('ps ax | grep -v grep | grep "' + find + '"')
out = f.read()
if not find in out:
print 'Running: ' + start
What you see here is the act of a desperate man who got sick of trying to make XBMC’s PVR support work. I tried for several days to get tvheadend to work with my HDHomeRun. In the end I gave up and went my way. What you see may be a mess to setup but it works very well for me.
When all setup XBMC will have a directory full or playlist files representing your channels/streams. The playlist files will be named after the channel they represent along with the current and next show that is going to play.
Here is a video to show what I mean:
Quick note on my setup; I have an HDHomeRun receiving QAM channels from Cox cable. These channels come in as by product of the Internet service I receive. Via Cox and the HDHomeRun I receive local network stations. I also have an USTVNOW account for basic cable channels. Why do I use USTVNOW instead of getting basic cable from Cox? USTVNOW is about $10 a month cheaper and receives more channels.
Installation is a crazy mess. I didn’t expect to release this but I figured at the least the USTVNOW streams will be useful to someone.
I did all of this under openElec. XBMCbuntu works. Other Linux based installs should work. Windows will probably work if you install Python and something similar to CRON.
For USTV: Just make sure you have the USTVNOW plugin working. XBMC HUB Article About It
For HD Home Run: Make sure its connected to your network and can view some channels. Have hdhomerun_config working. (Part of libhdhomerun: Download It
- Download this repo. (Direct link to zip)
- Unzip it and copy everything into /storage/dean. If you’re the picky sort this is where you begin to change pathnames. For narcissistic reasons I’m going to assume you’ve put everything in /storage/dean.
- Make a directory: /storage/Streams. This is where all your stream files will go. Add that directory as video source in XBMC.
- We’re going to add a script to the USTVNOW addon to download a list of channels and turn them into stream files (.strm). We’re going to place this in CRON so it updates itself.
- Edit /storage/dean/ustvnow_stream_grabber.py and change the email and password variables to your USTVNOW credentials.
- Move /storage/dean/ustvnow_stream_grabber.py to the directory your USTVNOW addon resides in. For me its /storage/.xbmc/addons/ustvnow/
- Make sure it works by running /storage/dean/ustvnow.sh. After that you should see a bunch of stream files in /storage/Streams. Each file should represent one of your USTVNOW channels.
- Add a cron job so that /storage/dean/ustvnow.sh is ran every thirty minutes. Example in /storage/dean/crontab.
Go to your stream video source in XBMC. You should be able to play each file in there.
- We’re going to build stream (.strm) files for each channel your HDHomeRun receives.
- On a Windows box open up HDHomeRun Setup and look at the tab that shows all of your channels, Digital Cable for me.
- Write down the channel numbers and what channel they represent. (FOX, ABC, ect)
- Two options now. Build the stream files by hand or use HDHomeRun Stream Builder to do it for you.
- If you’re doing it by hand and pretending we’re working on the file for CBS in Fort Smith, AR:
- Create a file named KFSMDT.strm
- Open the file up and add this: hdhomerun://103D1F0E-0/tuner0?channel=auto:92&program=1
- Notice a few things you’ll need to change.
- 103D1F0E-0 is the ID of my tuner. You’ll need to change it to your tuner’s ID.
- tuner0 is the first tuner on my HDHomeRun. The second tuner is tuner1. I watch TV on tuner0. I record TV on tuner1.
- channel=auto:92&program=1 represents CH92 – 1 from HDHomeRun Setup. Change the 92 and the 1 as appropriate for your channels.
- Save the file and put it in /storage/dean/Streams-default
- Repeat this for every channel your HDHomeRun receives.
- HDHomeRun Stream Builder will automate all of this for you, but it is a PITA to setup. (As if all the above hasn’t been)
- If you don’t care about having the currently playing show in the file name, copy the all the .strm file you made into /storage/Streams and call it done. Just like the USTVNOW streams they should play as if they were any other video file.
Getting the currently playing show to be in the HDHomeRun stream’s file name
- Theory behind this is that we’re going to use mc2xml to download TV scheduling information, parse it, and rename our stream files using the info.
- Get mc2xml working for your zip code. There is a copy in /storage/dean/mc2xml-local
- For me the command line is ./mc2xml -c us -g 72714 -d 72 -f (72714 is my zip code)
- Have cron run /storage/dean/update_xmltv.sh once a day. Example in /storage/dean/crontab
- Have cron run /storage/dean/update_streams.sh every thirty minutes. Example in /storage/dean/crontab
- Now your stream files in /storage/Streams should be all renamed with the current show playing.