Skip to content

getActiveUsbConfiguration returns null #21

@hamzeen

Description

@hamzeen

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:
      private UsbConfiguration getUsbConfiguration() {
        UsbConfiguration config = null;

        if (usbDevice == null) {
          LOGGER.warn("The usbDevice is null!");
          return null;
        }

        synchronized (usbDevice) {
          config = usbDevice.getActiveUsbConfiguration();
          if (config != null) {
            return config;
          }

          List<UsbConfiguration> configs = getUsbDevice().getUsbConfigurations();
          if (!configs.isEmpty()) {
            for (UsbConfiguration temp : configs) {
              LOGGER.debug("UsbConfiguration:: {} \tis active: {} \tdevice: {}", 
                 temp.toString(), temp.isActive(), temp.getUsbDevice());
            }
            config = configs.get(0);
          }
          return config;
        }
      }

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:

    1. getActiveUsbConfiguration() also returns null.
    2. 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: Pipe is not active.

I have 2 questions:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions