Reputation: 429
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