No Windows Drivers? Boot Up A Linux VM!

[Voltagex] was fed up with BSODs on his Windows machine due to a buggy PL2303 USB/serial device driver. The Linux PL2303 driver worked just fine, though. A weakling would simply reboot into Linux. Instead, [Voltagex] went for the obvious workaround: create a tiny Linux distro in a virtual machine, route the USB device over to the VM where the drivers work, and then Netcat the result back to Windows.

OK, not really obvious, but a cool hack. Using Buildroot, a Linux system cross-compilation tool, he got the size of the VM down to a 32Mb memory footprint which runs comfortably on even a small laptop. And everything you need to replicate the VM is posted up on Github.

Is this a ridiculous workaround? Yes indeed. But when you’ve got a string of tools like that, or you just want an excuse to learn them, why not? And who can pass up a novel use for Netcat?

46 thoughts on “No Windows Drivers? Boot Up A Linux VM!

  1. Awesome trick!

    I’ve been using netcat for years on old SCO systems so they can print to networked laser printers. It’s kind of a swiss army knife of useful networking utilities.

    1. Same, and not a single driver needed to be installed.

      But in this case it’s probably the whole “clone” PL2303 thing, the official Prolific drivers can detect clone chips and the drivers refuse to initialise them.

      1. No it’s not about “fake” chips. The PL2303 driver sucks AAAAAAAAAAASS. It causes BSODs from time to time with me too, on W7. One way to cause BSOD is for example having arduino serial monitor monitoring traffic from an arduino board (that actually sends data) and closing the serial monitor, then trying to monitor with another serial monitor program, that does not have the same settings like instead of speed being 9600, the second monitor program has 19200 or any other setting is different. BSOMFD. Atleast for me, that’s a BSOD every time.

        1. Well that does indeed suck, I’ll stick to my Fedora PC then… I have KVM/Qemu running on my Debian server with a Windows VM for the odd occasion I need Windows which is becoming less and less these days.

    1. I use this, a bit pricey but it’s based on an ATMega 32U2 instead of a PL or FTDI chip, it just works in Linux and Mac, requires an INF file be installed in Windows, and a nice bonus is they included an ICSP header so it can be reprogrammed or even reused as an ATMega 32U2 dev board.
      Other nice bits are the 3.3/5v switch, and extra pin headers incase you decide to reprogram it for other jobs.

      http://www.freetronics.com.au/products/usb-serial-adapter
      Yes, they are 10x the price of eBay clones but it’s a solid little device that can be upgraded and hacked.

  2. Interesting… I had a similar problem with Windows and ended up using an dual ARM board as the bridge. I thought the drivers need to be functional on Windows before Virtual Box would “latch” onto it?

  3. Creative non the less but couldn’t he just find a different version of the PL230x drivers? For my Baofeng programing cables (that probably use knockoff chips they were so cheap) they have archives of the 3.2.0.0 driver. Never had a problem with it over the newer 3.6.x drivers. For me first step would be researching the problem, rolling back drivers, then thinking about rolling a linux-vm-netcat solution.

    Hmmm. My hammer seems to be broken. I wonder if I have an older hammer laying ’round. Wait I got it. Here is a chunk of metal and a monkey wrench. That will work.

    1. I’m travelling and without my full set of bits and pieces. The PL2303 chip is soldered to another cable here and I’m not in a position to replace it. The older Windows drivers caused instability for me.

    2. You can only go so far back on “restrictive” Windows 8 or higher. It’s a damn pain in the ass if the drivers aren’t signed to Windows satisfaction.

      Microsoft is clenching their asses so tight even many of the hardware using Microsofts “stock” drivers need to be signed.

    3. I have to agree. I’ve used a PL2303 based cable for years on many different computers and never had a problem with it. The only thing that would make sense is that I’ve been using the same driver on all of them, saved to a USB stick I carry with me all the time. I primarily use it to connect to switch and firewall console ports.

    1. LybreOffice compatibility, GPU drivers, and some hardware can still be a pain… I still do a google search for driver support problems prior to purchasing a laptop or printer.

      However, a customized Linux Mint install has just about everything I wanted for workstations.

      The adware free version of Windows (no we won’t upgrade to Windows 10-foot-poll edition even for free) run Solidworks for the resident engineer/complainer. Linux is for power users… MacOS is for consumers… and Windows OS is making Microsoft redundant.

    1. They must be doing a very poor job detecting fake chips. Only 1 out of 8 fake chips so far I have works great with the latest Windows drivers. The fact that they requires external crystal and they were $0.10 a piece (I bought them a few years back) are signs that they are fake chips.

  4. Never had any bsods with fake pl2303 and ftdi, you have to check drivers versions, latest ftdi drivers killed fake ftdi chip (some bytes where written in the eprom, they were recoverables), i think it was the same for pl2303 …

    I use ch340 based adapters, and genuine ftdi chips, no probs in windows up to 10 32 or 64 bits

    Good hack but way to complicated for me.

  5. I wonder if you could make the VM even smaller by using OSv. OSv is a unikernel implementation that allows you to basically have a VM with kernel + software to run, and very little else, and can work with standard POSIX software.

  6. unrelated but,
    a long time ago i i ran xboxhdm in a vm on xp with direct access to ide 1 and did the hotswap trick to hack an original xbox while reading the step by step online all on the same physical machine without powering down, i got lucky i didnt ground the two together i think xbox was floating ground and pc earth ground? at the time no one else had tried it

Leave a Reply to JCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.