[Bug 218544] not enough bandwidth, synaptics hi-res audio duplex audio

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

 



https://bugzilla.kernel.org/show_bug.cgi?id=218544

Alan Stern (stern@xxxxxxxxxxxxxxxxxxx) changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|stern@xxxxxxxxxxxxxxxxxxx   |

--- Comment #7 from Alan Stern (stern@xxxxxxxxxxxxxxxxxxx) ---
There's also the usbhid interface on the audio device, probably used for a
volume control or something like that.  Maybe unbinding it too will help.  You
can try it, anyway, just to see what happens:

  echo 1-1.1:1.3 >/sys/bus/usb/drivers/usbhid/unbind

(or with the device plugged into the rear port, use 2-1.1:1.3).

Without going into any deeper testing, I can summarize the problem for you. 
Basically, the ehci-hcd driver in Linux has trouble utilizing the entire
available bandwidth when low- or full-speed (1.5 or 12 Mb/s) devices are
connected via a USB-2 hub.  That's your situation; the hub is the 1-1 (or 2-1)
device, number 002 on both buses.

At one time Intel's chipsets would attach a single onboard hub directly to the
EHCI controller and then connect all the downstream USB ports through that hub. 
This is what your laptop has.  Even earlier Intel chipsets worked differently;
they connected each downstream USB port through a switch which would send
high-speed signals to the EHCI controller and low/full-speed signals to a
companion UHCI controller.  Motherboards using that scheme didn't suffer from
this bandwidth problem unless the user connected a full/low-speed device via an
external USB-2 hub.

The reason for the problem is that the design of USB 2.0 and the EHCI
controller hardware make it quite complicated to handle the packet scheduling
when translating between two different speeds on the same bus.  The driver uses
an incomplete and imperfect algorithm which can handle the simplest cases okay
but is not adequate for situations requiring a higher percentage of the total
bandwidth, especially when different transfer types (bulk, interrupt, and
isochronous) are mixed.

Improving the driver to make it more capable would require a tremendous amount
of work, and for very little return since nowadays computers use xHCI USB
controllers rather than EHCI.  Only legacy systems dating from the time of your
T420 laptop or earlier would derive any benefit, and then only in situations
involving multiple devices with high bandwidth requirements.

I hope this explanation makes sense to you.

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.




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

  Powered by Linux