[Bug 261989] USB Joystick disconnects every three seconds

From: <bugzilla-noreply_at_freebsd.org>
Date: Mon, 21 Feb 2022 08:10:29 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=261989

--- Comment #13 from Jan Martin Mikkelsen <janm@transactionware.com> ---
Looking more closely at the Windows trace today, I see another big difference.
Windows is polling the device every 10-15ms. I missed that on Friday because I
thought it was just the device generating data, not responding to a host
message.

Looking at the code for other USB input devices (eg. ums.c, uep.c, wsp.c) there
is code to set up polling. That does not seem to be there for a plain HID
device.

Poll:

USB URB
    [Source: host]
    [Destination: 1.3.2]
    USBPcap pseudoheader length: 27
    IRP ID: 0xffffffff85bf5198
    IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
    URB Function: URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER (0x0009)
    IRP information: 0x00, Direction: FDO -> PDO
    URB bus id: 1
    Device address: 3
    Endpoint: 0x82, Direction: IN
        1... .... = Direction: IN (1)
        .... 0010 = Endpoint number: 2
    URB transfer type: URB_INTERRUPT (0x01)
    Packet Data Length: 0
    [Response in: 47]
    [bInterfaceClass: HID (0x03)]

0000   1b 00 98 51 bf 85 ff ff ff ff 00 00 00 00 09 00
0010   00 01 00 03 00 82 01 00 00 00 00

Response:

Frame 47: 38 bytes on wire (304 bits), 38 bytes captured (304 bits)
USB URB
    [Source: 1.3.2]
    [Destination: host]
    USBPcap pseudoheader length: 27
    IRP ID: 0xffffffff85bf5198
    IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
    URB Function: URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER (0x0009)
    IRP information: 0x01, Direction: PDO -> FDO
    URB bus id: 1
    Device address: 3
    Endpoint: 0x82, Direction: IN
        1... .... = Direction: IN (1)
        .... 0010 = Endpoint number: 2
    URB transfer type: URB_INTERRUPT (0x01)
    Packet Data Length: 11
    [Request in: 45]
    [Time from request: 0.010000000 seconds]
    [bInterfaceClass: HID (0x03)]
HID Data: ff1fff1fff1f0800000000
    0001 1111  1111 1111 = X Axis: 8191
    0001 1111  1111 1111 = Y Axis: 8191
    0001 1111  1111 1111 = Z Axis: 8191
    0000 1000 = Rz Axis: 8
    .... ...0 = Button: 1 (primary/trigger): UP
    .... ..0. = Button: 2 (secondary): UP
    .... .0.. = Button: 3 (tertiary): UP
    .... 0... = Button: 4: UP
    ...0 .... = Button: 5: UP
    ..0. .... = Button: 6: UP
    .0.. .... = Button: 7: UP
    0... .... = Button: 8: UP
    .... ...0 = Button: 9: UP
    .... ..0. = Button: 10: UP
    .... .0.. = Button: 11: UP
    .... 0... = Button: 12: UP
    ...0 .... = Button: 13: UP
    ..0. .... = Button: 14: UP
    .0.. .... = Button: 15: UP
    0... .... = Button: 16: UP
    .... ...0 = Button: 17: UP
    .... ..0. = Button: 18: UP
    .... .0.. = Button: 19: UP
    .... 0... = Button: 20: UP
    ...0 .... = Button: 21: UP
    ..0. .... = Button: 22: UP
    .0.. .... = Button: 23: UP
    0... .... = Button: 24: UP
    .... ...0 = Button: 25: UP
    .... ..0. = Button: 26: UP
    .... .0.. = Button: 27: UP
    .... 0... = Button: 28: UP
    ...0 .... = Button: 29: UP
    Padding: 00

0000   1b 00 98 51 bf 85 ff ff ff ff 00 00 00 00 09 00
0010   01 01 00 03 00 82 01 0b 00 00 00 ff 1f ff 1f ff
0020   1f 08 00 00 00 00

-- 
You are receiving this mail because:
You are the assignee for the bug.