A week ago I wrote about what a user-space USB driver is and how they work great on macOS and Linux, but not on Windows.

Today I started working on two user-space USB drivers for Node.js. The first one is for the Prolific PL2303 chipset. We have quite a few diabetes devices at Tidepool that make use of the PL2303, like the IR dongles used by the Animas pumps. When using this driver there is no kernel extensionon required on macOS anymore, and you can connect directly to the device over USB.

The PL2303 driver code was originally written by a former CTO of Mozilla, Andreas Gal. He co-founded an IoT company (Silk Labs), so my guess is that he wrote this driver for one of his IoT experiments, as it's on his personal GitHub profile. Silk Labs have now pivoted from IoT to embedded AI, so I doubt he is interested in maintaining his code. I've forked his repo and started adding some improvements, like specifying the baud rate. I also want to publish this as an NPM package.

In addition, I started working on a Silicon Labs CP2102 user-space driver for Node.js today. And once that works, I'm planning on porting my WebUSB Texas Instruments 3410 USB driver over to Node.js as well. User-space drivers FTW!