我有一块主板,技嘉Z170-D3H,带着新鲜的根图Linux安装(自编译内核4.9.6-gentoo-r1)和连接的两个 USB 设备(闪存驱动器和鼠标)。但USB端口不工作。
当我打字时lsblk
,只有我的系统盘sda
。
lspci | grep USB
返回:
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
lsusb
返回:
libusb: debug [libusb_init] created default context
libusb: debug [libusb_init] libusb v1.0.19.10903
libusb: error [op_init] could not find usbfs
unable to initialize libusb: -99
dmesg | grep 'USB\|usb'
返回:
[ 0.293570] ACPI: bus type USB registered
[ 0.293665] usbcore: registered new interface driver usbfs
[ 0.293756] usbcore: registered new interface driver hub
[ 0.293850] usbcore: registered new device driver usb
[ 0.987392] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.987449] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 0.987487] uhci_hcd: USB Universal Host Controller Interface driver
[ 0.987548] usbcore: registered new interface driver usblp
[ 0.987592] usbcore: registered new interface driver usb-storage
[ 0.992362] usbcore: registered new interface driver usbhid
[ 0.992376] usbhid: USB HID core driver
这是整个 dmesg 日志:dmesg_log.txt
usb-devices
什么也不返回。
grep XHCI /usr/src/linux-$(uname -r)/.config
返回:
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_PCI=y
CONFIG_USB_XHCI_PLATFORM=y
答案1
在 dmesg 输出中,人们应该看到类似这样的消息
[ 1.768941] ehci-pci 0000:00:1a.0: EHCI Host Controller
[ 1.769021] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 1
...
[ 1.787161] xhci_hcd 0000:02:00.0: xHCI Host Controller
[ 1.787880] xhci_hcd 0000:02:00.0: new USB bus registered, assigned bus number 2
(这些来自我的系统)如果内核检测到 USB 硬件并分配驱动程序,但它们不存在。
作为模块,您需要xhci_pci
和ehci_pci
作为 PCI USB 控制器的驱动程序(两者兼有并没有什么坏处,而且我不确定 USB 3.0 硬件上的 USB 2.0 是如何处理的,因此最好同时包含两者,至少在问题解决之前已修复),以及xhci_hcd
一般ehci_hcd
支持。
您的配置屏幕截图与您的输出不匹配.config
,所以我不确定您当前的配置是什么。截图说XHCI是一个模块,你.config
说它是内置的。
将它们全部设置为模块将使调试更加容易。因此将所有 4 更改为M
,重新编译内核,重新启动,验证lsmod
加载了哪些。如果没有加载和使用,modprobe
pci 变体并查看 dmesg/syslog 中是否有任何错误消息或任何其他消息。
如果两个模块都无法加载,请查看控制器的数字供应商和设备 ID(lspci -n
),并modinfo
通过检查源来验证模块是否应该识别您的硬件。