30. Why do you not use the Linux kernel HID driver when communicating with USB UPSes?

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 benefit more from a native HID approach.