Completely re-implemented with libusb.