The Issue:
Sporadically we run into an issue where usbDevice.getActiveUsbConfiguration(); returns null.
The code was run on a virtual machine. Mostly, this issue occurs when the program is started on a PC without hardware & then the session is switched to a PC with the hardware.
tried the following:
- list the usb devices using
hub.getAttachedUsbDevices() - If the usb interface is still claimed, then release the usb interface
- finally:
privateUsbConfigurationgetUsbConfiguration() {
UsbConfigurationconfig = null;
if (usbDevice == null) {
LOGGER.warn("The usbDevice is null!");
returnnull;
}
synchronized (usbDevice) {
config = usbDevice.getActiveUsbConfiguration();
if (config != null) {
returnconfig;
}
List<UsbConfiguration> configs = getUsbDevice().getUsbConfigurations();
if (!configs.isEmpty()) {
for (UsbConfigurationtemp : configs) {
LOGGER.debug("UsbConfiguration:: {} \tis active: {} \tdevice: {}", temp.toString(), temp.isActive(), temp.getUsbDevice());
}
config = configs.get(0);
}
returnconfig;
}
}This is what we observe, when the above code runs following the issue:
in the first step, we see the device we need to communicate.
once we are in the last step to get a USB Configuration:
getActiveUsbConfiguration() also returns null.- Further down, when we loop through
getUsbConfigurations() we can get hold of a UsbConfiguration. However, when we try to claim the usbInterface again, we end up with the following exception:
java.util.concurrent.CompletionException: javax.usb.UsbNotActiveException: Pipeisnotactive.
I have 2 questions:
The Issue:
Sporadically we run into an issue where
usbDevice.getActiveUsbConfiguration();returns null.The code was run on a virtual machine. Mostly, this issue occurs when the program is started on a PC without hardware & then the session is switched to a PC with the hardware.
tried the following:
hub.getAttachedUsbDevices()This is what we observe, when the above code runs following the issue:
in the first step, we see the device we need to communicate.
once we are in the last step to get a USB Configuration:
getActiveUsbConfiguration()also returns null.getUsbConfigurations()we can get hold of aUsbConfiguration. However, when we try toclaimthe usbInterface again, we end up with the following exception:I have 2 questions: