No USB device detected

Hi!

I have a very recent laptop (ASUS TP301UA) on which I installed Tumbleweed. Since the install (beginning of July), no USB device is detected (tested a few USB keys, a USB slideshow pointer and a mouse). Plugging a USB device simply triggers nothing new in dmesg, journatctl or lsusb.

Everytime, I need the suspend the computer and re-wake it with USB device plugged to make it work properly. Once a USB device is plugged and working, any other device works properly, until all USB devices have been unplugged. It looks like the kernel does not actively monitor USB ports until told so (because a USB device is been used or booting/waking up?).

I’ve waited for new kernel updates, but nothing changed with 4.7…

If someone has an idea of what is going on, any help would be welcome! :wink:

It would be useful to compare behaviour with another Live distro (USB stick) perhaps, although this issue reads like an issue peculiar to this laptop. Some ideas to start with…

  1. Anything unusual reported by the following?
dmesg|grep usb
  1. Any firmware updates available for this laptop? Check the vendor website out for any such updates.

  2. More info about the host controller chipsets might be useful too

usb-devices

or

/usr/sbin/hwinfo --usb
  1. I did stumble across this superuser.com thread describing similar USB behaviour to yours. The ASUS laptop user found that there was a BIOS setting called ‘XHCI Pre-Boot Mode’ which needed to be disabled to allow normal USB behaviour. Maybe the XHCI driver doesn’t properly support your XHCI controller chipset. This would be a workaround, but if it works at least your USB devices will be functioning. A bug report would be needed to help progress this.

If none of the above help then check out the following…

  1. The following thread describes similar behaviour (on various ASUS and Gigabyte MBs). The suggestions may (or may not) be useful…
    http://unix.stackexchange.com/questions/72625/why-is-usb-not-working-in-linux-when-it-works-in-uefi-bios

Thank you for your help, here’s the returns from the commands above.

In dmesg, I’ve got mainly the following lines (probably from tests earlier):


[15528.819984] usb usb1: root hub lost power or was reset
[15528.819985] usb usb2: root hub lost power or was reset
[15529.197164] usb 1-8: reset full-speed USB device number 5 using xhci_hcd
[15529.548632] usb 1-5: reset high-speed USB device number 2 using xhci_hcd
[15529.756480] usb 1-8:1.0: rebind failed: -517
[15529.756481] usb 1-8:1.1: rebind failed: -517

Here’s usb-devices (no device currently attached):



T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh=12
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=04.07
S:  Manufacturer=Linux 4.7.2-2-default xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=01 Lev=01 Prnt=01 Port=04 Cnt=01 Dev#=  2 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0bda ProdID=57ec Rev=00.06
S:  Manufacturer=04081-0005480016021008053
S:  Product=USB2.0 VGA UVC WebCam
S:  SerialNumber=200901010001
C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
I:  If#= 1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo

T:  Bus=01 Lev=01 Prnt=01 Port=07 Cnt=02 Dev#=  5 Spd=12  MxCh= 0
D:  Ver= 2.01 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=8087 ProdID=0a2a Rev=00.01
C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 6
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev=04.07
S:  Manufacturer=Linux 4.7.2-2-default xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

And /usr/sbin/hwinfo --usb


02: USB 00.0: 10a00 Hub                                         
  [Created at usb.122]
  Unique ID: k4bc.2DFUsyrieMD
  SysFS ID: /devices/pci0000:00/0000:00:14.0/usb1/1-0:1.0
  SysFS BusID: 1-0:1.0
  Hardware Class: hub
  Model: "Linux Foundation 2.0 root hub"
  Hotplug: USB
  Vendor: usb 0x1d6b "Linux Foundation"
  Device: usb 0x0002 "2.0 root hub"
  Revision: "4.07"
  Serial ID: "0000:00:14.0"
  Driver: "hub"
  Driver Modules: "usbcore"
  Speed: 480 Mbps
  Module Alias: "usb:v1D6Bp0002d0407dc09dsc00dp01ic09isc00ip00in00"
  Driver Info #0:
    Driver Status: usbcore is active
    Driver Activation Cmd: "modprobe usbcore"
  Config Status: cfg=no, avail=yes, need=no, active=unknown

03: USB 00.0: 0000 Unclassified device
  [Created at usb.122]
  Unique ID: wkjR.SMsQpI3ZjRC
  Parent ID: k4bc.2DFUsyrieMD
  SysFS ID: /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0
  SysFS BusID: 1-5:1.0
  Hardware Class: unknown
  Model: "Realtek USB2.0 VGA UVC WebCam"
  Hotplug: USB
  Vendor: usb 0x0bda "Realtek Semiconductor Corp."
  Device: usb 0x57ec "USB2.0 VGA UVC WebCam"
  Revision: "0.06"
  Serial ID: "200901010001"
  Driver: "uvcvideo"
  Driver Modules: "uvcvideo"
  Device File: /dev/input/event14
  Device Files: /dev/input/event14, /dev/input/by-id/usb-04081-0005480016021008053_USB2.0_VGA_UVC_WebCam_200901010001-event-if00, /dev/input/by-path/pci-0000:00:14.0-usb-0:5:1.0-event
  Device Number: char 13:78
  Speed: 480 Mbps
  Module Alias: "usb:v0BDAp57ECd0006dcEFdsc02dp01ic0Eisc01ip00in00"
  Driver Info #0:
    Driver Status: uvcvideo is active
    Driver Activation Cmd: "modprobe uvcvideo"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #2 (Hub)

05: USB 00.0: 11500 Bluetooth Device
  [Created at usb.122]
  Unique ID: zFuK.l148Ao7nQK1
  Parent ID: k4bc.2DFUsyrieMD
  SysFS ID: /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0
  SysFS BusID: 1-8:1.0
  Hardware Class: bluetooth
  Model: "Intel Bluetooth Device"
  Hotplug: USB
  Vendor: usb 0x8087 "Intel Corp."
  Device: usb 0x0a2a 
  Revision: "0.01"
  Driver: "btusb"
  Driver Modules: "btusb"
  Speed: 12 Mbps
  Module Alias: "usb:v8087p0A2Ad0001dcE0dsc01dp01icE0isc01ip01in00"
  Driver Info #0:
    Driver Status: btusb is active
    Driver Activation Cmd: "modprobe btusb"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #2 (Hub)

07: USB 00.0: 10a00 Hub
  [Created at usb.122]
  Unique ID: pBe4.xYNhIwdOaa6
  SysFS ID: /devices/pci0000:00/0000:00:14.0/usb2/2-0:1.0
  SysFS BusID: 2-0:1.0
  Hardware Class: hub
  Model: "Linux Foundation 3.0 root hub"
  Hotplug: USB
  Vendor: usb 0x1d6b "Linux Foundation"
  Device: usb 0x0003 "3.0 root hub"
  Revision: "4.07"
  Serial ID: "0000:00:14.0"
  Driver: "hub"
  Driver Modules: "usbcore"
  Module Alias: "usb:v1D6Bp0003d0407dc09dsc00dp03ic09isc00ip00in00"
  Driver Info #0:
    Driver Status: usbcore is active
    Driver Activation Cmd: "modprobe usbcore"
  Config Status: cfg=no, avail=yes, need=no, active=unknown

I can’t make sense of most of these, though… :confused:

I’ll reboot to see whether I have the XHCI option in BIOS, thanks!
EDIT: No, I don’t have that in my BIOS…

It seems I can do a firmware update. My current version is 203 and they offer a version 300. Never did that though, is that complicated?

Do you have a user manual for the device? It should be described there, or possibly on the ASUS website. I don’t own this hardware so can’t offer direct advice.

This may be applicable (refer to the Easy Flash method with ‘Other’ for OS)

http://www.asus.com/support/FAQ/1008859

OK, thank you for your efforts! I will try that (seems straightforward enough) and report back.

Updated the BIOS, didn’t change anything unfortunately… And no solution suggested in your kindly shared threads seems to go anywhere.

Could it be because of the kernel? As I said, hardware is fairly new, it even has those USB-C port (which I never used because I don’t have any USB-C device).

Do you have windows installed as well, and if so do the USB ports work there as expected? Can you test with another Linux disto eg Live distro on USB stick to test/compare behaviour with? I’m suspicious of the xHCI host controller chipsets (and whether there are issues with the underlying supporting kernel driver at this time)…

Vendor=1d6b ProdID=0002 Rev=04.07
 Vendor=1d6b ProdID=0003 Rev=04.07

…although still not sure about this…

FWIW, I did find this ubuntu thread concerning the same host controller chipset. The comment about IOMMU is interesting…

IOMMU is a feature in some BIOS programs that imposes some additional security controls on Input/output devices. If your BIOS doesn’t show this name anywhere, forget it.

Do you have such a setting in your BIOS, and if so is it currently enabled or disabled?

I can’t find IOMMU mentionned anywhere in the BIOS, but I do have “I/O interface security” which has a “USB interface security” subsection. However, everything in “Unlocked” in there… Can only “Lock” some interfaces.

The bad part is I cannot use Live USB to test other distributions, because once a USB device is detected (e.g. at boot/wake up), all USB is working properly. I know I had the same problem with KDE Neon, because I installed it before Tumbleweed.

It’s certainly a curious issue. Did you ever have Windows installed, and if so did the USB ports work as expected (you didn’t answer that from my previous post)? Any power management settings for USB in the BIOS? If you’re certain it’s not a hardware issue, you might need to submit a bug report.

Oops, sorry. No I removed Windows without even booting it to be reimbursed by Asus (which are very easy on the matter by the way!), so I don’t know whether it would have worked or not (I guess it would).

There is no power management settings in the BIOS, especially none regarding USB…

If I need to report a bug, should I report it to openSUSE?

It’s a bit difficult to test further without having alternative OS available. It might be that no interrupt is being generated by the host controller when devices are first connected, in which case the Linux kernel won’t be notified that a device is present. This could be a hardware issue that needs to be investigated by ASUS. I assume this machine is under warranty, so I would get this checked out first.

Oh, bummer… I bought my laptop in France and now I’m in New Zealand… I’ll contact Asus but I fear they’ll answer than since I run Linux, they cannot say for sure it’s hardware and will not cover this under warranty. Thanks for your help anyway!

I found something interested, so I’m posting if somebody stumble upon this topic: running

udevadm trigger

triggers the scan for USB device and makes the USB devices working in my case (AFTER they’ve been plugged unfortunately, so you have to plug the device, enter the command as root --meaning password entering-- and then it’s working, almost as cumbersome as suspend/waking, but well…)

I’m not surprised to read that this works, as it re-initializes the host controllers AFAIU.

Let’s examine whether the OS is getting interrupts from the controllers

watch -n1 "cat /proc/interrupts"

or filtered a little more for the interrupts related to the host controllers…

watch -n1 "cat /proc/interrupts|grep hci"

Watch the interrupt count. Is it increasing steadily as expected?

Reference:
http://www.linux-usb.org/FAQ.html#ts6

ahci numbers are going up (a bit slowly and not very steadily) but xhci numbers are not moving at all. If I understand correctly, ahci = USB2 and xhci = USB3, right? What I don’t understand is that USB2 ports are badly working, just the same as the USB3 one.

EDIT: The output


 123:       9864       1128      22160       1452  IR-PCI-MSI 376832-edge      ahci[0000:00:17.0]
128:         13         14        416         18  IR-PCI-MSI 327680-edge      xhci_hcd

No, the AHCI (Advanced Host Controller Interface) relates to your SATA (HDD) device. Not relevant here. Your USB host controllers are both reported as " xHCI Host Controller" devices. (EHCI relates to USB 2.0, but an XHCI controller is capable of communicating with USB 2.0 and USB 3.0 devices.)

The lack of interrupts being generated explain why ‘hot-plugging’ of USB devices is not occurring.

Let’s have a look at the kernel messages for the xHCI hardware from boot…

sudo journalctl -b |grep xhci

For reference, I’d normally expect to see an IRQ assigned for the host controller(s).

USB bugs can be sent to the the following kernel mailinglist
linux-usb@vger.kernel.org

or submit via https://bugzilla.kernel.org/

Here’s the output of the above command:


sept. 16 09:19:02 FlyosFlip kernel: xhci_hcd 0000:00:14.0: xHCI Host Controller
sept. 16 09:19:02 FlyosFlip kernel: xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
sept. 16 09:19:02 FlyosFlip kernel: xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x00109810
sept. 16 09:19:02 FlyosFlip kernel: xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
sept. 16 09:19:02 FlyosFlip kernel: usb usb1: Manufacturer: Linux 4.7.2-2-default xhci-hcd
sept. 16 09:19:02 FlyosFlip kernel: xhci_hcd 0000:00:14.0: xHCI Host Controller
sept. 16 09:19:02 FlyosFlip kernel: xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
sept. 16 09:19:02 FlyosFlip kernel: usb usb2: Manufacturer: Linux 4.7.2-2-default xhci-hcd
sept. 16 09:19:04 FlyosFlip kernel: usb 1-5: new high-speed USB device number 2 using xhci_hcd
sept. 16 09:19:04 FlyosFlip kernel: usb 1-8: new full-speed USB device number 3 using xhci_hcd
sept. 16 11:22:54 FlyosFlip kernel: xhci_hcd 0000:00:14.0: System wakeup enabled by ACPI
sept. 16 11:22:54 FlyosFlip kernel: xhci_hcd 0000:00:14.0: System wakeup disabled by ACPI
sept. 16 11:22:54 FlyosFlip kernel: usb 1-5: reset high-speed USB device number 2 using xhci_hcd
sept. 16 11:22:54 FlyosFlip kernel: usb 1-8: new full-speed USB device number 4 using xhci_hcd
sept. 16 11:23:01 FlyosFlip kernel:  intel_soc_dts_iosf thermal wmi int3400_thermal tpm_crb acpi_thermal_rel acpi_pad tpm_tis asus_wireless tpm fjes btrfs xor raid6_pq crc32c_intel i915 serio_raw i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm xhci_pci xhci_hcd usbcore usb_common video i2c_hid button coretemp msr sg efivarfs
sept. 16 11:25:36 FlyosFlip kernel: xhci_hcd 0000:00:14.0: System wakeup enabled by ACPI
sept. 16 11:25:36 FlyosFlip kernel: xhci_hcd 0000:00:14.0: System wakeup disabled by ACPI
sept. 16 11:25:36 FlyosFlip kernel: usb 1-8: reset full-speed USB device number 4 using xhci_hcd
sept. 16 11:25:36 FlyosFlip kernel: usb 1-5: reset high-speed USB device number 2 using xhci_hcd

I don’t see anything striking, but maybe you’ll do.