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 |