Until NUT release 2.7.4 the only option to build NUT drivers for
USB connectivity was to use libusb-0.1 or a distribution’s variant
of it; the original Sun Solaris releases and later related systems
provided their customized version for example (packaged originally
as SUNWlibusbugen
, SUNWugen{,u}
and SUNWusb{,s,u,vc}
).
However, libusb-0.1 consuming programs had some stability issues reported when running with long-term connections to devices (such as an UPS), especially when using USB hubs and chips where hardware vendors had cut a few corners too many, which were addressed in a newer rewrite of the library as libusb-1.0.
Subsequently as at least the illumos-based distributions evolved to include the new library and certain patches for it, and the library itself matured, the NUT project also added an ability to build with libusb-1.0 either directly or using its 0.1-compat API.
Currently this is not part of the common codebase and thus tagged releases, but is experimented in several competing GitHub branches until one gets chosen as the best to integrate:
If your "standard" build of NUT has problems connecting to your USB UPS, consider building one of those branches using the recent library available for your distribution.
In this context, note the OpenIndiana libusb-1 package pull requests with code which was successfully used when developing this documentation:
Binaries from builds made in OpenIndiana using the recipe from PR #5382 above were successfully directly used on contemporary OmniOS CE as well.