How to build ultimate XBMC HTPC for less than $200 (Kodi) - CodeProject
Sleepless nights. I always end up getting less sleep when I'm buying some tech. Ever since I was a teenager whenever it was time to purchase a new piece of hardware, it turned into at least week-long ordial. First I would read all the possible reviews... dig up trustworthy benchmarks and comparisons... go through every supposed doubt someone posted on some obscure forum... only to finally conclude that I would probably be better off looking into another alternative... or even worse - to wait for something to come out.
When I was younger, I thought that once I have more money I'll probably drop the habbit. But, as it turned out - unfortunatelly it doesn't work that way. The more money spent in most cases doesn't equal to getting exactly what you wanted. It's even worse - most of the time you just end up being a bigger sucker ;). Really... I'm still cursing Seagate for their marketing gimmicks that made me spend $230 on damn Seagate Central 4TB , instead of just buying normal external HDD for $100 less and plugging it into ASUS RT-N66U router .
So, you can imagine what happened when I decided that I need to finally setup proper HTPC so that my family can watch content we have on big screen without me requiring to intervine. Coding at work during the day, scouring the web during the night.
As an avid reader of online articles, the thing I hate most is reading through tons of text just to get to the info I'm looking for (See that? Sentence with 0 useful information? ;). This article is here for you, not the other way around. So, if you are looking for specific info, here is the overview of sections:
- If you are not interested in my previous setup, my thoughts on various available devices or how I've ended up with building custom HTPC, jump to "Running OpenELEC" chapter
- If you won't use OpenELEC or run Windows from USB stick, jump to "Setting up HTPC, Windows and XBMC" chapter
- If you already have Windows and XMBC running on your machine and they are setup the way you want, jump to "Making XBMC library sharable" chapter
- If you are just interested in tips for better organizing your media library, jump to "Setting up your XBMC library" chapter
- If you are just interested in recommendations for XBMC Remote controls, jump to "HTPC Remotes" chapter
- If you are just looking for a quick recommendation on what to buy, jump to the end of the article, "Conclusion" chapter
With the help of people who leave nice comments, I will be updating article to keep it relevant. To make sure that narrative structure remains intact and that you don't need to re-read the article in order to figure out what changed, most of new stuff will go to Updates chapter.
Everything I have wrote in this article pretty much applies to new version of XBMC named Kodi. However, I am looking to post new article soon in which I'll take a look at past year - what has changed with XBMC (now Kodi), how good new devices out there are doing and what are biggest takeaways from year of owning a XBMC / Kodi HTPC.
How it all started
The setup I've previously had included 3 main "components":
- Old PC from 2008
- Tversity installed on that machine
- XBOX 360 plugged into TV's HDMI
For the most scenarios this setup works OK. However, with it you run into problems pretty quickly:
- If you or your significant other can't watch content without subtitles, then welcome to sweet world of trying to embed subtitles into transcoded video. Sure, you can make it work... but good luck with rewiding content when you accidently press RT on XBOX controller or when transcoding gets slow on computer for whatever reason.
- Want to watch Youtube on TV? Well - it's easy - just first pay Microsoft $60/year and enjoy typing in search terms with XBOX controller.
- Want to watch Amazon Prime on your TV? Well, it's included in that $60/year I've mentioned.
- Want to watch Netflix? Well, guess what...
Simply put, while this setup is working - it's not robust. You need to have both XBOX and PC turned on. You need to have wired connection to XBOX. And on top of that, besides paying for Amazon Prime or Netflix subscription, you also need to pay MSFT $60/year (you can get YouTube working using Twonkey Beam).
So, what are the alternatives I've started looking into?
Apple TV, Roku 3
I guess I first started looking at Apple TV exactly because of that "too much money" problem. Even though I still curse myself whenever I succumb to getting new iPad, I feel somewhat easier while laying in bed, holding it's smooth edges and watching vsauce on crisp RETINA display.
Luckily, it's nowhere near as easy to get in bed with Apple TV as it is with iPad.
And once brain cells start working, if you have even minor technical knowledge downsides of getting Apple TV as media center become too glaring to ignore. Relativelly slow hardware, getting locked into Apple ecosystem, zero extensibility. I mean, I get it - if you have filled your house with Apple products and you're graduated iTunes zombie - this option may work the best for you. But it's obviously not the best one for me... I do want to watch my avi movies and I don't want to catalog my movie library in iTunes.
Roku 3 on the other hand looked really promising . I mean who doesn't love that headphone jack on the remote? Bravo guys, bravo! To tell you the truth, I've almost ordered the damn thing lured by the prospect of watching late night movies with headphones. Just, I don't why, but I was under impression that whole Roku ecosystem is open source and that it's full-fledged media player. And of course, after digging a bit for more information I've found out that is simply not the case.
On openess of the platform - it seems that jailbraking Roku is even harder than jailbraking Apple TV. And as for playing various media types - just forget it - the device is simply not envisioned for that. Sure, you can install Plex Media Server on that extra PC you planned to retire, and then again go down the transcoding route... but do I really want to spend $100 just to end up with fancier XBOX 360? No, thank you.
G-Box Midnight MX2, Minix NEO X7, Tronsmart A928
Of course, the whole path of getting to these 3 devices was nowhere near as straight as in this article. After stumbling upon "Android TV Box" term, Google was my friend for 3 straight nights. I would come back from work, do all the standard after-work routines, then proceed to google variations of term "android tv box" and read all the content that popped up, until I managed to finally fall asleep. I guess the real kicker when it comes to Android TV Boxes is the "finality" of the decision. 99% of them are shipped directly from China; so there is no "oh, I don't like, give me money back" guarantee that some of us living in continental US got so used to.
And when you do decide on getting G-Box MX2 ... do you really get it? Or maybe get MINIX NEO X7 , because that one has quad-core processor? But wait, somebody said that G-Box MX2 works better since it's optimized for XBMC. XBMC... hmph, let me google more on that term...
... finally, after quite some time investigating G-Box MX2 vs MINIX NEO X7 , I've ended up deciding on Tronsmart A928. Why? Well, it's remote has headphone jack, duh. So, once again I've had my mind set and was ready to order my media device...
Maybe just PC with HDMI?
But yet again, (un)fortunatelly, I've ended up reading one forum thread too much. On top of that, I've found a topic in which it's said that remote headphone jack simply doesn't work.
In the meantime I've obviously tried out XBMC - the main piece of software / reason why people buy all those Android TV boxes. And even on my 7 year old laptop it rocked. Open source, fantastic UI, easy library building, bunch of settings, subtitle downloading, addins... I was dazzled - how come I haven't stumbled upon this media player earlier?!
Well, at least the part of the problem was solved - I now knew that I basically needed something that can run XBMC and play 1080p videos without shutter. And reading XBMC hardware forum gives you recurring notion that basically the best way to run XBMC is using standard PC. However, several thought prevented me from ordering a PC with HDMI right off the bat:
- I didn't want to get into controlling what is basically desktop computer using something like this remote . I mean, it just feels wrong - shelling out $60 for remote just so I can target specific spot on TV that's 4 meters away? No, thanks.
- I didn't want another Seagate Central pulled on me yet. Most of the desktop PCs I've looked into are basically in $200+ range. As since I really didn't want standard desktop case next to my TV I started looking into Intel NUCs, but those pretty much start in $300+ range for whole machine.
- I couldn't find anything useful on Google when searching for "HTPC remote with headphone jack". Sniff...
As in the most cases when I just can't figure out solution, I've concluded that my problem is basically trying to solve too many problems at once. So, instead of googling and hoping for miracle device that'll solve everything, I've made a list of things I need:
- XBMC - streaming of local media without any issues
- Amazon Prime (I need excuse for putting up with that $99/year price increase)
- Youtube, Flash videos, browsing websites
- Remote that easily controlls device, with headphone jack
- Must be small enough to fit next to TV
- Must cost less than $200
After reviewing the list it was obvious that the answer is something like Intel NUC. But that #6 was killing me. Not to mention #4 - I understood that I'll probably find some remote that works OK + has headphone jack, but at that point of time I had no idea how exactly I'll solve that problem.
Journey finally ends
Deciding that I'll go with full PC gave me a direction to follow. So, I've said to myself - let's just try to build an OK mini PC for less than $200 first. Everything else, like remote headphone jack, I'll try to figure out later.
Luckily, Amazon search for Micro ATX cases gave me this option: Shuttle DS61 V1.1 LGA1155 Intel H61 DDR3 USB 3.0 2GbE 90W Slim PC Barebone System - Black DS61 V1.1
$175 didn't sound too bad for motherboard, case & power, but the $139.99 on used got my attention. In there, seller with 100% reputation selling this particular case + i3 core already installed for just $140. And he was also selling 8GB DDR3 for $55.
I've already had a 16 GB USB and old Seagate 750 GB HDD in drawer of my desk - decided to go first with USB thumbdrive and fail back to HDD if needed.
HTPC for less than $200 was witin my reach.
As someone who spent entire life more or less tucked into Windows, I was kinda resisting the urge to try out OpenELEC even though it's "advertised" as a great way to run XBMC on machines that are meant to be dedicated HTPCs. Now, after trying it out - I am glad I did. Truly impressed, really.
Obviously one huge advantage is that OpenELEC is free (and accepting donations). So, if you don't have money to buy Windows (or don't have a copy of Windows on old laptop laying around) and you just really need OS to run XBMC, OpenELEC is the way to go. I would even dare to say - if you really just need HTPC machine (you seriously won't do anything else with it) - OpenELEC is BETTER way to go than Windows.
Contrary to what I assumed before running OpenELEC for the first time - it's not just some simple shell that starts XBMC. It is definitely custom distribution of Linux that's well tought through and contains stuff that you are "expected" to be baked in on HTPC. There is support for browsing Internet. There are drivers for bluetooth that just work (was pleasantly suprised that I was able to plug in old bluetooth dongle and pair it with Apple Wireless keyboard without any hiccups). And, of course, there is support for downloading torrents.
On top of all this, it can run from ANY 1GB USB drive and it'll be booting in 30 seconds or less (that's what I was getting on my machine). So practically you just need like 10-15 minutes to go from bare hardware to having your HTPC running - just follow OpenELEC installation guide and you are set.
I was immensly impressed with OpenELEC. It's unfortunate that I'm total Linux n00b, otherwise I would've probably found a way to do "sending audio to remote" and stayed with OpenELEC.
Running Windows 8 from USB drive
After impressive OpenELEC experience I was expecting that running Windows from USB would be a breeze. I mean, it's Windows, it works, I have experience with it... what can go wrong, right?
It turns out - A LOT.
First of all, majority of guides that are online reference Windows To Go Creator Wizard that's available within Windows 8.1 Enterprise version only. But now comes the real kicker - as it's often case with terrible Microsoft documentation websites - I simply couldn't find definite information on how exactly to legally obtain Enterprise version of Windows 8.1. After jumping through the pages and trying to figure out what is the price and how to purchase it (or can I purchase it at all or it's just available for TechNet subscribers) I simply gave up and said - OK, let me just try to download evaluation ISO. And of course, for that I need to register account... just great.
I think Jeff Atwood said it best - "I'm not inclined to make grand pronouncements about the future of software, but if anything kills off commercial software, let me tell you, it won't be open source software. They needn't bother. Commercial software will gleefully strangle itself to death on its own licensing terms".
Of course, only after you go through all the torture of getting Windows Enterprise ISO, you'll find out that there is an easier way. You would wish you could at least once read - a guide like this on MSDN - don't you?
Kidding aside, Aomei Partition Assistant is pretty nice piece of software; regardless of Windows to Go Creator I find it better for managing partitions and formatting than anything else out there (including Acronis Disk Director). Bravo for guys @ Aomei.
Now, before you run off to build your very own "Windows To Go" USB drive, one warning. PLEASE make sure that you have a good USB 3.0 thumb drive. Like (probably) everyone else, I've ignored that "certified USB drive" part and tried to run Windows from my old USB 2.0 16 GB thumbdrive and it's no fun. Luckily I had OpenELEC and a season of Mad Men to watch, so wasting a day while waiting on installation to complete was not that big of a deal. Worst case scenario, if your drive is really slow you may even not get to installation part (which happened to me in the first try) - you'll just end up indefinitely watching blue logo with spinning circle of animation after you boot.
Setting up HTPC, Windows and XBMC / Kodi
After you are finally in Windows (and you have installed all drivers and Windows updates), there are couple of things I recommend you do to make your XBMC experience optimal. While XBMC installation is downloading do following:
Start -> Run -> netplwiz. Uncheck "Users must enter a username and password to use this computer". After you click OK, provide username and password that computer will use to autologin when booting up.
Go to desktop, right click on toolbar at the bottom and select Properties. Go to Navigation tab and check "When I sign in or close all apps on a screen, go to the desktop instead of Start". This will ensure that you login directly to desktop.
Start -> Control Panel -> Display. Depending on the size of your TV and the distance between TV and couch that'll serve as your base, pick appropriate value for item size. 150% looked well for my setup, so that's what I went with.
Start -> Control Panel -> Power Options. Regardless of your starting plan (if you want maximum performance, switch to High performance plan), click on Change plan settings -> Change advanced power settings and go over options available. I definitely recommend that you set "Require a password on wakeup" to No. Everything else is a matter of preference and informed choice. For example, you may prefer for HTPC to sleep after X minutes when unused. I prefer to keep it on all the time. As long as you go over settings and understand what's available - you'll be OK.
Start downloading TeamViewer and install it (in "starts with Windows mode"). It's a great remote desktop solution that'll allow you to connect to your HTPC from wherever you are. You'll later see how we'll utilize this.
Optionally, if you need torrent client, I recommend you give qBittorrent a try. It has everything you would want from a torrent client, including Web user interface, plus it's open source and has none of the crapware that comes with µTorrent. Finally (and most importantly), from my experience it's quite faster to download stuff - that's why I've initally switched away from µTorrent. If you end up liking qBittorrent, as I think you will, please consider donating.
After XBMC is installed, you may want to start it just to get the feel for it. It's pretty user friendly so I doubt you'll have any problems figuring it out. Here are just few pointers on stuff I was curious about when I first started it:
- If XBMC is focused, your computer will not go to sleep regardless of what you set in Power Options, or whether or not something is playing. You can use key S to access shutdown menu from main menu.
- To make XBMC run automatically after boot, simply copy XBMC.exe shortcut (from "C:\Program Files (x86)\XBMC" by default) to C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup. Create directory named Startup if you don't have it already.
- Almost all XBMC settings have 3 levels - Basic, Advanced and Expert. If you are missing certain option make sure to look in bottom left corner of the menu you are in and change Settings Level if needed.
- Current version of XBMC (Gotham, Beta 3 at the time of writting), finally gets subtitle settings right - I can only hope other subtitle utilities will follow this standard. Go to System (last item in menu) -> Settings -> Video -> Subtitles. From there you can set two options: Languages to download subtitles for & Preferred subtitle language. So, when you search manually you'll get all available subtitles for multiple languages. And once developers return autodownload subtitle option, subtitles for preferred language will be downloaded. If I was not a developer, I would whine how better option would be to set priority for each selected language and then when automatic download kicks in it can try to search for language 1, then if it's not available language 2... but... I am developer, so... I guess instead of whining I should look through the source code and try to implement it myself, eh? :)
- After setting languages, you need to install Subtitle Add-On. You do that by going System -> Settings -> Add-ons -> Get Add-ons -> XBMC.org Add-ons -> Subtitles. There you'll see addons for pretty much all popular websites; my recommended choice is installing only OpenSubtitles.org. Reason being - if I have other provider OpenSubtitles.org may not be the first one to launch when in video you go Enter -> Options -> Subtitle download.
- Speaking of addons, I suggest you try Weather Underground (System -> Settings -> Weather -> Service for weather information). After you set your location, go to Weather item (now first entry in main menu) and you can view forcast for next 10 hours, next day, next 36 hours... etc. I really like this option - after I finish late night TV session, I just can glance over weather for tomorrow.
Making XBMC library sharable
Now, before you start building your video library I strongly recommend that you consider doing it in a way that'll enable sharing with other devices in your home. XBMC shines on many fields, but I guess video library sharing is one the brightest. After you finish indexing content, once you install XBMC instance on say, your laptop, you can then just reference library - and you are set - no need to add files.
The official guide for building library that's sharable is here. Guide is pretty detailed, so instead of repeating myself I'll just give an (hopefully useful) overview. The guide basically boils down to:
- Installing MySql Server instance in your network (presumably on HTPC running XBMC). After installation you need to allow xbmc user to basically do whatever it wishes on said MySql instance.
- Optionally, exporting the old library (if you've previously built it using some other method).
- Creating advancedsettings.xml file and copying it to userdata folder of every XBMC install you want to sync.
- Importing library. As step #2, you've evaded this since you are reading this article. Instead of importing your old library, you now just need to create it - fire XBMC up to start doing it.
Just, before we proceed with tips for library creation, I recommend you take a look at other links on the right in the official "Share Libraries" guide. From there you can see how to share add-on settings or thumbnails, what things you need to backup and how to do that, etc. There is also nice alternative (and pretty detailed) video guide for those who prefer watching over reading.
I'm mentioning this to emphasize several things from those pages. Most important being - if you do share library info from your HTPC, it means that info needs to be available whenever some other client request info. Say you have XBMC installed on your HTPC tied to TV and then installed another XBMC instance on your laptop. If you dropped advancedsettings.xml file in XBMC userdata folder on your laptop, once you start laptop's XMBC, it'll obviously try to connect to HTPC for library info. If HTPC is sleeping and MySql database on it is unavailable, XBMC on laptop will hang.
Solution for this, as guide points out, comes in a form of multiple profiles. So, you can have one profile for your home, one when you are traveling, etc. We'll later also look into remotely waking up computer - the standard WakeOnLan "magic packet" - but even that solution is kinda cumbersome; another reason why I keep my HTPC always on. If you have a better solution - like HTPC will only wake up on specific XBMC sent packet, feel free to share your solution in comments.
Obviously, library sharing is advanced and still experimental feature. I'm sure it'll keep getting better, but for now, it's important that it's working. I really love how it makes experience of browsing the videos you own flashier, and I'm sure you will too once you go through the process of setting library up.
Setting up your XBMC library
Coming from Plex Server and being frustrated with how it forces you into certain naming mold, I was really glad XBMC is more flexible. Of course, XBMC detection is not perfect, but with few nudges you can make it function the way you expect. And if everything fails, direct file browsing may not be as fancy, but it'll always work.
The way I recommend to setup your library is to mimic the organization already present in XBMC menus. So, all your media should be "split" into 4 categories: Movies, TV Shows, Photos & Music. If you are like me, you probably had Movies and TV Shows in the same folder. Well, no big deal - you'll now have Videos/Movies & Videos/TVShows.
Now that you have your media sources organized, when you open XBMC go -> Videos -> Files -> Add Videos... In the dialog that pops you need to select Name of the source & location. If you are, as I recommended, setting up library that's sharable, make sure that paths are accessible not only on local computer, but from any computer within the network. So, instead of "D:\Videos\", obviously go with "\htpcname\dshared\Videos\" (adjust depending on the way you shared folder).
Speaking of configuration and choices - I strongly recommend that you set static IPs for your machines in DHCP settings of your router, and then reference paths by IPs. If you can't do that (you have some terrible, terrible router), you can always try with machine names. Obviously, this part can be as simple or as complicated as you wish - maybe you have VPN setup so you can access your library from anywhere.
Now that you have media source added, if you to Videos -> Files, you should see your entry in menu. Select it and you can start browsing. Say you have Movies subfolder in there. You can right click the entry (or press C on keyboard) and then select Set Content (Change Content) option. In menu presented you can set "This directory contains" option to appropriate value (Movies, TV shows, Music videos, etc...). This is where the fun starts.
Movies detection should be without major blockers - you can select Scan recursively and let detection try to do it's job. But for TV Shows you should keep in mind is that XBMC doesn't really like nested structures. So, if you have TVShows folder, XBMC expects that all your TV Shows will be a direct subfolder and that all the episodes of the show will be in that subfolder (so, for example "TvShows\BetterLife\S01E01 - Pilot.avi"). Of course, many people have their shows in format like "TvShows\Category\NameOfTheShow\Season1\Episode 1 - Pilot.avi" or some variation. Three things are important here:
- That "Category" folder will be pretty confusing to XBMC. Instead of what you would expect (folder name being the category, say Comedies) XBMC will try to search for show named as the folder. Which is obviously not what you want. In case detection fails you can go back to the context menu (Change Content), uncheck "Selected folder contains a single TV show" and go level below.
- "Season1" - it's really unfortunate XBMC detection doesn't like season splitting by folder since it's very common - definitely more common than all episodes being in a single folder. If you have organization like this, detection will fail since XBMC will try to search for a show named "SeasonX". What you can try doing is bringing up context menu for Season X folder, and selecting "TV show information" (obviously folder above this one should be set to Tv Shows in Set Content menu). Now, in dialog that pops up you'll probably need to enter the name of the show (select Manual option from the right side). Now, the info will be fetched, but even all this may not be enough.
- "Episode 1 - Pilot.avi" - the name of the file is probably the most important part - even if you setup everything previously said, if your episode files are like this none of them will be properly detected. XBMC really prefers "Anything_S01E01.EpisodeName.avi" format. Other formats will fail; format like "Season 1 Episode 1 - Name of the episode.avi" is just as confusing to XBMC as "feowpkfo3p2kopfew.avi".
- Keep in mind that name of the file is what XBMC uses when searching for subtitles. So, with everything being said, you are pretty much forced into naming all your TV Shows like "ShowName - S01E01 - Name of the episode.avi" or some variation that contains S01E01 identification.
- So, instead of trying to manually identify every folder in your collection with that "TV show information" dialog, I suggest that you visit XBMC naming guide page, and follow the guidelines multi-renaming your files with Total Commander (when you start it go File -> Multi-Rename tool).
- It would be great if XBMC was a bit more flexible about detection. If I could pick just one thing I would change, it would be probably be detection of "Season 1 Episode 01" file naming scheme - it is quite common. However, the important thing is that you can make autodetection work - don't be too fond of your file names, if they are not being picked up, just follow the naming guide and change them. Automatic download of related art and quick library navigation will make it worth.
Setting up your video library is probably just a first of many steps you'll take when it comes to exploring the XBMC. I really love the whole project since it's so much more than a simple Media Center. One of the directions I suggest you take is trying out available Video Addons (Video -> Add-ons -> Get more...). Obviously you'll not be too surprised to see Youtube or Vimeo, but addons like MLBMC, NBA Video or SouthPark.de will probably surprise you.
And once you try out all the stuff from official add-on repository (and you are feeling adventurious) - just google for "XBMC addon repository" and you'll see tons of unofficial addons. Now, when I said "feeling adventurious" - I meant it - adding unofficial repositories to XBMC and installing add-ons from them is up to you and it's your own risk. NSFW content aside, XBMC add-ons are Python scripts and obviously you don't want to allow them to execute unless you trust the source.
By this point you've probably been using keyboard and mouse plugged into your HTPC and now you are thinking - OK, it's time unplug them from HTPC. So, what are the options you have for controling HTPC after unplugging?
It's a subjective view - but I found wireless keyboard and mouse pretty useful connected to HTPC. I would've never guess, but browsing the web and reading news on St Louis Cardinals (already mentioned watching highlights with MLBMC addon) is pretty nice on a big screen. Combined with the fact that you can view some Flash videos only if you fire up a browser and navigate to certain URL, I think that having a wireless keyboard and mouse is a must on a HTPC.
Whether you'll use separate keyboard and mouse, or go with something like Logitech K400 - it's a question of what you prefer. But I would definitely stay away from mini "keyboard trackpads" like the one I've linked here. Believe me - you want a keyboard on which you can actually type.
Now, if you want to control HTPC with remote, I strongly suggest you stay away from Logitech Harmony or those - remote on one side, keyboard on the other. If you don't have old remote laying around (or remote capable of switching work modes, like the one that comes with Charter TV subscription), just pick up any $5 remote and pair it up with Flirc .
Flirc is really great since now when I'm watching TV I don't need to worry about multiple remotes or if batteries are dead or whatever. I have a TV remote that is able to switch between workmodes, so I just change input to HDMI on TV and then select "DVD" workmode on remote (that I've setup to work with Flirc).
Since Flirc can practically turn any IR code it receives into any command on computer, you have full freedom with setup. For example, I have XBMC in my taskbar in 2nd position so I've setup a key on remote that issues WinKey+2 to start XMBC (or focus it if it's already running).
Or, you can create a command line script that puts computer to sleep, then tie it to certain keyboard shortcut and finally program Flirc to execute that script when you press a button on remote. Combined with ability of Flirc to wake up computer when certain button on remote is pressed (and all the startup settings we've done in "Setting up XMBC" chapter), you're pretty much set if you want to control you HTPC as a fancy "media box".
So, as you can see - it's pretty nice setup, and I was happy with it. Until I remembered that I wanted headphone jack on the remote.
iPad as PC Remote
If only I could get back all those days spent watching at different HTPC remotes... eh, that would be nice. Funny enough, after all that searching, it turned out I already had perfect remote for XBMC. Sure, I mention iPad here, but if you have any Android or iOS device - you actually don't need to buy anything else.
Unless you have Flirc and are too lazy to pickup your phone/tablet when TV remote is already in your hand, once you try XBMC Remote app you'll probably use it over any other alternative. Browsing your XBMC media library is so much faster and better with XBMC Remote app - obviously it's impossible to replicate that experience with conventional remote that you are pointing toward TV. And not to mention special commands, or typing search queries - it's so much more faster when you are interacting with XBMC using app on your Android/iOS device.
After you install XBMC Remote App from appropriate store (here are the links for different platforms), you need to setup your XBMC instance to allow remote connections.
Go to System -> Settings -> Services -> Webserver and check "Allow control of XBMC via HTTP". Optionally set port, username and password to your liking. Now, you've guessed it... if you navigate in any browser within your network to http://myhtpcipaddress:port/ you'll see webpage that allows you to control XBMC. But as we are here to use native app, rather than webpages, let's proceed.
I recommend that you also install Apple Bonjour and check "Allow programs on other systems to control XBMC" in System -> Settings -> Services -> Remote control. If you have Apple Bonjour installed on your HTPC and you run XBMC Remote App on your mobile device, connection parameters (ip and port) will be automatically detected so you'll just need to enter username and password. Otherwise, you'll need to provide ip and port manually.
Once you connect XBMC Remote App to the XBMC instance on your HTPC connected to the TV, I'm sure you'll initially have a "wow" moment. At least one, short, tiny. For me, seeing all that automatically downloaded posters related to my media showing on iPad, browsing library with ease and navigating content on TV using touch gestures was really great.
Another reason why I said iPad is probably ultimate XBMC remote (and that you should install Apple Bonjour) is AirPlay. Once you turn it on (System -> Settings -> Services -> Airplay) you can send any content from your iDevice to XBMC / TV with ease. Want to watch some Youtube video? Forget Youtube add-on, browse through YouTube app on iDevice and then send video to the big screen.
List of things good things your iPad can do for your HTPC doesn't end there. If you need your HTPC to Wake-Up-On-LAN, try mWOL app.
And to top it off - remember that recommendation to install TeamViewer? Well, both iOS and Android have Teamviewer apps that are capable of connecting to and controlling the PC. It's definitely not the best experience or the fastest way to control your HTPC, but it'll serve if you just want to do something quickly. I just wish that "Sponsored session" dialog from Teamviewer could autoclose after 5 seconds ;(
Headphone jack on remote, here I come
In retrospect, I find it intriguing that I never though of idea of streaming audio TV to iPad and then attaching headphones to it. But then again, how was I to know that I'll have full HTPC and that XBMC Remote app is so awesome, when I was investigating remotes? Everything seems way easier when you look back, I guess.
That being said, even though send audio from Windows desktop to iPad sounds easy, I still haven't found a way that completely satisfies me. The biggest issue with my current solution is a 2 second lag between video on screen and audio that I receive over headphones (which is solvable using XBMC awesomeness). On top of that - it isn't free. I'll describe my solution for sake of giving at least one way to do this - if anyone solved this in a better way, please do share your approach in comments and I'll link it.
The solution I'm using is originally envisioned for audio, so it's no wonder there is a lag. Since it's commercial product, installation isn't too tough:
- Download Airfoil for Windows from their website (http://rogueamoeba.com/airfoil/windows/)
- Download Airfoil client on your iPad (https://itunes.apple.com/us/app/airfoil-speakers-touch/id311357351?mt=8)
- Tieing iOS client to server running on your computer should be easy, but if you need detailed guide visit this link
To solve the issue of lag, simply use Audio Offset option that XBMC offers.
It really irks me that Airfoil is just wrapper over VB-Audio open source project and that by using solution like this I'm giving $25 to them rather then sending that to XBMC or VB-Audio.
It's also a shame that there is no "definite" remote for $25 with IR that has (bluetooth) headphone jack - it would be ideal companion to Flirc. But, considering that you can find QWERTY remotes for less than $10 I think it's just matter of time before someone adds two and two and comes us with QWERTY remote that has headphone jack. And if that someone is reading this article - just please don't add extra cost to you by going with integrated battery, most of us who are into HTPCs already have rechargable AAs laying around and the last thing we want is another device to charge.
It's been a month since I've started writting this article and during that time, I must say - I've quite enjoyed my HTPC. Looking back, now I'm really sorry I haven't bought HTPC earlier. Regardless of playing media, having a box that can serve as a web / backup / file server is quite useful, especially if you are software developer. That's actually something I want to write about - so if you guys are interested in reading about setting your new HTPC to backup your code, installing TeamCity on it to do automated builds or syncing files across devices (Dropbox style)... let me know in comments.
For those of you less technical - this article probably boils down to a question - do you really want to spend about $200 to build your own HTPC? Looking at all moving parts, to be honest - I would say NO. Depending on how technical you are (and what exactly you need from your box), here is how I would rank different choices:
Easy (less than $100) - you want something that just works and you are not into offline content that much - Roku 3, Amazon Fire TV, Google Chromecast, Apple TV - really any well-known, commercial device with good reviews. If somebody forced me to choose - I would probably choose
Roku 3 since it's not from a big company (do I need to mention headphone jack? ;)Amazon Fire TV. It was launched since I wrote majority of this article, so that's why I haven't talked more about it. But, if Amazon continues not to fight against 3rd party developers and keeps this low price, Amazon Fire TV will probably be the ultimate HTPC you can buy in less than $200 range. It'll basically be no-brainer choice for anyone who doesn't want to spend more than $200 or build their own custom HTPC. Here is guide on how to run XBMC on Amazon Fire TV.
Normal (around $100) - you want something that works and you do want offline content - going with dedicated Android box is probably the best choice for you. Combining pure specs, delivery methods and reviews of device / technical support, I would say that currently G Box Midnight MX 2 seems like the "safest" choice (Amazon Fire TV could become a leader in this category pretty quickly, especially for those who don't shy away from thinkering with device). The fact it is Android device gives you ability to do more with apps from Play Store on top of using box as a player for both Online (YouTube, Amazon Prime, Netflix, etc) and Offline content.
Hard ($150+) - you want something that goes beyond playing video content. At this point, it really all depends on what you are comfortable with. If you don't shy away from building your own hardware (or even better - it's your hobby), building HTPC from custom components is not a bad way to spend a day. Considering that memory and CPUs don't die that often (you definitely don't want to buy used HDD) it's easy to get a powerful machine for less than you would pay in retail. And you don't need to follow my path of fear (caused by reading all those webpages talking about how XBMC shutters) - I definitely overdid it when building my machine since it barely gets over 10% of CPU usage even when playing full 1080p content. After this experience, I wouldn't shy away from using $50 Celeron as CPU if my budget was tight. I would even consider buying Asus Chromebox for $179 if I didn't want to build anything and was advanturous enough to try Linux or running Windows on it.
Honestly, if you are really at the point of considering "Hard" option and you have some basic knowledge regarding software/hardware - just go with it. And don't be too tight with money on things like Flirc - believe me, anything that makes your experince of using HTPC better will be worth it in the long run. Especially with so many great shows worth watching (The Wire, Mad Men, Game of Thrones, Breaking Bad...), you will definitely use HTPC a lot when you build it. So, you might as well enjoy yourself - any money spent on making your HTPC better will hardly be a money thrown away.
Whatever you do - enjoy exploring and thanks for reading this article.
This article mentions several open-source projects. Please consider donating to them if you find them useful: