I built an HTPC from an old VCR

My latest grand project has come about from a desire to have an integrated home entertainment solution and an inability to find any off-the-shelf product that handles media the way I want it to.wpid-wp-1427424367999.jpg

My first impulse was to build an HTPC in a traditional desktop-style case, but I could not locate one that would fit in my IKEA Besta TV stand. As it happens, I had a cache of old VCRs taking up space in storage after my VHS digitising project, so I grabbed one that would suit well and got to tinkering.

wpid-wp-1427425387636.jpg
A few hours of Dremel work and the original RCA and Coaxial ports are replaced with USB and HDMI.
wpid-wp-1427425396022.jpg
The front RCA ports made a convenient location to add a couple front USB ports.

┬áThe form factor of the VHS turned out to fit an mATX motherboard and power supply side-by-side almost exactly. Thankfully, there was still plenty of clearance for fans and other internal bits as well. Best of all, the case pays homage to a time in my childhood when the VCR (actually, this exact VCR) was the focal point of entertainment–perhaps even more than the NES that sat next to it. After all, you can’t play Super Mario Bros. and build Lego models at the same time!

wpid-wp-1427425401398.jpg
Still a slightly jumbled mess inside, but it works.

With the internals completed, I set about assembling the software suite. XBMC provides the main interface while Firefox and RetroArch supplement functionality for most streaming services and video games. The biggest decision I’ve had to make was whether to build the system on Linux or Windows. I’ve completed comparable versions under both, but I eventually paid for a Windows 7 license to take advantage of the superior graphics processing compatibility provided by Microsoft DirectX as well as eliminate the headache of futzing around with Wine compatibility settings.

wpid-wp-1427425380569.jpg
Original serial number and patent labels joined by the ubiquitous “Intel Inside” decal.

The end result is an all-in-one streaming media, local media, classic and modern gaming machine that evokes an aesthetic of an era that is quickly fading into the annals of history.

wpid-wp-1427425384322.jpg
The original date of manufacture label: June 1993.
wpid-wp-1427425391689.jpg
21 years of reliable service and counting!
wpid-wp-1427424377477.jpg
The unit’s cassette door broke off sometime in the late 1990s, so I 3D printed a replacement to seal the innards from dust. I also replaced the original 7-segment display with a USB liquid crystal display.

How To Use A Remote Control With Kodi In Windows

Kodi, as we’ve discussed before, is the most powerful all-in-one home theatre solution for the 21st century that combines a comprehensive metadata-driven viewing experience for all your local media as well as the ability to extend functionality through the use of plugins for many kinds of streaming media. The one problem with this setup is that Kodi does not recognize Windows Media Remote commands out of the box and will require a separate process to parse those commands into something useable.

If you have EventGhost properly setup to receive and interpret IR commands from your remote control, there is a stock plugin available for EG that will translate those keypresses into Kodi commands, allowing you to easily program a remote control with Kodi.

Highlight “Autostart” in the EventGhost Configuration Tree. Right-click and choose “Add Plugin…” From the plugin menu, scroll down to “XBMC2” in the “Program Control” folder, highlight, and click “OK”.

Screen Shot 2015-04-15 at 7.38.48 PM

Unless your Kodi/XBMC settings are different from the defaults, go ahead and click OK on the next screen as well. EventGhost will prompt you to add actions, but you don’t need to. All of your macros and actions have now been added to the “XBMC2” folder in the Configuration Tree.

The next part is somewhat tedious, but only required once. Press each button on the remote to register the event in EG. Then, drag each button press event to the corresponding macro in the XBMC2/Buttons folder.

Screen Shot 2015-04-19 at 10.17.25 AM
Once your buttons are programmed, you are ready to use your remote with Kodi!

The Best XBMC Skin: Aeon MQ 5

The Aeon series of skins for XBMC are probably the best-looking skins available from the stock repository, and they are certainly the most customisable. The most comprehensively customisable of the series is MQ 5, compatible up to v13.2 (Gotham). It’s got a slick interface with nearly every possible screen customisable to some point. Even the main menu can be rewritten to suit your needs!

Aeon MQ 5 even comes with a “Games” menu powered by the Rom Collection Browser plugin, allowing one to access emulators, Steam, and local games from a single menu like TV shows or films. Add the Advanced Launcher plugin and you can write a custom launcher script for Netflix or Hulu as well!

Rather than extolling the virtues in my lackluster prose, YouTuber Badluck Justice has a great video showing off what is probably the best XBMC skin available. Check it out below.

How To Add a Shuffle Function in Kodi (XBMC)

Kodi provides powerful metadata-driven sorting for your video collection, separating TV shows into individual seasons and films into particular franchises, but what if you want a more “traditional” television experience? An experience of sitting back and passively letting some omniscient programming director select your next viewing course? Sometimes, we just don’t want to deal with the responsibilities of decision or the overwhelming paradox of choice. For those occasions, the LazyTV plugin saves the day!

When invoked, LazyTV will populate a random playlist containing as many items within your preconfigured criteria as you like, then play them seamlessly until you either stop the stream or the playlist runs out. Add movies to the playlist for the full “1980s TBS experience”.

LazyTV also mimics streaming services like Netflix and Hulu by offering an autoplay function for next episodes in a series. When a selected episode ends, LazyTV will offer to play the next episode automatically (without the pesky “Are You Still Watching?” dialog).

I keep a link to LazyTV’s shuffle function on my home screen, next to TV Shows, because I often run into the dreaded question of what to watch next. When you make lots of high-value decisions during the day, you often don’t have the energy left to make such low-value ones, and your television viewing habits should never be anything to worry over!

LazyTV is available in the official Kodi.tv repository, so installation is as simple as navigating to Settings>Add-Ons>Get Add-Ons>Kodi.tv>Program Add-Ons and installing LazyTV from the menu. For more information, check out the LazyTV page in the Kodi Wiki.

Useful Kodi Add-Ons

Here’s a quick list of several useful Kodi add-ons to round-out a new installation:

  • Kodi Backup does exactly what the name implies by allowing automatic and on-demand backups of all databases, playlists, thumbnails, add-ons, and other configuration settings. Backups can be made to any connected media or to Dropbox. Make sure that you get the correct version for your installation. 13.2 and earlier versions (XBMC) will need to use the XBMC Backup add-on instead.
  • Artist Slideshow and Artist Slideshow Helper work together to download and manage extra artwork and metadata from various sources.
  • Artwork Organizer sorts downloaded artwork into separate folders based on type (thumbnail or fanart).
  • CdART Manager downloads album artwork for your music collection.
  • RSS Editor allows you to edit the RSS feeds that appear in the ticker at the bottom of the home screen. Go to Settings>Appearance>Skin to edit the feed addresses.
  • TvTunes is a fun add-on that allows you to download MP3s of show themes that play as you browse through the “TV Shows” section of your library.
  • YouTube adds functionality with the popular video sharing website.
  • Yahoo! Weather scrapes weather reports and forecasts viewable in the “Weather” section of Kodi.

How to set up LCD output for Kodi in Ubuntu Linux

So, after taking the time to install the hardware and driver for the nMedia PRO-LCD, we need a source of information to display on the external display. This particular set of instructions deals ONLY with how to set up LCD output for Kodi in Ubuntu. In Kodi for Linux, the XBMCLCDproc add-on provides the information to be displayed on the external LCD. Install this add-on from the Settings>Add-ons>Services menu.

In your browser, download LCD.xml from the add-on’s Github site into the ~/.kodi/userdata/ folder. Edit the values within this file with a text editor like Nano or GEdit.

More information on LCDproc syntax and configuration can be found on the LCD page of the Kodi Wiki as well as the Github site.

How To Install Advanced Launcher Add-On For Kodi (XBMC)

UPDATE: 2016-01-05 Advanced Launcher has been discontinued by its author and all links to its repository have been deleted. I am investigating alternatives and will post again once I have an answer. Until then, please check the comments section for further information.

Advanced Launcher is an add-on for Kodi that is used to launch external applications such as Firefox or Steam in any operating system. Launcher parameters are customisable so a particular instance can launch a specific website, game, or media file. In short, if it can be defined in a command-line interface, it can be done through Advanced Launcher.

Unfortunately, such awesome power is not available to Kodi users by default. To install Advanced Launcher, you will have to add the Angelscry repository to Kodi’s source list. To access the source list, navigate to the “Files Manager” under the “System” menu.

Screen Shot 2015-04-26 at 10.07.37 PM

Choose “Add Source” and type http://www.gwenael.org/Repository as the path. Name the source “Angelscry Repository” and click “OK”.

Screen Shot 2015-04-26 at 10.12.38 PM

From the Settings>Add-ons Menu, choose “Install from zip file”. When the browser appears, select “Angelscry Repository” from the list and wait for it to connect to the server.

Select “repository.angelscry.xbmc-plugins” from the list and choose the latest version of the repository to install. Back out to the Add-ons menu and now choose “Get Add-ons”. Select the newly-available Angelscry Repository, then “Program Add-ons”, and finally “Advanced Launcher”. The add-on will now be available from the “Programs” menu on the home screen.

Creating a standalone launcher (for a single executable like Firefox) is a simple process of browsing to the executable for the application (or just entering the command in Linux), defining the command-line parameters, and providing a (optional) thumbnail. The add-on walks you through the process and you will be able to set these launchers as favourites or (in the case of the Aeon MQ5 skin) home menu items.

Troubleshooting XBMC Sound

Need help troubleshooting XBMC sound? Try these helpful hints!

  • If external applications launched via Advanced Launcher have no sound, try disabling skin sounds in XBMC. Sometimes there may be a conflict with the device being locked to XBMC (this is especially true in some derivatives of Ubuntu such as Lubuntu) and simply disabling the sounds should solve it. Adjusting the timeout settings in Advanced Launcher may also help, but it is more complicated.
  • Having problems with audio in XBMC? Check the device settings and verify the correct output device is selected. Settings>System>Audio Output

How To Set Up LCD Output For Kodi In Windows 7

We’ve already explored how to install the nMedia PRO-LCD and drive it with information from Kodi in Ubuntu, but as I’ve discussed earlier, the final version of the VCR Project will be running Windows 7. For this, I need to find an appropriate way to drive output from Kodi to the display mounted in the front of the VCR housing.

The application that we’ll be using to set up LCD output is LCD Smartie, an open-source, extensible application that utilises a series of plugins to parse and translate information for the liquid crystal display. Before we install LCD Smartie, though, we have to download the Windows driver for the display.

Download the nMedia PRO-LCD driver from the nMedia website at http://www.nmediapc.com/LCD/download.htm, unzip it and double-click the installer to run. Reboot the computer and we can move onto the next step.

Download the latest version of LCD Smartie from their Sourceforge page. Unzip the file to a convenient location on your hard drive (I chose C:\lcdsmartie). Like EventGhost, LCD Smartie does not “install” to the hard drive–it simply sits in a folder and runs (the way applications should properly run).

While you’re on the download page for LCD Smartie, grab the L.I.S. VFD display driver, as we’re going to need it for this particular display. Unzip it and copy the lisvfd.dll file to the “displays” folder within the LCD Smartie folder.

Now, we can run LCD Smartie for the first time. Make sure you right-click and select “Run as administrator” because LCD Smartie needs the elevated permissions to interact with the display. When the application opens, you will see a small window open that’s emulating the default LCD output. In the bottom left corner of this window, click “Setup”.

In the Setup window, select “2×20” from the “LCD size” drop-down menu under the “Screen” tab beneath “Display Settings”. Then click the “Plugin” tab. In the “Display Plugin” drop-down menu, select “lisvfd.dll” from the choices. In the “Startup Parameters” field below, type in the appropriate COM port and baud rate for your LCD.

Screen Shot 2015-04-28 at 6.36.45 PMTo determine the COM port for the LCD, click “Devices and Printers” in the Start Menu. Under the “Unspecified” heading, look for “FT232R USB UART”. Right-click this device and select “Properties”.

Screen Shot 2015-04-28 at 6.44.55 PMIn the “Properties” window, click the “Hardware” tab. Note the USB Serial Port listed in the menu. Go back to LCD Smartie’s setup window and plug this COM port into the Device Parameters field. Leave the baud rate at the default 38400. Click the “Apply” and your LCD should reflect what is being shown in the emulator window.

Screen Shot 2015-04-28 at 6.46.53 PM
In this example, my LCD is connected to the COM3 port.

Close LCD Smartie for now. We need another plugin to display the information from Kodi that we want: XBMC4LCDSmartie. Download it from its Codeplex site and unzip the file. Copy XBMC4LCDSmartie.dll and Newtonsoft.Json.dll to the LCD Smartie “plugins” folder. In the LCD Smartie folder, use Windows Notepad to open the “LCDSmartie.exe.config” file and add the following code just below <configuration>:

<appSettings>
<add key="XBMC4LCDSmartie.Host" value="localhost"/>
<add key="XBMC4LCDSmartie.Port" value="9090"/>
<add key="XBMC4LCDSmartie.RefreshInt" value="300"/>
<add key="XBMC4LCDSmartie.XBMCTestMode" value="TCP"/>
</appSettings>

Save the changes and close the file. Open config.ini in Notepad and verify the following settings:

[Communication Settings]
DisplayDLLName=lisvfd.dll
DisplayDLLParameters=COM3,38400
Baudrate=6
COMPort=3
USBPalm=0
ParallelPort=888
HDAlternativeAddressing=0
HDKS0073Addressing=0
HDTimingMultiplier=1
MX3USB=0
HTTPProxy=
HTTPProxyPort=0
RemoteHost=localhost

Then, under [General Settings], verify that LCDType=7

Save any changes and close Notepad. Now, open Kodi and navigate to Settings>Network>General and change the Device Name to “XBMC”. Scroll down to “Webserver” and make sure that “Allow control of Kodi via HTTP” is enabled. The port should be 80, username should be XBMC, and password should be blank. Leave web interface at default. Scroll down to “Remote Control” and enable the switch to “Allow programs on this system to control Kodi”.

Open the setup window in LCD Smartie once again, and type the following into lines 1 and 2 of the “Screens settings” section:

Line 1: $dll(XBMC4LCDSmartie.dll,3,System.CurrentWindow,1)
Line 2: $dll(XBMC4LCDSmartie.dll,3,System.CurrentControl,1)

Make sure that “Don’t scroll this line” is checked for both lines. Check the box next to “Enabled” as well and disable all the other screens by selecting them in the “Screen” counter and unchecking “Enabled” on them one-by-one. This will serve as our test bed. Click the “Apply” button and, if Kodi is running, the LCD should display the current screen and menu selection. Navigate through some menu items and verify that everything works correctly.

Alternatively, you may get an error message that says something to the effect of “MSVCR71.dll is missing”. To fix this, we need to grab the 32-bit version of the Microsoft.net 1.1 patch to fill in some missing libraries. Close LCD Smartie, download and run the installer from the link above, follow the installer’s instructions, and re-open LCD Smartie. Everything should work fine now.

To get LCD Smartie to run at startup, use the Task Scheduler to run an instance at log on. Make sure the task starts hidden and runs with the highest privileges.

This is the most basic setup for Kodi-specific output. The XBMC4LCDSmartie documentation has a wealth of information on programming specific screens and output on which I will elaborate later. For now, though, congratulations! You have a working LCD powered by output from Kodi!

How To Add Netflix and Hulu to Kodi

NOTE: This article generally applies to Windows machines; however, Linux machines have been addressed in the comments.

Netflix and Hulu are two of the most popular streaming services on the market today, offering thousands of titles on demand and leading the cord-cutting charge against cable’s content monopoly. Unfortunately, neither service has offered official, dedicated plugins for one of the most popular home theatre software applications available. While plugins like NetfliXBMC and Bluecop’s Hulu plugin exist, they tend to be sketchy in quality and often broken. In this number, I’m going to explain how to add Netflix and Hulu to Kodi using a web browser.

To me, the best HTPC Netflix or Hulu experience (outside a dedicated app such as the ones for Xbox 360) comes from the services’ own websites. The only drawback to this is having to hang onto a wireless keyboard and trackpad combination, but it’s a small nuisance that can eventually be rectified with some clever hackery (more on that in a later article).

To launch the respective website from Kodi, we’re going to use Firefox with the Advanced Launcher plugin. Firefox supports command-line controls, so it will be perfect for our needs. Inside Advanced Launcher, right-click or press C on the keyboard to call up the context menu. Click “Manage Sources” to bring up the source manager screen. Select “Add Source” and “Browse” when the source window appears. Select the root folder for your hard drive, then click “OK”. Press backspace to return to Advanced Launcher.

Back in Advanced Launcher, create a new category and call it “Firefox Links”. Inside the new category, choose “Standalone Launcher” and browse to the Firefox executable located on your hard drive. In the next window, you will need to enter the following command-line arguments to load Netflix automatically when Firefox runs:

-fullscreen -new-window http://www.netflix.com

Press Return and then you will be prompted to name your launcher. “Netflix” seems like a reasonable choice (unless, of course, you are launching Hulu or another service). Press Return again and you will be prompted to select the platform that your application runs on.

On the following screens, you will be prompted to browse for a path where thumbnails and fanart is stored. This is unimportant, so you can browse to an empty folder or a placeholder if you wish. In the Aeon MQ5 skin, you will be able to select custom artwork for these menu items later.

After selecting the artwork locations, the launcher is officially completed. I’ve taken it a step further and added a custom macro in EventGhost that disables closes Firefox with a particular keypress on the remote or the Escape key on the keyboard, seamlessly returning to Kodi.

Pro Tip: If you add your launchers to you “Favourites” list, you will be able to add custom menu options for them on the Aeon MQ5 home screen. Under the “Settings” menu, choose “Customise Main Menu” and add them to any open slots!