xhci-hda does not support isochronous streaming on usb 2.0 devices
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Expired
|
Low
|
Unassigned |
Bug Description
I have a Presonus AudioBox 1818VSL (usb audio interface,) which was working flawlessly for about 2 years on ubuntu 12.04. I bought a new computer with usb 3 ports and installed 14.04, and suddenly the audio is popping and crackling. The computer is loading the 1818vsl as a usb 3 device using xchi-hda even though it's a usb 2 device and should use ehci-hda. From what I understand on this thread, this is a problem that affects other usb audio interfaces as well:
https:/
I found other users in the forums having this problem. Since xchi-hda is prebaked into the kernel, the only workarounds are
1. Disable usb 3 in BIOS or
2. If you don't have that option in BIOS, compile a new kernel with xchi-hda and ehci-hda enabled as modules and then blacklist xhci-hda.
These shouldn't be the only options for Ubuntu users!
My proposal is build xhci-hda as a module in the default Ubuntu kernel so that the affected users can blacklist it without having to compile an entirely new kernel. There are very few usb 3 devices at the moment anyways, and this should have very little effect on performance for other users.
no longer affects: | linux-lowlatency (Ubuntu) |
Changed in linux (Ubuntu): | |
status: | New → Confirmed |
affects: | ubuntustudio → linux (Ubuntu) |
Changed in linux (Ubuntu): | |
status: | New → Incomplete |
importance: | Undecided → Low |
Here's another wrinkle to this bug.
I don't have the BIOS option and I can't get a kernel to build for me. A friend suggested manually unbinding the xhci driver for the usb audio interface like this https:/ /lwn.net/ Articles/ 143397/
If I run "lspci -v | grep -i xhci" then I get
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
This is not the usb audio interface (because it's not a pci device) and in fact, if I fake a root account using sudo -i and then run
echo -n "0000:00:14.0" > /sys/bus/ pci/drivers/ xhci_hcd/ unbind
it unbinds my keyboard and mouse, and then I have to do a hard reset.
On the other lsusb gives me the following correct device:
Bus 003 Device 006: ID 194f:0103 PreSonus Audio Electronics, Inc. AudioBox 1818 VSL
Now, the (virtual) directory /sys/bus/ pci/drivers/ contains the subdirectory xhci_hcd, but it does not contain a subdirectory ehci_hcd. There is a subdirectory ehci-pci, but that subdirectory doesn't contain any devices. So I went to the directory /sys/module/ ehci_hcd/ which *does* exist and there is no devices subdirectory and no bind or unbind. ls -l just shows
drwxr-xr-x 2 root root 0 Apr 25 00:02 parameters
--w------- 1 root root 4096 Apr 25 00:02 uevent
So I guess what I'm saying is that it doesn't even look like I have access to ehci-hcd even though it's built into the kernel. I don't really understand how xhci-hcd is related to pci devices, but is there not a way I could manually tell the kernel to use only usb2.0 drivers?