IOMMU 與周邊設備直通 (USB / PCIe Passthrough)
相比複雜的顯示卡直通,一般的 USB 裝置(Zigbee 協調器、UPS 監控線、外接硬碟、鍵盤滑鼠)與 PCIe 介面卡(網卡、Coral TPU、NVMe 控制器)直通更為單純,在 Proxmox VE 網頁介面即可完成。
常見應用場景
- Home Assistant:直通 Zigbee / Z-Wave USB Dongle 控制智慧家庭裝置。
- 不斷電系統 (UPS):直通 USB 通訊線監控電量與市電狀態。
- AI 辨識:直通 Google Coral TPU 加速 Frigate NVR 影像分析。
- 軟路由:直通實體多孔 PCIe 網卡給 pfSense / OpenWrt。
- 一機多用 (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)
- 進入 PVE -> 目標 VM -> Hardware -> Add -> USB Device。
- 選擇直通模式:
- Use USB Vendor/Device ID:按裝置型號綁定(推薦給 Zigbee Dongle、UPS 線、Coral TPU 等固定設備,換插孔仍可辨識)。
- Use USB Port:按實體插孔綁定(適合常抽換隨身碟,或插了兩組同型號鍵鼠需要分流給不同 VM 時)。
- 勾選 Use USB3(若裝置支援)。
- 點擊 Add。USB 支援熱插拔,運行中拔插會自動重新辨識。
3. PCIe 介面卡直通 (網卡 / TPU / NVMe)
- 進入 PVE -> 目標 VM -> Hardware -> Add -> PCI Device。
- Raw Device 選取目標介面卡。
- 選項設定:
- All Functions:勾選(多孔網卡全部傳入)。
- Primary GPU:不勾選。
- PCI-Express:勾選。
- ROM-Bar:勾選。
- 點擊 Add 並重啟 VM。
4. 常見問題排錯
- 重插 USB 後 VM 抓不到:在 VM Hardware 移除該 USB 裝置再重新新增即可,不需重開機。
- 兩組同型號 USB 衝突:改用 Use USB Port 實體插孔模式進行綁定。
- 熱遷移限制:直通實體硬體的 VM 無法進行叢集線上熱遷移 (Live Migration)。