If you are an OS X user, you know that a new OS has come out. New OS upgrades are always shiny, but also come with some level of risk. I have an old MacBook that had been running the Yosemite beta, so I wasn’t too worried about upgrading my primary laptop when the Yosemite final was released. All was fine and dandy until I was onsite and couldn’t console into a router because my ATEN USB to serial adapter wasn’t working…
I’ve been using this particular model of adapter for a long time. They have had the occasional driver issue, but they’ve been good and reliable overall, so I was surprised when I tried to open the device it wasn’t present. This was odd, but I immediately realized it probably had to do with the OS upgrade. No problem, I’ll just reinstall the driver, problem solved!
Not so much. The device still wasn’t loading. At this point, I’m becoming concerned. I ran Console and saw this error when I plugged in my USB adapter:
10/30/14 14:32:09.553 com.apple.kextd: ERROR: invalid signature for com.prolific.driver.PL2303, will not load
Well, that’s not good. After a bit of searching, I discover that it’s Windows Vista all over again. Well, it’s not actually that bad, but it did remind me of a behavior change in Vista that required all drivers to be signed with a trusted signature. Apparently, Mavericks has been helpfully logging warnings about this, but since nothing had stopped working, I guess no one did anything to fix it. Now with Yosemite, all kernel extensions must be signed or they won’t load. No problem, I’ll just install the updated driver!
Not so much. The device driver is the same as the one I already have. Fortunately, I’d already found the workaround. With Windows Vista, you could hit F8 at boot and boot in a dev mode that allowed any driver to load. You had to do that every time you booted. Fortunately, with Mac you only need to run this command once and reboot, after which it’s set:
sudo nvram boot-args="kext-dev-mode=1"
After rebooting, I found that I had to manually load the kext the first time, but it seems to have been auto-loading ever since. To manually load the kext:
sudo kextload /System/Library/Extensions/ProlificUsbSerial.kext
If you check your logs, you’ll see its back to a warning when the kext is loaded:
11/12/14 19:12:41.747 com.apple.kextd: kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext "/System/Library/Extensions/ProlificUsbSerial.kext"
More importantly, you’ll have your device working and can finally fix that router you’re supposed to be fixing…