Die Welt der Virtualisierung hat in den letzten Jahren enorme Fortschritte gemacht, und Proxmox VE hat sich als eine der führenden Plattformen etabliert, um Server und Workloads effizient zu verwalten. Doch während CPU, RAM und sogar GPUs oft problemlos an virtuelle Maschinen (VMs) durchgereicht werden können, stellt die Einbindung einer PCI Soundkarte oft eine besondere Herausforderung dar. Viele Anwender, die eine dedizierte Soundkarte in ihrer Windows- oder Linux-VM für Audio-Produktion, Gaming oder einfach nur für eine bessere Klangqualität nutzen möchten, stoßen hier auf unerwartete Hürden. Wenn Sie sich fragen, warum Ihre Soundkarte in Ihrer Proxmox-VM nicht erkannt wird oder keinen Ton von sich gibt, sind Sie hier genau richtig. Dieser Artikel führt Sie Schritt für Schritt durch den Prozess, um Ihre PCIe Soundkarte erfolgreich in Ihrer virtuellen Maschine zum Laufen zu bringen.
Warum ist PCI-Passthrough für Soundkarten so knifflig?
Bevor wir uns in die technischen Details stürzen, lassen Sie uns kurz verstehen, warum die Sache mit den Soundkarten in Proxmox so kompliziert sein kann. Im Kern geht es beim PCI-Passthrough (auch bekannt als VFIO-Passthrough) darum, eine physische Hardware-Komponente direkt an eine virtuelle Maschine durchzureichen, sodass die VM sie so nutzen kann, als wäre sie nativ im System verbaut. Dies erfordert jedoch, dass die Hardware vom Host-System (Proxmox) „freigegeben“ wird und dass das Gast-System (Ihre VM) die volle Kontrolle über die Hardware übernehmen kann.
Probleme entstehen oft durch:
- IOMMU-Gruppen: Eine der größten Hürden. Die IOMMU (Input/Output Memory Management Unit) gruppiert PCI-Geräte. Wenn eine Soundkarte mit anderen Geräten (z.B. einem USB-Controller oder einem SATA-Controller) in derselben IOMMU-Gruppe sitzt, kann es schwierig sein, nur die Soundkarte durchzureichen.
- Treiber: Sowohl der Host als auch der Gast müssen die Hardware korrekt behandeln. Der Host muss seine eigenen Treiber für die Soundkarte freigeben, und der Gast muss die richtigen Treiber installieren können.
- BIOS/UEFI-Einstellungen: Moderne CPUs und Mainboards müssen bestimmte Virtualisierungsfunktionen (Intel VT-d oder AMD-V) aktiviert haben, damit IOMMU überhaupt funktioniert.
- Spezifische Hardware-Inkompatibilitäten: Manchmal gibt es einfach Karten, die sich sträuben, oder Mainboards, die Passthrough nicht optimal unterstützen.
Vorbereitung ist der Schlüssel: System-Check und BIOS-Einstellungen
Bevor Sie überhaupt daran denken, Ihre Soundkarte durchzureichen, müssen Sie sicherstellen, dass Ihr Proxmox-Host korrekt vorbereitet ist. Dies ist der absolut wichtigste Schritt.
1. BIOS/UEFI-Einstellungen prüfen und aktivieren
Starten Sie Ihren Proxmox-Host neu und rufen Sie das BIOS/UEFI auf (oft durch Drücken von Entf, F2, F10 oder F12 beim Start). Suchen Sie nach Einstellungen, die sich auf Virtualisierung oder IOMMU beziehen. Die genaue Bezeichnung variiert je nach Hersteller:
- Für Intel-CPUs: Intel VT-d, Virtualization Technology for Directed I/O, oder schlicht IOMMU.
- Für AMD-CPUs: AMD-V, SVM Mode (Secure Virtual Machine Mode), oder schlicht IOMMU.
Stellen Sie sicher, dass diese Funktionen aktiviert sind. Speichern Sie die Änderungen und booten Sie Proxmox neu.
2. Proxmox Host für PCI-Passthrough konfigurieren
Melden Sie sich per SSH am Proxmox-Host an (oder verwenden Sie die Shell im Proxmox Webinterface).
a) vfio-Module laden und Kernel-Parameter setzen
Bearbeiten Sie die GRUB-Konfiguration, um die notwendigen Kernel-Parameter zu aktivieren. Die genauen Parameter hängen von Ihrer CPU ab:
- Für Intel:
intel_iommu=on iommu=pt
- Für AMD:
amd_iommu=on iommu=pt
Öffnen Sie die GRUB-Konfigurationsdatei:
nano /etc/default/grub
Suchen Sie die Zeile, die mit GRUB_CMDLINE_LINUX_DEFAULT=
beginnt, und fügen Sie die entsprechenden Parameter hinzu. Beispiel für Intel:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
Speichern Sie die Datei (Strg+O, Enter) und schließen Sie den Editor (Strg+X).
Anschließend aktualisieren Sie GRUB:
update-grub
b) Notwendige Module laden
Fügen Sie die Module hinzu, die für PCI-Passthrough benötigt werden:
echo "vfio" >> /etc/modules
echo "vfio_iommu_type1" >> /etc/modules
echo "vfio_pci" >> /etc/modules
echo "vfio_virqfd" >> /etc/modules
Um zu verhindern, dass der Proxmox-Host selbst Treiber für Ihre Soundkarte lädt (was den Passthrough verhindern würde), müssen Sie diese Treiber auf die Blacklist setzen. Dazu müssen Sie zuerst die Vendor- und Device-ID Ihrer Soundkarte ermitteln. Dies tun Sie im nächsten Schritt.
c) Reboot des Hosts
Nach diesen Änderungen ist ein Neustart des Proxmox-Hosts zwingend erforderlich:
reboot
3. Die Soundkarte identifizieren und IOMMU-Gruppen prüfen
Nach dem Neustart melden Sie sich wieder per SSH an und überprüfen, ob IOMMU aktiv ist und Ihre Soundkarte korrekt erkannt wird.
a) IOMMU-Status prüfen
Überprüfen Sie, ob die IOMMU-Gruppen korrekt geladen wurden:
dmesg | grep -e DMAR -e IOMMU
Sie sollten Ausgaben sehen, die darauf hindeuten, dass IOMMU aktiv ist (z.B. „DMAR: Host address width […] enabled” für Intel, oder „AMD-Vi: […] enabled” für AMD).
b) Soundkarte identifizieren und IOMMU-Gruppe bestimmen
Dies ist ein entscheidender Schritt. Sie müssen die genaue Bezeichnung (Vendor- und Device-ID) Ihrer Soundkarte finden und überprüfen, in welcher IOMMU-Gruppe sie sich befindet.
lspci -nnk | grep -i audio
Suchen Sie in der Ausgabe nach Ihrer spezifischen Soundkarte. Sie könnte etwa so aussehen:
03:00.0 Audio device [0403]: Creative Labs SB X-Fi Titanium series [1102:000b] (rev 01)
Subsystem: Creative Labs SB X-Fi Titanium series [1102:001a]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
Notieren Sie die Vendor-ID und Device-ID (im Beispiel 1102:000b
). Außerdem sehen Sie den aktuell genutzten Kernel-Treiber (snd_hda_intel
im Beispiel). Dieser muss auf die Blacklist gesetzt werden.
Als Nächstes prüfen wir die IOMMU-Gruppe. Ermitteln Sie die PCI-Adresse der Soundkarte (im Beispiel 03:00.0
) und suchen Sie deren IOMMU-Gruppe:
find /sys/kernel/iommu_groups/ -type l | grep -i 03:00.0
Die Ausgabe zeigt Ihnen den Pfad zur IOMMU-Gruppe (z.B. /sys/kernel/iommu_groups/0/devices/0000:03:00.0
). Die „0” in iommu_groups/0
ist die Gruppen-ID. Nun listen Sie alle Geräte in dieser Gruppe auf:
ls -l /sys/kernel/iommu_groups/0/devices/
(Ersetzen Sie ‘0’ durch die tatsächliche Gruppen-ID, die Sie gefunden haben).
Wichtig: Wenn Ihre Soundkarte die einzige Komponente in ihrer IOMMU-Gruppe ist, ist das ideal. Wenn jedoch andere wichtige Komponenten (wie USB-Controller oder SATA-Controller) in derselben Gruppe sind, kann das Durchreichen Probleme verursachen oder sogar den Host instabil machen. In solchen Fällen müssten Sie die problematischen Geräte ebenfalls durchreichen oder eine erweiterte Methode wie pcie_acs_override
nutzen (siehe Abschnitt Fehlerbehebung).
c) Blacklisting der Host-Treiber
Um sicherzustellen, dass Proxmox die Soundkarte für den Passthrough freigibt, müssen Sie die Treiber auf die Blacklist setzen, die der Host normalerweise verwenden würde.
Erstellen Sie eine neue Blacklist-Datei:
nano /etc/modprobe.d/blacklist.conf
Fügen Sie die entsprechenden Treiber hinzu. Basierend auf dem obigen Beispiel snd_hda_intel
:
blacklist snd_hda_intel
Fügen Sie außerdem die Vendor-ID und Device-ID Ihrer Soundkarte hinzu, um sie explizit dem VFIO-Modul zuzuweisen:
echo "options vfio_pci ids=1102:000b" >> /etc/modprobe.d/vfio.conf
Ersetzen Sie 1102:000b
durch die tatsächlichen IDs Ihrer Soundkarte. Wenn Sie mehrere Geräte durchreichen möchten, trennen Sie die IDs mit Kommas: ids=1102:000b,8086:0001
.
Aktualisieren Sie die initramfs und rebooten Sie erneut:
update-initramfs -u -k all
reboot
4. PCI-Passthrough in der Proxmox GUI einrichten
Nach all der Vorbereitung können Sie die Soundkarte endlich Ihrer virtuellen Maschine zuweisen.
- Melden Sie sich im Proxmox Webinterface an.
- Wählen Sie Ihre Virtuelle Maschine aus, in der die Soundkarte genutzt werden soll.
- Gehen Sie zum Reiter „Hardware”.
- Klicken Sie auf „Hinzufügen” und wählen Sie „PCI Device”.
- Im Dropdown-Menü „PCI Device” wählen Sie Ihre Soundkarte aus (sie sollte anhand ihrer Adresse und Bezeichnung erkennbar sein, z.B.
03:00.0 Creative Labs SB X-Fi Titanium series
). - Aktivieren Sie die Option „All Functions”, um sicherzustellen, dass alle Funktionen des Geräts durchgereicht werden.
- Deaktivieren Sie „Primary GPU”, da es sich um eine Soundkarte und nicht um eine Grafikkarte handelt.
- Die Option „ROM-Bar” ist für Soundkarten in der Regel nicht erforderlich.
- Klicken Sie auf „Hinzufügen”.
Starten Sie die virtuelle Maschine neu.
5. Gast-Betriebssystem Konfiguration: Soundkarte zum Laufen bringen
Nachdem die Soundkarte erfolgreich durchgereicht wurde, muss das Gast-System sie erkennen und die entsprechenden Treiber installieren.
a) Windows Gast
- Booten Sie Ihre Windows-VM.
- Öffnen Sie den Geräte-Manager (Rechtsklick auf Start -> Geräte-Manager).
- Ihre Soundkarte sollte unter „Audio-, Video- und Gamecontroller” oder als unbekanntes Gerät mit einem gelben Ausrufezeichen erscheinen.
- Installieren Sie die Treiber: Laden Sie die aktuellen Treiber direkt von der Hersteller-Webseite Ihrer Soundkarte herunter (z.B. Creative, Asus, Realtek) und installieren Sie diese in Ihrer VM. Nutzen Sie nicht die Windows-eigenen Standardtreiber, da diese oft nicht alle Funktionen bereitstellen.
- Nach der Treiberinstallation ist oft ein Neustart der VM erforderlich.
- Überprüfen Sie die Soundeinstellungen (Rechtsklick auf das Lautsprechersymbol in der Taskleiste -> Soundeinstellungen oder Wiedergabegeräte). Stellen Sie sicher, dass Ihre Soundkarte als Standard-Wiedergabegerät ausgewählt ist.
- Testen Sie den Sound.
b) Linux Gast
- Booten Sie Ihre Linux-VM.
- Öffnen Sie ein Terminal.
- Überprüfen Sie, ob ALSA die Soundkarte erkannt hat:
aplay -l
Sie sollten Ihre Soundkarte in der Liste sehen (z.B.
card 0: XFi [Creative X-Fi Titanium Series]
). - Überprüfen Sie PulseAudio (falls verwendet):
pactl list sinks
Auch hier sollte Ihre Soundkarte als Output-Sink aufgeführt sein.
- In den Systemeinstellungen für Audio (z.B. unter GNOME, KDE Plasma) wählen Sie Ihre PCI-Soundkarte als Standard-Ausgabegerät aus.
- Testen Sie den Sound. Falls kein Sound kommt, stellen Sie sicher, dass die Lautstärke aufgedreht ist und keine Kanäle stummgeschaltet sind (ggf. mit
alsamixer
im Terminal).
Häufige Probleme und Fehlerbehebung
Trotz sorgfältiger Vorbereitung können immer noch Probleme auftreten. Hier sind einige der häufigsten und deren Lösungen:
1. Soundkarte im Gast-OS nicht sichtbar oder Fehlercode 10 (Windows)
- IOMMU-Gruppen prüfen: Dies ist die häufigste Ursache. Wenn Ihre Soundkarte nicht isoliert in einer eigenen IOMMU-Gruppe ist, kann der Passthrough fehlschlagen. Überprüfen Sie erneut
ls -l /sys/kernel/iommu_groups/X/devices/
. - ACS Override (Risikoreich!): Wenn andere Geräte in derselben IOMMU-Gruppe sind, können Sie versuchen,
pcie_acs_override=downstream,multifunction
zu Ihren GRUB-Parametern hinzuzufügen. Achtung: Dies kann die Systemsicherheit beeinträchtigen, da es die Isolierung von PCI-Geräten aufhebt. Nutzen Sie dies nur, wenn Sie die Risiken verstehen und bereit sind, sie einzugehen. Nach der Änderungupdate-grub
undreboot
nicht vergessen. - VFIO-Modul-IDs prüfen: Stellen Sie sicher, dass die Vendor- und Device-IDs in
/etc/modprobe.d/vfio.conf
korrekt sind. - Treiber Blacklisting: Vergewissern Sie sich, dass der Host-Treiber (z.B.
snd_hda_intel
) in/etc/modprobe.d/blacklist.conf
eingetragen ist. - UEFI/OVMF für VM: Stellen Sie sicher, dass Ihre VM als „UEFI” (nicht „BIOS”) konfiguriert ist und OVMF als BIOS ausgewählt ist. Dies ist oft entscheidend für modernen PCIe-Passthrough.
2. Soundstörungen, Knistern, Rauschen oder hohe Latenz
- Treiberaktualisierung: Stellen Sie sicher, dass Sie die neuesten und korrekten Hersteller-Treiber in der VM installiert haben.
- VirtIO Sound deaktivieren: Wenn Sie zuvor eine VirtIO-Soundkarte in der VM hatten, entfernen Sie diese oder stellen Sie sicher, dass die PCI-Soundkarte das Standardgerät ist. Konflikte sind möglich.
- CPU-Pinning: Für Echtzeit-Audioanwendungen kann es hilfreich sein, CPU-Kerne für die VM zu „pinnen” und Host-Prozesse von diesen Kernen fernzuhalten. Dies reduziert Störungen durch Kontextwechsel. (Fortgeschrittenes Thema, Proxmox CPU-Affinity-Einstellungen).
- Memory Ballooning deaktivieren: Stellen Sie sicher, dass das „Memory Ballooning” in den VM-Optionen deaktiviert ist (Memory -> Ballooning Device auf „No ballooning device” setzen), um unerwartete Speicheranpassungen zu verhindern, die zu Latenz führen könnten.
- PCIe-Steckplatz wechseln: Manchmal kann ein Wechsel des physischen PCIe-Steckplatzes auf dem Mainboard Wunder wirken, da dies die IOMMU-Gruppierung oder die IRQ-Zuweisung ändern kann.
- Qemu Agent: Stellen Sie sicher, dass der Qemu Agent im Gast-OS installiert ist und läuft. Dies kann die Kommunikation und Stabilität verbessern.
3. Soundkarte wird nach Proxmox-Update nicht mehr erkannt
- Nach Kernel-Updates oder größeren Proxmox-Updates können die GRUB-Einstellungen oder Modul-Konfigurationen manchmal überschrieben werden. Überprüfen Sie
/etc/default/grub
,/etc/modprobe.d/blacklist.conf
und/etc/modprobe.d/vfio.conf
erneut und führen Sie gegebenenfallsupdate-grub
undupdate-initramfs -u -k all
aus, gefolgt von einem Neustart.
Alternativen zum PCI-Passthrough
Wenn der Aufwand oder die technischen Hürden zu groß erscheinen, gibt es Alternativen, die jedoch Kompromisse bei der Klangqualität oder den Funktionen erfordern:
- VirtIO Audio Device: Proxmox bietet eine virtuelle Soundkarte (VirtIO), die softwarebasiert ist. Sie bietet grundlegende Audiofunktionen, ist aber nicht für hochwertige Audio-Anwendungen gedacht.
- USB Soundkarte: Eine USB-Soundkarte kann oft einfacher per USB-Passthrough an eine VM weitergereicht werden. Die Leistung hängt stark vom Mainboard und der USB-Controller-Implementierung ab.
- Netzwerk-Audio (PulseAudio over Network): Sie können den Sound des Gast-Systems über das Netzwerk an einen anderen Computer (z.B. den Proxmox Host selbst oder einen Client-PC) streamen, auf dem PulseAudio läuft. Dies erfordert jedoch zusätzliche Konfiguration und kann Latenzen aufweisen.
Fazit
Das Durchreichen einer PCI Soundkarte in einer Proxmox VM kann eine knifflige Angelegenheit sein, aber es ist definitiv machbar. Der Schlüssel zum Erfolg liegt in einer akribischen Vorbereitung des Host-Systems, dem genauen Verständnis der IOMMU-Gruppen und der korrekten Installation der Treiber im Gast-System. Nehmen Sie sich Zeit für jeden Schritt, überprüfen Sie die Ausgaben der Befehle sorgfältig und scheuen Sie sich nicht, bei Problemen die umfassende Proxmox-Community und Dokumentation zu Rate zu ziehen. Mit Geduld und den richtigen Schritten können auch Sie Ihre virtuelle Maschine mit erstklassigem Sound ausstatten und das volle Potenzial Ihrer Hardware ausschöpfen.