50 likes | 187 Vues
This project involves creating a USB card scanner driver that facilitates scanning FSU cards using a USB card reader. The scanner generates keystrokes and must maintain focus in the correct text box at all times. We developed a userspace program leveraging libusb or PyUSB, requiring root privileges. The driver is built upon insights from the obsolete usbkbd driver and includes a new implementation for reading the card scanner. Challenges included managing USB probe order and adapting to the limitations of the kernel’s buffer model.
E N D
Patrick Tully Steven Bronson USB Card Scanner Driver
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?)