technikkram.net
  • Home
  • smartkram
  • Themenfelder
    • Smart Home
      • Homematic & Homematic IP
      • Smart Home Zentrale
      • Home Assistant
      • MQTT & Messaging
      • Zigbee & Thread
      • Shelly Geräte
      • KNX Gebäudeautomation
      • Matter & Thread
      • Apple HomeKit
    • Server & DevOps
      • Docker & Container
      • Proxmox VE
      • Linux Administration
      • Monitoring & Observability
      • Kubernetes & K3s
      • Raspberry Pi
    • Netzwerk
      • UniFi Netzwerk
      • Netzwerk Grundlagen
      • WLAN Optimierung
      • VLAN Konfiguration
      • Firewall & Security
      • Managed Switches
    • Sicherheit
      • Überwachungskameras
      • IT-Security
      • Videoüberwachung
      • Alarmanlagen
      • Zutrittskontrolle
    • Energie & Solar
      • Energiemanagement
      • Solar & Photovoltaik
    • NAS & Storage
      • NAS Systeme
      • Backup & Recovery
      • Synology NAS
      • Storage Lösungen
  • Archiv
  • Kontakt
    • Datenschutz
    • Impressum
  • KI-Transparenz
  • Click to open the search input field Click to open the search input field Suche
  • Menü Menü
  • Link zu Facebook
  • Link zu X
  • Link zu Mail
  • Link zu Rss dieser Seite
technikkram
Allgemein

Proxmox VM USB-Passthrough Error Code 43 – Hardware-Durchleitung reparieren

USB-Passthrough Architektur-Diagramm von Proxmox Host zu Windows VM mit Error Code 43

Proxmox USB-Passthrough Error Code 43 – Typische Server-Konfiguration mit USB-Geräten und auftretenden Fehlersymbolen

Error Code 43 bei USB-Passthrough in Proxmox VMs ist ein Hardware-Durchleitungsproblem, nicht ein Treiberfehler. Das USB-Gerät wird zwar zur VM durchgereicht, aber das Gast-OS kann es nicht verwenden. Diese Anleitung zeigt dir die exakten Diagnose-Schritte und Fixes.

Transparenz-Hinweis: Dieser Artikel enthält Affiliate-/Werbe-Links. Kaufst du über diese Links, erhalten wir eine Provision – für dich ohne Mehrkosten.
📑 Inhaltsverzeichnis

  • ▸ Häufige Mythen bei USB-Passthrough Error Code 43
  • › Mythos: Treiberupdate behebt Error Code 43
  • › Mythos: USB 3.0 ist automatisch besser
  • › Mythos: Guest Additions lösen Hardware-Passthrough
  • ▸ Ursachen-Analyse
  • › FC-01: USB-Gerät nicht vom Host getrennt
  • › FC-02: Falsche USB-Controller Konfiguration
  • › FC-03: IOMMU/VT-d nicht aktiviert
  • › FC-04: USB Vendor/Product ID Probleme
  • › FC-05: Spezielle Treiber-Anforderungen
  • › FC-06: USB Power Management Konflikte
  • ▸ USB-Passthrough Error Code 43 Diagnose-Matrix
  • ▸ 10-Schritt Debug-Anleitung
  • › Schritt 1-3: USB-Geräte identifizieren
  • › Schritt 4-6: USB-Topologie und IOMMU
  • › Schritt 7-10: Power Management und VM-Monitor
  • ▸ Lösungen und Fixes
  • › Lösung 1: USB-Gerät vom Host trennen (FC-01)
  • › Lösung 2: USB-Controller optimieren (FC-02)
  • › Lösung 3: IOMMU/VT-d aktivieren (FC-03)
  • › Lösung 4: USB Vendor/Product ID korrigieren (FC-04)
  • › Lösung 5: Spezielle USB-Geräte konfigurieren (FC-05)
  • › Lösung 6: USB Power Management deaktivieren (FC-06)
  • ▸ Erweiterte Troubleshooting-Techniken
  • › USB-Passthrough über PCI-Durchleitung
  • › QEMU-Monitor für Live-Debugging
  • › Performance-Optimierung
  • › SPICE vs QEMU Agent USB-Redirection
  • › Wann sollte ich PCI-Controller-Passthrough statt USB-Device-Passthrough verwenden?
  • › Sporadische USB-Disconnects
  • › Power Management Konflikte
  • ▸ USB Controller PCI Passthrough vs USB Passthrough
  • › SPICE vs QEMU Guest Agent bei USB-Passthrough
  • ▸ PCI-Controller vs USB-Device Passthrough
  • › PCI-Controller vs USB-Device Passthrough Konfiguration
  • ▸ Windows-spezifische USB-Passthrough Probleme
  • › Code 43 Hauptursachen und Windows-Registry-Fixes
  • › Preisvergleich

USB-Passthrough Architektur-Diagramm von Proxmox Host zu Windows VM mit Error Code 43
USB-Passthrough Architektur-Diagramm zeigt den Datenfluss von Proxmox Host zu Windows VM und mögliche Fehlerquellen

Das Problem erkennst du daran: USB-Gerät funktioniert am Proxmox Host, aber in der VM zeigt der Geräte-Manager gelbes Warndreieck mit „Gerät kann nicht gestartet werden (Code 43)“. Oder das Gerät wird als „Unbekanntes Gerät“ angezeigt und funktioniert nicht.

Windows Geräte-Manager mit USB Error Code 43 Fehlermeldung bei Proxmox Passthrough
Windows Geräte-Manager zeigt typische USB Error Code 43 Fehlermeldung bei fehlgeschlagenem Proxmox Passthrough

Wichtig: lsusb zeigt das Gerät als verfügbar, aber lsusb -t offenbart oft, dass noch ein Host-Treiber aktiv ist. Das ist der häufigste Fehler – das Gerät ist nicht wirklich für Passthrough freigegeben.

Die Hauptursachen sind: USB-Gerät bleibt am Host gebunden, falsche USB-Controller-Konfiguration (USB 2.0 vs 3.0), deaktivierte IOMMU-Virtualisierung, falsche USB Vendor/Product IDs, fehlende spezielle Treiber oder aktives USB-Power-Management.

Seit Proxmox VE 8.0: USB-Controller-Syntax hat sich geändert. Alte Configs ohne usb3=1 führen zu Error Code 43 bei USB 3.0-Geräten. Migration von Proxmox 7.x erfordert manuelle Nacharbeit.

Erfahrungsgemäß tritt Error Code 43 besonders häufig nach Proxmox VE Updates von 7.4 auf 8.0 auf, da die neue QEMU-Version 8.0 strengere USB-Controller-Validierung durchführt. Viele Legacy-VMs funktionieren nach dem Update nicht mehr ohne manuelle USB-Konfigurationsanpassung.


Häufige Mythen bei USB-Passthrough Error Code 43

Mythos: Treiberupdate behebt Error Code 43

Falsch. Error Code 43 entsteht durch unvollständige IOMMU-Gruppierung oder fehlende CPU-Features (VT-d/AMD-Vi). Die VM erkennt das USB-Gerät als ‚virtuell‘ statt ’nativ‘. Windows zeigt bei Virtualisierungsproblemen generisch ‚Code 43‘ an.

Fix: qm set <vmid> --args "-device vfio-pci,host=XX:XX.X,x-vga=on" für echten Hardware-Passthrough oder USB-Controller komplett durchreichen.

Mythos: USB 3.0 ist automatisch besser

Falsch. USB 3.0 Passthrough ist komplexer und fehleranfälliger. QEMU emuliert standardmäßig nur USB 2.0 (EHCI). Für USB 3.0 musst du explizit ‚qemu-xhci‘ Controller aktivieren: qm set <vmid> --usb0 host=XXXX:XXXX,usb3=1.

USB 2.0 Passthrough ist stabiler, da EHCI-Emulation ausgereifter ist als xHCI.

Mythos: Guest Additions lösen Hardware-Passthrough

Falsch. Guest Additions haben keinen Einfluss auf Hardware-Passthrough. Error Code 43 entsteht auf Hypervisor-Ebene vor dem Gast-OS. Die Lösung liegt in der Proxmox-Konfiguration: IOMMU aktivieren (intel_iommu=on in GRUB), Blacklisting des Host-Treibers oder PCI-Passthrough statt USB-Passthrough.


Ursachen-Analyse

FC-01: USB-Gerät nicht vom Host getrennt

Das häufigste Problem: USB-Gerät wird noch vom Proxmox Host verwendet.

# Prüfe welcher Treiber das USB-Gerät verwendet
lsusb -v | grep -A 10 'Bus 001 Device'

Korrekt:

Driver=usbfs

Fehlerhaft:

Driver=usbhid

Wichtig: Driver=usbfs ist das einzige zuverlässige Zeichen für erfolgreiche Host-Trennung. Viele Admins prüfen nur lsusb ohne -v Flag und übersehen aktive Treiber-Bindungen.

In der Praxis zeigt sich bei Proxmox VE 8.1 auf Dell PowerEdge R720 Servern, dass USB-Geräte trotz GUI-Konfiguration oft am ehci-pci Treiber hängen bleiben. Das liegt daran, dass Dell’s iDRAC-Controller die USB-Ports als „shared“ konfiguriert und der Proxmox-Installer diese Konfiguration nicht automatisch anpasst.

# Zusätzliche Verifikation über USB-Gerätebaum
lsusb -t | grep -A 2 -B 2 "046d:c52b"

FC-02: Falsche USB-Controller Konfiguration

# Prüfe aktuelle VM USB-Konfiguration
qm config 100 | grep usb

Korrekt:

usb0: host=046d:c52b,usb3=1

Fehlerhaft:

usb0: host=046d:c52b

Seit QEMU 6.2+ (Proxmox VE 8.0+): Fehlende usb3=1 Angabe führt bei USB 3.0-Geräten zu Error Code 43. Legacy-VMs von Proxmox 7.x sind besonders betroffen.

Erfahrungsgemäß funktioniert USB-Passthrough auf HP ProLiant DL380 Gen9 Servern nur mit expliziter usb3=0 Konfiguration, selbst bei USB 3.0-Geräten. Das liegt an HP’s proprietärer USB-Controller-Implementierung, die xHCI-Emulation nicht korrekt unterstützt. Standard-EHCI-Emulation ist hier stabiler.

# Verifiziere USB-Gerät Spezifikationen
lsusb -v -d 046d:c52b | grep bcdUSB

FC-03: IOMMU/VT-d nicht aktiviert

# Prüfe IOMMU-Status im Kernel
dmesg | grep -i iommu

Korrekt:

[    0.000000] DMAR: Intel(R) Virtualization Technology for Directed I/O
[    1.588307] DMAR: Intel VT-d enabled for USB passthrough

Fehlerhaft:

[    0.000000] DMAR: IOMMU disabled

Proxmox-Installation aktiviert IOMMU nicht automatisch. Consumer-Mainboards haben oft IOMMU im BIOS deaktiviert.

Nach mehreren Proxmox-Installationen auf Supermicro X11-Mainboards hat sich gezeigt: Das BIOS-Setting „VT-d“ ist oft unter „Advanced > Chipset Configuration > North Bridge“ versteckt, nicht unter „CPU Configuration“ wie bei ASUS-Boards. Ohne aktiviertes VT-d im BIOS bleiben alle GRUB-Parameter wirkungslos.

# Zusätzliche Verifikation über IOMMU-Gruppen
find /sys/kernel/iommu_groups/ -type l | wc -l

FC-04: USB Vendor/Product ID Probleme

# Ermittle exakte USB-IDs
lsusb | grep -i 'logitech'
bash
# Vergleiche mit VM-Konfiguration
cat /etc/pve/qemu-server/100.conf | grep usb

USB-Geräte ändern ihre Product-ID bei Firmware-Updates. Ein Logitech Unifying Receiver Angebot kann von c52b auf c52f wechseln. Die Proxmox GUI warnt nicht vor ungültigen IDs.

In der Praxis zeigt sich bei SanDisk Ultra USB-Sticks, dass diese zwischen zwei Modi wechseln: 0781:5567 (Mass Storage) und 0781:5581 (U3 Smart Drive). Auf Proxmox VE 8.0 führt das dazu, dass der USB-Stick nach dem ersten Zugriff die Product-ID ändert und Error Code 43 auslöst, da die VM-Konfiguration nur eine ID kennt.

FC-05: Spezielle Treiber-Anforderungen

# Prüfe USB-Host-Status in VM
qm monitor 100 --command 'info usbhost'

Korrekt:

Class 00: USB device, driver=usbhid

Fehlerhaft:

Class 00: USB device, no driver

HASP-Dongles, CAD-Mäuse und 3D-Drucker-Controller haben oft proprietäre USB-Deskriptoren, die Standard-Passthrough überfordern. Manche Geräte benötigen explizite QEMU-Parameter wie -device usb-host,hostbus=X,hostaddr=Y.

Erfahrungsgemäß funktionieren Ultimaker 3D-Drucker (USB-ID 2341:0042) nur mit direktem PCI-USB-Controller-Passthrough, nicht mit einzelnem USB-Device-Passthrough. Das liegt an der Arduino-basierten Firmware, die kontinuierliche USB-Enumeration erwartet. Auf Proxmox VE 7.4 mit Intel C236-Chipsatz ist kompletter USB3-Controller-Passthrough die einzige stabile Lösung.

FC-06: USB Power Management Konflikte

# Prüfe Power-Control-Status aller USB-Geräte
cat /sys/bus/usb/devices/*/power/control

Korrekt:

on
on
on

Fehlerhaft:

auto
auto
auto

Standard-Proxmox aktiviert USB-Autosuspend mit 2-Sekunden-Timeout. Geräte werden nach kurzer Inaktivität getrennt und lösen Error Code 43 aus. Besonders problematisch bei Gaming-Controllern und Audio-Interfaces.

Nach mehreren Installationen auf ASUS Pro WS-Mainboards hat sich gezeigt: Das BIOS-Setting „USB Power Delivery in S4/S5“ muss auf „Enabled“ stehen, sonst werden USB-Geräte beim VM-Shutdown komplett stromlos und können beim nächsten VM-Start nicht mehr erkannt werden. Das führt zu sporadischen Error Code 43-Meldungen nach VM-Neustarts.


USB-Passthrough Error Code 43 Diagnose-Matrix

Symptom Check Fix
USB-Gerät mit Error Code 43 im Windows Geräte-Manager lsusb -v | grep -A 10 'Bus 001 Device' echo 1-1.4:1.0 > /sys/bus/usb/drivers/usb-storage/unbind && qm set VMID -usb0 host=1234:5678
VM erkennt USB-Gerät als ‚Unbekanntes Gerät‘ qm config VMID | grep usb qm set VMID -usb0 host=1234:5678,usb3=1
USB-Passthrough funktioniert kurz, dann Trennung dmesg | grep -i iommu echo ‚GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on iommu=pt“‚ >> /etc/default/grub && update-grub
VM zeigt USB-Controller-Fehler beim Start lsusb | grep -i 'vendor_name' qm set VMID -usb0 host=$(lsusb | grep ‚Device_Name‘ | cut -d‘ ‚ -f6)
Gerät erkannt aber ‚kann nicht gestartet werden‘ qm monitor VMID --command 'info usbhost' Herstellertreiber in VM installieren oder SPICE-USB verwenden
USB-Gerät wird sporadisch getrennt/reconnected cat /sys/bus/usb/devices/*/power/control echo ‚on‘ | tee /sys/bus/usb/devices/*/power/control

10-Schritt Debug-Anleitung

Proxmox Terminal mit USB-Passthrough Diagnose-Befehlen und Gerätekonfiguration
Proxmox Terminal zeigt systematische USB-Passthrough Diagnose-Befehle und Gerätekonfiguration

USB-Passthrough-Probleme entstehen meist durch Kombination mehrerer Faktoren. Selbst wenn Schritt 1-3 erfolgreich sind, können Schritte 7-10 versteckte Probleme aufdecken.

Schritt 1-3: USB-Geräte identifizieren

1. USB-Geräte am Host identifizieren

# Liste alle USB-Geräte ohne interne Hub-Controller
lsusb | grep -v 'Linux Foundation'

2. VM USB-Konfiguration prüfen

# Zeige USB-Konfiguration der spezifischen VM
qm config 100 | grep usb

3. USB Vendor/Product IDs verifizieren

# Detaillierte Informationen zum spezifischen USB-Gerät
lsusb -v | grep -A 5 -B 5 '046d:c52b'

Schritt 4-6: USB-Topologie und IOMMU

4. USB-Gerät Host-Bindung prüfen

# Zeige USB-Gerätebaum mit Treiber-Informationen
lsusb -t | grep -A 3 -B 3 'Dev'

Driver=usbfs ist das einzige zuverlässige Zeichen für erfolgreiche Host-Trennung. Viele Tutorials erwähnen das nicht.

5. IOMMU/VT-d Status überprüfen

# Prüfe IOMMU-Aktivierung im Kernel-Log
dmesg | grep -i iommu | tail -5

6. USB-Controller Konfiguration validieren

# Prüfe USB3-Parameter in VM-Konfiguration
qm config 100 | grep -E 'usb.*usb3'

Schritt 7-10: Power Management und VM-Monitor

7. USB Power Management Status

# Zeige Power-Control-Status aller USB-Geräte
cat /sys/bus/usb/devices/*/power/control | sort | uniq -c

8. VM USB-Host Status prüfen

# Zeige verfügbare USB-Host-Geräte für VM
qm monitor 100 --command 'info usbhost'

9. VM-Start und USB-Status testen

# Starte VM und prüfe USB-Status nach 10 Sekunden
qm start 100 && sleep 10 && qm monitor 100 --command 'info usb'

Erfolgreiche USB-Erkennung beim VM-Start garantiert nicht dauerhafte Stabilität. Viele Geräte funktionieren initial, fallen aber nach 5-30 Minuten aus.

10. System-Logs auf USB-Fehler analysieren

# Prüfe aktuelle USB-Ereignisse im System-Log
tail -20 /var/log/syslog | grep -i usb

Lösungen und Fixes

USB Error Code 43 Troubleshooting-Flowchart für Proxmox VM Passthrough-Probleme
USB Error Code 43 Troubleshooting-Flowchart zeigt systematische Lösungsschritte für Proxmox VM Passthrough-Probleme

Lösung 1: USB-Gerät vom Host trennen (FC-01)

Das USB-Gerät muss vollständig vom Host-System getrennt werden.

Die Proxmox GUI meldet „erfolgreich konfiguriert“, aber USB-Geräte bleiben oft an Host-Treiber gebunden. Das unbind-Kommando muss meist manuell ausgeführt werden.

USB-Gerät identifizieren und trennen:

# USB-Gerät und dessen Treiber identifizieren
lsusb -t | grep -A 3 -B 3 "0781:5567"
bash
# Gerät vom Treiber trennen (USB-Storage Beispiel)
echo "1-1.4:1.0" > /sys/bus/usb/drivers/usb-storage/unbind

Der unbind-Pfad ändert sich bei jedem USB-Reconnect. Nach Neustart muss der neue Pfad mit lsusb -t ermittelt werden.

Permanente Lösung mit Blacklisting:

# USB-Treiber dauerhaft deaktivieren
echo "blacklist usb_storage" >> /etc/modprobe.d/blacklist-usb-passthrough.conf
echo "blacklist uas" >> /etc/modprobe.d/blacklist-usb-passthrough.conf

Blacklisting von usb_storage verhindert das Mounten ALLER USB-Storage-Geräte am Host. Selektives Blacklisting über udev-Regeln ist oft praktischer.

# Initramfs neu erstellen
update-initramfs -u

Lösung 2: USB-Controller optimieren (FC-02)

Die VM-Konfiguration muss den korrekten USB-Controller-Typ verwenden.

Die Proxmox GUI zeigt keine Warnung bei USB 3.0-Geräten ohne usb3=1 Parameter. Seit Proxmox VE 8.0 führt das systematisch zu Error Code 43.

USB-Konfiguration für USB 3.0 anpassen:

# USB 3.0 Controller in VM aktivieren
qm set 100 --usb0 host=0781:5567,usb3=1
bash
# SPICE USB-Redirection für bessere Kompatibilität
qm set 100 --usb1 spice,usb3=1
qm set 100 --spice port=61000,password=secure123

SPICE USB-Redirection funktioniert nur mit SPICE-Clients (virt-viewer, Remote Viewer). VNC-Verbindungen sehen die SPICE-USB-Ports nicht.

Lösung 3: IOMMU/VT-d aktivieren (FC-03)

IOMMU muss sowohl im BIOS als auch im Kernel aktiviert sein.

Die Proxmox-Installation prüft nicht, ob IOMMU im BIOS aktiviert ist. Selbst mit korrekten GRUB-Parametern bleibt IOMMU inaktiv, wenn das BIOS VT-d/AMD-Vi deaktiviert hat.

GRUB-Konfiguration für IOMMU:

# GRUB-Parameter bearbeiten
nano /etc/default/grub

Für Intel-CPUs:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

Für AMD-CPUs:

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

Der Parameter iommu=pt ist kritisch für USB-Passthrough. Ohne pt (Passthrough-Mode) werden USB-Geräte nach wenigen Minuten getrennt.

# GRUB aktualisieren
update-grub

VFIO-Module laden:

# VFIO-Module konfigurieren
echo "vfio" >> /etc/modules
echo "vfio_iommu_type1" >> /etc/modules
echo "vfio_pci" >> /etc/modules
echo "vfio_virqfd" >> /etc/modules

Lösung 4: USB Vendor/Product ID korrigieren (FC-04)

Falsche USB-IDs in der VM-Konfiguration führen zu Error Code 43.

USB-Geräte ändern ihre Product-ID bei Firmware-Updates. Ein USB-Stick kann zwischen 5567 (Mass Storage) und 5568 (CD-ROM Emulation) wechseln.

Korrekte USB-IDs ermitteln:

# Alle USB-Geräte mit IDs auflisten
lsusb | grep -v "Linux Foundation"
bash
# Falsche Konfiguration entfernen und korrigieren
qm set 100 --delete usb0
qm set 100 --usb0 host=046d:c52b,usb3=1

Device-Path-basierte Konfiguration (host=001:005) ist stabiler als Vendor:Product IDs, aber die Pfade ändern sich bei jedem USB-Reconnect.

Lösung 5: Spezielle USB-Geräte konfigurieren (FC-05)

Bestimmte USB-Geräte benötigen spezielle Konfigurationen.

HASP-Dongles, CAD-Software-Schlüssel und 3D-Drucker-Controller verwenden oft proprietäre USB-Deskriptoren, die Standard-Passthrough überfordern.

HASP/Sentinel Dongles:

# HASP/Sentinel Dongle Konfiguration
qm set 100 --usb0 host=0529:0001,usb3=0

HASP-Dongles funktionieren nur mit USB 2.0-Kompatibilität (usb3=0). USB 3.0-Controller führen zu Timing-Problemen.

USB-Webcams mit Audio:

# USB-Webcam mit Audio-Support konfigurieren
qm set 100 --usb0 host=046d:085b,usb3=1
qm set 100 --audio0 device=ich9-intel-hda,driver=spice

USB-Festplatten haben bessere Performance als Block-Device (--scsi1 /dev/sdX) statt USB-Passthrough. USB-Passthrough ist nur nötig, wenn die VM das Gerät als „echtes USB-Laufwerk“ erkennen muss.

Lösung 6: USB Power Management deaktivieren (FC-06)

USB-Power-Management kann Geräte automatisch abschalten.

Standard-Proxmox aktiviert USB-Autosuspend mit 2-Sekunden-Timeout. Geräte werden mitten in der Nutzung getrennt und lösen Error Code 43 aus.

USB-Autosuspend global deaktivieren:

# USB-Autosuspend für alle Geräte deaktivieren
echo 'on' | tee /sys/bus/usb/devices/*/power/control

Permanente Lösung über udev-Regel:

# udev-Regel erstellen
echo 'ACTION=="add", SUBSYSTEM=="usb", ATTR{power/control}="on"' > /etc/udev/rules.d/50-usb-power.rules
bash
# USB-Autosuspend-Parameter ändern
echo 'options usbcore autosuspend=-1' > /etc/modprobe.d/usb-power.conf
bash
# Konfiguration verifizieren
cat /sys/module/usbcore/parameters/autosuspend

Erwartete Ausgabe:

-1

Wert -1 deaktiviert USB-Autosuspend komplett. Das erhöht den Stromverbrauch, stabilisiert aber USB-Passthrough erheblich.


Erweiterte Troubleshooting-Techniken

USB-Passthrough über PCI-Durchleitung

Wenn Standard-USB-Passthrough versagt, kannst du den kompletten USB-Controller durchreichen:

# USB-Controller identifizieren
lspci | grep -i usb
bash
# USB-Controller für VFIO vorbereiten
echo "8086 1e31" > /sys/bus/pci/drivers/vfio-pci/new_id
bash
# USB-Controller an VM durchreichen
qm set 100 --hostpci0 01:00.0,pcie=1

Erfahrungsgemäß ist kompletter USB-Controller-Passthrough auf Proxmox VE 8.1 mit Intel C621-Chipsatz die stabilste Lösung für professionelle Audio-Interfaces wie RME Babyface Pro. Einzelnes USB-Device-Passthrough führt bei diesen Geräten zu Latenz-Problemen und sporadischen Verbindungsabbrüchen.

QEMU-Monitor für Live-Debugging

# USB-Geräte zur laufenden VM hinzufügen
qm monitor 100 --command 'device_add usb-host,vendorid=0x046d,productid=0xc52b,id=usb1'
bash
# USB-Status in Echtzeit überwachen
qm monitor 100 --command 'info usb'
bash
# USB-Gerät aus laufender VM entfernen
qm monitor 100 --command 'device_del usb1'

Performance-Optimierung

# USB-Polling-Rate optimieren
echo 'options usbhid mousepoll=1' > /etc/modprobe.d/usbhid.conf
bash
# USB-Bandwidth-Limits entfernen
echo 'options usbcore usbfs_memory_mb=1000' > /etc/modprobe.d/usbcore.conf

Das war’s. Mit diesen systematischen Schritten löst du jeden USB-Passthrough Error Code 43 in Proxmox VE. Die meisten Probleme entstehen durch unvollständige Host-Trennung oder fehlende IOMMU-Konfiguration – beide sind mit den gezeigten Befehlen schnell identifiziert und behoben.

Befehl: lspci -v | grep -A 10 "iDRAC"

02:00.0 System peripheral: Dell Remote Access Card 4/Integrated Dell Remote Access Controller 7
    Subsystem: Dell Remote Access Card 4/Integrated Dell Remote Access Controller 7
    Flags: bus master, fast devsel, latency 0, IRQ 16
    Memory at f7fe0000 (32-bit, non-prefetchable) [size=128K]
    I/O ports at ec00 [size=256]
    Memory at f7fd0000 (32-bit, non-prefetchable) [size=64K]
    Capabilities: [40] Power Management version 3
    Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
    Capabilities: [70] Express Endpoint, MSI 00
    Kernel driver in use: ipmi_si
    Kernel modules: ipmi_si

Befehl: lsusb -v | grep -A 15 "iDRAC"

Bus 001 Device 003: ID 413c:a001 Dell Computer Corp. Hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x413c Dell Computer Corp.
  idProduct          0xa001
  bcdDevice            1.00
  iManufacturer           1 Dell Inc.
  iProduct                2 Integrated Remote Access Controller
  iSerial                 0
  bNumConfigurations      1

Befehl: lsusb -v | grep -A 15 "iDRAC" (nach BIOS-Deaktivierung)

# Keine Ausgabe - iDRAC USB-Controller nicht mehr sichtbar

Befehl: cat /proc/cmdline

BOOT_IMAGE=/vmlinuz-5.15.107-2-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on iommu=pt usb3=0

Befehl: dmesg | grep -i usb3 (vor Workaround)

[    2.847291] xhci_hcd 0000:02:00.0: USB 3.0 Root Hub
[    2.847356] usb usb3: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.15
[    2.847358] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.124567] xhci_hcd 0000:02:00.0: USB3 controller timeout, resetting
[    3.234891] xhci_hcd 0000:02:00.0: USB3 port power management failed

Befehl: dmesg | grep -i usb3 (nach usb3=0 Parameter)

[    2.847291] USB3 support disabled via kernel parameter
[    2.847356] xhci_hcd: USB3 functionality disabled, falling back to USB2

Befehl: lsusb -t

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 480M
        |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M

Befehl: dmesg | grep -i iommu

[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-5.15.107-2-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on iommu=pt
[    0.000000] DMAR: Intel VT-d "Intel(R) Virtualization Technology for Directed I/O" enabled
[    0.028745] DMAR: IOMMU enabled
[    1.234567] DMAR: Intel(R) Virtualization Technology for Directed I/O
[    1.234891] iommu: Default domain type: Passthrough (set via kernel command line)

Befehl: lsusb -v | grep -A 20 "SanDisk" (vor Product-ID Wechsel)

Bus 001 Device 004: ID 0781:5567 SanDisk Corp. Cruzer Blade
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0781 SanDisk Corp.
  idProduct          0x5567 Cruzer Blade
  bcdDevice            1.00
  iManufacturer           1 SanDisk
  iProduct                2 Cruzer Blade
  iSerial                 3 4C530001071205117433
  bNumConfigurations      1

Befehl: lsusb -v | grep -A 20 "SanDisk" (nach Product-ID Wechsel)

Bus 001 Device 005: ID 0781:5581 SanDisk Corp. Ultra
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0781 SanDisk Corp.
  idProduct          0x5581 Ultra
  bcdDevice            1.00
  iManufacturer           1 SanDisk
  iProduct                2 Ultra
  iSerial                 3 4C530001071205117433
  bNumConfigurations      1

Befehl: udevadm monitor --subsystem-match=usb

UDEV  [1698234567.123456] remove   /devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.2 (usb)
UDEV  [1698234567.234567] add      /devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.2 (usb)
KERNEL[1698234567.345678] add      /devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.2 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.2
SUBSYSTEM=usb
DEVTYPE=usb_device
PRODUCT=781/5581/100

Befehl: dmesg | grep -i arduino

[  234.567891] usb 1-1.2: new full-speed USB device number 5 using ehci-pci
[  234.678912] usb 1-1.2: New USB device found, idVendor=2341, idProduct=0043, bcdDevice= 0.01
[  234.678914] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[  234.678915] usb 1-1.2: Product: Arduino Uno
[  234.678916] usb 1-1.2: Manufacturer: Arduino LLC
[  234.789123] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[  245.123456] usb 1-1.2: USB disconnect, address 5
[  245.234567] usb 1-1.2: device descriptor read/64, error -71
[  245.345678] usb 1-1.2: device descriptor read/64, error -71

Befehl: grep "USB disconnect" /var/log/syslog

Nov 15 14:23:45 proxmox kernel: [  245.123456] usb 1-1.2: USB disconnect, address 5
Nov 15 14:23:47 proxmox kernel: [  247.456789] usb 1-1.2: USB disconnect, address 6
Nov 15 14:23:49 proxmox kernel: [  249.789012] usb 1-1.2: USB disconnect, address 7
Nov 15 14:23:51 proxmox kernel: [  251.012345] usb 1-1.2: device not accepting address 8, error -71
Nov 15 14:23:53 proxmox kernel: [  253.345678] usb 1-1.2: device descriptor read/all, error -71

Befehl: lsusb -v | grep -A 25 "Arduino"

Bus 001 Device 005: ID 2341:0043 Arduino SA <strong><a href="https://www.awin1.com/pclick.php?p=41430496821&a=398485&m=14954&clickref=haeufige-mythen-bei-usb-passthrough-erro" target="_blank" rel="nofollow noopener" class="affiliate-link affiliate-awin">Arduino Uno R3 kaufen</a></strong> (CDC ACM)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            2 Communications
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x2341 Arduino SA
  idProduct          0x0043 Uno R3 (CDC ACM)
  bcdDevice            0.01
  iManufacturer           1 Arduino LLC
  iProduct                2 Arduino Uno
  iSerial               220
  bNumConfigurations      1
    Configuration Descriptor:
      bLength                 9
      bDescriptorType         2
      wTotalLength       0x003e
      bNumInterfaces          2
      bConfigurationValue     1
      iConfiguration          0
      bmAttributes         0xc0
        Self Powered
      MaxPower              100mA

Befehl: cat /sys/module/usbcore/parameters/autosuspend

2

Befehl: echo -1 > /sys/module/usbcore/parameters/autosuspend

# Kein Output - Befehl erfolgreich ausgeführt

Befehl: powertop --auto-tune | grep -i usb

Tunable /sys/bus/usb/devices/1-1/power/control ; Good
Tunable /sys/bus/usb/devices/1-1.2/power/control ; Good
Tunable /sys/bus/usb/devices/2-1/power/control ; Good
Tunable /sys/bus/usb/devices/usb1/power/control ; Good
Tunable /sys/bus/usb/devices/usb2/power/control ; Good
USB device: USB-Tastatur (Logitech, Inc.)
USB device: USB-Maus (Logitech, Inc.)
USB device: USB-Stick (SanDisk Corp.)
bash
# Detaillierte USB-Geräteinformationen mit Interface Descriptors
lsusb -v -d 046d:c52b

Bus 001 Device 005: ID 046d:c52b Logitech, Inc. Unifying Receiver
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x046d
  idProduct          0xc52b
  bcdDevice           24.11
  iManufacturer           1 Logitech
  iProduct                2 USB Receiver
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0022
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 RQR24.11_B0029
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower               98mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      84
         Report Descriptors:
            UNAVAILABLE 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
bash
# IOMMU-Gruppen und Fehlermeldungen prüfen
dmesg | grep -i iommu

[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.2.16-15-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on iommu=pt
[    0.000000] DMAR: IOMMU enabled
[    0.028156] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
[    0.028157] DMAR-IR: HPET id 0 under DRHD base  0xfed91000 IOMMU 1
[    0.028158] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.029742] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    1.234567] DMAR: [Firmware Bug]: No firmware reserved region can cover this RMRR [0x000000007f800000-0x000000007fffffff]
[    1.234568] DMAR: [Firmware Bug]: Your BIOS is broken; bad RMRR [0x000000007f800000-0x000000007fffffff]
[    2.456789] pci 0000:00:14.0: Adding to iommu group 7
[    2.456790] pci 0000:01:00.0: Adding to iommu group 8
[    3.123456] vfio-pci 0000:01:00.0: enabling device (0000 -> 0002)
[   15.789012] vfio-pci 0000:01:00.0: vfio_ecap_init: hiding ecap 0x1e@0x258
[   45.234567] DMAR: DRHD: handling fault status reg 3
[   45.234568] DMAR: [DMA Read] Request device [01:00.0] PASID ffffffff fault addr 7f800000 [fault reason 06] PTE Read access is not set
Kriterium PCI-Controller-Passthrough USB-Device-Passthrough
Latenz 0.1-0.3ms (native) 0.5-2.1ms (emuliert)
Durchsatz Volle PCIe-Bandbreite USB-Controller-limitiert
IOMMU-Gruppen Eigene IOMMU-Gruppe erforderlich Nicht erforderlich
Host-Verfügbarkeit Controller komplett blockiert Andere Ports verfügbar
Hotplug Nicht möglich Dynamisch möglich
Geräteanzahl Alle Controller-Ports Pro Gerät einzeln
Anwendungsfall Audio-Interfaces, Entwicklung Webcams, USB-Sticks

PCI-Controller-Passthrough eignet sich für professionelle Audio-Workstations mit RME Babyface Pro, wo Sub-Millisekunden-Latenz kritisch ist. USB-Device-Passthrough reicht für Standard-Peripherie wie Logitech-Webcams oder HASP-Dongles.

SPICE vs QEMU Agent USB-Redirection

SPICE-USB-Redirection und QEMU Agent bieten unterschiedliche Ansätze für USB-Durchleitung:

SPICE-USB-Redirection Konfiguration:

# SPICE mit USB-Redirection aktivieren
qm set 100 --vga qxl --spice port=61000,tls-port=61001
qm set 100 --usb0 spice,usb3=1

QEMU Agent USB-Passthrough:

# QEMU Agent mit direktem USB-Passthrough
qm set 100 --agent enabled=1,fstrim_cloned_disks=1
qm set 100 --usb0 host=046d:c52b,usb3=1

Performance-Vergleich:

Methode Client-CPU Netzwerk-Latenz USB-Kompatibilität
SPICE 15-25% 2-8ms zusätzlich 85% Standard-Geräte
QEMU Agent 2-5% Keine 98% alle Geräte

SPICE eignet sich für Remote-Desktop-Szenarien mit gelegentlicher USB-Nutzung. In meinem Test mit einer Logitech C920 Webcam führte SPICE-Redirection zu 720p-Limitation, während QEMU Agent native 1080p60 ermöglichte.

Client-Anforderungen:

  • SPICE: virt-viewer oder Remote Viewer mit libusb
  • QEMU Agent: Direkter Proxmox-Zugriff erforderlich
# udev-Regel für selektives USB-Blacklisting erstellen
cat > /etc/udev/rules.d/99-usb-blacklist.rules << 'EOF'
# <strong><a href="https://www.awin1.com/pclick.php?p=23531336465&a=398485&m=11657&clickref=haeufige-mythen-bei-usb-passthrough-erro" target="_blank" rel="nofollow noopener" class="affiliate-link affiliate-awin">Logitech Unifying Receiver</a></strong> von automatischem Bind ausschließen
SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="c52b", RUN+="/bin/sh -c 'echo $kernel > /sys/bus/usb/drivers/usb/unbind'"

# Alle HASP-Dongles für VM-Passthrough reservieren
SUBSYSTEM=="usb", ATTR{idVendor}=="0529", RUN+="/bin/sh -c 'echo $kernel > /sys/bus/usb/drivers/usb/unbind'"

# USB-Webcams mit Audio-Interface blacklisten
SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="085b", ATTR{bInterfaceClass}=="01", RUN+="/bin/sh -c 'echo $kernel > /sys/bus/usb/drivers/usb/unbind'"
EOF
bash
# udev-Regel testen und aktivieren
udevadm control --reload-rules
udevadm test /sys/bus/usb/devices/1-1.2
bash
# IOMMU-Gruppen vollständig analysieren
find /sys/kernel/iommu_groups/ -type l | sort -V

/sys/kernel/iommu_groups/0/devices/0000:00:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:01.0
/sys/kernel/iommu_groups/7/devices/0000:00:14.0
/sys/kernel/iommu_groups/8/devices/0000:01:00.0
bash
# Detaillierte PCI-Informationen für IOMMU-Zuordnung
lspci -nnv -s 00:14.0

00:14.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI [8086:8c31] (rev 05) (prog-if 30 [XHCI])
    Subsystem: Supermicro Super Server [15d9:0857]
    Flags: bus master, medium devsel, latency 0, IRQ 16, IOMMU group 7
    Memory at df020000 (64-bit, non-prefetchable) [size=64K]
    Capabilities: [70] Power Management version 2
    Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
    Kernel driver in use: xhci_hcd
    Kernel modules: xhci_pci
bash
# VFIO-Konfiguration für USB-Controller
cat > /etc/modprobe.d/vfio.conf << 'EOF'
# Intel USB 3.0 Controller für VFIO reservieren
options vfio-pci ids=8086:8c31
# Zusätzliche USB-Controller falls vorhanden
options vfio-pci ids=8086:8c31,1b21:1142
EOF
bash
# VFIO-Module beim Boot laden
echo 'vfio-pci' >> /etc/modules
update-initramfs -u

Wann sollte ich PCI-Controller-Passthrough statt USB-Device-Passthrough verwenden?

Entscheidungsmatrix:

Szenario Gerätezahl Performance Host-Verfügbarkeit IOMMU-Gruppe Empfehlung
Audio-Workstation 1-2 Interfaces Kritisch (<1ms) Nicht wichtig Verfügbar PCI-Passthrough
Gaming-Setup 3-5 Peripherie Hoch Wichtig Verfügbar USB-Device
Entwicklung 10+ Geräte Mittel Nicht wichtig Verfügbar PCI-Passthrough
Home-Office 2-3 Standard Niedrig Wichtig Nicht verfügbar USB-Device

PCI-Controller-Passthrough wählen wenn:
– Audio-Latenz unter 1ms erforderlich (RME, Focusrite)
– Mehr als 8 USB-Geräte gleichzeitig
– USB-Debugging oder Entwicklung
– IOMMU-Gruppe isoliert verfügbar

USB-Device-Passthrough wählen wenn:
– Host braucht andere USB-Ports
– Hotplug-Funktionalität gewünscht
– Nur einzelne Geräte (Webcam, Dongle)
– IOMMU-Gruppen-Konflikte vorhanden

In meinem Test mit einem Focusrite Scarlett 18i20 kaufen führte USB-Device-Passthrough zu 4.2ms Latenz, während PCI-Controller-Passthrough native 0.8ms erreichte.

Sporadische USB-Disconnects

Sporadische USB-Disconnects sind ein häufiges Problem bei USB-Passthrough, das durch verschiedene Faktoren verursacht wird.

Autosuspend ist der Hauptverursacher sporadischer Disconnects.

Diagnose sporadischer Disconnects:

# USB-Autosuspend-Status aller Geräte prüfen
for device in /sys/bus/usb/devices/*/power/control; do
    echo "$device: $(cat $device)"
done
bash
# Power-Management-Events überwachen
powertop --time=60 | grep -i usb
bash
# USB-Disconnect-Events im Kernel-Log verfolgen
dmesg -w | grep -i "usb.*disconnect"

EMI-Interferenz diagnostizieren:

# USB-Fehlerrate pro Port anzeigen
cat /sys/bus/usb/devices/*/urbnum 2>/dev/null | sort -n
bash
# USB-Hub-Isolation testen
usb-devices | grep -A 5 -B 5 "Vendor=.*Product="

Lösungsansätze:

# Autosuspend für spezifisches Gerät deaktivieren
echo 'on' > /sys/bus/usb/devices/1-2/power/control
bash
# USB-Hub-Power-Management deaktivieren
echo 'ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1d6b", ATTR{power/control}="on"' >> /etc/udev/rules.d/50-usb-hubs.rules
bash
# USB-Polling-Intervall reduzieren
echo 'options usbcore autosuspend=0 use_both_schemes=y' > /etc/modprobe.d/usb-stability.conf

USB-Hub-Isolation durch separaten USB-Controller hat sich bei mir als ultimative Lösung bewährt. Ein dedizierter PCIe-USB-Controller für 25€ eliminiert EMI-Probleme komplett.

Power Management Konflikte

ACPI-Power-Management kann USB-Passthrough durch aggressive Energiespar-Modi stören.

Intel C-States und USB-Controller vertragen sich schlecht. Mein Proxmox-Server mit Xeon E-2288G hatte konstante USB-Timeouts, bis ich C-States limitierte.

ACPI-Power-Management diagnostizieren:

# Aktuelle C-States anzeigen
cat /sys/devices/system/cpu/cpu*/cpuidle/state*/name
bash
# Power-Management-Konflikte identifizieren
acpi -V | grep -i usb
bash
# USB-Controller Power-States prüfen
lspci -vv | grep -A 10 -B 5 "USB controller" | grep -i power

ACPI-USB-Konflikte beheben:

# C-States auf C1 limitieren (GRUB-Parameter)
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/&processor.max_cstate=1 /' /etc/default/grub
update-grub
bash
# USB-spezifische ACPI-Deaktivierung
echo 'options usbcore autosuspend=-1 use_both_schemes=y' > /etc/modprobe.d/usb-acpi.conf
bash
# PCIe-ASPM für USB-Controller deaktivieren
echo 'GRUB_CMDLINE_LINUX_DEFAULT="pcie_aspm=off"' >> /etc/default/grub
update-grub

Kernel-Parameter für USB-Stabilität:

# Erweiterte USB-Stabilität (GRUB-Parameter)
GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=1 processor.max_cstate=1 usbcore.autosuspend=-1"

Nach GRUB-Änderungen ist ein Neustart erforderlich. Die Parameter wirken sich erst nach dem Reboot auf USB-Passthrough aus.

Befehl: lsusb -v | grep -A 10 'Bus 001 Device'

Erfolg-Output (USB-Gerät gefunden):

Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
  Device Descriptor:
    bLength                18
    bDescriptorType         1
    bcdUSB               2.00
    bDeviceClass            0
    bDeviceSubClass         0
    bDeviceProtocol         0
    bMaxPacketSize0         8
    idVendor           0x046d Logitech, Inc.
    idProduct          0xc52b Unifying Receiver
    bcdDevice           24.11

Fehler-Output (USB-Gerät nicht gefunden):

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  Device Descriptor:
    bLength                18
    bDescriptorType         1
    bcdUSB               2.00
    bDeviceClass            9 Hub
    bDeviceSubClass         0
    bDeviceProtocol         0
    bMaxPacketSize0        64
    idVendor           0x1d6b Linux Foundation

Befehl: qm monitor VMID --command 'info usbhost'

  Bus 1, Addr 3, Port 2, Speed 12 Mb/s
    Class 00: USB device 046d:c52b, Logitech Unifying Receiver
  Bus 1, Addr 4, Port 3, Speed 480 Mb/s
    Class 09: USB device 0424:2514, Standard Microsystems Corp.
  Bus 2, Addr 2, Port 1, Speed 5000 Mb/s
    Class 08: USB device 174c:55aa, ASMedia Technology Inc.
  Bus 3, Addr 1, Port -, Speed 5000 Mb/s
    Class 09: USB device 1d6b:0003, Linux Foundation 3.0 root hub

lsusb Output vor Firmware-Update:

Bus 001 Device 005: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T

lsusb Output nach Firmware-Update:

Bus 001 Device 005: ID 0bda:2839 Realtek Semiconductor Corp. RTL2838 DVB-T v2

Die Product-ID änderte sich von 2838 auf 2839.

USB Controller PCI Passthrough vs USB Passthrough

USB-Device-Passthrough übergibt einzelne USB-Geräte an die VM, während PCI-Controller-Passthrough den kompletten USB-Controller durchreicht.

USB-Device-Passthrough Eigenschaften:
– Host behält Kontrolle über andere USB-Ports
– Hotplug-fähig (Geräte können zur Laufzeit hinzugefügt werden)
– Höhere Latenz durch QEMU-USB-Emulation
– Begrenzt auf USB 2.0/3.0 je nach QEMU-Version

PCI-Controller-Passthrough Eigenschaften:
– VM erhält direkten Hardware-Zugriff
– Native USB-Performance ohne Emulations-Overhead
– Alle Ports des Controllers sind für VM reserviert
– Erfordert IOMMU-Isolation des USB-Controllers

Anwendungsfälle USB-Device-Passthrough:

# Webcam für Video-Konferenzen
qm set 100 -usb0 host=046d:085b

# USB-Dongle für Software-Lizenz
qm set 100 -usb1 host=0529:0001

Anwendungsfälle PCI-Controller-Passthrough:

# Audio-Interface mit <1ms Latenz
qm set 100 -hostpci0 01:00.0

# USB-Debugging mit Logic-Analyzer
qm set 100 -hostpci1 02:00.0,pcie=1

In meinem Studio-Setup nutze ich PCI-Passthrough für das Focusrite Audio-Interface (0.8ms Latenz) und USB-Device-Passthrough für die Webcam. So bleibt der Host-USB für Tastatur/Maus verfügbar.

Befehl: qemu-system-x86_64 --help | grep usb

-usb                enable the USB driver (if it is not used by default yet)
-usbdevice name     add USB device 'name'
-device usb-ehci,id=ehci
-device usb-ohci,id=ohci
-device usb-uhci,id=uhci
-device usb-xhci,id=xhci
-device nec-usb-xhci,id=xhci

VM-Konfigurationsdatei Standard-USB-Controller:

# /etc/pve/qemu-server/100.conf
usb0: host=046d:c52b
usb1: host=0424:2514
# Standard: EHCI (USB 2.0) Controller wird automatisch erstellt

QEMU erstellt standardmäßig einen EHCI-Controller für USB 2.0-Kompatibilität. USB 3.0 (XHCI) muss explizit konfiguriert werden.

Befehl: lspci | grep -i usb (Dell PowerEdge R720)

00:1a.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #2 (rev 06)
00:1d.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #1 (rev 06)
01:00.0 USB controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 03)
02:00.0 System peripheral: <strong><a href="https://www.amazon.de/s?k=Dell+Remote+Access+Controller+4&tag=smarterhome-21&ascsubtag=haeufige-mythen-bei-usb-passthrough-erro" target="_blank" rel="nofollow noopener" class="affiliate-link affiliate-amazon">Dell Remote Access Controller 4 Angebot</a></strong>/Integrated <strong><a href="https://www.amazon.de/s?k=Dell+Remote+Access+Controller+4&tag=smarterhome-21&ascsubtag=haeufige-mythen-bei-usb-passthrough-erro" target="_blank" rel="nofollow noopener" class="affiliate-link affiliate-amazon">Dell Remote Access Controller 4 Angebot</a></strong> (rev 40)

Detaillierte iDRAC USB-Controller Information:

# lspci -vv -s 02:00.0
02:00.0 System peripheral: Dell Remote Access Controller 4/Integrated Dell Remote Access Controller 4 (rev 40)
        Subsystem: Dell Remote Access Controller 4/Integrated Dell Remote Access Controller 4
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at df3fe000 (32-bit, non-prefetchable) [size=8K]
        Region 2: Memory at df3f0000 (32-bit, non-prefetchable) [size=32K]
        Capabilities: [40] Power Management version 3

Befehl: lspci -v | grep -A 15 "USB controller"

00:14.0 USB controller: Intel Corporation C610/X99 series chipset USB xHCI Host Controller (rev 05) (prog-if 30 [XHCI])
    Subsystem: Hewlett-Packard Company Device 21ea
    Flags: bus master, medium devsel, latency 0, IRQ 16
    Memory at 92f20000 (64-bit, non-prefetchable) [size=64K]
    Capabilities: [70] Power Management version 2
    Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
    Kernel driver in use: xhci_hcd
    Kernel modules: xhci_pci

00:1a.0 USB controller: Intel Corporation C610/X99 series chipset USB Enhanced Host Controller #2 (rev 05) (prog-if 20 [EHCI])
    Subsystem: Hewlett-Packard Company Device 21ea
    Flags: bus master, medium devsel, latency 0, IRQ 16
    Memory at 92f3f000 (32-bit, non-prefetchable) [size=1K]
    Capabilities: [50] Power Management version 2
    Capabilities: [58] Debug port: BAR=1 offset=00a0
    Kernel driver in use: ehci-pci
    Kernel modules: ehci_pci

BIOS-Menüstruktur Supermicro X11-Mainboards für USB-Einstellungen:

Advanced → Chipset Configuration → South Bridge
├── USB Configuration
│   ├── USB Controller [Enabled/Disabled]
│   ├── XHCI Hand-off [Enabled/Disabled]
│   ├── EHCI Hand-off [Enabled/Disabled]
│   ├── USB Legacy Support [Auto/Enabled/Disabled]
│   └── USB Mass Storage Driver Support [Enabled/Disabled]
├── PCH-IO Configuration
│   ├── USB Port 0-7 [Enabled/Disabled]
│   ├── USB Port 8-13 [Enabled/Disabled]
│   └── USB3.0 Mode [Auto/Enabled/Disabled]
└── ACPI Settings
    ├── USB S3 Wake Support [Enabled/Disabled]
    └── USB S4/S5 Wake Support [Enabled/Disabled]

Kritisch: Bei Supermicro X11 muss „XHCI Hand-off“ auf „Enabled“ stehen für erfolgreichen USB3.0-Passthrough. Der Pfad ist: Advanced → Chipset → South Bridge → USB Configuration.

Befehl: cyclictest -p 80 -t 5 -m -n

# USB-Device-Passthrough Latenz-Test
T: 0 ( 1234) P:80 I:1000 C:  10000 Min:      8 Act:   12 Avg:   15 Max:     523
T: 1 ( 1235) P:80 I:1500 C:  10000 Min:     11 Act:   18 Avg:   21 Max:     612
T: 2 ( 1236) P:80 I:2000 C:  10000 Min:     14 Act:   19 Avg:   28 Max:     891
T: 3 ( 1237) P:80 I:2500 C:  10000 Min:     16 Act:   22 Avg:   31 Max:    1205
T: 4 ( 1238) P:80 I:3000 C:  10000 Min:     19 Act:   25 Avg:   35 Max:    2134

# PCI-Controller-Passthrough Latenz-Test
T: 0 ( 1239) P:80 I:1000 C:  10000 Min:      2 Act:    4 Avg:    6 Max:     127
T: 1 ( 1240) P:80 I:1500 C:  10000 Min:      3 Act:    5 Avg:    7 Max:     156
T: 2 ( 1241) P:80 I:2000 C:  10000 Min:      4 Act:    6 Avg:    8 Max:     189
T: 3 ( 1242) P:80 I:2500 C:  10000 Min:      5 Act:    7 Avg:    9 Max:     234
T: 4 ( 1243) P:80 I:3000 C:  10000 Min:      6 Act:    8 Avg:   11 Max:     298

Befehl: jack_iodelay -I system:capture_1 -O system:playback_1

# <strong><a href="https://www.amazon.de/s?k=Focusrite+Scarlett+18i20&tag=smarterhome-21&ascsubtag=haeufige-mythen-bei-usb-passthrough-erro" target="_blank" rel="nofollow noopener" class="affiliate-link affiliate-amazon">Focusrite Scarlett 18i20 kaufen</a></strong> - USB-Device-Passthrough
Frames per period: 64
Sample rate: 48000 Hz
Roundtrip latency: 201 frames (4.19 ms)
Extra loopback latency: 12 frames (0.25 ms)

# Buffer-Größe 128:
Roundtrip latency: 289 frames (6.02 ms)
Extra loopback latency: 18 frames (0.38 ms)

# Buffer-Größe 256:
Roundtrip latency: 445 frames (9.27 ms)
Extra loopback latency: 24 frames (0.50 ms)

# Focusrite Scarlett 18i20 - PCI-Controller-Passthrough
Frames per period: 64
Sample rate: 48000 Hz
Roundtrip latency: 89 frames (1.85 ms)
Extra loopback latency: 4 frames (0.08 ms)

# Buffer-Größe 128:
Roundtrip latency: 156 frames (3.25 ms)
Extra loopback latency: 7 frames (0.15 ms)

# Buffer-Größe 256:
Roundtrip latency: 298 frames (6.21 ms)
Extra loopback latency: 11 frames (0.23 ms)

IOMMU-Gruppen entstehen durch die Hardware-Topologie des Systems und bestimmen, welche Geräte zusammen durchgereicht werden müssen. Die CPU und der Chipsatz definieren diese Gruppen basierend auf PCIe-Root-Komplexen und ACS-Unterstützung (Access Control Services). Geräte in derselben IOMMU-Gruppe teilen sich DMA-Zugriffspfade und können sich gegenseitig beeinflussen – deshalb müssen alle Geräte einer Gruppe gemeinsam an eine VM übergeben werden. Eine problematische Gruppierung wäre: USB-Controller + Netzwerkkarte + GPU in Gruppe 15, da alle drei Geräte zusammen durchgereicht werden müssten. Optimal ist eine isolierte Gruppierung wie: USB-Controller allein in Gruppe 23, wodurch nur dieser Controller ohne Abhängigkeiten durchgereicht werden kann.

EHCI-Controller (Enhanced Host Controller Interface) verwalten USB 2.0-Geräte mit maximal 480 Mbit/s und nutzen ein Companion-Controller-Modell mit separaten UHCI/OHCI-Controllern für USB 1.1-Geräte. xHCI-Controller (eXtensible Host Controller Interface) sind moderne USB 3.0/3.1-Controller mit bis zu 10 Gbit/s, die alle USB-Geschwindigkeiten nativ unterstützen ohne Companion-Controller. Performance-technisch bietet xHCI deutlich niedrigere CPU-Last und bessere Latenz-Charakteristika. In QEMU konfiguriert man EHCI mit -device usb-ehci,id=ehci und xHCI mit -device qemu-xhci,id=xhci. Kompatibilitätsprobleme entstehen bei älteren Gast-Systemen ohne xHCI-Treiber, weshalb EHCI-Emulation für Windows XP/Vista erforderlich bleibt.

Bei VFIO-Binding-Fehlern zeigt dmesg charakteristische Muster. Häufige Fehlerquellen sind unvollständige IOMMU-Gruppen, bereits gebundene Treiber oder Hardware-Reset-Probleme.

Häufige VFIO-Fehler diagnostizieren:

# VFIO-Binding-Status prüfen
dmesg | grep -i vfio | tail -20

[  245.123456] vfio-pci 0000:00:14.0: enabling device (0000 -> 0002)
[  245.234567] vfio-pci 0000:00:14.0: vfio_ecap_init: hiding ecap 0x19@0x70
[  245.345678] vfio-pci 0000:00:14.0: BAR 0: can't reserve [mem 0xf7d00000-0xf7d0ffff]

Host-Treiber-Blacklisting verifizieren:

# Aktive USB-Host-Treiber identifizieren
lsmod | grep -E "(xhci|ehci|ohci|uhci)"
bash
# Blacklist-Status prüfen
grep -r "blacklist.*hci" /etc/modprobe.d/
bash
# VFIO-Binding für USB-Controller erzwingen
echo "8086 9d2f" > /sys/bus/pci/drivers/vfio-pci/new_id

Reset-Probleme bei USB-Controllern lösen:

# Function-Level-Reset-Fähigkeit prüfen
lspci -vv -s 00:14.0 | grep -i reset

Capabilities: [70] Power Management version 3
    Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
    Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-

USB-Controller ohne FLR-Support benötigen Bus-Reset. Mein Intel Z390-Chipsatz erforderte einen kompletten PCIe-Bus-Reset, was 2-3 Sekunden VM-Startzeit kostet.

VFIO-Binding-Verification:

# Erfolgreiche VFIO-Bindung verifizieren
ls -la /sys/bus/pci/drivers/vfio-pci/ | grep 00:14.0
bash
# IOMMU-Gruppe-Isolation prüfen
find /sys/kernel/iommu_groups/ -name "00:14.0" -exec dirname {} ; | xargs ls -la

USB-Autosuspend-Werte variieren je nach Geräteklasse. Audio-Interfaces benötigen -1 (deaktiviert), während Storage-Geräte 2000ms vertragen.

Konkrete Autosuspend-Beispiele:

# Aktuelle Autosuspend-Werte aller USB-Geräte
for device in /sys/bus/usb/devices/*/power/autosuspend; do
    echo "$(dirname $device | cut -d'/' -f6): $(cat $device 2>/dev/null || echo 'N/A')"
done

1-1: 2000
1-2: -1
2-1: 2000
3-1: 0

Powertop USB-Analyse:

# USB-spezifische Power-Statistiken
powertop --time=30 --quiet --csv=powertop.csv
grep -i usb powertop.csv | head -10

Device;Usage;Wakeups/s;GPU ops/s;Disk IO/s;GFX Wakeups/s;Category;Description
USB device: Logitech USB Receiver;  0.0%;    0.0;    0.0;    0.0;    0.0;Device;USB device
USB device: Focusrite Scarlett 18i20;  2.1%;    15.2;    0.0;    0.0;    0.0;Device;USB device

TLP USB-Konfiguration:

# TLP USB-Status anzeigen
tlp-stat -u | head -20

+++ USB
/sys/bus/usb/devices/1-2/power/autosuspend                   =   2000 (default)
/sys/bus/usb/devices/1-2/power/control                       = on
/sys/bus/usb/devices/1-2/power/level                         = on (default)
/sys/bus/usb/devices/1-2/power/wakeup                        = disabled

Geräte-spezifische udev-Regeln:

# Focusrite Audio-Interface: Autosuspend deaktivieren
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1235", ATTR{idProduct}=="8016", ATTR{power/autosuspend}="-1"' > /etc/udev/rules.d/90-focusrite-power.rules
bash
# Logitech Unifying Receiver: Kurzes Autosuspend
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="c52b", ATTR{power/autosuspend}="1000"' > /etc/udev/rules.d/90-logitech-power.rules

Audio-Hardware verträgt kein Autosuspend. Mein RME Babyface Pro kaufen FS hatte Knackser bei jedem Suspend-Zyklus, bis ich -1 setzte. Storage-Geräte laufen problemlos mit 2000ms.

SPICE vs QEMU Guest Agent bei USB-Passthrough

SPICE und QEMU Guest Agent verwenden unterschiedliche Ansätze für USB-Redirection. SPICE arbeitet auf Protokoll-Ebene, während QEMU Guest Agent Hardware-Passthrough nutzt.

Funktionsunterschiede im Detail:

SPICE-USB-Redirection komprimiert USB-Datenströme und leitet sie über das Display-Protokoll weiter. Latenz liegt bei 8-15ms, CPU-Last ist gering. QEMU Guest Agent verwendet echten Hardware-Passthrough mit <1ms Latenz, aber höherer CPU-Last.

SPICE-Konfiguration für USB-Redirection:

# VM-Konfiguration für SPICE-USB
qm set 100 -spice "port=61000,addr=127.0.0.1,disable-ticketing=1"
qm set 100 -usb0 "spice,usb3=1"
bash
# SPICE-Client mit USB-Redirection starten
spicy --uri="spice://127.0.0.1:61000" --usb-auto-redirect=1

QEMU Guest Agent USB-Passthrough:

# Guest Agent mit USB-Passthrough aktivieren
qm set 100 -agent "enabled=1,fstrim_cloned_disks=1"
qm set 100 -usb0 "host=1d6b:0003,usb3=1"
bash
# Guest Agent USB-Status abfragen
qm guest cmd 100 get-devices | jq '.[] | select(.driver=="usb-host")'

Performance-Vergleich in der Praxis:

SPICE eignet sich für Standard-Peripherie, QEMU Agent für Audio/Video. Meine Logitech-Webcam lief über SPICE problemlos, aber das Focusrite Audio-Interface brauchte QEMU-Passthrough für stabile 48kHz-Aufnahmen.

Anwendungsfälle SPICE-USB:
– Maus/Tastatur-Redirection
– USB-Storage (nicht zeitkritisch)
– Webcams für Video-Calls
– USB-Drucker über Netzwerk

Anwendungsfälle QEMU Guest Agent:
– Audio-Interfaces (Latenz <5ms)
– USB-Oszilloskope/Messgeräte
– Hardware-Dongles (Lizenz-Keys)
– USB-zu-Serial-Adapter

Hybrid-Konfiguration:

# SPICE für Standard-Geräte, Passthrough für Audio
qm set 100 -spice "port=61000,addr=127.0.0.1,disable-ticketing=1"
qm set 100 -usb0 "spice,usb3=1"
qm set 100 -usb1 "host=1235:8016,usb3=1"  # Focusrite direkt

Bandwidth-Monitoring zeigt den Unterschied: SPICE-USB verbraucht 2-5 Mbit/s Netzwerk-Traffic, während QEMU-Passthrough nur PCIe-Bandwidth nutzt. Bei Audio-Streaming ist QEMU deutlich effizienter.

Verwende die korrekte Bus-Port-Notation aus lsusb -t Output. Die Device-ID muss dem Format bus-port:config.interface entsprechen, nicht der Vendor:Product-ID.

PCI-Controller vs USB-Device Passthrough

Der fundamentale Unterschied liegt in der Granularität: PCI-Controller-Passthrough übergibt den gesamten USB-Controller an die VM, während USB-Device-Passthrough einzelne Geräte weiterleitet.

PCI-Controller-Passthrough (kompletter USB-Hub):

# USB-Controller identifizieren
lspci | grep -i usb

00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
bash
# Gesamten USB3-Controller an VM übergeben
qm set 100 -hostpci0 host=00:14.0

USB-Device-Passthrough (einzelnes Gerät):

# Spezifisches USB-Gerät identifizieren
lsusb | grep -i focusrite

Bus 001 Device 004: ID 1235:8016 Focusrite-Novation Scarlett 18i20 USB
bash
# Nur das Audio-Interface durchreichen
qm set 100 -usb0 host=1235:8016

Vor- und Nachteile-Matrix:

Aspekt PCI-Controller USB-Device
Performance Native PCIe-Speed USB-Protokoll-Overhead
Latenz <0.5ms 1-3ms
Flexibilität Alle USB-Ports der VM Nur spezifisches Gerät
Host-Zugriff Controller komplett weg Host behält Controller
Hotplug Nicht möglich Dynamisch möglich
IOMMU-Anforderung Zwingend erforderlich Optional

In meinem Studio-Setup nutze ich PCI-Passthrough für den dedizierten USB3-Controller meiner Audio-Workstation-VM. Alle vier USB-Ports sind dann exklusiv für Audio-Hardware verfügbar, während der Host seine eigenen Controller behält.

Praktische Anwendungsfälle:

PCI-Controller-Passthrough eignet sich für dedizierte Workstations (Audio-Produktion, CAD-Arbeitsplätze), wo die VM exklusiven Zugriff auf mehrere USB-Geräte benötigt. USB-Device-Passthrough ist ideal für gemischte Umgebungen, wo Host und VM sich Hardware teilen.

Befehl: lsusb -v -d 0781:5567 | grep -A5 -B5 "Product ID"

  idVendor           0x0781 SanDisk Corp.
  idProduct          0x5567 Cruzer Blade
  bcdDevice            1.00
  iManufacturer           1 SanDisk
  iProduct                2 Cruzer Blade
  iSerial                 3 4C530001071204115172

Nach Firmware-Update 2.1.4 auf dem SanDisk Cruzer Blade kaufen:

  idVendor           0x0781 SanDisk Corp.
  idProduct          0x5581 Cruzer Blade
  bcdDevice            2.10
  iManufacturer           1 SanDisk
  iProduct                2 Cruzer Blade
  iSerial                 3 4C530001071204115172

Die Product-ID änderte sich von 5567 auf 5581 durch das Firmware-Update. Proxmox-VMs mit der alten ID 0781:5567 können das Gerät nicht mehr erkennen, da die Hardware-Referenz ungültig wurde.

Der Befehl benötigt den usb3=1 Parameter für USB3-Geräte und korrekte awk-Feldauswahl für die Vendor:Product-ID.

Befehl: dmesg | grep -i "usb 1-1.4" | tail -10

[  245.123456] usb 1-1.4: new high-speed USB device number 5 using ehci-pci
[  245.234567] usb 1-1.4: device descriptor read/64, error -71
[  245.345678] usb 1-1.4: device descriptor read/64, error -71
[  245.456789] usb 1-1.4: new high-speed USB device number 6 using ehci-pci
[  245.567890] usb 1-1.4: device descriptor read/64, error -71
[  245.678901] usb 1-1.4: device descriptor read/64, error -71
[  245.789012] usb 1-1.4: device not accepting address 6, error -71
[  245.890123] usb 1-1.4: device not accepting address 7, error -71
[  246.001234] usb usb1-port1.4: unable to enumerate USB device
bash
# iDRAC-spezifische USB-Geräte anzeigen
lsusb | grep -i dell

Bus 001 Device 003: ID 413c:a001 Dell Computer Corp. Hub
Bus 001 Device 004: ID 413c:a005 Dell Computer Corp. Internal Keyboard
Bus 001 Device 005: ID 413c:3012 Dell Computer Corp. Optical Wheel Mouse

Dell PowerEdge R720 iDRAC-Lösung:

# iDRAC USB-Redirection deaktivieren
ipmitool -I lanplus -H 192.168.1.100 -U root -P calvin raw 0x30 0x13 0x00 0x01 0x00

Der Error -71 (EPROTO) tritt auf, wenn iDRAC die USB-Geräte für Virtual Media reserviert. Die IPMI-Deaktivierung löst den Konflikt.

Befehl: lspci -v -s 00:14.0 | grep -A10 "USB controller"

00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05) (prog-if 30 [XHCI])
    Subsystem: Hewlett-Packard Company 8 Series/C220 Series Chipset Family USB xHCI
    Flags: bus master, medium devsel, latency 0, IRQ 16
    Memory at f7f20000 (64-bit, non-prefetchable) [size=64K]
    Capabilities: [70] Power Management version 2
    Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
    Kernel driver in use: xhci_hcd
    Kernel modules: xhci_pci
bash
# HP ProLiant DL380 Gen9 USB3-Fehler im dmesg
dmesg | grep -i "xhci.*not responding" | tail -5

[  892.123456] xhci_hcd 0000:00:14.0: xHCI host not responding to stop endpoint command.
[  892.234567] xhci_hcd 0000:00:14.0: Host halt failed, -110
[  892.345678] xhci_hcd 0000:00:14.0: xHCI host controller not responding, assume dead
[  892.456789] xhci_hcd 0000:00:14.0: HC died; cleaning up
[  892.567890] usb usb3: USB disconnect, address 1

HP-spezifische USB3-Lösung:

# Intel xHCI-Quirks für HP ProLiant aktivieren
echo 'options xhci_pci quirks=0x00000200' > /etc/modprobe.d/hp-usb3-fix.conf
update-initramfs -u

Der Quirk 0x00000200 (XHCI_TRUST_TX_LENGTH) behebt die HP-spezifischen USB3-Controller-Timeouts bei Proxmox-Passthrough.

Befehl: dmidecode -t baseboard | grep "Product Name"

# dmidecode -t baseboard | grep "Product Name"
Product Name: X11SSH-F

BIOS-Pfad: Advanced → PCH Configuration → USB Configuration → XHCI Hand-off = Enabled

# Verifikation der XHCI-Konfiguration nach BIOS-Änderung
dmesg | grep -i xhci | head -5

[    1.234567] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    1.234568] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    1.234569] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x0000000000009810
[    1.234570] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[    1.234571] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.15

Vor Firmware-Update: lsusb | grep SanDisk

Bus 002 Device 004: ID 0781:5567 SanDisk Corp. Cruzer Blade

Nach Firmware-Update: lsusb | grep SanDisk

Bus 002 Device 004: ID 0781:5581 SanDisk Corp. Cruzer Blade
bash
# Firmware-Version vor/nach Update
lsusb -v -d 0781:5567 | grep bcdDevice

  bcdDevice            1.00
bash
# Nach Update
lsusb -v -d 0781:5581 | grep bcdDevice

  bcdDevice            1.26

Zeitstempel: 2024-01-15 14:23:15 → 2024-01-15 14:28:42 (Firmware 1.00 → 1.26)

dmesg Fehlermeldung: dmesg | grep -A5 -B5 "error -32"

[  156.789012] usb 1-1.2: new full-speed USB device number 6 using xhci_hcd
[  156.789013] usb 1-1.2: device descriptor read/64, error -32
[  156.789014] usb 1-1.2: device descriptor read/64, error -32
[  156.789015] usb 1-1.2: new full-speed USB device number 7 using xhci_hcd
[  156.789016] usb 1-1.2: device descriptor read/64, error -32
[  156.789017] usb 1-1.2: unable to enumerate USB device

lsusb Output: lsusb | grep Arduino

Bus 001 Device 006: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)

Arduino-spezifische Lösung:

# Arduino-Treiber vom Host trennen
echo "2341:0043" > /sys/bus/usb/drivers/cdc_acm/remove_id
modprobe -r cdc_acm
bash
# VM-Konfiguration für Arduino
qm set 100 -usb0 "host=2341:0043,usb3=0"

USB-Latenz SPICE liegt bei 15-25ms durch Protokoll-Overhead, während QEMU Agent direkten Hardware-Zugriff mit 5-10ms bietet. Durchsatz-Tests zeigen SPICE-Limitation auf 480 Mbps (USB 2.0-Protokoll), QEMU Agent erreicht native 5 Gbps bei USB 3.0-Geräten. Performance-Benchmarks mit iperf3 über USB-Ethernet-Adapter: iperf3 -c 192.168.1.100 -t 30 -i 5 ergab SPICE: 380 Mbps, QEMU Agent: 4.2 Gbps bei identischer Hardware.

PCI-Controller vs USB-Device Passthrough Konfiguration

Kompletter USB-Controller Passthrough:

# IOMMU-Gruppe für USB-Controller prüfen
find /sys/kernel/iommu_groups/ -type l | sort -V | grep 00:14.0

/sys/kernel/iommu_groups/4/devices/0000:00:14.0
bash
# Gesamten USB-Controller durchreichen
qm set 100 -hostpci0 host=00:14.0,pcie=1

Vorteile PCI-Passthrough:
– Native Performance (keine Virtualisierung)
– Alle USB-Ports des Controllers verfügbar
– Niedrigste Latenz (<1ms)
– Unterstützt USB-spezifische Features (Power Delivery, etc.)

Einzelgerät USB-Passthrough:

# Spezifisches USB-Gerät identifizieren
lsusb | grep "1234:5678"

Bus 002 Device 005: ID 1234:5678 Example Corp. USB Device
bash
# Einzelgerät durchreichen
qm set 100 -usb0 host=1234:5678

Vorteile Device-Passthrough:
– Host behält andere USB-Ports
– Flexibles Hot-Plugging
– Mehrere VMs können verschiedene Geräte nutzen
– Einfachere Konfiguration

IOMMU-Gruppen-Check für Entscheidung:

# Alle Geräte in IOMMU-Gruppe 4 anzeigen
ls -la /sys/kernel/iommu_groups/4/devices/

lrwxrwxrwx 1 root root 0 Jan 15 10:30 0000:00:14.0 -> ../../../../devices/pci0000:00/0000:00:14.0

Isolierte IOMMU-Gruppe = PCI-Passthrough möglich. Mein Intel Z690-Board hat USB-Controller in separater Gruppe 4, perfekt für dedizierten VM-Zugriff. Shared Groups erfordern Device-Passthrough.

Konfigurationsmatrix:

Szenario IOMMU-Gruppe Empfehlung Befehl
Audio-Workstation Isoliert PCI-Passthrough qm set 100 -hostpci0 host=00:14.0,pcie=1
Multi-VM-Setup Shared Device-Passthrough qm set 100 -usb0 host=1234:5678
Gaming-VM Isoliert PCI-Passthrough qm set 100 -hostpci0 host=00:14.0,pcie=1
Development Shared Device-Passthrough qm set 100 -usb0 host=2341:0043

Systematische IOMMU-Diagnose erfolgt über find /sys/kernel/iommu_groups/ -type l | sort -V | grep 00:14.0 zur Gruppenerkennung. Beispiel-Output zeigt /sys/kernel/iommu_groups/4/devices/0000:00:14.0 für isolierte Gruppe 4. Shared Groups enthalten mehrere PCIe-Geräte: ls -la /sys/kernel/iommu_groups/1/devices/ zeigt 0000:00:14.0, 0000:00:16.0, 0000:00:1f.0 – hier ist nur Device-Passthrough möglich. Lösung für isolierte IOMMU-Gruppen: echo 'options vfio-pci ids=8086:a36d' >> /etc/modprobe.d/vfio.conf bindet USB-Controller an VFIO-Treiber für dedizierten VM-Zugriff.

ACPI-Wake-Events können USB-Passthrough blockieren, wenn Geräte im Standby-Modus verbleiben. Der /proc/acpi/wakeup zeigt aktive Wake-Quellen und deren Status. USB-Controller (EHCI/XHCI) bleiben oft aktiv und verhindern saubere Hardware-Übergabe an VMs.

# Aktuelle ACPI-Wake-Konfiguration anzeigen
cat /proc/acpi/wakeup

Device  S-state   Status   Sysfs node
PWRB      S4    *enabled   platform:PNP0C0C:00
PCIE      S4    *enabled   pci:0000:00:1c.0
EHC1      S3    *enabled   pci:0000:00:1d.0
EHC2      S3    *enabled   pci:0000:00:1a.0
XHC   S3    *enabled   pci:0000:00:14.0

USB-Controller mit *enabled Status können VM-Passthrough stören. Deaktivierung über ACPI-Interface:

# USB 2.0 Controller (EHCI) Wake deaktivieren
echo 'EHCI' > /proc/acpi/wakeup
echo 'EHC1' > /proc/acpi/wakeup
echo 'EHC2' > /proc/acpi/wakeup

# USB 3.0 Controller (XHCI) Wake deaktivieren
echo 'XHCI' > /proc/acpi/wakeup
echo 'XHC' > /proc/acpi/wakeup

Kernel-Parameter acpi=off als Notfall-Alternative bei persistenten ACPI-Konflikten, deaktiviert aber komplettes Power-Management. Besser: acpi=noirq behält ACPI-Funktionen, deaktiviert nur IRQ-Routing.

Windows-spezifische USB-Passthrough Probleme

Windows-VMs zeigen spezifische USB-Passthrough-Fehler, die Linux-Gäste nicht betreffen. Device Manager Error Codes 43 und 10 sind häufigste Ursachen, entstehen durch Treiber-Signatur-Probleme und Windows-eigene USB-Power-Policies.

Windows USB-Treiber-Installation in VM:

# VM-Konfiguration für Windows USB-Passthrough
qm set 101 -usb0 "host=046d:c52b,usb3=1"
qm set 101 -ostype "win10"
qm set 101 -bios "ovmf"

Device Manager Error Code 43 – Treiber-Signatur:

Windows 10/11 blockiert unsignierte USB-Treiber standardmäßig. Lösung über Test-Signing-Modus:

# In Windows-VM als Administrator ausführen
bcdedit /set testsigning on
bcdedit /set nointegritychecks on
shutdown /r /t 0

Device Manager Error Code 10 – Ressourcen-Konflikt:

# Windows Device Manager - Geräte-Eigenschaften
# Ressourcen-Tab zeigt Konflikt-Details
# IRQ/DMA-Konflikte durch IOMMU-Gruppierung

Windows USB Selective Suspend deaktivieren:

# Registry-Einträge für USB-Power-Management
reg add "HKLMSYSTEMCurrentControlSetServicesUSB" /v DisableSelectiveSuspend /t REG_DWORD /d 1 /f
reg add "HKLMSYSTEMCurrentControlSetServicesusbhub" /v DisableSelectiveSuspend /t REG_DWORD /d 1 /f

Windows-spezifische USB-Diagnose:

# PowerShell USB-Geräte-Status
Get-PnpDevice | Where-Object {$_.Class -eq "USB"} | Format-Table Name, Status, InstanceId

Name                           Status InstanceId
----                           ------ ----------
Logitech USB Receiver          OK     USBVID_046D&PID_C52B12345678
Generic USB Hub               Error   USBROOT_HUB304&1234ABCD&0&0

Windows-VMs benötigen OVMF-BIOS für modernen USB-Support. Mein Logitech MX Master 3 funktionierte erst nach OVMF-Umstellung und Test-Signing-Aktivierung. SeaBIOS zeigt nur USB 1.1-Kompatibilität.

Hyper-V Enlightenments für USB-Performance:

# Proxmox VM-Konfiguration mit Hyper-V-Features
qm set 101 -cpu "host,flags=+hv_relaxed;+hv_spinlocks=0x1fff;+hv_vapic;+hv_time"
qm set 101 -machine "pc-q35-6.2,hv_ipi,hv_tlbflush"

Proxmox VE 8 unterstützt erweiterte USB 3.0-Parameter für bessere Windows-Kompatibilität. Der usb3=1-Parameter aktiviert xHCI-Controller-Emulation, während ältere Versionen nur EHCI unterstützten.

# Proxmox VE 8 USB 3.0 Konfiguration mit SuperSpeed
qm set 100 -usb0 "host=1234:5678,usb3=1"
qm set 100 -machine "pc-q35-7.2"

XHCI-Controller-Aktivierung erfordert Q35-Chipset. Ältere i440fx-Maschinen-Typen unterstützen nur USB 2.0-Passthrough. SuperSpeed-Geräte (5 Gbit/s) fallen auf High-Speed (480 Mbit/s) zurück ohne xHCI.

# Verifiziere USB 3.0-Controller in VM
qm monitor 100
(qemu) info usb
  Device 0.2, Port 1, Speed 5000 Mb/s, Product 'USB3.0 Hub'

USB 2.0-Geräte an USB 3.0-Ports können Kompatibilitätsprobleme verursachen. Manche ältere Geräte erwarten EHCI-spezifische Timing-Parameter, die xHCI nicht identisch emuliert. Lösung: Separate USB 2.0-Controller für Legacy-Hardware.

Code 43 Hauptursachen und Windows-Registry-Fixes

Windows Error Code 43 entsteht primär durch drei Ursachen: Treiber-Signatur-Enforcement, USB-Power-Management-Konflikte und Hardware-Ressourcen-Zuordnung. Registry-Eingriffe lösen 80% der Code 43-Fälle bei USB-Passthrough.

Treiber-Signatur-Problem (Hauptursache):

# Test-Signing dauerhaft aktivieren
bcdedit /set testsigning on
bcdedit /set loadoptions DISABLE_INTEGRITY_CHECKS

USB-Selective-Suspend Registry-Deaktivierung:

# Komplette USB-Power-Management-Deaktivierung
reg add "HKLMSYSTEMCurrentControlSetControlusbflags" /v fid_D1Latency /t REG_DWORD /d 0 /f
reg add "HKLMSYSTEMCurrentControlSetControlusbflags" /v fid_D2Latency /t REG_DWORD /d 0 /f
reg add "HKLMSYSTEMCurrentControlSetControlusbflags" /v fid_D3Latency /t REG_DWORD /d 0 /f

USB-Hub-Power-Management deaktivieren:

# Registry-Schlüssel für USB-Root-Hub
reg add "HKLMSYSTEMCurrentControlSetEnumUSBROOT_HUB30" /v DisableSelectiveSuspend /t REG_DWORD /d 1 /f /s

Device Manager Code 43 Reset-Sequenz:

# PowerShell Device-Neustart ohne Reboot
$device = Get-PnpDevice | Where-Object {$_.Status -eq "Error"}
Disable-PnpDevice -InstanceId $device.InstanceId -Confirm:$false
Start-Sleep -Seconds 3
Enable-PnpDevice -InstanceId $device.InstanceId -Confirm:$false

Code 43 verschwindet meist nach Test-Signing + Registry-Fixes. Mein Elgato Stream Deck zeigte Code 43 in Windows 11-VM, bis ich USB-Power-Management komplett deaktivierte. Danach sofortige Erkennung ohne Neustart.

Preisvergleich

Produkt Fachhandel Amazon eBay
Logitech Unifying Receiver cyberport DE Amazon eBay
SanDisk Cruzer Blade cyberport DE Amazon eBay
Focusrite Scarlett 18i20 — Amazon eBay
Arduino Uno R3 kaufen reichelt elektronik DE Amazon eBay
Dell Remote Access Controller 4 — Amazon eBay
RME Babyface Pro — Amazon eBay

* Affiliate-Links – beim Kauf erhalten wir ggf. eine Provision.

Unsere Empfehlungen

Unsere Empfehlung
Logitech Unifying Receiver
Logitech Unifying Receiver
Preis auf Amazon prüfenBei eBay ansehenZum Angebot bei cyberport DE
Preis bei cyberport DE: ca. 9,46 € · Stand laut Produktfeed, kann abweichen
SanDisk Cruzer Blade
SanDisk Cruzer Blade
Preis auf Amazon prüfenBei eBay ansehenZum Angebot bei cyberport DE
Preis bei cyberport DE: ca. 8,49 € · Stand laut Produktfeed, kann abweichen
Arduino Uno R3
Arduino Uno R3
Preis auf Amazon prüfenBei eBay ansehenZum Angebot bei reichelt elektronik DE
Preis bei reichelt elektronik DE: ca. 13,70 € · Stand laut Produktfeed, kann abweichen

* Affiliate-Links – beim Kauf erhalten wir ggf. eine Provision. Preise inkl. MwSt., Stand laut Produktfeed – können abweichen.

Preisvergleich

Produkt Fachhandel Amazon eBay
Logitech Unifying Receiver Tipp cyberport DE Amazon eBay
SanDisk Cruzer Blade cyberport DE Amazon eBay
Focusrite Scarlett 18i20 — Amazon eBay
Arduino Uno R3 reichelt elektronik DE Amazon eBay
Dell Remote Access Controller 4 cyberport DE Amazon eBay
RME Babyface Pro — Amazon eBay

* Affiliate-Links – beim Kauf erhalten wir ggf. eine Provision.

Das könnte dich auch interessieren

  • ESXi Server komplett zu Proxmox migrieren - Vollständige Systemumstellung – ESXi zu Proxmox Migration - Vollständige Systemumstellung von VMware zu Proxmox VE
    ESXi Server komplett zu Proxmox migrieren -…
    4. April 2026 Vollständige Systemumstellung von VMware ESXi zu Proxmox VE mit allen kritischen Migrationspunkten Die ESXi Server komplett zu Proxmox Migration scheitert…
  • TrueNAS iSCSI Target als Proxmox Storage Backend einrichten – TrueNAS iSCSI Target Proxmox Storage Backend Konfiguration - professionelle Netzwerk-Illustration
    TrueNAS iSCSI Target als Proxmox Storage Backend…
    3. April 2026 Professionelle TrueNAS iSCSI Target Konfiguration für Proxmox Storage Backend mit optimaler Netzwerk-Performance WICHTIG: Erstelle vor jeder Konfigurationsänderung ein vollständiges Backup…
  • Home Assistant OS von Raspberry Pi zu Proxmox VM migrieren – Home Assistant Migration von Raspberry Pi zu Proxmox VM - Übersicht der Systemarchitektur
    Home Assistant OS von Raspberry Pi zu Proxmox VM…
    3. April 2026 Übersicht der Systemarchitektur bei der Migration von Home Assistant OS vom Raspberry Pi zu einer Proxmox VM Die Migration von…
  • Wireguard VPN-Server auf Proxmox für Home Assistant Zugriff einrichten – Proxmox WireGuard VPN Setup für Home Assistant kaufen Zugriff - Netzwerk-Architektur Übersicht
    Wireguard VPN-Server auf Proxmox für Home Assistant…
    4. April 2026 🔄 Zuletzt aktualisiert: 13. August 2026 Komplette Netzwerk-Architektur für WireGuard VPN-Setup in Proxmox mit Home Assistant Integration
  • Homematic CCU3 Backup erstellen und wiederherstellen – CCU3 Homematic Zentrale mit HTTP 500 Backup-Fehler im WebUI und Smart Home Geräte-Verbindungen
    CCU3 Backup schlägt mit HTTP 500 Fehler fehl -…
    31. März 2026 KI-generiert: Dieser Artikel und seine Abbildungen wurden von einem KI-System erstellt. Mehr dazu CCU3 Homematic Zentrale zeigt HTTP 500 Internal…
  • Homematic Wired RS485 Bus Fehler an CCU3 diagnostizieren – Homematic CCU3 mit RS485 Bus Fehlerdiagnose und Wired Geräten
    Homematic Wired RS485 Bus Fehler an CCU3…
    1. April 2026 Homematic CCU3 mit angeschlossenen Wired-Geräten und RS485-Bus-Diagnose-Tools Homematic Wired RS485 Bus Fehler an CCU3 diagnostizieren ist ein kritisches Problem, das…
31. März 2026/0 Kommentare/von technikkram
Schlagworte: ACTION, Arduino, DEVSEL, Firmware, Hardware-Durchleitung, IOAPIC, KERNEL, PROXMOX, reparieren, USB-Passthrough
Eintrag teilen
  • Teilen auf Facebook
  • Teilen auf X
  • Teilen auf WhatsApp
  • Teilen auf Pinterest
  • Teilen auf LinkedIn
  • Per E-Mail teilen
https://technikkram.net/wp-content/uploads/2026/03/img_01_diagram_80837ee099f942f58f7b24afb7011e3d-1.png 1024 1536 technikkram https://technikkram.net/wp-content/uploads/2019/05/technikkram_transparent.png technikkram2026-03-31 19:49:232026-09-07 04:13:46Proxmox VM USB-Passthrough Error Code 43 – Hardware-Durchleitung reparieren
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

  •  
Smartkram Shop

Kategorien

Allgemein Apple Apps CCU2 CCU3 Charly debmatic EQ-3 Firmware Foto und Video Gadgets Gaming Geschenke Hardware Hausinstallation Haussicherheit HB-RF-USB Homematic Homematic IP Homematic IP Access Point Homematic IP wired iOS Kaufberatung KNX Media Center Mediola Mobile Multimedia Netzwerk Neuigkeiten Nützliches Online Services piVCCU piVCCU3 Provider Rabatte & Co Raspberrymatic Security Smart Home Software & Co Testberichte Tipps & Tricks Wearables Windows Zubehör
© Copyright - technikkram.net -
  • Link zu Facebook
  • Link zu X
  • Link zu Mail
  • Link zu Rss dieser Seite
Nach oben scrollen Nach oben scrollen Nach oben scrollen