I often use FreeBSD (www.freebsd.org) based systems for development and have contributed changes to the system on and off over many years including kernel, ports collection and user programs. Recently I have spent more time working with USB devices and have found support for these devices to be less than desirable on FreeBSD. In this section of my site I am providing code that I have created to help drive some of the devices that I have encountered.
To aid the development and use of USB devices on FreeBSD I have contributed
a patch to the FreeBSD kernel usb/122819
that introduces a new quirks table to the kernel that can be dynamically
changed. To use the dymanic quirks table quirks are added to the system
environment using either kenv or loader.conf.
An example of a quirk is the one used for the
Velleman K8055:
usb.quirk.0="0x10cf 0x5502 0xffff UHID_IGNORE"
and the Jam Panic Button:
usb.quirk.1="0x1130 0x0202 0xffff UHID_IGNORE"
The string contains the vendor id, followed by the product id, the revision and
the quirk required. A revision of 0xffff matches any revision.
Quirks added via kenv are detected by calling a new ioctl
USB_SETDYNQUIRKS an example program usbquirksload
is included in the patch.
![]() |
Velleman K8055 USB Experiment Board | Vendor: 0x10cf Product: 0x5502 |
![]() |
Jam USB Panic Button | Vendor: 0x1130 Product: 0x0202 |
![]() |
Dream Cheeky USB Pedometer | Vendor: 0x04f3 Product: 0xa003 |