GPU PCIE Passtrough - kein Nvidia High Definition Audio Device im Gerätemanager -> Keine Audio Ausgabe über HDMI

DeineMudda_1981

New Member
Sep 30, 2021
26
0
1
22
Hallo liebe Proxmox Gemeinde,

ich beisse mir grad seit Tagen an dem o,g. Problem die Zähne aus.
Kurz ein paar Infos zu meinem Vorhaben:
Ich habe mir nun Proxmox auch auf meinem Hauptrechner installiert, weil ich es einfach praktischer finde in VMs mit verschiedenen Systemen arbeiten zu können als nativ installieren zu müssen. Nun möchte ich mittels HDMI-LAN sowie USB-LAN Adapter die VM dieses Rechners auch im Wohnzimmer und im Schlafzimmer verfügbar machen. So das ich dann im Wohnzimmer einfach auf der VM weiterarbeiten kann und im Schlafzimmer zB eine Media VM verwenden kann sowie gemütlich auf meinem Hauptrechner im Wohn- und Schlafzimmer gamen zu können.
Das funktioniert soweit auch alles schon. Bis auf ein Problem:
Ich bekomme es einfach nicht hin dass der Ton über die Grafikkarte mit ausgegeben wird. Ich glaube zu erkennen warum nicht.
Das Geräte Nvidia HDMI High-Definition Audio Device, welches ja das zweite PCIE Device auf der Grafikkarte ist wird im Windows anscheinend nicht durchgereicht. Folglich kann ich auch den Sound nicht auf den HDMI Ausgang ausgeben. Im Proxmox in der Konsole wird mir das Gerät aber angezeigt. Es wird also erkannt. Es scheint nur nicht durchgereicht zu werden.
Die Maschine an sich wird auf den Endgeräten problemlos angezeigt und ich kann sie verwenden.
Hardware:
I7 6800k
32GB RAM
Primary GPU Nvidia 8200GS (nur für proxmox)
Secondary GPU Nvidia GTX1080TI
Mainboard x99 Chipsatz
Die VM ist lt. Diversen Anleitungen folgendermaßen konfiguriert: Iommu aktiviert und geprüft OmV-UEFI Q35 Ich habe die Grafikkarte komplett per pcie passtrough durchgereicht, oder auch beide Geräte einzeln, es macht keinen Unterschied. Es kommt dennoch kein Audio raus. Auch das Wechseln des q35 auf Version 3.1 brachte keine Besserung. Obwohl ich da einmal ganz kurz das Device im Windows gesehen habe und auch einen Ton gehört habe. Dann war es aber sofort wieder weg
Die NVME SSD auf der ich das WIndows installiert habe, habe ich auch per pcie passtrough komplett an die VM durchgereicht und verwende sie quasi nativ.

Ich verwende noch einen 2. Proxmox Server auf dem ich die Anzeige für den Smart MIrror ebenfalls als VM mit PCIE Passtrough verwende. Hier allerdings mit einer Nvidia Quadro P400.
Hier wird das Nvidia Audio Device sauber durchgereicht und erkannt. HDMI Audio funktioniert.

GTX1080TI
05:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] [ 10de:1b06] (rev a1)
Subsystem: ASUSTeK Computer Inc. GP102 [GeForce GTX 1080 Ti] [1043:85e5]
Kernel modules: nvidiafb, nouveau
05:00.1 Audio device [0403]: NVIDIA Corporation GP102 HDMI Audio Controller [10de:10ef] (r ev a1)
Subsystem: ASUSTeK Computer Inc. GP102 HDMI Audio Controller [1043:85e5]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel

Quadro P400
04:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107GL [Quadro P400] [10de:1cb3] (rev a1)
Subsystem: Hewlett-Packard Company GP107GL [Quadro P400] [103c:11be]
Kernel driver in use: vfio-pci
Kernel modules: nvidiafb, nouveau
04:00.1 Audio device [0403]: NVIDIA Corporation GP107GL High Definition Audio Controller [10de:0fb9] (rev a1)
Subsystem: Hewlett-Packard Company GP107GL High Definition Audio Controller [103c:11be]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel

Im Anhang sende ich noch ein paar Screenshots.
Konfig der VM mit 1080TI
1080TI_VM_konfig.png

1080TI_win_hw.png

Konfig mit Quadro P400:
p400_VM_konfig.png
p400_win_hw.png
Ich bin auch im Discord im iobroker UNterwegs. Vielleicht kann man sich darüber auch kurzschliessen zur Fehlersuche?
Ich weiss echt nicht mehr weiter. Ich hoffe Ihr könnt mir irgendiwe mit dem Problem weiterhelfen.



Liebe Grüsse Sebastian
 
Ich habe jetzt zum testen mal die Quadro P400 aus dem anderen Proxmox System in das eingebaut wo es nicht funktioniert.
Siehe da, die P400 verhält sich in dem System identisch wie die GTX1080TI. Also keine Audio ausgabe.
Es scheint also irgendein Problem mit dem System zu sein und nicht mit der Graffikkarte. Leider kann ich den Gegentest und die 1080TI in das andere system einzubauen nicht machen, da dieser Rechner zu wenig PSU Leistung hat.
Irgendwelche Hinweise?
 
Alles wieder zurück gebaut. In dem anderen System Funktioniert die P400 einwandfrei.
Im Windows Geräte Manager wird mir das Gerät "NVIDIA High Definition Audio Device" sauber angezeigt und die Audio Ausgabe funktioniert.
Genau dieses Device fehlt mir in meinem anderen System.
Ich denke das genau hier das Problem liegt und ich weiss nicht was ich tun kann um dieses Gerät auf dem anderen System verfügbar zu haben.
 
Beide Geräte werden erkannt:
04:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti (rev a1)
04:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)

Gruppen:
/sys/kernel/iommu_groups/45/devices/0000:04:00.0
/sys/kernel/iommu_groups/45/devices/0000:04:00.1
Beide Grafikkarten sind sauber in einer Gruppe.
und es befindet sich kein weiteres Gerät mit in der Gruppe.

Eigentlich passt doch alles. :-(
 
Hey!
Auch im deutschen Forum tut sich etwas. Erstmal danke für deine Hilfe!
Ich habe auch im internationalen Forum einen Beitrag geschrieben. Hier habe ich mittels Hilfe vom User AVW schon ein paar Themen geprüft.
Link
Der snd_hda_intel wird nicht verwendet und ich habe ihn auch schon in der Blacklist. Der Treiber wird nicht verwendet.
Aktuell sieht es so aus:

04:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)
Subsystem: ASUSTeK Computer Inc. GP102 HDMI Audio Controller
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel

Genau so muss das doch aussehen oder täusche ich mich?

Mittlerweile bin ich schon auf dem Trip das Audio Signal der internen Soundkarte mittels HDMI Audio Embedder manuell in das HDMI Signal zu integrieren. Nicht abzuschätzen was das dann wieder für Probleme nach sich zieht.
Aber leider komme ich mit meinem Problem kein Stück weiter.
Ich habe zum Gegentest auch eine Linux VM aufgesetzt. Hier kommt Sound, "etwas" zumindest. Der Sound ist total am Stottern und laggen sowie das abgespielte Video stottert parallel dazu. Was kann das sein?
Lt. dem was ich durch auslesen von Logs erkennen kann wird das Audio Device der Graka ja sauber erkannt. Das muss doch irgendein Problem mit dem Treiber im Proxmox Host System sein.
Oder kann es evtl. wirklich ein Problem mit der Hardware an sich sein?

Wie kann ich das Syslog/journal auselesen? Gerne poste ich das hier. Bin aber kein Proxmox experte von daher bräuchte ich hilfe bezüglich der Befehle.

Edit: Ich weiss jetzt wie ich das journal öffnen kann. Aber das ist ja quasi endlos. Wie kann man da nach etwas bestimmten such und nach was soll ich suchen?

Besten Dank und liebe Grüsse
Sebastian
 
Last edited:
Genau so muss das doch aussehen oder täusche ich mich?
ja genau

Ich habe zum Gegentest auch eine Linux VM aufgesetzt. Hier kommt Sound, "etwas" zumindest. Der Sound ist total am Stottern und laggen sowie das abgespielte Video stottert parallel dazu. Was kann das sein?
Lt. dem was ich durch auslesen von Logs erkennen kann wird das Audio Device der Graka ja sauber erkannt. Das muss doch irgendein Problem mit dem Treiber im Proxmox Host System sein.
Oder kann es evtl. wirklich ein Problem mit der Hardware an sich sein?
sobald es im gast ist, greift der host die hardware nicht mehr wirklich an, dh es handelt sich entweder um ein hardware problem (mainboard/graka)
oder um ein treiber problem im gast...

warum ist denn in der qemu config pc-q35-3.1 gesetzt? "normales" q35 sollte auch gehen..

kannst du mal die ganze vm config posten (qm config ID auf der cli)

Wie kann ich das Syslog/journal auselesen? Gerne poste ich das hier. Bin aber kein Proxmox experte von daher bräuchte ich hilfe bezüglich der Befehle.

Edit: Ich weiss jetzt wie ich das journal öffnen kann. Aber das ist ja quasi endlos. Wie kann man da nach etwas bestimmten such und nach was soll ich suchen?
journalctl kann man zb eine zeitspanne mitgeben:
Code:
journalctl --since "2021-10-01 00:00" --until "2021-10-01 15:00"

alternativ sollte der output von 'dmesg' auch reichen (das sind nur die kernel meldungen seit dem letzten boot)
 
warum ist denn in der qemu config pc-q35-3.1 gesetzt? "normales" q35 sollte auch gehen..

kannst du mal die ganze vm config posten (qm config ID auf der cli)
Weil ich gelesen hatte das das mal ein Workaround ist auf q35 3.1 umzustellen. DIe Maschine ist jetzt wieder auf q35 configuriert.
Hier die config:

agent: 1
bios: ovmf
boot: order=scsi0;ide2;ide0
cores: 12
cpu: host,flags=+pcid
efidisk0: local-btrfs:103/vm-103-disk-1.raw,size=128K
hostpci0: 0000:04:00,pcie=1,x-vga=1
hostpci1: 0000:00:14,pcie=1
hostpci2: 0000:0c:00,pcie=1
ide0: NAS:iso/virtio-win-0.1.208.iso,media=cdrom,size=543390K
ide2: NAS:iso/Win10_21H1_German_x64.iso,media=cdrom
machine: pc-q35-6.0
memory: 16384
name: TEST
numa: 1
ostype: win10
scsi0: local-btrfs:103/vm-103-disk-0.raw,cache=writeback,iothread=1,replicate=0,size=64G,ssd=1
scsihw: virtio-scsi-pci
smbios1: uuid=7f46e20a-fbaf-4280-b53f-ef16f30472c0
sockets: 1
vga: none
vmgenid: 5075e255-77f0-4e2d-89aa-3d914e748d03


alternativ sollte der output von 'dmesg' auch reichen (das sind nur die kernel meldungen seit dem letzten boot)

OK. Habe den Host neu gestartet und die VM gestartet.
In dieser habe ich dann noch mal den Nvidia Treiber 472.12 neu Installiert; In der Hoffnung das man den Versuch des Verbindungsaufbaus evtl. triggern kann.
Das Ergebnis habe ich als File angehangen.
Die Grafikkarte hat die ID 04:00.0 0300: 10de:1b06 (rev a1)
Das HDAD: 0403: 10de:10ef (rev a1)

Interessant finde ich diesen Eintrag:
[ 0.062993] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.11.22-4-pve root=UUID=47202d0a-7e0f-4ef7-a6e1-031e3049629b ro textonly video=astdrmfb video=efifb:eek:ff quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:eek:ff,efifb:eek:ff
[ 0.063063] DMAR: IOMMU enabled
[ 0.063103] You have booted with nomodeset. This means your GPU drivers are DISABLED
[ 0.063104] Any video related functionality will be severely degraded, and you may not even be able to suspend the system properly
[ 0.063104] Unless you actually understand what nomodeset does, you should reboot without enabling it
GPU Driver disabled? Ich denke das bezieht sich auf das Hostsystem oder? Im Gast Win10 läuft soweit alles GPU Beschleunigt. Furmark auf 2,5k kommt auf etwa 105fps.
Kannst du im dmesg etwas erkennen?
Liebe Grüsse
Sebastian
 

Attachments

  • dmesg.txt
    115.1 KB · Views: 2
Last edited:
GPU Driver disabled? Ich denke das bezieht sich auf das Hostsystem oder?
ja da gehts nur ums hostsystem (soweit in Ordnung)

ich seh im dmesg immer noch das snd_hda_intel modul, wurde das mal blockiert?

kannst du auch mal den output von 'pveversion -v' und 'qm showcmd ID --pretty' posten?
 
ja da gehts nur ums hostsystem (soweit in Ordnung)

ich seh im dmesg immer noch das snd_hda_intel modul, wurde das mal blockiert?

kannst du auch mal den output von 'pveversion -v' und 'qm showcmd ID --pretty' posten?

Ja, den snd_hda_intel_modul habe ich blockiert. Das hatten wir doch auch geprüft od dieser Treiber verwendet wird oder habe ich das falsch verstanden.
Ich bin mir jetzt grad nicht sicher wo ich den blockiert habe.
Kannst DU mir sagen in welcher config dies passieren müsste?

Ansonsten lautet der Inhalt der /etc/modprobe.d/pve-blacklist.conf:
blacklist nvidiafb
blacklist nvidia
blacklist radeon
blacklist nouveau
options vfio_pci ids=10de:10ef


Wenn ich pveversion -v ausführe bekomme ich keinen output? Stattdessen nur eine leere neue Zeile. Falls Du die Version meinst:
Linux buero 5.11.22-4-pve #1 SMP PVE 5.11.22-8 (Fri, 27 Aug 2021 11:51:34 +0200) x86_64
Ist das dass was DU wissen wolltest oder was genau soll ich tun?

root@buero:~# qm showcmd 103 --pretty
iothread is only valid with virtio disk or virtio-scsi-single controller, ignoring
/usr/bin/kvm \
-id 103 \
-name TEST \
-no-shutdown \
-chardev 'socket,id=qmp,path=/var/run/qemu-server/103.qmp,server=on,wait=off' \
-mon 'chardev=qmp,mode=control' \
-chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
-mon 'chardev=qmp-event,mode=control' \
-pidfile /var/run/qemu-server/103.pid \
-daemonize \
-smbios 'type=1,uuid=7f46e20a-fbaf-4280-b53f-ef16f30472c0' \
-drive 'if=pflash,unit=0,format=raw,readonly=on,file=/usr/share/pve-edk2-firmware//OVMF_CODE.fd' \
-drive 'if=pflash,unit=1,format=raw,id=drive-efidisk0,size=131072,file=/var/lib/pve/local-btrfs/images/103/vm-103-disk-1/disk.raw' \
-smp '12,sockets=1,cores=12,maxcpus=12' \
-nodefaults \
-boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
-vga none \
-nographic \
-no-hpet \
-cpu 'host,hv_ipi,hv_relaxed,hv_reset,hv_runtime,hv_spinlocks=0x1fff,hv_stimer,hv_synic,hv_time,hv_vapic,hv_vendor_id=proxmox,hv_vpindex,kvm=off,+kvm_pv_eoi,+kvm_pv_unhalt,+pcid' \
-m 16384 \
-object 'memory-backend-ram,id=ram-node0,size=16384M' \
-numa 'node,nodeid=0,cpus=0-11,memdev=ram-node0' \
-readconfig /usr/share/qemu-server/pve-q35-4.0.cfg \
-device 'vmgenid,guid=5075e255-77f0-4e2d-89aa-3d914e748d03' \
-device 'usb-tablet,id=tablet,bus=ehci.0,port=1' \
-device 'vfio-pci,host=0000:04:00.0,id=hostpci0.0,bus=ich9-pcie-port-1,addr=0x0.0,multifunction=on' \
-device 'vfio-pci,host=0000:04:00.1,id=hostpci0.1,bus=ich9-pcie-port-1,addr=0x0.1' \
-device 'vfio-pci,host=0000:00:14.0,id=hostpci1,bus=ich9-pcie-port-2,addr=0x0' \
-device 'vfio-pci,host=0000:0c:00.0,id=hostpci2,bus=ich9-pcie-port-3,addr=0x0' \
-device 'vfio-pci,host=0000:0c:00.0,id=hostpci3,bus=pci.0,addr=0x1c' \
-chardev 'socket,path=/var/run/qemu-server/103.qga,server=on,wait=off,id=qga0' \
-device 'virtio-serial,id=qga0,bus=pci.0,addr=0x8' \
-device 'virtserialport,chardev=qga0,name=org.qemu.guest_agent.0' \
-device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' \
-iscsi 'initiator-name=iqn.1993-08.org.debian:01:f71518113026' \
-device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \
-drive 'file=/var/lib/pve/local-btrfs/images/103/vm-103-disk-0/disk.raw,if=none,id=drive-scsi0,cache=writeback,format=raw,aio=io_uring,detect-zeroes=on' \
-device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,rotation_rate=1,bootindex=100' \
-rtc 'driftfix=slew,base=localtime' \
-machine 'type=pc-q35-6.0+pve0' \
-global 'kvm-pit.lost_tick_policy=discard'

Liebe Grüsse
Sebastian
 
Last edited:
Ich bin mir jetzt grad nicht sicher wo ich den blockiert habe.
Kannst DU mir sagen in welcher config dies passieren müsste?
ich würde versuchen ihn ganz zu blockieren (laut doku):
blacklist the driver completely on the host, ensuring that it is free to bind for passthrough, with

blacklist DRIVERNAME
in a .conf file in /etc/modprobe.d/.
(initramfs updaten nicht vergessen)

Wenn ich pveversion -v ausführe bekomme ich keinen output? Stattdessen nur eine leere neue Zeile. Falls Du die Version meinst:
Linux buero 5.11.22-4-pve #1 SMP PVE 5.11.22-8 (Fri, 27 Aug 2021 11:51:34 +0200) x86_64
das ist sehr seltsam (aber hat wahrscheinlich nichts mit deinem problem zu tun)

ich wollte die genauen paketversionen wissen, die findest du auch am web interface unter Node->Summary-> "package version" button

sonst schaut die generierte qemu cmdline in ordnung aus
 
Wie genau muss ich das machen?
EInfach in dem dem Ordner/etc/modprobe.d/ mit nano ein Configfile anlegen; zB. snd_hda_intel.conf ?

Also müsste der Befehl so lauten:
nano /etc/modprobe.d/snd_hda_intel.conf ?

Der Inhalt müsste dann lauten:
blacklist snd_hda_intel

Zum Schluss mit update-initramfs aktualisieren?
Wäre das korrekt?

Grundsätzliche Frage; Werden alle Infos aus .conf Files in dem Ordner /etc/modprobe.d/ automatisch beim booten geladen?

Bezüglich des pveversion -v, da muss die Maschine auch laufen oder? :)
Hier der Output:
proxmox-ve: 7.0-2 (running kernel: 5.11.22-4-pve)
pve-manager: 7.0-11 (running version: 7.0-11/63d82f4e)
pve-kernel-5.11: 7.0-7
pve-kernel-helper: 7.0-7
pve-kernel-5.11.22-4-pve: 5.11.22-8
ceph-fuse: 15.2.14-pve1
corosync: 3.1.2-pve2
criu: 3.15-1+pve-1
glusterfs-client: 9.2-1
ifupdown2: 3.1.0-1+pmx3
ksm-control-daemon: 1.4-1
libjs-extjs: 7.0.0-1
libknet1: 1.21-pve1
libproxmox-acme-perl: 1.3.0
libproxmox-backup-qemu0: 1.2.0-1
libpve-access-control: 7.0-4
libpve-apiclient-perl: 3.2-1
libpve-common-perl: 7.0-6
libpve-guest-common-perl: 4.0-2
libpve-http-server-perl: 4.0-2
libpve-storage-perl: 7.0-10
libspice-server1: 0.14.3-2.1
lvm2: 2.03.11-2.1
lxc-pve: 4.0.9-4
lxcfs: 4.0.8-pve2
novnc-pve: 1.2.0-3
proxmox-backup-client: 2.0.9-2
proxmox-backup-file-restore: 2.0.9-2
proxmox-mini-journalreader: 1.2-1
proxmox-widget-toolkit: 3.3-6
pve-cluster: 7.0-3
pve-container: 4.0-9
pve-docs: 7.0-5
pve-edk2-firmware: 3.20200531-1
pve-firewall: 4.2-2
pve-firmware: 3.3-1
pve-ha-manager: 3.3-1
pve-i18n: 2.5-1
pve-qemu-kvm: 6.0.0-3
pve-xtermjs: 4.12.0-1
qemu-server: 7.0-13
smartmontools: 7.2-1
spiceterm: 3.2-2
vncterm: 1.7-1
zfsutils-linux: 2.0.5-pve1

Vielen Dank und liebe Grüsse
Sebastian
 
Wie genau muss ich das machen?
EInfach in dem dem Ordner/etc/modprobe.d/ mit nano ein Configfile anlegen; zB. snd_hda_intel.conf ?

Also müsste der Befehl so lauten:
nano /etc/modprobe.d/snd_hda_intel.conf ?

Der Inhalt müsste dann lauten:
blacklist snd_hda_intel

Zum Schluss mit update-initramfs aktualisieren?
Wäre das korrekt?

Grundsätzliche Frage; Werden alle Infos aus .conf Files in dem Ordner /etc/modprobe.d/ automatisch beim booten geladen?
alles korrekt :)

Bezüglich des pveversion -v, da muss die Maschine auch laufen oder? :)
naja der host muss laufen um darauf kommandos auszuführen ;)
 
ok, ich habe den snd_hda_intel wie oben beschrieben noch mal geblacklisted.
leider auch ohne Erfolg :-(
Es scheint wirklich irgendein Problem mit der Hardware zu sein.
Ich habe mir nun einen HDMI Embedder gekauft und schleife das Audio signal nun per SPDIF wieder in das HDMI Signal ein. Es funktioniert auch erstaunlicherweise ohne Probleme oder merkliche Latenz.

Ich denke wir werden hier nicht mehr weiter kommen oder?
Liebe Grüsse
Sebastian
 
ok, ich habe den snd_hda_intel wie oben beschrieben noch mal geblacklisted.
leider auch ohne Erfolg :-(
Es scheint wirklich irgendein Problem mit der Hardware zu sein.
hmm.. scheint so, zumindest wüsste ich momentan nicht woran es sonst noch liegen könnte

Ich habe mir nun einen HDMI Embedder gekauft und schleife das Audio signal nun per SPDIF wieder in das HDMI Signal ein. Es funktioniert auch erstaunlicherweise ohne Probleme oder merkliche Latenz.

Ich denke wir werden hier nicht mehr weiter kommen oder?
Liebe Grüsse
Sebastian
wenn es damit funktioniert, würde ich es mal so lassen :)
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!