When the usbhid-ups
was first written, it replaced an older driver hidups
which used the Linux kernel USB HID API. At the time, the kernel HID API could
not distinguish between identical Usage IDs that were nested in different
parent IDs, so many common measurements were not available from hidups
. For
this reason, the libusb approach was chosen, which has the added side effect
of being more portable than the Linux HID API. The Linux hiddev device nodes
have very similar permissions problems as the /dev/bus/usb
nodes that the
libusb approach uses.
Due to difficulties in running libusb on OS X and Windows, those platforms might actually benefit more from a native HID approach.