跳至主要内容

IOMMU 與周邊設備直通 (USB / PCIe Passthrough)

相比複雜的顯示卡直通,一般的 USB 裝置(Zigbee 協調器、UPS 監控線、外接硬碟、鍵盤滑鼠)與 PCIe 介面卡(網卡、Coral TPU、NVMe 控制器)直通更為單純,在 Proxmox VE 網頁介面即可完成。


常見應用場景​

  1. Home Assistant:直通 Zigbee / Z-Wave USB Dongle 控制智慧家庭裝置。
  2. 不斷電系統 (UPS):直通 USB 通訊線監控電量與市電狀態。
  3. AI 辨識:直通 Google Coral TPU 加速 Frigate NVR 影像分析。
  4. 軟路由:直通實體多孔 PCIe 網卡給 pfSense / OpenWrt。
  5. 一機多用 (Multi-Seat):直通專屬鍵盤與滑鼠給不同的桌面虛擬機。

1. 常用查詢指令​

# 檢查 IOMMU 是否啟動
dmesg | grep -e DMAR -e IOMMU

# 列出所有 USB 裝置 (查詢 VendorID:ProductID)
lsusb

# 列出 PCIe 裝置
lspci -nnk

# 列出所有 IOMMU 分組
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU Group %s ' "$n"; lspci -nns "${d##*/}"; done

2. USB 裝置直通 (Web GUI)​

  1. 進入 PVE -> 目標 VM -> Hardware -> Add -> USB Device。
  2. 選擇直通模式:
    • Use USB Vendor/Device ID:按裝置型號綁定(推薦給 Zigbee Dongle、UPS 線、Coral TPU 等固定設備,換插孔仍可辨識)。
    • Use USB Port:按實體插孔綁定(適合常抽換隨身碟,或插了兩組同型號鍵鼠需要分流給不同 VM 時)。
  3. 勾選 Use USB3(若裝置支援)。
  4. 點擊 Add。USB 支援熱插拔,運行中拔插會自動重新辨識。

3. PCIe 介面卡直通 (網卡 / TPU / NVMe)​

  1. 進入 PVE -> 目標 VM -> Hardware -> Add -> PCI Device。
  2. Raw Device 選取目標介面卡。
  3. 選項設定:
    • All Functions:勾選(多孔網卡全部傳入)。
    • Primary GPU:不勾選。
    • PCI-Express:勾選。
    • ROM-Bar:勾選。
  4. 點擊 Add 並重啟 VM。

4. 常見問題排錯​

  • 重插 USB 後 VM 抓不到:在 VM Hardware 移除該 USB 裝置再重新新增即可,不需重開機。
  • 兩組同型號 USB 衝突:改用 Use USB Port 實體插孔模式進行綁定。
  • 熱遷移限制:直通實體硬體的 VM 無法進行叢集線上熱遷移 (Live Migration)。

相關連結​