If you look back at some my recent posts, you’ll see that I' had pretty good success with a DIY mini-PC build running Windows 7. This thing was running pretty close to perfect. There were a few minor quirks and two slightly more bothersome problems. Among the minor issue was the fact that it wouldn’t reliably suspend. I’d click “power” on my Harmony One remote to shut everything down and the PC would miss the the message. It wasn’t too big a deal as I could either go to the device in my remote, find the “power toggle” button and click it or just let it be and it would eventually sleep on its own after a period of inactivity. Still… a little annoying. The first more significant problem was that very occasionally (once a week at most), when it would come out of sleep, it would not activate the display correctly. It would just flash white to black over and over again. All I could do at that point would be a hard reset and once or twice, even the hard reset wouldn’t fix it. The other troubling problem was that after a couple of days of use and several sleep/wake cycles, the video would start to… well, I’m not sure how to describe it. It wasn’t stuttering exactly. Maybe “drop frames” would be the right description? I don’t know, but as minor as it may have seemed to most folks, the fact that I could reboot and alleviate the issue proved that it was definitely a real issue.
So about a week ago, I saw a couple of press releases that Openelec had released 1.0 of it’s media center product. Openelec is simply a variation of XBMC for Linux. It’s a slim (VERY slim) distribution of Linux that boots directly to XBMC. I had heard about it but hadn’t given it try. I had tried XBMC Live which was a slimed down Ubuntu build with XBMC on it, but hadn’t had much luck with it on my DIY PC. Just like XBMC Live, Openelec could run from a USB stick, so I thought, “What the heck, I’ll give it a shot.” To my surprise it worked pretty well right out of the gate. Video worked right off and with a few small tweaks I had learned when I had tried Linux on my mini-PC, audio over HDMI for the video also worked.
So for a day or two I played with it adding in the tweaks I had learned over time and learning a few more to get the remote and other things working. Yesterday, however, all of the sudden, my mini-PC starting having issues. It would be fine as long as I didn’t turn it off. Once I did, though, when I tried to turn it back on, it would start for about 8 seconds, then shut down and restart itself. Durign these cycles, it would never reach even the bios flash screen. Arrgggg!!! The first two times this happened, I unplugged the system and then left it alone for a few hours. When I came back, I was able to plug it back in and stat it successfully. The third time this occurred though, I threw my hands up, frustrated. I just want a small XBMC client that works!
I had been curious about the prebuilt tiny PCs from the likes of Zotac, Jetway, Asus, and Revo, so I headed to Frys to see what they had. If they had had an ND22 I would have picked that up, but no such luck. I knew to stay away from the AMD/ATI based machines for linux purposes. That pretty much left Atom based solutions and Openelec seem to have a particular build for ION based GPU’s so I went with an ID40-Plus. After rebate, it was about $260, which seemed like a decent deal. The ID40-Plus included a hard drive and memory (that’s the “Plus” part), so I was able to take it home, plug it in and go.
All in all, I’ve been extremely pleased with how easy it has been to get this machine working with Openelec. It’s been much easier than my first go-around with XBMC and Linux on my DIY machine. I’ll details most for the steps I took to get setup. this is mostly for my own archival purposes in case I need to do it again, but someone else might find it useful as well.
1. Download the Openelec distribution for ION based machines and install it to a USB stick. The instructions for doing this are front and center on the Openelec site.
2. (Optional) I have a Harmony one remote. Openelec works off the shelf with standard Microsoft MCE remotes and receivers. The easiest way to get the remote work is to set up the XBMC device as “Microsoft Media Center Extender”. If you do that, most things just “work” and you can tweak and customize for your “perfect” experience later. Step by step instructions for this are here. There are some other guides out there, but using “Microsoft Media Center Extender” has worked out well and allows for easier customization later. I was really surprised with how well the remote works. It’s relatively snappy and the repeat rate when holding down a direction key is pretty much spot on with my preferences.
3. Plug in the USB stick and boot the ID40 and quickly tap “Del” a few times when you see the “Zotac” splash screen so that you can enter the bios. There are some setting here to lower fan speeds and such, but frankly I didn’t find the ID40 to be particularly noisy so I didn’t mess with these. What you do need to do is go to the “boot” section of the bios and find where the boot order is set. There are a couple of these areas, but in one of them you’ll see the HD listed above the plugged in USB stick. Swap those entries that the USB stick is first.
4. Reboot to the USB stick and install Openelec. Just accept all defaults. It’s literally four clicks of the keyboard. Then pull out the USB stick and reboot.
5. You should boot directly into XBMC. One thing you’ll notice (and this will be in my list of cons a little later) is that the linux OS and XBMC boot so fast, that the network initialization falls a little behind. It takes about 18 seconds to reach the XBMC screen from boot, but another 15 seconds after that for networking to kick in. That’s still pretty fast overall, but I’d like to see some kind of indicator for network initialization because for me, with everything from the library to the video files coming from a NAS, XBMC is useless until the networking is ready.
6. (Optional) I used a shared MySQL database for the library. One of the awesome things about Openelec is that it sets up a number of samba (Windows) shares by default to allow very easy access to the system from other computers. So you can go to another computer and (assuming it’s Windows) type “\\192.168.0.57” or whatever IP is being used and access almost everything you need to configure Openelec without having to ssh in to the box. If you use this feature go to “userdata” and edit advancedsettings.xml. In my case I add the following to that file:
<videodatabase>
<type>mysql</type>
<host>192.168.0.55</host>
<port>3306</port>
<user>xbmc</user>
<pass>xbmc</pass>
<name>xbmc_video</name>
</videodatabase><musicdatabase>
<type>mysql</type>
<host>192.168.0.55</host>
<port>3306</port>
<user>xbmc</user>
<pass>xbmc</pass>
<name>xbmc_music</name>
</musicdatabase>
<videolibrary>
<hideemptyseries>true</hideemptyseries>
</videolibrary>
Again, because this is a network resource, after rebooting (and I think even coming from sleep) there will be a slight delay before the library information is available. I don’t care too much about this for reboots, but I would sure like to improve this for coming from sleep. Even so, a 5-10 seconds delay when I fire things up isn’t all that bad.
7. (Optional) I prefer to deal with static IP’s for device like this. Openelec as a special XBMC addon which allows you to configure a few OS level things like networking. Use this addon to setup a static IP for the system.
8. Add your video sources just like you would normally. In my case, I have two:
- smb://192.168.0.55/data1/tv
- smb://192.168.0.55/data2/Movies
9. (Optional) I’ve used various means to keep the userdata/Thumbnails directory synced between my XBMC boxes. Most recently it’s been Dropbox. On my Windows DIY PC I also tried to simply share directory from machine to machine but it seemed too slow. I decided to try it again here on Linux and so far it appears to be working well enough. In my setup, I have an XBMC instance running on my NAS box. I don’t actually use that XBMC instance, but I needed an XBMC always running and connected to my shared MySQL library so that SickBeard and CouchPotato could update it when they did their thing. My NAS is a linux box. I realize this is a little bit complicated but here what I did:
On my NAS, I moved my “Thumbnails” directory to my data1 share (one of my two shares on that NAS). I then created a symbolic link from that spot back to the .xbmc/userdata/ directory. On my ID40 I created a permanent mount to that share from the NAS. To do this, go to the “Configfiles” share from Openelec or “.config” if you’re ssh’ing to the machine. Copy netmount.conf.sample to netmount.conf. Edit that file to add a mount point. In my case, I added:
cifs | //192.168.0.55/data1 | /storage/mount/data1 | username=mwelch,pass=mypass
You’ll need to make sure the /storage/mount/data1 directory exists. I then created a symbolic link from /storage/mount/data1/Thumbnails to /storage/.xbmc/userdata/Thumbnails. It’s important that this directory is both read/write for both the NAS and the client connected to it.
10. To get video sound (as opposed to menu sounds) working over HDMI, there are several paths. I ‘m a big believer in taking routes with the fewest steps for things like this as the fewer pieces involved, the less likely something is to break or get out of sync. There is a guide out there, several in fact, that talk about moving a /Configfiles/modprobe.d.sample file to /Configfiles/modprobe.d and editing it. To me this means getting some most subsystems involved that I’d rather leave out of it. The most direct (note I didn’t say best; I’m not enough of an expert to say that yet) way HDMI sound for video working is in XBMC to go to System > System > Audio Output. Set the settings as follows:
- Audio Output: HDMI
- Speaker Configuration: 5.1 or 7.1 (or whatever you have, I guess)
- Audio output device: Custom
- Custom output device: plughw:1,7
- Passthrough output device: Custom
- Custom passthrough output device: plughw:1,7
This should give you audio in all of your videos. Unfortunately, I haven’t yet figured out how to get menu sounds working. There are dozens of guides for this ( all conflicting, of course) but I haven’t spent time working on it yet. It’s very low on my priority list.
12. (Optional) I found the default video picture for my TV episodes (though oddly not for my Movies) to be a little dark. This was easily fixed by changing the ColroSpace. You do need to ssh to the machine for this one (consider putty; username is ‘root’ and password is ‘openelec’). Once there, issue the following command:
cp /etc/X11/xorg-nvidia.conf /storage/.config/xorg.conf
You can now edit that xorg.conf from the samba share. All I did was remove the ‘#’ from the line that looks like this:
# Option "ColorSpace" "YCbCr444"
After that, the picture brightness was at the level I expected.
11. Suspend, and resume from suspend. There’s only one thing to do here. In System > Power Settings, change the shutdown command from “Shutdown” to “Suspend”. That’s it. There’s nothing else to do here. It just works. I know, I know. I’m as surprised as you are. When I clicked power on my Harmony One (configured for MS Media Center Extender as described above) and the ID40 went to sleep, my eyebrows went up. When I then clicked my XBMC activity on the remote and the ID40 powered up along with my TV and receiver, I honestly couldn’t believe it. No bios tweaks. Nada. In Linux!!!! Seriously, I’m still stunned about this. I had waited to do this last because I felt it was going to be the most difficult things to get working and I even thought that it might be the deal killer because it wouldn’t work at all. I’m just tickled with the fact that this worked with no effort on my part. This alone make the ID40 a high recommendation.
-------------------
Overall I’m very pleased with this ID40. It’s a tiny little machine that has played everything I’ve thrown at it. It took me only a few hours to get it into a state that took me days on my other machine, even in Windows. The real kickers for me are how well the remote works (a massive pain, even in Windows), and the suspend/resume behavior working right off the bat. I’m still shocked by that latter one. The only real con so far has been the lack of menu sounds, but as I mentioned, I haven’t yet put much effort into it, and while I will try to get them working, if for whatever reason, I’m unable to do so, it won’t be a deal killer for me. The other thing I haven’t tried yet has been a resource heavy skin. My understanding is that Atom based systems struggle with heavy skins, but who knows, maybe Openelec’s extremely slim design and memory friendliness will allow for whose skins to function decently. Even if they don’t, though, Confluece or one of the lightweight skins like Simplcity (which I did try and worked fine) will be more that satisfactory for me. I guess if I want to nitpick, the front panel lights on the ID40 are pretty bright. When the unit is in use, the green light isn’t so bad, but when it’s suspended, the light alternates between bright blinding red and green and it’s a bit distracting. Not a huge deal though as there are ways to deal with that light ranging from physical disconnection to perhaps bios tweaks 9 I haven’t looked yet).
I know that for $300 one could build a much more powerful machine than this ID40, but the ease and simplicity with which I was able to get everything working to my satisfaction counts for a lot. I now kind of wish I had started here instead of the super powerful DIY solution that’s currently sitting unused on the shelf next to the ID40. Oh, and the device is actually pretty attractive as well.