# [Solved] USB 2.0 ports are not working, but 3.0 ones do work

## Wizardgen

Hello there. I tried to use the search for this problem, but nothing came up. 

My problem is as follows, USB 3.0 ports work, none of my USB 2.0 work. I've tried building my kernel manually, and with genkernel, but I'm not sure if it is a kernel problem, since my usb ports work fine in the environment I installed Gentoo from (Arch LiveUSB, and Ubuntu). Some people said, that enabling IOMMU in BIOS could fix it, but it didn't for me. I've tried every single kernel I could find, but the usb ports act the same. My USB ports work normally on Arch Linux.

My hardware is as follows:

AMD FX-8120

Gigabyte 990XA-UD3 

8GB 1333MHz DDR3 RAM

Geforce GTX 650

250GB Sata HDD

My dmesg is full of errors like this:

```

[   76.668814] usb 4-3: device descriptor read/64, error -32

[   76.928968] usb 4-3: new full-speed USB device number 15 using ohci_hcd

[   77.079039] usb 4-3: device descriptor read/64, error -32

[   77.339180] usb 4-3: device descriptor read/64, error -32

[   77.599331] usb 4-3: new full-speed USB device number 16 using ohci_hcd

[   78.019563] usb 4-3: device not accepting address 16, error -32

[   78.169652] usb 4-3: new full-speed USB device number 17 using ohci_hcd

[   78.589952] usb 4-3: device not accepting address 17, error -32

[   78.589972] hub 4-0:1.0: unable to enumerate USB device on port 3

```

lspci:

```

00:00.0 Host bridge: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (external gfx0 port B) (rev 02)

00:00.2 IOMMU: Advanced Micro Devices [AMD] nee ATI RD990 I/O Memory Management Unit (IOMMU)

00:02.0 PCI bridge: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (PCI express gpp port B)

00:04.0 PCI bridge: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (PCI express gpp port D)

00:09.0 PCI bridge: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (PCI express gpp port H)

00:0a.0 PCI bridge: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (external gfx1 port A)

00:11.0 SATA controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] (rev 40)

00:12.0 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller

00:12.2 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller

00:13.0 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller

00:13.2 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller

00:14.0 SMBus: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller (rev 42)

00:14.1 IDE interface: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 IDE Controller (rev 40)

00:14.2 Audio device: Advanced Micro Devices [AMD] nee ATI SBx00 Azalia (Intel HDA) (rev 40)

00:14.3 ISA bridge: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 LPC host controller (rev 40)

00:14.4 PCI bridge: Advanced Micro Devices [AMD] nee ATI SBx00 PCI to PCI Bridge (rev 40)

00:14.5 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI2 Controller

00:16.0 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller

00:16.2 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller

00:18.0 Host bridge: Advanced Micro Devices [AMD] Family 15h Processor Function 0

00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 15h Processor Function 1

00:18.2 Host bridge: Advanced Micro Devices [AMD] Family 15h Processor Function 2

00:18.3 Host bridge: Advanced Micro Devices [AMD] Family 15h Processor Function 3

00:18.4 Host bridge: Advanced Micro Devices [AMD] Family 15h Processor Function 4

00:18.5 Host bridge: Advanced Micro Devices [AMD] Family 15h Processor Function 5

01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)

01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)

02:00.0 USB controller: Etron Technology, Inc. EJ168 USB 3.0 Host Controller (rev 01)

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168 PCI Express Gigabit Ethernet controller (rev 06)

04:00.0 USB controller: Etron Technology, Inc. EJ168 USB 3.0 Host Controller (rev 01)

05:06.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)

05:0e.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0)

```

lsusb

```

Bus 008 Device 006: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard

Bus 008 Device 003: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 009 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 010 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 011 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

```

I tried asking about this on IRC, but I did not get an answer. Maybe someone here knows what could be the cause?  :Smile:  Thanks in advance.Last edited by Wizardgen on Thu Jul 11, 2013 11:39 am; edited 1 time in total

----------

## roarinelk

what kernel version does arch use, and which one do you use with gentoo?

----------

## Wizardgen

 *roarinelk wrote:*   

> what kernel version does arch use, and which one do you use with gentoo?

 

3.9.9 at least on the LiveUSB, but as I've said, I have the same problems on every kernel I've tried so far. I currently use 3.10.0 on Gentoo.

----------

## roarinelk

Disable C1E in the BIOS if you have it enabled, and also as a test try to disable PowerNow as well.

It's a bit strange that the Arch Kernel should work but yours doesn't.  Can you perhaps try to boot

the arch kernel with your gentoo installation?

----------

## py-ro

Did you ehci compile into your Kernel?

----------

## Wizardgen

 *py-ro wrote:*   

> Did you ehci compile into your Kernel?

 

Yes, I did. As I've said I've tried both self configured kernels (not a new Gentoo user, been using since 2006 or so) from kernel seeds, default config, and genkernel.  :Smile: 

Anyway, with Arch's kernel, USB works properly.. I wonder what is so different in it.

Here are the kernel .config files for Arch 3.9.9 kernel and Gentoo 3.8.13 kernel made with genkernel if someone could take a look, please?  :Smile: 

----------

## eccerr0r

You should try 3.9.9+ on Gentoo - it could be that there was a USB bug fixed in the 3.9 series..

USB3 ports are still very new and may do some bad stuff especially with integration.

----------

## Wizardgen

 *eccerr0r wrote:*   

> You should try 3.9.9+ on Gentoo - it could be that there was a USB bug fixed in the 3.9 series..
> 
> USB3 ports are still very new and may do some bad stuff especially with integration.

 

Well, USB3 ports are the only working ports here. And I've tried random kernels from 3.8 to 3.10.0 and none of them work.  :Sad:  Gonna try compiling a kernel with Arch's config to pinpoint if there is something wrong in the stock config.

Edit: With Arch's config everything seem to be working properly. Now, I gotta find out what options I need to check in kernel config... as I prefer a minimal kernel.   :Rolling Eyes: 

It's strange that the usb ports do not work with stock genkernel config, though.

Here is my current non-working kernel config

I'm having a hard time to find an option to enable..

----------

## roarinelk

enable these 2 options in your kernel please:

+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set

+# CONFIG_USB_EHCI_TT_NEWSCHED is not set

----------

## Wizardgen

Enabled, still not working.  :Sad:  This problem is starting to get kinda weird.. Here is my dmesg

Edit: Okay! Got my USB ports working by enabling CONFIG_AMD_IOMMU, however now the Nvidia binary drivers stopped working. I wonder if IOMMU blocks using my GPU and if there is any workaround for using the binary blob nvidia drivers. Here is the Dmesg.

I guess using IOMMU is just an "workaround" for working USB ports..I plan on running VMs as well, which is  the primary reason why I bought this board...

Edit 2

FINALLY! I added vmalloc=256M iommu=pt to Grub2 command line and everything works nicely!  :Smile: 

----------

## Spidey

That was so odd that you ought explain yourself. How come those settings helped you with your USB ports? How did you come by that solution?

----------

## roarinelk

 *Spidey wrote:*   

> That was so odd that you ought explain yourself. How come those settings helped you with your USB ports? How did you come by that solution?

 

I suspect the iommu=pt option did it.   BIOS has buggy iommu tables, best to disable it altogether.

----------

## Wizardgen

 *roarinelk wrote:*   

>  *Spidey wrote:*   That was so odd that you ought explain yourself. How come those settings helped you with your USB ports? How did you come by that solution? 
> 
> I suspect the iommu=pt option did it.   BIOS has buggy iommu tables, best to disable it altogether.

 

None of my USB ports work if IOMMU is off in BIOS. No idea why. My Ethernet port doesn't work either when it's off.

I came by this solution when I realized that PCI devices are managed a bit different when using an IOMMU. And it seems to work as an workaround. There seem to be many users with the same chipset (and problems).  :Smile:  Usually a BIOS upgrade fixes it, but Gigabyte hasn't supplied one for my board.

----------

