Scubapro Aladin Square
Linus Torvalds
torvalds at linux-foundation.org
Tue Nov 14 12:14:59 PST 2017
On Tue, Nov 14, 2017 at 12:02 PM, vavincavent <vavincavent at gmail.com> wrote:
> I do : vincent at ASUS-R558UV:~/src/subsurface/build$ sudo tshark -i
> usbmon1 -s 256 -w /tmp/usb.pcap
> Running as user "root" and group "root". This could be dangerous.
> Capturing on 'usbmon1'
> 3794 ^C
>
> then connecting the square
> then testing download
> then : vincent at ASUS-R558UV:~/src/subsurface/build$ sudo udevadm control
> --reload-rules
> then : testing downlod
> then stop tshark
Thanks.
And now I see:
Frame 2637: 95 bytes on wire (760 bits), 95 bytes captured (760
bits) on interface 0
USB URB
[Source: host]
[Destination: 1.62.2]
URB id: 0xffff97a01200d3c0
URB type: URB_SUBMIT ('S')
URB transfer type: URB_INTERRUPT (0x01)
Endpoint: 0x02, Direction: OUT
Device: 62
URB bus id: 1
Device setup request: not relevant ('-')
Data: present (0)
URB sec: 1510689518
URB usec: 339270
URB status: Operation now in progress (-EINPROGRESS) (-115)
URB length [bytes]: 31
Data length [bytes]: 31
[Response in: 2638]
[bInterfaceClass: HID (0x03)]
Unused Setup Header
Interval: 8
Start frame: 0
Copy of Transfer Flags: 0x00000000
Number of ISO descriptors: 0
Leftover Capture Data: 011000000000000000000000000000000000000000000000...
which is what I see with my G2 too. Thanks to getting the earlier
packets, it shows that bInterfaceClass etc correctly, and I see the
endpoints too (they are in the opposite order from the G2 - your IN
endpoint is #1, and out is #2)
But still no actual reply.
How about you disable that report byte code removal that I pointed out
to Jef, in src/usbhid.c:
// Skip a report id of zero.
unsigned char report = buffer[0];
if (report == 0) {
buffer++;
length--;
}
and basically disable the report byte games by doing
unsigned char report = 1;
instead of reading "buffer[0]".
(or alternatively, just remove the code, but then remember to also
remove this part:
if (report == 0) {
nbytes++;
}
which fakes out nbytes).
Maybe your version of libusb really wants that zero report byte like
hidapi does. Or maybe it's that the device really really wants to see
at least 32 bytes of data (the odd Windows thing sends out 33 bytes,
which is really odd, but whatever).
Linus
More information about the subsurface
mailing list