Building the perfect beast: The HTPC build

Last November, I was faced with a problem. A good problem, but a problem nonetheless: Thanks to a good friend of mine, I went from a 37″ 1080p HDTV (a Panasonic Viera, and it’s still in use. Had it since 2011 when some people bought it for a football game and couldn’t return it so they sold it at a loss on Craigslist) up to a 50″ 4K TV. The problem was that I had plenty of things that could drive a 1080p display, but 4K60? That was a whole other ball game.

I had two devices that could drive my TV fine: My desktop PC (which is very out of range of my TV), and my Xbox One X. I could also use the TV itself (being a Roku TV) but the problem with that is that the Twitch app is 99% depreciated. For that, I’d need the Xbox. (Twitch and YouTube sum up 90% of what I do with the TV.)

YouTube was another issue in and of itself. I frequently put on content that I just have in the background, or something I can just kick back, relax, and watch with no intervention. That all got shattered when an ad came up that was forty minutes long. It was skippable, yes, but that involves me picking up my remote and skipping the ad. Twitch is a lot more reasonable with 30 second ads that don’t require you to skip.

Thus, the idea to just roll my own HTPC was born. Kodi’s a damn fine media center frontend, and the YouTube app–while requiring some advanced configuration–strips ads out. I do watch a lot of ads on my phone, so I’d like to think that hey, getting some ad free time in on my TV is balancing it out.

Starting the build

I needed some hardware to make this happen. As if on cue, I remembered that one of the PCs I got off a friend had a reasonably recent GPU in it, an RX 550. For gaming, it’s an absolute potato, but for just viewing 4K content? Perfect. Now we need a platform to build on.

Initially, I started by just adding the card to one of the older Dell prebuilts I had laying around. It was old, but not too old, being equipped with a Sandy Bridge i3 and 8GB of RAM. It was then I hit a snag: The RX 550 requires a board with EFI, and the board in the Dell didn’t have EFI support. Shit.

I dug around and found some potato motherboard that had EFI support. It was sparse on features, but so long as it had EFI and supported the i3 I had, we’d be cherry. Thankfully, it did! Except…we had another problem. Windows 10 did NOT want to work on this system. It’d boot, but it’d take a solid two minutes to boot, hanging at the Windows logo.

I rolled it back to Windows 7, and the boot problem went right away. Unfortunately, this wouldn’t be sufficient, as Windows 7 support was going to end in a few weeks (at the time).

Getting more curious, I tried Windows 8.1 Pro, and that too didn’t have the booting problem. However, in an absolutely genius move, AMD had no support for 8.x. They only made drivers for 7 and 10. Sigh. 

As if on cue, however…a Dell XPS One was dropped into my lap. It had a bad GPU, however, so the machine was unfortunately a lost cause. But it did have one little trinket in it: A i7-3770S. Now we’re talkin’.

Given that little potato board was already not having a good time running anything modern, I decided now would be a good time to shuffle hardware around and pull the board out of my file server, a Gigabyte Z77M-D3H. Perfect for something like this, and should be able to handle the i7 perfectly.

At last we have a mostly finalized hardware build. After getting it up and running, it performed flawlessly.

Of course, there was more work to be done…

The Software Setup

Given that this system was mostly going to be used for–at most–Twitch and YouTube and maybe pulling content over the network, I opted to go for Win10 LTSC. I could go Linux but I don’t feel like putting up with it. And of course on top of it all was Kodi, using the Embuary skin.

I also used Launcher4Kodi to have Kodi load in lieu of Windows Explorer on startup, so it boots right into Kodi super fast.

The question now was “how do we control it?” I have a Logitech wireless keyboard and trackpad but the trackpad is ridiculously finicky, and trying to control everything by remember what key does what on this vast keyboard felt like a bad time.

Thus, I enlisted the help of a controller. Specifically, a Dualshock 4. I had a Bluetooth module taped to the back of the TV (and run with a USB extension) so it was all well hidden and wireless.

It worked well enough, but we still weren’t there: The Dualshock 4 would sometimes take forever to reconnect, and sometimes Kodi would absolutely bug out and think I’m holding down one of the directional buttons all the time. In addition, the Dualshock 4 had no idle timeout, so it would stay on until the controller died entirely. Not good when you fall asleep watching something.

The DS4 can be turned off by just holding the PS button for 10 seconds, but what that usually did was call up a menu as you were trying to do it.

To remedy some of these issues, there’s DS4Windows, which serves as sort of an alternate driver for the DS4, and enables things like the touchpad to work. I set an idle timeout and set holding down both sides of the touchpad to shut off the controller. It worked amazingly. Almost.

This setup directly clashed with Launcher4Kodi. For DS4Windows to load, Explorer has to load so DS4Windows can then be started by Windows. But with my current setup, Explorer doesn’t load unless I exit Kodi. I usually put my HTPC to sleep rather than shutting it off entirely so this was way less of an issue, but when Windows loads Explorer, it loads a bunch of other garbage with it (Radeon software, I am looking right in your direction).

Still, this was going to be the best I was going to have. For now.

Thrift Store Score

There were a few things I was keeping my eye out for whenever I’d pop into a thrift store, and one of those things was an IR receiver:

I’ve seen them pop up but I’ve always passed them up due to the remotes never being with them. This time, however, I knew better. And one just so happened to pop up at Savers for the low price of $2. Perfect.

Jumped on ebay and got the matching remote for about $6. Next thing I knew, this was looking like a legitimate HTPC, remote and all. Now I could sit back, queue up some video, and enjoy the thing I made, right?


There was one last small issue between me and entertainment nirvana: While Kodi maps the basic functions of the remote just fine, 90% of the remote is entirely useless and Kodi doesn’t know what to do with it. So I can’t go back home, I can’t call up a menu, so on and so forth.

Thankfully, this was a really easy fix: There’s a utility called AdvancedMCERemoteMapper, and it allows you to bind keys to any button on the remote by way of registry edits. Perfection.

From here it was as simple as pulling up the default Kodi keymap and binding each button on the remote to press whatever key on the keyboard that corresponded to what I wanted to do in Kodi. So rather than trying to map Kodi to the remote, I’d map the remote to Kodi.

It worked flawlessly. I have every function I could possibly need mapped to a button on the remote, and while the remote is huge and a little bit awkward, it worked way better than the DS4. Not to mention the power button on the remote would sleep/wake the HTPC on demand!

With that, the HTPC project is pretty much complete. There are still things I’d like to do to it (like get a Ceton tuner for CableCARD support), but that’s such a ridiculous thing that I’m not going to really pursue it. For reasonable things, however, I do want to add a Blu-Ray drive to it at some point. Besides that, though? She’s perfect.