There’s a good chance that you’ve got an old laptop collecting dust in the house, so why not repurpose it into an awesome Home Theatre PC (HTPC)? In this project, we show you how to use the electronics from a laptop to build a machine perfect for watching movies, TV shows, and playing games!
We were busy doing a cleanup in our workshop when we realised how many laptops we had accumulated from all sorts of projects, as well as friends donating them! Instead of chucking them out, or selling them for parts, we decided to do something much more interesting with one of them: Convert it to a HTPC!
On paper, it’s pretty simple. Just hook the laptop up to your TV of choice with a HDMI cable and use a wireless keyboard and mouse. However, at DIYODE, we over-engineer everything, so naturally, we went above and beyond for this project. We stripped down the laptop, removing everything it didn't need and squeezing what was left into a snazzy laser-cut and 3D-printed case. We’ll show you how to correctly remove a motherboard from an old laptop, wire in a new power button, and even add some awesome RGB lights. Let’s dig in!
The Prototype Build:
Parts Required: | Jaycar | ||
---|---|---|---|
1x Blue Pushbutton with Iluminated Power Indicator | SP0810 | ||
1x LM358 Op-Amp | ZL3358 | ||
Laptop Motherboard | - | ||
Laptop Power Supply | - | ||
Alligator Clips | - | ||
Additional breadboard and prototyping parts required. | - |
In our prototype build, we’re choosing some parts for our project and doing some reverse engineering on the laptop motherboard.
Choosing a Laptop
If you’re trying to re-use old electronics like we are, chances are you might not have a massive variety of laptops to choose from when building this project. However, there are a couple of guidelines that you’ll want to follow in order to make your HTPC build experience as easy as possible.
You don’t want to be using a laptop older than about a decade for this. Anything before 2013 or 2014 we’d avoid, as the hardware just becomes too slow for playing modern video codecs or even fairly light games.
However, a new laptop is not a great idea either. Many laptops made after 2018 or 2019 are notoriously difficult to disassemble, especially high-end ultrabooks. These laptops often have touchscreens, soldered motherboards, and are generally an absolute pain to pull apart. MacBooks are definitely out of the question.
Ideally, a mid-range laptop from 2015-2017 is the ideal candidate for our HTPC project. It’ll have enough processing power to play most media and, with a capable graphics card, play light games too.
We chose a 15” HP Pavilion from 2014. It’s not a super fast laptop, but it’s good enough for our purposes.
The Teardown
Our first objective was to disassemble the laptop and remove everything we don’t need. This process will vary greatly depending on your specific model, but generally speaking, you need a basic set of screwdrivers and spudgers for disassembly. We started by removing the battery - some laptops will have external batteries that can simply be removed by pushing a release slider. Others will require a full disassembly to remove.
We can then remove any components that are available underneath plastic covers. On many laptops, this usually allows easy access to RAM, the wireless card, optical drive and sometimes the hard drive. We recommend removing everything that you can manage to make it easier to get the motherboard out.
After that, we can begin to separate the top and bottom shell of the laptop. Again, this will differ on the specific model. A word of warning: Many laptops will require you to take the keyboard off before doing any form of separation! There are many horror stories on the internet of people destroying their laptops in an attempt to do a basic hard drive upgrade thanks to this quirk. After removing the ‘keyboard’ screw on the underside of the case, use a spudger to carefully pry the keyboard mounting tabs above the recesses.
Once the keyboard is out, disconnect the ribbon cable connected to it and start unscrewing any small screws connecting it to the motherboard. Be very sure that all screws are out before trying to pry anything open. There are often incredibly tiny screws binding the plastic halves together around the optical disk tray. At this point, we can use a spudger to pry the entire top half of the case from the laptop. Be patient - it’s really easy to crack the plastic, especially around the USB ports.
Why are we worried about destroying parts we aren’t using again? We always try to put unused laptop parts on second-hand markets for very cheap or free - you just never know when someone needs a specific spare part for your laptop model. If you don't want to go to this effort, please responsibly dispose of remaining parts. It’s especially important that this is followed for parts like the battery.
Anyway, at this point we managed to get the top shell off, leaving us with a view of the (conveniently, quite small) motherboard! It’s remarkable how little of the laptop’s internals are actually dedicated to the circuitry with all the brain power. Nearly half of the internal space is dedicated towards the optical drive and hard drive. The only other circuit board is the small port breakout which has one USB 2.0 port and a Headphone jack. We’ll use this later!
Let’s remove the motherboard entirely. There are a bunch of screws securing the board down, marked with white triangles - these mark what screws need to be reinserted if you’re replacing the motherboard. While we were at it, we also pried off the display connector. This is usually an incredibly fiddly SMD connector that will break if you don’t respect it, so don’t pull it by the cable or use a spudger to get it off.
We also pried the DC jack out of the case, which was secured by a small aluminium bracket. We’re using the standard power adapter for the laptop, which saves some space and safety considerations inside of our HTPC - the annoying high-voltage stuff is handled in a brick of its own outside the laptop. Obviously, we won’t be using the battery.
Once all cables are disconnected, we can carefully lift the motherboard out of the case. Do not force anything! Be sure to peek under the board as you lift so you can check if there are any pesky ribbon cables holding it down.
We now have the motherboard free, in all its glory! It’s surprisingly compact considering a full computer is contained inside this 23cm x 23cm space. While it’s out, we suggest giving it a proper clean - laptop coolers have a nasty habit of getting incredibly dusty and clogging vents. We also removed the heatsinks and applied new layers of thermal paste to the CPU and GPU dies.
Power Button
The power button actually requires a bit of thought when it comes to repurposing a laptop’s motherboard, so don’t throw away the original power button! We’ll need to do some reverse engineering to figure out how to hot-wire in our own power button.
Use a multimeter or an oscilloscope while turning on the laptop normally to find a line that sits at 5V or 3.3V normally, but when the button is pressed, becomes 0V. Most power buttons just short-circuit a normally pulled-up voltage to ground when pressed, but we suggest confirming this on your own laptop’s motherboard. Using a multimeter in continuity mode, we traced the power signal back a pin on the power button (shown in the following images).
So, we can solder on a very small silicon wire to this pin. Be sure to use hot glue or tape to keep this wire flat on the board to avoid breaking it through stress. Our power button on our front panel will simply connect this pin to ground whenever it’s pressed.
However, we also wanted to find a place to power a power button LED on the front panel. The blue LED power ring should light up when the laptop is powered. However, this proved to be trickier than we thought!
We tried connecting the LED directly to the 3.3V Power LED output of the motherboard button connector, and immediately, the voltage collapsed on the output. We also knew that the 3.3V rail wouldn’t power the LED very brightly, so we’d need some way of powering it with 5V. We tried powering it with 12V, however, the LED was distractingly bright, so we didn’t bother with that.
Because the motherboard has such a complicated PCB, likely using four or more layers, there was little chance of reverse engineering what controlled the power button LED. We can, however, make an educated guess. Because the 3.3V output easily collapses even with a milliamp-level load, some internal circuit (we’re modelling this with a transistor) pulls the output voltage low. However, when it’s running, the transistor turns off, causing the voltage to be pulled high by an unknown pullup resistor. Because of the high value, this resistor cannot conduct any level of current suitable for powering an LED.
The button board has an inbuilt regulating circuit, which we believe converts this high impedance output into a low-impedance one for the LED to use. However, this means that we also have to make our own.
The first thing we tried is an optocoupler, however, even this wasn’t really enough current to fully turn on the LED. We eventually came up with a small circuit using an LM358 op-amp in a buffer configuration. This allows the LM358 to sink current and power the LED using almost no current from the motherboard itself.
With the circuit hooked up, we can verify that this works when the button is pressed. Be careful not to short the outputs when experimenting. While we used a lab bench power supply for our Fundamental build, our main build will use a 5V line sourced from a USB port on the motherboard.
Internet
Our HTPC will most likely need access to the wonderful world of the internet. You may have noticed that we removed the WiFi card earlier during the disassembly, and, fortunately, we’re not putting it back. Wireless is far too slow for high resolution and high bitrate video streaming, and the WiFi card requires a special mounting point. As long as the laptop used isn’t too new, it should have an Ethernet port available, which we’re going to be using instead. If your living room doesn’t have convenient access to an Ethernet cable, consider using Ethernet over Power (EoP) to improve reliability.
Unfortunately, removing the wireless card also removes Bluetooth functionality from the HTPC, which we’d like to keep. To fix this, we sourced a small USB Bluetooth dongle that provides support for game controllers, wireless headphones, remotes, keyboards, and anything else you’d like to connect.
Storage
If you’re making a PC to play all of your media, where should you actually store all of this media? This will mainly come down to what your priorities are and how much hardware you already have available.
It’s worth making the distinction between bulk storage - where all of your media of choice is stored - and boot storage - where your applications and operating systems are stored. For your boot storage, we do not recommend using the original hard drive that was probably included with the laptop. They’re slow (most use the sluggish 5400RPM versions), loud and prone to failure after previous usage in a vibration-heavy environment.
We highly recommend ordering a quality SSD, such as this 480GB one we sourced from Kingston. 480GB is enough space to store applications, games and cached data you want for fast access. SSDs are cheap enough in 2023 that it’s economical to buy large, fast, storage affordably.
Bulk storage, on the other hand, can be done in many different ways. Some makers may choose to use an external USB hard drive or flash drive, which can be plugged into the motherboard’s USB 3.0 port. It’s also possible to convert the now unused internal optical drive connector into a regular SATA port for a hard drive with an adapter.
We chose to forgo local bulk storage entirely and just use our UNRAID server that is connected on the local network. Because our UNRAID server uses a redundant disk, if a drive fails, our data will be fine with no loss. Long story short, our UNRAID server hosts an SMB share which any device on the local network can access without logging in. We added a juicy 20TB of storage to facilitate tons of stuff, avoiding jamming big drives into a tiny HTPC enclosure. Handy!
While we’re on the topic of hardware, you should consider upgrading your HTPCs RAM if you plan to run any games or intensive media streams. Laptop RAM is quite affordable second-hand - especially older DDR3 and DDR3L versions - so it’s probably worth doing this anyway.
The Build:
Parts Required: | Jaycar | ||
---|---|---|---|
1x NeoPixel Strip (~20cm) | XC4390 | ||
1x Arduino Nano (or compatible) | XC4414 | ||
2x 2-pin JST SM Male + Female Plug^ | PT4457 | ||
1x 3-pin JST SM Male + Female Plug^ | PT4457 | ||
1x 4-pin JST SM Male + Female Plug^ | PT4457 | ||
1x 8-pin DIP Socket | PI6500 | ||
1x Universal Pre-Punched Experimenters Board | HP9550 | ||
1x USB A Jack Round Panel Mount Adapter | - | ||
1x Micro-USB to USB A Cable | WC7757 | ||
1x 2.5" SSD (Optional) | - | ||
1x 8GB Laptop SODIMM RAM (Optional) | - |
Enclosure
The enclosure for our HTPC is 3D printed from black PLA, but feel free to repurpose or design something that fits the design language of your living room. We’ve seen some awesome HTPC builds on YouTube made from wood, rope, aluminium sheeting and even brass.
If you do go the route of our 3D printed enclosure, bear in mind that we’ve designed the mounts specifically for our HP laptop motherboard. Regardless, so long as your motherboard physically fits into the case, it should be fairly trivial to modify our design. The screw locations just need to be changed with a little elbow grease and a power drill.
Once it’s printed, it’s time to assemble it using some M3 screws and nuts. The bottom half of the enclosure holds the motherboard. Because the motherboard is barely a centimetre thick including components, it’s pretty easy to fit everything else we need above the board.
Check that it’s possible to plug cables into the back, as screwing the motherboard down completely can sometimes reduce the necessary clearance.
Next up, we mounted the small USB and headphone jack daughter-board. Originally, this was used to provide additional ports on the other side of the laptop. However, we’re mounting it directly onto the motherboard with double-sided tape and electrical tape for insulation. When we add the front panel, we can plug the USB cable from that into this board. If you have wired headphones, you may also wish to extend the headphone jack.
The top half of the enclosure is quite simple, and includes a friction-fit SSD caddy.
Just swap out the SSD with the stock caddy, and slide it into the 3D printed holder. It’s meant to be quite tight so vibration won’t knock the SSD out.
Lighting
This section is totally optional, but regular readers of DIYODE will know we always make a concerted effort to put RGB lights in everything that needs them - and sometimes in things that don’t. We purposely chose a translucent
front panel so we can put an LED strip behind it, illuminating the internal circuit boards.
The LED strips can be placed on the top side of the enclosure in the included 10mm recesses. We purposely designed the recess so that the LED dies can’t directly be seen when sitting on a lounge in front of the HTPC. The wires are then threaded through the included wire channel beside the SSD caddy.
We ended up using a low-density strip for our build, as it doesn’t take much to light up everything inside the enclosure.
Arduino Board
To contain all of the extra circuitry required to make this build work, we made a small Arduino-based controller board on a small section of prototyping board. The Arduino-compatible board we chose is the Seeeduino Nano, which is functionally identical to the standard Arduino Nano, just with some extra gadgets and a slightly different USB chip - you may need to install the appropriate drivers. By the way, we have a schematic and a Fritzing diagram for this project, so don’t worry too much about pixel-peeping the build photos!
We soldered the Seeeduino directly to the perfboard in an effort to save vertical space - it’s quite limited in our enclosure. The wires we’re using for this board are handy JST-style connectors that are often used for computer case fans. They’re non-reversible, durable, cheap, and suppliers offer them pre-soldered which makes our job easier.
We added a two-pin connector for 5V power and Ground, and a 3-pin connector for our Neopixel strip. After loading a basic Neopixel testing sketch onto the board, we can immediately verify that the lights are working correctly.
It’s time to add our Op-Amp! We used a basic LM358 for this, the same as from the prototype build. We soldered the Op-Amp directly, which turned out to be a mistake, as we found out shortly. Don’t forget to add the 5V and Ground power wires to the Op-Amp!
We then connected a four-wire JST pin for the power button. This will run to the button, powering the LED and detecting when it's pressed. Another 2-pin JST connector was soldered in to receive a signal from the motherboard when it’s time to turn on the power LED.
After testing the circuit, and wondering why it wasn’t working, we eventually nailed it down to a faulty Op-Amp. Of course, the one time we don’t use an IC socket, it turns out to be faulty! We used a desoldering pump and some careful solder work to replace it with a socket and a new LM358.
And with that, our board is done! It’s important to not accidentally connect the wrong JST wires, so we marked corresponding JST plugs with a soldering iron. After a quick test, we can verify the power button and all LEDs are working! We also programmed some cool Neopixel patterns into our Arduino to make it look awesome while running! The code can be found in the project files.
Keep in mind that your “home theatre” audience may find RGB lights distracting, so check they’re an appropriate brightness! You may wish to add resistors in series with the power button LED to dim it and adjust the maximum brightness parameter in the code as appropriate.
We stuck our Arduino board to the roof of the top enclosure with double-sided tape.
Front Panel
We wanted to keep the front panel of our HTPC as simple as possible. Especially in a living room cabinet, any bird’s nests of wires or ugly front panels will be a total eyesore. For this reason, we chose to get a front panel laser cut from 3mm acrylic. The colour can be chosen to match any desired aesthetic, but we chose to use translucent black acrylic with an engraved DIYODE logo.
There are also two holes on the left side to leave room for an aluminium power button and a panel-mount USB port. This port will be invaluable if you need to plug in a wired game controller, quickly transfer a few files or boot into a new operating system.
We ordered a few different variants from an online local supplier, which set us back around $70 in total. Of course, doing this is totally optional - for those who are content with using 3D printing, we’ve provided STL files for the files we laser-cut too.
Acrylic looks incredible for most projects, but it attracts fingerprints incredibly easily - hence why you’ll see us wearing gloves for some of this build. You should peel the adhesive covers from the panels as soon as you receive them, due to the fact that the covers stick more readily the longer you leave them.
We then slot the power button and USB mount into the panel, screwing them down hand tight. Don’t overtighten, as acrylic is notoriously brittle and will break without warning. Some panel-mount buttons and ports will also come with O-rings to improve friction.
Back Panel
We also ordered a back panel made from the same translucent acrylic. This is optional, mostly because you won’t see it most of the time!
However, it does remind anybody using the HTPC not to put anything hot behind the cooling system, and illustrates rough locations for the ports on the motherboard. We didn’t provide any precise port shields as bulky HDMI and USB cables tend to get caught on them.
On a side note, we found it impressive how much detail laser-engraving can provide - even fairly small text is rendered in excellent detail. We may look into sourcing our own laser-cutter in future to investigate more interesting applications for this!
Unfortunately, due to a suboptimal first-layer height on the 3D printer used for the enclosure, the rear end looks a little unsightly. The enclosure borders are a bit rough, but that’s why we printed it vertically! We also had trouble with the bottom lip of the back panel, so we had to snap off the bottom half of the acrylic back panel.
Software
One of the most important decisions to choose once you’ve finished building your HTPC is to decide what software to use. Many makers use Linux distros for HTPCs. Linux is fast, compatible with most forms of media, and doesn’t come with the bloatware and forced-update routines Windows does.
You can do something as simple as using Ubuntu Linux, or use a premade and specially-designed setup such as LibreELEC that has Kodi pre-installed for minimal setup. If you’re most interested in playing or streaming games (we’ll talk more about this shortly), you can use SteamOS, or just use Steam Big Picture mode on top of whatever operating system you plan to use.
If you can’t choose, consider dual-booting. This essentially means splitting our SSD into parts, and installing two operating systems that can be chosen at boot. While dual booting is convenient, we sometimes find it introduces unnecessary problems. For example, Linux stores time on the motherboard's CMOS memory differently than Windows does, so sometimes Time Zone offsets surface when switching between the operating systems.
Whatever route you choose, the installation process is mostly the same - download the required installation media onto a USB and boot the HTPC from it, installing it onto the SSD we connected earlier.
We first tried to use Windows for our installation, as there were some games on Steam we wanted to try running that weren’t compatible with Linux.
After plugging a USB stick into the motherboard, it's as simple as booting up and following the prompts to install it onto the empty SSD. But wait a minute, why are we using the original laptop screen in the photo below?
As we found out, many laptops are unaware when the internal screen is unplugged, even if you want to use an external HDMI-connected screen. Because of this, any edits to the laptop’s BIOS, or anything that forces itself to run on the internal screen, can’t be seen on the connected monitor or TV. So, before we have a chance to change the primary monitor in Windows, we have to reconnect the original screen during the installation process. After it’s installed, we can use the display output menu (Windows Key + P) to change it to “Second screen only”.
At this point, we can disconnect the original laptop screen and connect it to the primary TV screen or monitor. Just be aware that, if you want to make any BIOS changes, you will have to reconnect the original screen.
We found this really frustrating, and while there were guides online demonstrating how to disable certain parts of the display circuitry, we didn’t want to make any risky modifications to the motherboard. The internal display connectors aren’t HDMI or anything high-tech like that - most laptop monitor connectors are just a raw display signal, so there isn’t any feedback or metadata communicated to or from the monitor. If the display is connected, the motherboard has no idea and tries to output data to it anyway. If you’re building this project for yourself, be sure to check how your motherboard responds to having its internal display connector unplugged.
As if that problem wasn’t frustrating enough, we started finding that Windows was crashing almost constantly, and eventually wouldn’t boot at all. We’re not exactly sure why, but we suspect Windows tried to download and install a graphics driver automatically, which wasn’t happy with the fact we pulled out the internal screen. We eventually just formatted the SSD and re-did everything on Ubuntu Linux, which seems to be a lot nicer! It also has a better scaling than Windows, suitable for a large screen.
Media
Now, let's source our media. You can add a network share from an SMB or UPNP server on your network, or play content from a USB stick attached to your HTPC. Anything that can play modern MKV or MP4 format videos can, most likely, play on our HTPC with its software. If you’re looking to play content from a streaming service, you can use software like Plex to natively integrate Netflix, Amazon Prime, and many others. You can download the Plex Media Server to get this running, although we won’t be using this mostly because of the subscription models of Plex. There is a free version, however, it has a smaller selection of features.
The topic of legality gets a lot of talk when it comes to self-hosted media and HTPCs. Let’s get something out of the way - we’re not lawyers, and this is not legal advice. It’s up to
you to source your own content in a way that doesn’t break copyright laws. Many sources online describe conflicting information with regards to making digital copies of DVDs and CDs for personal use in Australia. Some sites say it is okay, others say it is okay so long as you don’t break the DRM features on the source media, while others say it is completely illegal to do any form of copying. In any case, you must only source and play media that you have the legal right to.
To add the media you’ve chosen, you can go into Kodi and tell it what directories your media is located at.
Kodi will automatically search and organise metadata for all of your local media, including ratings, series and movie art, and descriptions for episodes. While we didn’t experiment with the music and picture-viewing aspect of Kodi, experiences we’ve heard online from other users tend to be quite positive!
Playing media on Kodi is a breeze. It’s a TV-friendly interface with a large UI and plenty of keybinds for almost every input device. Mouse, keyboard, bluetooth remotes and game controllers are supported out of the box. The playback is incredibly smooth, and over the Ethernet connection, high-quality media plays without a hitch. We did find, however, that 4K media with a high bitrate codec tends to stutter if not given time to buffer.
This is about when we realised the Ethernet port on our laptop wasn’t a Gigabit Ethernet port! This limits the transfer rate to roughly 12 MB per second when playing videos. With Gigabit Ethernet, we could speed this up by around 10 times. If you’re planning on playing a lot of high-quality media, you may wish to pick up a USB 3.0 to Gigabit Ethernet adaptor. This will only provide speedups if your media is located locally. If you’re accessing data over the internet, the transfer rate will also be limited to the download speed of your internet connection.
Gaming
There are a ton of options for playing games on your fancy new HTPC. Kodi includes easy integration with popular emulators, which makes it trivially easy to play retro games directly on your HTPC. Systems such as the SNES, Nintendo 64, Nintendo DS, and Playstation One can all be played right from your lounge.
If you’re into games made less than a few decades ago, there are also plentiful options for modern ones too. If you’ve got a massive collection of games on Steam, Steam’s awesome Big Picture mode can be directly integrated with Kodi through an add-on. This allows you to manage and play games directly from your TV. Forget messing around with cursors, Big Picture mode plays nice with any controllers you have connected. We loved playing multiplayer games like Jackbox, Rocket League and Portal 2 which run and sound great on the big screen. You may have to change graphics settings to get some games to run smoothly, though.
However, we think the most interesting aspect of Steam’s Big Picture mode is game streaming. Instead of installing and playing a game locally, which means making the most of the laptop’s sometimes limiting performance, game streaming does all the hard work on an existing network-connected gaming PC. It then streams the video, audio and controller inputs over the network to your HTPC. When all devices are connected to a fast, wired, network, the results are astounding. The main limitation we found was latency, which limited us from playing FPS or driving games - there was just too much lag between the streaming and source machine. However, story-based or RPG games are a joy to stream on our HTPC, regardless of graphical intensity.
Where To From Here?
HTPCs have been in a bit of a weird spot over the past few years. Affordable streaming platforms such as Google Chromecast have more or less rendered DIY solutions redundant. However, there has been some recent interest in personally-owned media as streaming services multiply, with some subscribers dropping out as popular movies and TV shows phase in and out of availability thanks to licensing agreements. We're interested to see how the attitude towards physically owning or self-hosting media evolve over the next few years.
With regards to the HTPC itself, there are a number of improvements we could make to better improve the setup. We did find performance lacking in some aspects, with some games running at under 30-40fps even at medium settings. We'd be interested to see how this project would perform with the hardware from a gaming laptop, or, better yet, a desktop-grade Mini-ITX motherboard. With greater performance comes a bigger physical size, so it's up to you decide what performance you want here.
The black acrylic front panel would also be an awesome place to put an OLED or LCD display, potentially showing system statistics, volume or the currently playing media file. Why not go even further by adding better cooling, more ports for game controllers or even completely changing the look of the enclosure with metal, wood or other interesting materials. Let us know what you come up with by tagging us at @diyodemag!