Henk Schurink
Henk Schurink

Reputation: 429

usb4java: Unable to submit control message: Input/Output Error

I am trying to replicate the following URB_CONTROL packet which I captured with Wireshark:

0000   80 87 11 fe f2 8a ff ff 53 02 00 02 03 00 00 00  ........S.......
0010   05 30 25 5b 00 00 00 00 1c 84 02 00 8d ff ff ff  .0%[............
0020   08 00 00 00 08 00 00 00 21 09 b3 02 02 00 08 00  ........!.......
0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0040   b3 23 00 00 00 00 00 00

However, I am getting an exception:

Exception in thread "main" javax.usb.UsbPlatformException: USB error 1: Unable to submit control message: Input/Output Error
    at org.usb4java.javax.ExceptionUtils.createPlatformException(ExceptionUtils.java:39)
    at org.usb4java.javax.AbstractIrpQueue.processControlIrp(AbstractIrpQueue.java:229)
    at org.usb4java.javax.ControlIrpQueue.processIrp(ControlIrpQueue.java:41)
    at org.usb4java.javax.ControlIrpQueue.processIrp(ControlIrpQueue.java:18)
    at org.usb4java.javax.AbstractIrpQueue.process(AbstractIrpQueue.java:104)
    at org.usb4java.javax.AbstractIrpQueue$1.run(AbstractIrpQueue.java:73)
    at java.base/java.lang.Thread.run(Thread.java:844)

I am using the following Java code:

UsbDevice mouse = findDevice(UsbHostManager.getUsbServices().getRootUsbHub(), (short) 0x1EA7, (short) 0x002d);
mouse.getActiveUsbConfiguration().getUsbInterface((byte) 1).claim(new UsbInterfacePolicy() {
    public boolean forceClaim(UsbInterface usbInterface) {
        return true;
    }
});
UsbControlIrp irp = mouse.createUsbControlIrp((byte) 0x21, (byte) 9, (short) 0x02b3, (short) 0x0002);
irp.setData(new byte[] {(byte) 0xb3, 0x20, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00});
// Exception happens in statement under here.
mouse.syncSubmit(irp);

Any idea what might cause it? I've searched online but no results.

Upvotes: 1

Views: 366

Answers (0)

Related Questions