Getting older drivers to work in Windows 8
Windows 8 has hit RTM status, and if you’re anything like me you’ll be making plans now to set it up as your main desktop OS. (I still don’t like the interface formerly known as Metro, but all the other good stuff in there has, on balance, won me over.)
In most cases this shouldn't be too much of an upheaval, because Windows 8 works just fine with device drivers originally designed for Windows 7. But I've had a surprising degree of trouble getting one of my older devices – an Edirol UA-4FX USB audio interface – to work.
No driver found
At first, I wasn’t sure what I’d done wrong. The Edirol Windows 7 driver installer package ran happily, but when I plugged in the device, Windows 8 insisted it couldn’t find a driver (as pictured above). Manually searching, and pointing Windows to the appropriate directory, didn’t help.
A quick look inside the driver’s INF file revealed the problem. Ordinarily, if an INF file doesn’t contain installation information specifically for Windows 8, the operating system will simply use the directions for Windows 7 instead. In this case, however, I was surprised to see that the INF file explicitly indicated that that no driver should be installed for Windows 8. Here are the relevant sections of the file (NTamd64.6.1 and NTamd64.6.2 being the internal names of the 64-bit editions of Windows 7 and 8 respectively):
Well, you might think, there’s doubtless a reason for that. Sometimes things break between different versions of an operating system, and you don’t want people installing drivers that don’t work.
But the strange thing is that this driver was published way back in 2009 – so there’s no way it could had ever been tested under Windows 8. I can only assume that the developers decided to prevent it from being installed on future versions of the OS just to rule out any possibility of future problems.
Tweaking the INF file
Such caution may be good engineering practice, but I was frustrated. I felt sure the driver ought to work in the new OS – if I could only find a way to install it. Happily, removing the prohibition on installing under Windows 8 wasn’t difficult. A few keystrokes in Notepad, to switch around the references to NTamd64.6.1 and NTamd64.6.2, was enough to persuade Windows 8 to find and start installing the driver when I plugged in my UA-4FX
The driver had been digitally signed to guarantee its integrity
Immediately, though, a new problem arose: the driver was now rejected owing to a "hashing error". This indicated that the driver had been digitally signed to guarantee its integrity – meaning it would refuse to install if the INF file (or any other part) had been tampered with. A nice catch-22 situation for me.
I briefly wondered if there might be an easy way of forging a new signature, but of course the whole point of signatures is that there isn’t. Then a simple workaround occurred to me: I went back into the INF file and removed the reference in the header to the CAT file containing the driver’s cryptographic details. Now the driver wasn’t signed at all.
Installing unsigned drivers
Problem solved? Not quite. The driver installation procedure no longer complained about hashing problems: but it did abort the operation as soon as it spotted that the driver was unsigned. Ah yes: as a new security measure in Windows 8, unsigned drivers are automatically blocked.
Happily, there’s a way round this problem too. If you go to the Advanced Startup app in Windows 8, you can choose to reboot the computer with Advanced Startup options enabled. You’ll then be given the opportunity to boot into various troubleshooting modes, including Safe Mode, Debugging Mode and the snappily-named "Disable Driver Signature Enforcement" mode.
When I booted up in this mode I was at last able to install my tweaked Edirol UA-4FX driver – which, to my great relief, turned out to work perfectly. I was then able to reboot back into the regular, safer, signature-enforcing mode, and enjoy both driver security and sound.
Of course, there's no guarantee that all drivers will be so amenable to tweaking, or that they’ll work flawlessly under Windows 8. But hopefully something from this experience may prove useful to you.
At any rate, it’s somehow reassuring to find that even in Microsoft’s latest operating system – which was supposed to be all about slick touch controls and graphical user experiences – it’s still possible for us tinkerers, when we run into a technical problem, to get stuck in and fix it ourselves.
Postscript: an easier solution
Later a possible easier workaround occurred to me. Windows 8 is compatible with drivers written for Vista, as well as for Windows 7: so, as an experiment, I tried downloading and installing the 64-bit Vista driver for my Edirol device. This older INF file (dated 2007) didn’t include any special restrictions for Windows 8, and because no editing was required, there was no need to remove the digital signature and boot into a special mode to get it working. Of course, a five-year-old driver may not support all the features and full performance of a more up-to-date version, but it's a useful confirmation that if you need to get an older device working, Vista drivers could do the trick.