I was working with the VCR today when, after a reboot, all the USB ports went dead. After much consternation (and a little bit of cussing), I was able to determine a solution.
Fortunately, I already had TeamViewer installed, so jacking in remotely was a snap. Without any kind of remote access, this process would be nigh impossible since the entirety of input devices are USB.
Navigate to Control Panel -> Hardware and Sound -> Device Manager (listed under Devices and Printers).
The last item in the tree should be Universal Serial Bus Controllers.
Expand the USB Controller branch to expose the list of USB devices connected to the computer.
Right-click and uninstall each of the listings, thus removing it from the system. One or more of the controller drivers was likely corrupted and removing all of them will ensure a clean installation.
Reboot and allow Windows 7 to recognise and reinstall all the connected USB devices. Everything should work like new again!
More information on this problem as well as other solutions can be found here.
I have to admit, I haven’t used Windows on a machine that I own since 2006 when Microsoft wanted me to pay for a new license for the copy of Windows XP Pro that I legally purchased as an upgrade to the same computer I had been using since 2002. Microsoft–to put it mildly, and in plain terms–royally pissed me off that day, and I swore off their products for what might have seemed forever. I switched to Ubuntu 6.06 and became an instant fan of Linux, reliving some of my youth spent digging around in MS-DOS and writing lines upon lines of code. I ran various flavours of Linux for years all the while staying sure of myself that I could run anything just as well as I could with Windows.
In 2010, that all came crashing down–literally–when a bookshelf fell from the wall in my tenement apartment and crushed my laptop. I did the best I could to revive it, but the hardware was circling the drain. It was time for a new computer. I bought a MacBook Pro.
I’m a fan of OSX at its core level. The system is based on UNIX (“It’s a UNIX system. I know this!”), so it’s sorta like Linux…except that it just works. No muss, no fuss, and no compatibility issues that need to be sorted. I’ve been happily using OSX going on 5 years now, but for the VCR, I was not going to attempt the foolhardy pursuit of building a hackintosh. Ubuntu proved very capable in building a functioning software suite, but when I got to the higher end of the project’s performance envelope–namely in areas regarding emulation–Ubuntu’s OpenGL processing was simply falling short.
Finally, for the first time in nearly a decade, I have installed Windows as a primary operating system on a machine that I own. Thankfully, I missed the Vista era (as Vista is to 7 what ME was to XP), and in my experimenting with Windows 8 at my day job, I knew that tiled monstrosity wouldn’t see day one on my network! Windows 8 is a jumbled mess that can’t decide if it’s going to be for desktops or tablets, showing the shortcomings of both and the advantages of neither. Even the 8.1 upgrade still managed to take away a lot of the core functionality that I would rely on for the VCR. For this reason, I took the plunge and bought a copy of Windows 7 Home Premium.
So far, the $99 price tag has shown its value against my open-source mistress in the gaming realm, allowing me to play my entire games library without complex compatibility layers or other desenrascanço. I can even purchase new games from Steam and Good Old Games to go along with the hundreds of titles I already own! There are a few key functionality options in Windows that one does not enjoy in Ubuntu as well. The case in point: EventGhost. Ubuntu does have an ability to program macros to various events in the OS, but only in Windows is there a GUI that walks you through setup quickly and easily.
The bottom line: Linux is fantastic and an unbeatable bargain for the price (free), but for the foreseeable future when you need a little extra multimedia support, it’s worth dropping a Benjamin to get DirectX.
Windows 7 does a pretty decent job of sealing itself off from the wild and the wooly of the Interweb with its built-in firewall, but sometimes you have an application running that needs to interact with the outside world: a game or an FTP server, perhaps. In order for these applications to work correctly, you’re going to need to punch a hole in your firewall by adding an exception to Windows Firewall.
First, open Windows Firewall settings from the System and Security settings in the Control Panel.
In the left sidebar, click “Allow a program of feature through Windows Firewall”
Choose the program from the list and check the box to the left to allow an exception. Check the boxes to the right to specify which networks the exception is allowed on.
If your application does not appear on the list, click the “Allow another program…” button in the lower left, and either highlight the program from the list or browse for the executable file, then click the “Add” button. (NOTE: for FileZilla Server, make sure that “FileZilla server.exe” is given the exception NOT “FileZilla server interface.exe”)
WinLIRC, unlike its Linux-based sibling, is a finicky priss to get working. I tried to follow the setup guide on their website, but it was getting late and I could no longer make heads or tails of what they were trying to convey. Starting fresh this morning, I took to futzing around with the settings until I had it working correctly.
When you first run WinLIRC, you will get this error message off the bat:
Okay, I haven’t even defined a configuration, so obviously nothing’s going to work! Thanks, WinLIRC! Click “OK” and you’ll be taken to the main Setup window.
10 In the top section, choose the Input Plugin that is compatible with your remote. Since I’m using the SIIG Vista MCE Remote, I’m going to choose one of the MCEVista* plugins, and since my copy of Windows is 64-bit, I need the MCEVIsta64.dll plugin to drive my remote.
Click “OK” at the bottom, and you will likely get this message:
So, how do you get it to work? The trick is that you can’t simply right-click->”Run as administrator”. Oh, no! You have to edit the properties so that it runs at elevated privileges all the time!
In the Properties dialog, click the “Compatibility” tab, and, at the bottom, don’t simply check “Run this program as administrator”. Click the button underneath that says “Change settings for all users”. THEN check “Run this program as administrator”!
Try running WinLIRC again and you should see the system tray icon come up and you should no longer get the dreaded “Error Window of Doom”.
Now that you have WinLIRC properly configured and receiving signals from your remote, you’re going to need some way to parse those signals into useful commands….
Now that we’ve learned the secret to getting WinLIRC to run correctly, it’s time to decode those signals into commands that Windows can use. To do this, we’re going to use a powerhouse automation tool that is unique to Windows called EventGhost.
EventGhost is a plugin-extensible application that takes input from any myriad of devices or programs and, through the use of a simple IF/THEN programming setup (think IFTTT), calls the desired response within Windows, a particular application, or even connected devices.
Getting the VCR remote set up in EventGhost was more of a headache than I anticipated, and required a lot of scanning fora and a little noodling to get working correctly. However, once I found the proper combination of versions, plugins, and conditions, it’s working like a champ!
First, you have to download and install EventGhost. At the time of this writing, the newest version (0.4.1.r1700, released 4 Mar 2015) seems to be the culprit behind my inability to get the plugins working, so make sure you go with (as of right now) v0.4.1.r1694, released 27 Jan 2015. If there is development between now and the time you’re working on this, just bear this tip in mind if the latest version does not seem to be working.
When you first run EventGhost, there will be quite a bit of detritus that you won’t likely need already programmed as examples. Disable or delete everything in the Configuration Tree except “Volume Control”
The default configuration tree.
To enable remote control commands, you must activate the MCE Remote plugin. To add the plugin, choose “Add Plugin…” from the “Configuration” menu.
Select “Microsoft MCE Remote” from the list.
Do not install the version marked for Vista/Win7 as it is rather finicky and difficult to work with, requiring the installation of an alternate MCE IR service that is buggier than that scene in Temple of Doom.
Pictured: Attempting to work with AlternateMceIrService in Windows 7 (CREDIT: LucasFilm)
The settings for this plugin will allow you to set a custom button release timeout, which will be handy if your system is registering multiple button presses from your remote. I have mine set to 0.75 seconds, which seems to be just enough time. Play around with this setting to find something that works for you.
Additionally, the settings dialog will prompt you to disable HID service for the remote. You do not need to do this except under special circumstances. The HID service in Windows 7 works fine.
Test to make sure that the correct button presses are being registered in the left sidebar. If they are, congratulations! Your remote is now working in Windows and you can customise buttons to your heart’s content!
Windows 7 brought some badly-needed security features to Microsoft’s flagship operating system, but with this new power came one minor setback: the ability to autorun programs with elevated privileges on startup. Instead of adjusting our overall security settings to not bother us requesting elevated privileges (a bad idea), we’re going to use the Task Scheduler tool to automate these tasks.
Locate the Task Scheduler by typing its name in the search box on the Start Menu. In the “Action” menu, click “Create Task…” (NOT“Create Basic Task…”)
In the “Create Task” window, give the task a name. For example, let’s use EventGhost. Make sure to select “Run only when user is logged on” and “Run with highest privileges” and to choose your correct version of Windows from the “Configure for” dropdown.
In the “Triggers” tab, click the “New…” button. Chose to begin the task “At log on” and select for “Any user”. Make sure no other options are checked besides “Enabled” and click OK.
In the “Actions” tab, click “New…” and make sure that “Start a program” is selected from the dropdown menu. Browse for your application executable (EventGhost.exe), add any arguments (if applicable), then click “OK”.
In the “Conditions” tab, nothing should be checked (unless you have a very specific case). Finally, in the “Settings” tab, check the options as they are in the screenshot below and click “OK”.
Your application should now execute automatically when you reboot!
Since the VCR project is centered around Kodi/XBMC, I have no need for Microsoft’s default media suite. To wit, I would prefer not to have it pop up if I accidentally bump the big green button on my remote control (and, consequently, be able to use said button for a different function), so I need to disable Windows Media Center.
Disabling Windows components has gotten much easier since Windows XP. Microsoft has built in a dialog that allows certain “required” components such as Internet Explorer to be removed from the OS (or, at least, hidden from view and disabled). To reach this menu, click on the “Programs” link in the Control Panel, then click the “Turn Windows features on or off” link.
Allow the list to populate, then uncheck the box next to “Media Features”. This will remove Windows Media Center, Windows Media Player, and Windows DVD Maker. Uncheck any other boxes you might want to rid yourself while you’re there. Click the “OK” button and Windows will remove the deselected components.
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.
To 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”.
In 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.
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>:
<add key="XBMC4LCDSmartie.Host" value="localhost"/>
<add key="XBMC4LCDSmartie.Port" value="9090"/>
<add key="XBMC4LCDSmartie.RefreshInt" value="300"/>
<add key="XBMC4LCDSmartie.XBMCTestMode" value="TCP"/>
Save the changes and close the file. Open config.ini in Notepad and verify the following settings:
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.
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!
As the VCR Project has been coming along, I’ve been looking to see what features I could add to make the system more robust. Since the system also serves as a repository for all my media, I needed a way to be able to access the system remotely in case it was powered down. Wake on LAN (WoL) is a useful protocol that will wake a system from hibernation upon receipt of a special information packet sent to it. Enabling it in Windows 7 is a simple process of flipping a few software switches.
Firstly, we have to make sure that Wake on LAN is enabled on the Ethernet adapter. Do this by right-clicking the adapter icon in the System Tray, and opening the Network and Sharing Center. In the left sidebar, click “Change adapter settings”. Right-click your Ethernet adapter and click “Properties,” then click on the “Configure” button.
Under the “Advanced” tab, select “Wake on Magic Packet,” and select “Enabled” from the drop-down menu under “Value.”
Under the “Power Management” tab, make sure all three boxes are checked.
Click the “OK” button to close, then head back to the Control Panel for program settings. In the “Programs and Features” dialog, click “Turn Windows Features On or Off” from the left sidebar.
Install Simple TCPIP Services by checking the box next to it and clicking the “OK” button.
To activate the service, open the Start Menu and type “Services” into the search box and press Enter.
Highlight “Simple TCP/IP Services” in the list and click “Start” to activate the service.
We still have to punch a hole through the firewall to get the service to work, so open the Windows Firewall settings from the “System and Security” list in the Control Panel. Then, select “Advanced settings” from the left sidebar.
Highlight “Inbound Rules” from the tree on the left, and click “New Rule…” under “Actions”.
Select “Port” from the list in the wizard, then specify UDP protocol and port 9. The rest of the settings can be left at their defaults for now. Give your rule a name that’s easy to remember, and click “Finish”.
Finally, make sure that Wake on LAN is enabled in the BIOS settings and forward requests for port 9 to the correct internal IP address in your router.
To use the WoL feature that you’ve just enabled, you will need a piece of software to send the packet. There are dozens of free applications and websites to do this, but each one needs three specific pieces of information: