Re: Joystick with keyboard, mouse and joystick endpoints disconnects after 3-4 seconds

From: Jason Bacon <bacon4000_at_gmail.com>
Date: Tue, 18 Jan 2022 21:53:57 UTC
Are you running webcamd?

I had a similar problem with a USB gamepad I use for controlling Lego 
robots over bluetooth some years ago and learned that webcamd isn't just 
for webcams anymore, but grabs other kinds of HIDs.

On 1/18/22 09:21, Jan Mikkelsen wrote:
> Hi,
> 
> When attaching an APEM VM Desktop joystick, https://www.apem.com/int/vm-desktop-93.html, to a 12.2 system, I get this sequence of events:
> 
> ugen0.10: <CH Products VM Desktop> at usbus0
> uhid0 numa-domain 0 on uhub2
> uhid0: <VM Joystick Interface> on usbus0
> uhid1 numa-domain 0 on uhub2
> uhid1: <VM Keyboard Interface> on usbus0
> uhid2 numa-domain 0 on uhub2
> uhid2: <VM Mouse Interface> on usbus0
> ugen0.10: <CH Products VM Desktop> at usbus0 (disconnected)
> uhid0: at uhub2, port 5, addr 19 (disconnected)
> uhid0: detached
> uhid1: at uhub2, port 5, addr 19 (disconnected)
> uhid1: detached
> uhid2: at uhub2, port 5, addr 19 (disconnected)
> uhid2: detached
> 
> The disconnection happens about 3-4 seconds after the attachment completes.
> 
> The device has three endpoints: A mouse, a keyboard and a joystick. I have added quirks to have ums and ukbd ignore the device, so that uhid attaches. I believe that mouse and keyboard endpoints on the same device are not currently supported.
> 
> The output from “usbconfig dump_all_desc” is shown below.
> 
> Any ideas on where to look to resolve this?
> 
> Thanks,
> 
> Jan M.
> 
> 
> ugen0.10: <CH Products VM Desktop> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)
> 
>    bLength = 0x0012
>    bDescriptorType = 0x0001
>    bcdUSB = 0x0200
>    bDeviceClass = 0x0000  <Probed by interface class>
>    bDeviceSubClass = 0x0000
>    bDeviceProtocol = 0x0000
>    bMaxPacketSize0 = 0x0008
>    idVendor = 0x068e
>    idProduct = 0x0064
>    bcdDevice = 0x0200
>    iManufacturer = 0x0001  <CH Products>
>    iProduct = 0x0002  <VM Desktop>
>    iSerialNumber = 0x0000  <no string>
>    bNumConfigurations = 0x0001
> 
>   Configuration index 0
> 
>      bLength = 0x0009
>      bDescriptorType = 0x0002
>      wTotalLength = 0x005b
>      bNumInterfaces = 0x0003
>      bConfigurationValue = 0x0001
>      iConfiguration = 0x0000  <no string>
>      bmAttributes = 0x0080
>      bMaxPower = 0x00fa
> 
>      Interface 0
>        bLength = 0x0009
>        bDescriptorType = 0x0004
>        bInterfaceNumber = 0x0000
>        bAlternateSetting = 0x0000
>        bNumEndpoints = 0x0002
>        bInterfaceClass = 0x0003  <HID device>
>        bInterfaceSubClass = 0x0000
>        bInterfaceProtocol = 0x0000
>        iInterface = 0x0005  <VM Joystick Interface>
> 
>        Additional Descriptor
> 
>        bLength = 0x09
>        bDescriptorType = 0x21
>        bDescriptorSubType = 0x11
>         RAW dump:
>         0x00 | 0x09, 0x21, 0x11, 0x01, 0x21, 0x01, 0x22, 0x4b,
>         0x08 | 0x00
> 
>       Endpoint 0
>          bLength = 0x0007
>          bDescriptorType = 0x0005
>          bEndpointAddress = 0x0082  <IN>
>          bmAttributes = 0x0003  <INTERRUPT>
>          wMaxPacketSize = 0x0040
>          bInterval = 0x000a
>          bRefresh = 0x0000
>          bSynchAddress = 0x0000
> 
>       Endpoint 1
>          bLength = 0x0007
>          bDescriptorType = 0x0005
>          bEndpointAddress = 0x0001  <OUT>
>          bmAttributes = 0x0003  <INTERRUPT>
>          wMaxPacketSize = 0x0040
>          bInterval = 0x000a
>          bRefresh = 0x0000
>          bSynchAddress = 0x0000
> 
> 
>      Interface 1
>        bLength = 0x0009
>        bDescriptorType = 0x0004
>        bInterfaceNumber = 0x0001
>        bAlternateSetting = 0x0000
>        bNumEndpoints = 0x0001
>        bInterfaceClass = 0x0003  <HID device>
>        bInterfaceSubClass = 0x0000
>        bInterfaceProtocol = 0x0000
>        iInterface = 0x0004  <VM Keyboard Interface>
> 
>        Additional Descriptor
> 
>        bLength = 0x09
>        bDescriptorType = 0x21
>        bDescriptorSubType = 0x11
>         RAW dump:
>         0x00 | 0x09, 0x21, 0x11, 0x01, 0x21, 0x01, 0x22, 0x3f,
>         0x08 | 0x00
> 
>       Endpoint 0
>          bLength = 0x0007
>          bDescriptorType = 0x0005
>          bEndpointAddress = 0x0083  <IN>
>          bmAttributes = 0x0003  <INTERRUPT>
>          wMaxPacketSize = 0x0008
>          bInterval = 0x000a
>          bRefresh = 0x0000
>          bSynchAddress = 0x0000
> 
> 
>      Interface 2
>        bLength = 0x0009
>        bDescriptorType = 0x0004
>        bInterfaceNumber = 0x0002
>        bAlternateSetting = 0x0000
>        bNumEndpoints = 0x0001
>        bInterfaceClass = 0x0003  <HID device>
>        bInterfaceSubClass = 0x0000
>        bInterfaceProtocol = 0x0000
>        iInterface = 0x0003  <VM Mouse Interface>
> 
>        Additional Descriptor
> 
>        bLength = 0x09
>        bDescriptorType = 0x21
>        bDescriptorSubType = 0x11
>         RAW dump:
>         0x00 | 0x09, 0x21, 0x11, 0x01, 0x21, 0x01, 0x22, 0x34,
>         0x08 | 0x00
> 
>       Endpoint 0
>          bLength = 0x0007
>          bDescriptorType = 0x0005
>          bEndpointAddress = 0x0084  <IN>
>          bmAttributes = 0x0003  <INTERRUPT>
>          wMaxPacketSize = 0x0008
>          bInterval = 0x000a
>          bRefresh = 0x0000
>          bSynchAddress = 0x0000
> 
> 
> 


-- 
Life is a game.  Play hard, play fair, and have fun...