On Tue, Feb 09, 2021 at 10:00:24PM +0100, Rafael Sadowski wrote:
> On Tue Feb 09, 2021 at 01:58:25PM +0100, Marcus Glocker wrote:
> > On Tue, Feb 09, 2021 at 08:28:05AM +0100, Marcus Glocker wrote:
> >
> > > On Mon, Feb 08, 2021 at 05:03:34PM +0100, Rafael Sadowski wrote:
> > >
> > > > On Mon Feb 08, 2021 at 12:32:54PM +0100, Marcus Glocker wrote:
> > > > > On Mon, Feb 08, 2021 at 07:20:21AM +0100, Rafael Sadowski wrote:
> > > > >
> > > > > > Since a few days aka. snapshots I see the following error message
> > > > > > after
> > > > > > boot:
> > > > > >
> > > > > > uhidev_clear_iface_eps: clear endpoints failed!
> > > > > > uhidev_clear_iface_eps: clear endpoints failed!
> > > > > > uhidev_clear_iface_eps: clear endpoints failed!
> > > > > >
> > > > > > I have a "TESmart 4 Port HDMI KVM Switch 4K@60Hz 4:4:4 Ultra HD"
> > > > > > which
> > > > > > also support switching USB for keyboard and mouse between different
> > > > > > devices. When I switch it off and on again I see this:
> > > > > >
> > > > > > wsmouse0 detached
> > > > > > ums0 detached
> > > > > > uhid0 detached
> > > > > > uhidev0 detached
> > > > > > wskbd1: disconnecting from wsdisplay0
> > > > > > wskbd1 detached
> > > > > > ukbd0 detached
> > > > > > uhidev1 detached
> > > > > > wsmouse1 detached
> > > > > > ums1 detached
> > > > > > uhidev2 detached
> > > > > > uhub2 detached
> > > > > > uhub2 at uhub0 port 6 configuration 1 interface 0 "Terminus
> > > > > > Technology USB 2.0 Hub" rev 2.00/1.11 addr 2
> > > > > > uhidev0 at uhub2 port 2 configuration 1 interface 0
> > > > > > "??\^D??\^A?????????\^A????\^A?6??\^E?? " rev 2.00/0.01 addr 3
> > > > > > uhidev0: iclass 3/1
> > > > > > ukbd0 at uhidev0: 8 variable keys, 6 key codes
> > > > > > wskbd1 at ukbd0 mux 1
> > > > > > uhidev_clear_iface_eps: clear endpoints failed!
> > > > > > wskbd1: connecting to wsdisplay0
> > > > > > uhidev1 at uhub2 port 2 configuration 1 interface 1
> > > > > > "??\^D??\^A?????????\^A????\^A?6??\^E?? " rev 2.00/0.01 addr 3
> > > > > > uhidev1: iclass 3/1, 1 report id
> > > > > > ums0 at uhidev1 reportid 1: 3 buttons, Z dir
> > > > > > wsmouse0 at ums0uhidev_clear_iface_eps: clear endpoints failed!
> > > > > > mux 0
> > > > > > uhidev2 at uhub2 port 1 configuration 1 interface 0 "MOSART Semi.
> > > > > > 2.4G Wireless Mouse" rev 1.10/81.13 addr 4
> > > > > > uhidev2: iclass 3/1, 5 report ids
> > > > > > ums1 at uhidev2 reportid 3: 5 buttons, Z and W dir
> > > > > > wsmouse1 at ums1 mux 0
> > > > > > uhid0 at uhidev2 reportid 5: input=5, output=6, feature=0
> > > > > >
> > > > > > My mouse works after connecting but my keyboard is completely dead.
> > > > > > (KVM
> > > > > > ist fine other devices work properly=) I would be happy if I could
> > > > > > test
> > > > > > a diff.
> > > > >
> > > > > Can you please send me an lsusb -v of your failing keyboard?
> > > > >
> > > >
> > > > Bus 000 Device 001: ID 8086:0000 Intel Corp.
> > > > Bus 000 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
> > > > Bus 000 Device 003: ID 062a:4102 Creative Labs
> > > > Bus 000 Device 004: ID 0c45:7403 Microdia Foot Switch
> > > > Bus 001 Device 001: ID 8086:0000 Intel Corp.
> > > >
> > > >
> > > > Bus 000 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
> > > > Device Descriptor:
> > > > bLength 18
> > > > bDescriptorType 1
> > > > bcdUSB 2.00
> > > > bDeviceClass 9 Hub
> > > > bDeviceSubClass 0 Unused
> > > > bDeviceProtocol 1 Single TT
> > > > bMaxPacketSize0 64
> > > > idVendor 0x1a40 Terminus Technology Inc.
> > > > idProduct 0x0101 4-Port HUB
> > > > bcdDevice 1.11
> > > > iManufacturer 0
> > > > iProduct 1 USB 2.0 Hub
> > > > iSerial 0
> > > > bNumConfigurations 1
> > > > Configuration Descriptor:
> > > > bLength 9
> > > > bDescriptorType 2
> > > > wTotalLength 25
> > > > bNumInterfaces 1
> > > > bConfigurationValue 1
> > > > iConfiguration 0
> > > > bmAttributes 0xe0
> > > > Self Powered
> > > > Remote Wakeup
> > > > MaxPower 100mA
> > > > Interface Descriptor:
> > > > bLength 9
> > > > bDescriptorType 4
> > > > bInterfaceNumber 0
> > > > bAlternateSetting 0
> > > > bNumEndpoints 1
> > > > bInterfaceClass 9 Hub
> > > > bInterfaceSubClass 0 Unused
> > > > bInterfaceProtocol 0 Full speed (or root) hub
> > > > iInterface 0
> > > > Endpoint Descriptor:
> > > > bLength 7
> > > > bDescriptorType 5
> > > > bEndpointAddress 0x81 EP 1 IN
> > > > bmAttributes 3
> > > > Transfer Type Interrupt
> > > > Synch Type None
> > > > Usage Type Data
> > > > wMaxPacketSize 0x0001 1x 1 bytes
> > > > bInterval 12
> > > > Hub Descriptor:
> > > > bLength 9
> > > > bDescriptorType 41
> > > > nNbrPorts 4
> > > > wHubCharacteristic 0x0000
> > > > Ganged power switching
> > > > Ganged overcurrent protection
> > > > TT think time 8 FS bits
> > > > bPwrOn2PwrGood 50 * 2 milli seconds
> > > > bHubContrCurrent 100 milli Ampere
> > > > DeviceRemovable 0x00
> > > > PortPwrCtrlMask 0xff
> > > > Hub Port Status:
> > > > Port 1: 0000.0103 power enable connect
> > > > Port 2: 0000.0103 power enable connect
> > > > Port 3: 0000.0100 power
> > > > Port 4: 0000.0100 power
> > > > Device Qualifier (for other device speed):
> > > > bLength 10
> > > > bDescriptorType 6
> > > > bcdUSB 2.00
> > > > bDeviceClass 9 Hub
> > > > bDeviceSubClass 0 Unused
> > > > bDeviceProtocol 0 Full speed (or root) hub
> > > > bMaxPacketSize0 64
> > > > bNumConfigurations 1
> > > > Device Status: 0x0001
> > > > Self Powered
> > > >
> > > > > Furthermore, does the keyboard initially work after boot, and only
> > > > > fails after your KVM Switch restart, or does the keyboard fail
> > > > > straight away after boot?
> > > >
> > > > Yes the keyboard initially work after a fresh boot and only fails after
> > > > my
> > > > KVM Switch restart. When it fails a reboot helps.
> > >
> > > Hmm, I can't see anything obvious. Though it seems like your mouse
> > > and keyboard are hidden between the KVM Switch. When you attach
> > > the mouse and keyboard directly to that machine, do you still get
> > > the uhidev_clear_iface_eps() error?
> >
> > Also can you please run this debug diff and send me the results?
> >
> >
> > Index: uhidev.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/usb/uhidev.c,v
> > retrieving revision 1.86
> > diff -u -p -u -p -r1.86 uhidev.c
> > --- uhidev.c 4 Feb 2021 16:18:34 -0000 1.86
> > +++ uhidev.c 9 Feb 2021 12:56:45 -0000
> > @@ -974,30 +974,38 @@ uhidev_clear_iface_eps(struct uhidev_sof
> > uint8_t xfertype;
> > int i;
> >
> > + printf("%s: ENTER\n", __func__);
> > +
> > /* Only clear interface endpoints when none are in use. */
> > - if (sc->sc_ipipe || sc->sc_opipe)
> > + if (sc->sc_ipipe || sc->sc_opipe) {
> > + printf("%s: out0\n", __func__);
> > return;
> > - DPRINTFN(1,("%s: clear interface eps\n", __func__));
> > + }
> >
> > id = usbd_get_interface_descriptor(iface);
> > - if (id == NULL)
> > - goto bad;
> > + if (id == NULL) {
> > + printf("%s: out1\n", __func__);
> > + return;
> > + }
> >
> > for (i = 0; i < id->bNumEndpoints; i++) {
> > ed = usbd_interface2endpoint_descriptor(iface, i);
> > - if (ed == NULL)
> > - goto bad;
> > + if (ed == NULL) {
> > + printf("%s: out2\n", __func__);
> > + return;
> > + }
> >
> > xfertype = UE_GET_XFERTYPE(ed->bmAttributes);
> > if (xfertype == UE_BULK || xfertype == UE_INTERRUPT) {
> > if (usbd_clear_endpoint_feature(sc->sc_udev,
> > - ed->bEndpointAddress, UF_ENDPOINT_HALT))
> > - goto bad;
> > + ed->bEndpointAddress, UF_ENDPOINT_HALT)) {
> > + printf("%s: clear EP failed on EP=0x%02x\n",
> > + __func__, ed->bEndpointAddress);
> > + }
> > }
> > }
> > - return;
> > -bad:
> > - printf("%s: clear endpoints failed!\n", __func__);
> > +
> > + printf("%s: EXIT\n", __func__);
> > }
> >
> > int
>
> Sure, full dmesg after fresh boot:
Thank you. Can you please run the same while plugin the keyboard/mouse
directly to the host? I would like to understand whether the issue is
caused by the switch or naively by your device.