Linux

為什麼 USB 在 UEFI/BIOS 中工作時無法在 Linux 中工作?

  • April 6, 2019

作為背景,我剛剛用現代硬體建造了一台新機器,包括:

  • AMD FX-8350
  • 技嘉GA-990FXA-UD3主機板
  • 16GB 記憶體
  • 英偉達 GTX 650 鈦
  • 金士頓固態硬碟

鑑於此,我嘗試在 SSD 上安裝各種版本的 Linux,幾乎每次都失敗。我嘗試從 USB 拇指驅動器安裝 Arch、Debian stable、Debian sid 和 Ubuntu 12.10,但是當 BIOS 看到 USB 驅動器並開始從它啟動時,一旦作業系統嘗試列舉 USB 設備,我就失去了所有 USB 功能(包括啟動設備)。

最後我刻錄了一張 DVD 並將 Ubuntu 12.10 安裝到 SSD 上。應該注意的是,我的 USB 鍵盤(和滑鼠)在 American Megatrends UEFI/BIOS 中工作正常。即使我在 Live Ubuntu DVD 的預安裝菜單中,鍵盤也能正常工作。

一旦 Linux 啟動(無論是 Live DVD 還是從 SSD),我都會失去所有 USB 功能,只能使用 PS/2 鍵盤導航作業系統。

我在 dmesg/syslog 中看到的是幾行關於“ failed to load microcode amd_ucode/microcode_amd_fam15h.bin”的內容,我可以看到 USB 設備無法初始化。

如果我這樣做,lsusb我可以看到所有 USB 主機控制器,但看不到任何設備。做一個lspci向我展示了我期望的所有硬體。並且做一個lsmod我沒有看到任何載入的usb模組(usb_ehci例如)。

我嘗試傳遞noapic給核心引導字元串,但對這個問題沒有影響。

主機板支持 USB 3.0,但我已插入普通 USB 2.0 埠的所有設備。

我對什麼可能會殺死/阻止 USB(和我的板載網卡)在 Linux中工作感到困惑。這些設備中的任何一個在 BIOS 中工作似乎都沒有任何問題,而且我沒有可用於測試並查看它是否工作的 Windows 安裝。

我已經對主機板進行了一次 RMA,但第二個的行為完全相同,所以我認為我可以安全地排除硬體故障(因為行為相同,我認為我得到兩塊同樣有缺陷的板的可能性不大大於這是一個 Linux 問題的可能性)。

我還能嘗試什麼讓 USB(理想情況下是我的網路,但我們現在將堅持使用 USB)工作?

編輯#1:

由於我沒有網路,我只能從dmesg這里聯係有趣的部分。

感興趣的是dmesg我可以看到我有 11 個 USB 主機控制器(OHCI、EHCI 和 xHCI)。它檢測到我的 USB 設備,然後立即失敗,如下所示:

usb 3-1: new high-speed USB device number 2 using ehci_hcd
usb 3-1: device descriptor read/64, error -32

重複幾次,增加數字並嘗試其他 USB 主機控制器,直到它回退到 OHCI 控制器,這些控制器也失敗但有附加消息:

usb 8-1: device not accepting address 4, error -32

我認為我的網路問題與我的路由器上沒有啟用 IPv6 的事實有關,這似乎是一個問題

eth1: no IPv6 routers present

編輯#2:

lspci -vvv顯示我的網路適配器(板載和擴展)是 Realtek Semiconductor(不足為奇);分別為 RTL8111/8168B 和 RTL8169/8110。我的 USB 控制器是 Etron Technology EJ168 (xHCI) 和 AMD nee ATI SB7x0/SB8x0/SB9x0 (EHCI & OHCI)

現在執行 Debian wheezymodprobe顯示usb_common, usbcore, xhci_hcd, ehci_hcd, 以及ohci_hcd所有已載入和執行。

我在 ubuntuforums.org 上從這個執行緒 ( http://ubuntuforums.org/showthread.php?t=2114055 ) 中找到了答案。

似乎對於較新的 Gigabyte 主機板(至少)有一個稱為 BIOS 選項IOMMU Controller,預設情況下該選項是禁用的,並且沒有提供任何關於它的用途的線索或指示。

啟用此設置並“神奇地”重新啟動會在 64 位 Linux 作業系統中恢復我所有的 USB 和網路問題(不管是哪一個)。

我相當震驚和高興,尋找如此簡單的解決方案需要這麼長時間。

感謝大家的幫助和建議。希望其他人會發現這很有幫助。

**更新:**我想補充一點,除了 IOMMU 控制器之外,我目前的 BIOS 設置還包括啟用 XHCI Handoff 和 EHCI Handoff。其他人也提到了這一點,啟用這兩個切換還可以讓我的 USB 3.0 埠按預期執行。

引用自:https://unix.stackexchange.com/questions/72625