Plugable USB 3.0 I/O Card not working on 2.6.31 kernel

Plugable USB 3.0 I/O CARD, featuring a native NEC Express host controller chipset, SuperSpeed USB doesn’t get recognized on 2.6.31 linux kernel. Error message “no SuperSpeed companion descriptor”

/lib/modules/2.6.31/usb # insmod xhci.ko
xhci_hcd 0000:00:00.0: xHCI Host Controller
xhci_hcd 0000:00:00.0: new USB bus registered, assigned bus number 2
xhci_hcd 0000:00:00.0: irq 64, io mem 0x10000000
usb usb2: config 1 interface 0 altsetting 0 endpoint 0x81 has no SuperSpeed companion descriptor
usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: xHCI Host Controller
usb usb2: Manufacturer: Linux 2.6.31 xhci_hcd
usb usb2: SerialNumber: 0000:00:00.0
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 4 ports detected
/lib/modules/2.6.31/usb #

/lib/modules/2.6.31/usb # cat /proc/bus/pci/devices
0000 10330194 40 10000004 0

Hi muglilanrp,

Thanks for posting your question here. Linux compatibility is improving all the time and with newer Kernels, the PCI-E USB3.0 card can be expected to work much more easily. However, with an older Kernel version such as 2.6.31 it is going to require extensive customization and potentially Kernel rebuilds.

Is it possible to update your Kernel version?

Hope this helps,
Jerome.

Hi Jerome,

Thanks for the quick reply.

It is not possible to update our kernel version. Reason being a product been used by huge customer base.

Ours is a MIPS based product which uses 2.6.31 kernel. Basically we are trying to validate USB3.0 through our PCIe interface with Plugable USB3.0 I/O Card.

I tried few experiments with Plugable USB 3.0 I/O Card.

  1. It worked with AMD Based COMPAQ laptop using Ubuntu and kernel 3.0. The I/O card is detected as well the storage device connected to it.
  2. I tried backporting 2.6.39 usb core/host drivers to 2.6.31 but did not help. The xHCI driver properly detects the I/O Card but not the storage device that is connected.

In few of the forums, I had seen that is doesn’t work on Big-Endian systems. Is it true? http://kerneltrap.org/mailarchive/lin…

I am ready to get into extensive customization and kernel builds with patches or source reworks. Could you kindly help.

Now Additionally I get this error message with 2.6.31 kernel along with the log posted previously:
xhci_hcd 0000:00:00.0: Timeout while waiting for a slot
hub 1-0:1.0: couldn’t allocate port 3 usb_device

Thanks,
Mughilan

Hi Muglihan,

It’s good to hear that the card you are using works with Ubunutu and the 3.0 kernel. Thanks for doing those experiments so we can rule out any hardware errors. As far as troubleshooting the MIPS processor and the 2.6.31 Kernel, we don’t have that setup here so we have limited help to offer. By all means, though, keep us posted on your progress!!!

Thanks,
Jerome.

Hi Jerome,

I back ported usb core and usb host drivers from 3.0 kernel to my 2.6.31 kernel. At least I am able to enumerate the device properly. Except for enumeration, I am unable to use the device functionally. But still one huge leap.

I need to backport the usb storage drivers. Could you please check the logs if by any chance you had experience this case. It throws some BOGUS and short transfer warnings

Logs:
/lib/modules/2.6.31/usb # insmod usbcore.ko
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
/lib/modules/2.6.31/usb # insmod xhci-hcd.ko
xhci_hcd 0000:00:00.0: xHCI Host Controller
xhci_hcd 0000:00:00.0: new USB bus registered, assigned bus number 1
xhci_hcd 0000:00:00.0: irq 64, io mem 0x10000000
xhci_hcd 0000:00:00.0: Failed to enable MSI-X
xhci_hcd 0000:00:00.0: failed to allocate MSI entry
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: xHCI Host Controller
usb usb1: Manufacturer: Linux 2.6.31 xhci_hcd
usb usb1: SerialNumber: 0000:00:00.0
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
xhci_hcd 0000:00:00.0: xHCI Host Controller
xhci_hcd 0000:00:00.0: new USB bus registered, assigned bus number 2
usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: xHCI Host Controller
usb usb2: Manufacturer: Linux 2.6.31 xhci_hcd
usb usb2: SerialNumber: 0000:00:00.0
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
/lib/modules/2.6.31/usb # usb 1-1: new high speed USB device number 2 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
usb 1-1: New USB device found, idVendor=0bc2, idProduct=3001
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: FreeAgent
usb 1-1: Manufacturer: Seagate
usb 1-1: SerialNumber: 2GEVY17N
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
usb 1-2: new high speed USB device number 3 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
usb 1-2: New USB device found, idVendor=0781, idProduct=5567
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-2: Product: Cruzer Blade
usb 1-2: Manufacturer: SanDisk
usb 1-2: SerialNumber: 200535505302B670AF6F

/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb # insmod usb-storage.ko
Initializing USB Mass Storage driver…
scsi0 : SCSI emulation for USB Mass Storage devices
scsi1 : SCSI emulation for USB Mass Storage devices
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
/lib/modules/2.6.31/usb # usb 1-1: BOGUS urb flags, 20c --> 204
usb 1-1: BOGUS urb flags, c --> 4
usb 1-2: BOGUS urb flags, 20c --> 204
usb 1-2: BOGUS urb flags, c --> 4
usb 1-1: reset high speed USB device number 2 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec720
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec74c
usb 1-1: BOGUS urb flags, c --> 4
usb 1-2: reset high speed USB device number 3 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec480
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec4ac
usb 1-2: BOGUS urb flags, c --> 4
usb 1-1: reset high speed USB device number 2 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec720
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec74c
usb 1-1: BOGUS urb flags, c --> 4
usb 1-2: reset high speed USB device number 3 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec480
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec4ac
usb 1-2: BOGUS urb flags, c --> 4
usb 1-1: reset high speed USB device number 2 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec720
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec74c
usb 1-1: BOGUS urb flags, c --> 4
usb 1-2: reset high speed USB device number 3 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec480
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec4ac
usb 1-2: BOGUS urb flags, c --> 4
usb 1-1: reset high speed USB device number 2 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec720
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec74c
usb 1-2: reset high speed USB device number 3 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec480
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec4ac

/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #

DMESG:

/lib/modules/2.6.31/usb # dmesg
g segment 0x1d2c000 to segment 0x1d2c000 (DMA)
xhci_hcd 0000:00:00.0: Wrote link toggle flag to segment 81d9f740 (virtual), 0x1d2c000 (DMA)
xhci_hcd 0000:00:00.0: add ep 0x81, slot id 2, new drop flags = 0x0, new add flags = 0x8, new slot info = 0x18300000
xhci_hcd 0000:00:00.0: Allocating ring at 81cdd3a0
xhci_hcd 0000:00:00.0: Allocating priv segment structure at 81d9f700
xhci_hcd 0000:00:00.0: // Allocating segment at a1d2c400 (virtual) 0x1d2c400 (DMA)
xhci_hcd 0000:00:00.0: Linking segment 0x1d2c400 to segment 0x1d2c400 (DMA)
xhci_hcd 0000:00:00.0: Wrote link toggle flag to segment 81d9f700 (virtual), 0x1d2c400 (DMA)
xhci_hcd 0000:00:00.0: add ep 0x2, slot id 2, new drop flags = 0x0, new add flags = 0x18, new slot info = 0x20300000
xhci_hcd 0000:00:00.0: xhci_check_bandwidth called for udev 81cd4000
xhci_hcd 0000:00:00.0: New Input Control Context:
xhci_hcd 0000:00:00.0: @a1d49000 (virt) @01d49000 (dma) 0x000000 - drop flags
xhci_hcd 0000:00:00.0: @a1d49004 (virt) @01d49004 (dma) 0x19000000 - add flags
xhci_hcd 0000:00:00.0: @a1d49008 (virt) @01d49008 (dma) 0x000000 - rsvd2[0]
xhci_hcd 0000:00:00.0: @a1d4900c (virt) @01d4900c (dma) 0x000000 - rsvd2[1]
xhci_hcd 0000:00:00.0: @a1d49010 (virt) @01d49010 (dma) 0x000000 - rsvd2[2]
xhci_hcd 0000:00:00.0: @a1d49014 (virt) @01d49014 (dma) 0x000000 - rsvd2[3]
xhci_hcd 0000:00:00.0: @a1d49018 (virt) @01d49018 (dma) 0x000000 - rsvd2[4]
xhci_hcd 0000:00:00.0: @a1d4901c (virt) @01d4901c (dma) 0x000000 - rsvd2[5]
xhci_hcd 0000:00:00.0: Slot Context:
xhci_hcd 0000:00:00.0: @a1d49020 (virt) @01d49020 (dma) 0x003020 - dev_info
xhci_hcd 0000:00:00.0: @a1d49024 (virt) @01d49024 (dma) 0x000400 - dev_info2
xhci_hcd 0000:00:00.0: @a1d49028 (virt) @01d49028 (dma) 0x000000 - tt_info
xhci_hcd 0000:00:00.0: @a1d4902c (virt) @01d4902c (dma) 0x000000 - dev_state
xhci_hcd 0000:00:00.0: @a1d49030 (virt) @01d49030 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d49034 (virt) @01d49034 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d49038 (virt) @01d49038 (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: @a1d4903c (virt) @01d4903c (dma) 0x000000 - rsvd[3]
xhci_hcd 0000:00:00.0: Endpoint 00 Context:
xhci_hcd 0000:00:00.0: @a1d49040 (virt) @01d49040 (dma) 0x000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d49044 (virt) @01d49044 (dma) 0x26004000 - ep_info2
xhci_hcd 0000:00:00.0: @a1d49048 (virt) @01d49048 (dma) 0x1d8de0100000000 - deq
xhci_hcd 0000:00:00.0: @a1d49050 (virt) @01d49050 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d49054 (virt) @01d49054 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d49058 (virt) @01d49058 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4905c (virt) @01d4905c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 01 Context:
xhci_hcd 0000:00:00.0: @a1d49060 (virt) @01d49060 (dma) 0x000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d49064 (virt) @01d49064 (dma) 0x000000 - ep_info2
xhci_hcd 0000:00:00.0: @a1d49068 (virt) @01d49068 (dma) 0x000000 - deq
xhci_hcd 0000:00:00.0: @a1d49070 (virt) @01d49070 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d49074 (virt) @01d49074 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d49078 (virt) @01d49078 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4907c (virt) @01d4907c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 02 Context:
xhci_hcd 0000:00:00.0: @a1d49080 (virt) @01d49080 (dma) 0x000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d49084 (virt) @01d49084 (dma) 0x36000002 - ep_info2
xhci_hcd 0000:00:00.0: @a1d49088 (virt) @01d49088 (dma) 0x1c0d20100000000 - deq
xhci_hcd 0000:00:00.0: @a1d49090 (virt) @01d49090 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d49094 (virt) @01d49094 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d49098 (virt) @01d49098 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4909c (virt) @01d4909c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 03 Context:
xhci_hcd 0000:00:00.0: @a1d490a0 (virt) @01d490a0 (dma) 0x000100 - ep_info
xhci_hcd 0000:00:00.0: @a1d490a4 (virt) @01d490a4 (dma) 0x16000002 - ep_info2
xhci_hcd 0000:00:00.0: @a1d490a8 (virt) @01d490a8 (dma) 0x1c4d20100000000 - deq
xhci_hcd 0000:00:00.0: @a1d490b0 (virt) @01d490b0 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d490b4 (virt) @01d490b4 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d490b8 (virt) @01d490b8 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d490bc (virt) @01d490bc (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: // Ding dong!
xhci_hcd 0000:00:00.0: Completed config ep cmd
usb 1-2: Successful Endpoint Configure command
xhci_hcd 0000:00:00.0: Output context after successful config ep cmd:
xhci_hcd 0000:00:00.0: Slot Context:
xhci_hcd 0000:00:00.0: @a1d48000 (virt) @01d48000 (dma) 0x003020 - dev_info
xhci_hcd 0000:00:00.0: @a1d48004 (virt) @01d48004 (dma) 0x000400 - dev_info2
xhci_hcd 0000:00:00.0: @a1d48008 (virt) @01d48008 (dma) 0x000000 - tt_info
xhci_hcd 0000:00:00.0: @a1d4800c (virt) @01d4800c (dma) 0x2000018 - dev_state
xhci_hcd 0000:00:00.0: @a1d48010 (virt) @01d48010 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d48014 (virt) @01d48014 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d48018 (virt) @01d48018 (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: @a1d4801c (virt) @01d4801c (dma) 0x000000 - rsvd[3]
xhci_hcd 0000:00:00.0: Endpoint 00 Context:
xhci_hcd 0000:00:00.0: @a1d48020 (virt) @01d48020 (dma) 0x1000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d48024 (virt) @01d48024 (dma) 0x26004000 - ep_info2
xhci_hcd 0000:00:00.0: @a1d48028 (virt) @01d48028 (dma) 0x1d8de0100000000 - deq
xhci_hcd 0000:00:00.0: @a1d48030 (virt) @01d48030 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d48034 (virt) @01d48034 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d48038 (virt) @01d48038 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4803c (virt) @01d4803c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 01 Context:
xhci_hcd 0000:00:00.0: @a1d48040 (virt) @01d48040 (dma) 0x000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d48044 (virt) @01d48044 (dma) 0x000000 - ep_info2
xhci_hcd 0000:00:00.0: @a1d48048 (virt) @01d48048 (dma) 0x000000 - deq
xhci_hcd 0000:00:00.0: @a1d48050 (virt) @01d48050 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d48054 (virt) @01d48054 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d48058 (virt) @01d48058 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4805c (virt) @01d4805c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 02 Context:
xhci_hcd 0000:00:00.0: @a1d48060 (virt) @01d48060 (dma) 0x1000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d48064 (virt) @01d48064 (dma) 0x36000002 - ep_info2
xhci_hcd 0000:00:00.0: @a1d48068 (virt) @01d48068 (dma) 0x1c0d20100000000 - deq
xhci_hcd 0000:00:00.0: @a1d48070 (virt) @01d48070 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d48074 (virt) @01d48074 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d48078 (virt) @01d48078 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4807c (virt) @01d4807c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 03 Context:
xhci_hcd 0000:00:00.0: @a1d48080 (virt) @01d4800 (dma) 0x1000100 - ep_info
xhci_hcd 0000:00:00.0: @a1d48084 (virt) @01d48084 (dma) 0x16000002 - ep_info2
xhci_hcd 0000:00:00.0: @a1d48088 (virt) @01d48088 (dma) 0x1c4d20100000000 - deq
xhci_hcd 0000:00:00.0: @a1d48090 (virt) @01d48090 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d48094 (virt) @01d48094 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d48098 (virt) @01d48098 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4809c (virt) @01d4809c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Queueing ctrl tx for slot id 2, ep 0
xhci_hcd 0000:00:00.0: DMA address or buffer contents= 31381904
xhci_hcd 0000:00:00.0: Endpoint 0x81 not halted, refusing to reset.
xhci_hcd 0000:00:00.0: Endpoint 0x2 not halted, refusing to reset.
usb 1-2: adding 1-2:1.0 (config #1, interface 0)

Hi mughilanrp,

Glad to hear you’ve made some progress in your quest to get USB3.0 running on your MIPS 2.6.31 installation. We haven’t seen anything similar here, as our experience is on newer Kernels. You can contact us at support@plugable.com with details of your experiments and we’ll help if we’re able.

Thanks again,
Wish we could help more,
Jerome.