Multiple chatty devices on Intel 5 Series/3400 USB2 EHCI controller act erratic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello.

I have a longstanding issue with multiple chatty USB devices on USB bus
02 acting erratic when activated simultaneously. As soon as the second
device is closed, the first continues communication normally. The
problem does NOT occur on Bus 01 (which has many other devices attached
as well.) It also does not occur in Windows 7 or 10 on the same computer
with the same USB devices plugged into in the same ports. (Even using
the same cross-platform DJ software. :) )

For example, playing audio through a USB audio device and using a MIDI
controller: as soon as the second device (MIDI controller) is activated,
both act erratically (audio reduces to a crackle and the MIDI controller
flickers. If I leave them like that for a few seconds, one or both will
disconnect and/or reset.) As soon as the second device is closed, the
first continues communication normally.

I have tested with Debian 8.5 using kernels 3.16.5 and 4.5.4 as well as
with Fedora 23 (kernel 4.2.3) and the problem is exactly the same.
Again, Windows 7 and 10 do not exhibit the problem.

My laptop (an HP EliteBook 8440p) has two USB controllers/buses:
Bus 01: (this one works fine)
00:1a.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset
USB2 Enhanced Host Controller (rev 05)
00:1a.0 0c03: 8086:3b3c (rev 05)

Bus 02: (this one has the problem)
00:1d.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset
USB2 Enhanced Host Controller (rev 05)
00:1d.0 0c03: 8086:3b34 (rev 05)

All four USB ports on the laptop itself appear to be hard-wired into bus
02. I can only plug devices into bus 01 when the machine is in a docking
station (which has an additional set of six USB ports.)

I've attached the output of lsusb -t in various scenarios:
not.txt - the control condition without the test devices attached
docking.txt - devices attached to bus 01 where *they work correctly*
leftSide.txt - devices attached to one of the four ports on bus 02 where
the problem occurs
rideSideSATAcombo.txt - devices attached to another of the four ports on
bus 02 where the problem occurs

The test devices in these outputs are an externally-powered American
Audio VMS4.1 DJ controller with integrated audio interface and mouse
pad. But the problem occurs with many different types of devices,
integrated and not. (E.g. a Behringer UCA-202 audio interface and
Stanton SCS.3d MIDI controller or Enttec DMXUSB PRO lighting interface.)

I have also tested having removed the SmartCard reader shown on Bus 02
in those outputs (it's an ExpressCard device,) with no change in the
problem. I have also tried blacklisting ehci-pci (in the hope that
ohci-pci would take over) but doing so just leaves both USB controllers
unclaimed and completely non-functional.

In the past (2.6-era kernels,) I noticed that the audio from the UCA-202
would buzz whenever the smart card was being accessed and return to
normal afterwards. I had also been able to set the UCA-202 to 44.1kHz
then both it and the SCS.3d would operate correctly. This is no longer
the case. (No matter what sample rate I use, the problem occurs.)

Though an audio device is the common factor in all of my tests, I don't
believe the problem is ALSA-related because non-audio, non-MIDI devices
are also affected. (An audio device just happens to be a convenient way
to put a decent load on the bus.) Of course let me know if I should take
this to alsa-dev instead. :)

At this point, I'm suspecting a bug (maybe an off-by-one?) in the
ehci-pci driver since bus 01 works perfectly yet 02 does not on the same
hardware. (Though the differing PCI IDs imply that the hardware isn't
exactly the same.) I took a quick look at ehci-pci.c in 4.5 but didn't
find either of these IDs mentioned.

Let me know if you need any further information or if there's something
else I should try to narrow this down further.

Thank you very much for your time and attention and the great work you do!

Sincerely,
Sean M. Pappalardo
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
        |__ Port 3: Dev 6, If 0, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 3: Dev 6, If 1, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 3: Dev 6, If 2, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 3: Dev 6, If 3, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 3: Dev 6, If 4, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 3: Dev 6, If 5, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 5: Dev 3, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 1: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 1: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
        |__ Port 1: Dev 3, If 2, Class=Vendor Specific Class, Driver=, 12M
        |__ Port 1: Dev 3, If 3, Class=Application Specific Interface, Driver=, 12M
        |__ Port 3: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 12M
        |__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/2p, 480M
            |__ Port 1: Dev 8, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 2: Dev 9, If 0, Class=Hub, Driver=hub/4p, 12M
                |__ Port 1: Dev 10, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
                |__ Port 1: Dev 10, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
                |__ Port 3: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 5: Dev 6, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 5: Dev 6, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 6: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
        |__ Port 5: Dev 3, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 1: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 1: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
        |__ Port 1: Dev 3, If 2, Class=Vendor Specific Class, Driver=, 12M
        |__ Port 1: Dev 3, If 3, Class=Application Specific Interface, Driver=, 12M
        |__ Port 3: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 12M
        |__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/2p, 480M
            |__ Port 1: Dev 8, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 2: Dev 9, If 0, Class=Hub, Driver=hub/4p, 12M
                |__ Port 1: Dev 10, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
                |__ Port 1: Dev 10, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
                |__ Port 3: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 5: Dev 6, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 5: Dev 6, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 6: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 4: Dev 15, If 0, Class=Audio, Driver=snd-usb-audio, 12M
            |__ Port 4: Dev 15, If 1, Class=Audio, Driver=snd-usb-audio, 12M
            |__ Port 4: Dev 15, If 2, Class=Audio, Driver=snd-usb-audio, 12M
            |__ Port 4: Dev 15, If 3, Class=Audio, Driver=snd-usb-audio, 12M
            |__ Port 4: Dev 15, If 4, Class=Audio, Driver=snd-usb-audio, 12M
            |__ Port 4: Dev 15, If 5, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
        |__ Port 2: Dev 5, If 0, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 5, If 1, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 5, If 2, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 5, If 3, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 5, If 4, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 5, If 5, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 5: Dev 3, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 1: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 1: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
        |__ Port 1: Dev 3, If 2, Class=Vendor Specific Class, Driver=, 12M
        |__ Port 1: Dev 3, If 3, Class=Application Specific Interface, Driver=, 12M
        |__ Port 3: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 12M
        |__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/2p, 480M
            |__ Port 1: Dev 8, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 2: Dev 9, If 0, Class=Hub, Driver=hub/4p, 12M
                |__ Port 1: Dev 10, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
                |__ Port 1: Dev 10, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
                |__ Port 3: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 5: Dev 6, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 5: Dev 6, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 6: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
        |__ Port 5: Dev 3, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 1: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 1: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
        |__ Port 1: Dev 3, If 2, Class=Vendor Specific Class, Driver=, 12M
        |__ Port 1: Dev 3, If 3, Class=Application Specific Interface, Driver=, 12M
        |__ Port 3: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 12M
        |__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/2p, 480M
            |__ Port 1: Dev 8, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 2: Dev 9, If 0, Class=Hub, Driver=hub/4p, 12M
                |__ Port 1: Dev 10, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
                |__ Port 1: Dev 10, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
                |__ Port 3: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 5: Dev 6, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 5: Dev 6, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 6: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux