USB Card Scanner Driver Patrick Tully Steven Bronson Motivation Monitors in Majors Lab scan FSU cards using a USB card reader USB card reader generates keystrokes Program must have focus at all times, in the correct textbox Pre-existing Projects Read from /dev/usb/hiddev Only works for the USB HID card scanner Write a userspace program using libusb or PyUSB Requires root privileges each time Depends on deprecated (obsolete?) usbfs Contribution Used a small part (boilerplate) of the usbkbd driver as a starting point. Most of the work went into implementing read, which did not exist in usbkbd. Create /dev/cardscanner that can be opened and read. Challenges USB probe order Determined by module insertion order Fixed with USB quirks Kernel circular buffer implementation is not really Record API makes more sense, but Unix loves byte streams (why pass records when you can design ambiguous grammars?)