hardkernel / linux

Linux kernel source tree
Other
426 stars 406 forks source link

USB CDC Device crash the N2 and N2+ xHCI usb controller #402

Open rpineau opened 3 years ago

rpineau commented 3 years ago

I have a usb device that crash the internal xHCI usb controller as soon as it gets plugged in :

[ 435.179267] usb 1-1.2: new full-speed USB device number 4 using xhci-hcd [ 435.303498] usb 1-1.2: not running at top speed; connect to a high speed hub [ 435.304302] usb 1-1.2: New USB device found, idVendor=15a2, idProduct=a50f [ 435.304310] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 435.304315] usb 1-1.2: Product: Celestron Focuser [ 435.304320] usb 1-1.2: Manufacturer: Celestron [ 435.304324] usb 1-1.2: SerialNumber: MF_v1 [ 435.317659] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device [ 442.040985] xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command. [ 442.040992] xhci-hcd xhci-hcd.0.auto: Assuming host is dying, halting host. [ 442.057064] xhci-hcd xhci-hcd.0.auto: Host not halted after 16000 microseconds. [ 442.057071] xhci-hcd xhci-hcd.0.auto: Non-responsive xHCI host is not halting. [ 442.057076] xhci-hcd xhci-hcd.0.auto: Completing active URBs anyway. [ 442.057237] xhci-hcd xhci-hcd.0.auto: HC died; cleaning up [ 442.057603] usb 1-1: USB disconnect, device number 2 [ 442.057624] usb 2-1: USB disconnect, device number 2 [ 442.058430] usb 1-1.2: USB disconnect, device number 4 [ 442.064007] usb 1-2: USB disconnect, device number 3

I tested with the following kernel on both N2 and N2+ : 4.9.230-76 4.9.230-96 4.9.236-97

I tried with an external powered usb hub on the front USB3 ports and on the USB2 OTG port. Same crash (different usb tree id). This is the device :

Bus 001 Device 004: ID 15a2:a50f Freescale Semiconductor, Inc. Celestron Focuser Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 2 Communications bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x15a2 Freescale Semiconductor, Inc. idProduct 0xa50f bcdDevice 0.00 iManufacturer 1 Celestron iProduct 2 Celestron Focuser iSerial 3 MF_v1 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0043 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 1 AT-commands (v.25ter) iInterface 0 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 bDataInterface 1 CDC ACM: bmCapabilities 0x00 CDC Union: bMasterInterface 0 bSlaveInterface 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 16 bNumConfigurations 1 can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0003 Self Powered Remote Wakeup Enabled

I tested another USB CDC device and no problem so this device does something the kernel doesn't like.