I just published version 1.3.0 of usb4java with the following changes:
* Updated to libusb 1.0.22.
* Added support for the aarch64 (ARM 64 bit) linux platform.
* Added new libusb functions to the low-level API: setOption,
devMemAlloc, devMemFree, interruptEventHandler, getPollfds
* Added missing SPEED_SUPER_PLUS constant to low-level API.
* Deprecated setDebug method. Use setOption with the OPTION_LOG_LEVEL
* Dropped support for 32 bit Mac OS because Apple no longer supports
it in latest Xcode.
* Renamed os and architecture identifiers to the naming conventions of
the JNA project. So the platforms are now named: linux-x86,
linux-x86-64, linux-arm, linux-aarch64, darwin-x86-64, win32-x86 and
* Added useUSBDK setting in configuration file of high-level API.
This flag must be set to true to enable USBDK support on Windows.
Aside from the new useUSBDK flag the high-level API has not been changed
but still benefits from bug fixes in the newer libusb.
The artifacts are available in the central Maven repository and can also
be downloaded manually from Github:
I also want to give some status update of the project:
usb4java is not dead but it is also not really well maintained. In the
last few years my work environment has completely shifted from Java to
in the USB business at all. So I did not use usb4java myself for years
and everyone here using usb4java right now probably has more experience
with USB than I currently have. So I can't really give useful answers
to USB related questions. Sorry for that.
I hope I still find some time and motivation to keep the software up to
date but I really need help here. So feel free to submit pull requests
with bug fixes or new features.
The high-level API (javax.usb, JSR-80) will most likely not see any
updates from me anymore (But I still appreciate pull requests). In my
opinion JSR-80 is completely dead. I keep the current implementation
because there is no reason to remove it, so if it works for you then
keep using it but otherwise I strongly recommend to use the low-level
API which directly translates the libusb API to Java giving you full
So if you have problems with the high-level API please consider
switching to the low-level API. And if you have problems with the
low-level API and you have experience with C programming then I strongly
advice to try to reproduce the problem with libusb directly in C. If it
works with libusb but not with usb4java then open a bug report on github
with the working C code and the failing Java code. But if you have the
same problem with libusb in C directly then I suggest you get support
from the much more active libusb mailing list instead.
So, that's it for now. Thank you, and have a very safe and productive day.
Klaus Reimer <http://www.ailis.de/~k/
[2FC4 CCA0 C03B 1E5F 1ACC 94D6 6461 426C E734 75A1]