USB Errors in dmesg, Solved
For many years, I've been annoyed at how my Linux computer (a Lenovo Carbon X1, gen 7) fills dmesg with errors every few seconds like:
usb usb3: root hub lost power or was reset(sometimes it was usb4 rather than usb3, or different but obviously related messages).
It makes it hard to see real messages in dmesg. I thought (NOTE: this was a stupid assumption) that since it said "root hub", that meant it was some kind of bad hardware design in the hub that's built in to the laptop, so I just put up with it.
Recently I complained about it on #linux and someone challenged me to actually try unplugging things to figure out what was actually causing it.
I ran dmesg --follow in a terminal.
Then I unplugged all the USB stuff: the external hub, external mouse
and keyboard. No help, the messages kept coming.
Another challenge. "You unplugged everything?" "Well, all the USB stuff, I didn't unplug the wired ethernet dongle or the HDMI cable." So I unplugged those, too — and the errors stopped.
It turned out it was the HDMI, not the ethernet. Why plugging in an HDMI cable would cause USB errors — HDMI is one of the few things I was pretty sure wasn't USB — is anybody's guess, but that was clearly the cause.
I tried a couple of different HDMI cables; HDMI cables, I gather, are complicated and sometimes switching just the cable will fix problems. Not in this case.
After a lot of helpful suggestions and fiddling, the solution was adjusting kernel parameters. Apparently the Carbon X1 has some kind of power management issue involving HDMI and the USB root hub. I still don't understand the details of what's going on, but adding either of these kernel parameters to the boot makes the errors go away:
snd_hda_intel.power_save=0or
usbcore.autosuspend=-1
They both made the errors go away.
The first one turned out to disable my built-in sound card, so I
settled on
usbcore.autosuspend=-1.
In either case, change the kernel parameter by editing
/etc/default/grub and adding the parameter to the
GRUB_CMDLINE_LINUX_DEFAULT line.
Then run sudo update-grub
I don't know whether either of these settings might affect battery life,
since they're both related to power management. On the other hand,
constantly waking up and dealing with errors might not be so good for
battery life either. In any case, if you use your CX1 on battery a lot,
keep an eye on that after making either of these changes,
and maybe run powertop.
Thanks to kelvin and rbox on #linux for getting me to look at this, and then helping with the solution!
[ 09:52 Mar 17, 2026 More linux/kernel | permalink to this entry | ]