Keine Bildausgabe/Signal & Fehler 43 bei Windows-VM GPU Passthrough mit GTX 760 (Kepler) und AMD Ryzen 3000 (Matisse)


Recommended Posts

Hallo Unraider,

 

ich freue mich über meinen ersten Unraid-Build und bin als Fachinformatiker technisch nicht ganz unbewandert. GPU Passthrough mache ich generell jedoch zum ersten Mal, denn mein Ziel ist es eine Windows-VM mit dedizierter Grafikkarte fürs „Remote Gaming“ bereitzustellen.

Die neusten Nvidia-Treiber lassen sich initial installieren, so dass die Grafikkarte laut Geräte Manager „einwandfrei funktioniert“. Leider bekomme ich in zu keinem Zeitpunkt eine Ausgabe bzw. ein Signal auf dem physikalisch angeschlossenen Monitor. Im Task Manager erscheint auch keine GPU wie man es von einem Bare Metal-System gewohnt ist. Nach einem Neustart erscheint schließlich der allseits bekannte Fehler 43 im Geräte Manager. Ein Test mit einer Ubuntu-VM zeigte mir allerdings, dass die physikalische Ausgabe auf den Bildschirm prinzipiell funktioniert; sogar mit Ton über HDMI.

 

Versuchte Maßnahmen:

  • HVM und IOMMU – also jegliche Optionen die Virtualisierung zugute kommt – sind sowieso im BIOS eingeschaltet
  • Unraid 6.10.3 im Legacy-Mode gestartet
  • Verschiedene Maschinen- (wie Q35) und BIOS-Typen (wie SeaBIOS) der Windows 10- und 11-VMs durchprobiert
  • "vfio-pci.ids=10de:1187,10de:0e0a" beim Booten angegeben oder die beiden Nvidia-Geräte zu „VFIO at boot“ gebunden (siehe Screenshot)
  • VM manager: "PCIe ACS override" zu "Both" und "VFIO allow unsafe interrupts" zu "Yes" geändert
  • XML-Datei der VM
    • Passende vBIOS-ROM-Datei angehängt
      • welche zuvor per GPU-Z extrahiert und anschließend der „Header“ entfernt wurde
      • oder welche zuvor durch das Skript dank Spaceinvader One exportiert wurde
    • „multifunction=‘on‘“-Optimierungen dank "Spaceinvader One" durchgeführt
    • Folgende Optimierungen dank “The Geek Freaks“ durchgeführt:
    <vendor_id state='on' value='0123456789AB'/>
  </hyperv>
  <kvm>
    <hidden state='on'/>
  </kvm>
  <ioapic driver='kvm'/>
</features>

 

grafik.thumb.png.6b7af0165090712370a7e943532ac26e.png

 

Meine Hardware:

  • AMD Ryzen 5 3600
  • ASRock B550M Pro4
  • MSI GTX 760 TF (als einzige Grafikkarte und im ersten PCIe-Slot, da anders nicht möglich)

 

Mag sein, dass ich irgendwelche Angaben vergessen habe, da ich innerhalb zwei Tagen soo viel ausprobiert habe. Bis hierher bedanke ich mich vorerst für eure Aufmerksamekeit und freue mich auf Tipps und kompetente Hilfe!

 

Beste Grüße

Link to comment
On 8/2/2022 at 6:53 PM, 4redundancy said:
  • MSI GTX 760 TF (als einzige Grafikkarte und im ersten PCIe-Slot, da anders nicht möglich)

 

Das wird dein Problem sein. Du kannst in Unraid einstellen was du willst, aber das BIOS zwingt dich die erste GPU für das bootende Betriebssystem, also Unraid, zu verwenden.

 

Ich nehme also an, dass wenn du den Server startest, dass du dann das BIOS siehst und danach das bootende Unraid, korrekt? Damit hast du vermutlich bereits verloren und die vollständige Bindung an VFIO funktioniert nicht zuverlässig. Es soll vereinzelte Nutzer geben, die das mit Kernel-Flags in den Griff bekommen haben, aber ich kann dir da auch keine generelle Lösung nennen. Müsstest du weiter recherchieren.

 

Damals hatte sich Linus daran versucht (ab 06:38 schauen) und dann genervt aufgegeben und hat dann von AMD auf Intel gewechselt, weil die Intel CPU eine iGPU integriert hat (hat er aber glaube ich nicht richtig verstanden, weil er ja auch eine AMD CPU mit iGPU hätte nehmen können):

 

Fazit: Du brauchst eine CPU mit iGPU (Unraid nutzt dann die iGPU) oder du überredest dein BIOS die GPU vollständig zu ignorieren oder du findest eine Kernel Option die die GPU vollständig ignorieren lässt oder du verbaust eine zweite GPU. Noch eine Option könnte eine AMD GPU sein. Da soll die parallele Nutzung von Unraid und VM möglich sein (muss aber auch nicht garantiert sein):

https://forums.unraid.net/topic/103212-stromverbrauch-von-gpus-wenn-vm-aus-ist/

 

Ich merke auch an, dass Unraid zwar Virtualisierung kann, aber immer noch nur "Ok" ist, wenn es um die Nutzerfreundlichkeit beim Durchschleifen von Hardware geht. Die Paradedisziplinen von Unraid sind eher File Storage und Docker.

Link to comment
Posted (edited)
4 hours ago, mgutt said:

Das wird dein Problem sein. Du kannst in Unraid einstellen was du willst, aber das BIOS zwingt dich die erste GPU für das bootende Betriebssystem, also Unraid, zu verwenden.

  1. D.h. selbst wenn ich die GPU in einen anderen PCIe-Slot stecken könnte, würde es nichts ändern?
  2. Könnte ich es evtl. damit umgehen, wenn ich eine zweite (low-end-) GPU in einer der nächsten Slots einbaue (deine Rede) und ggf. diese im BIOS als primäre GPU für Unraid definiere? Eigentlich wollte ich genau das vermeiden, da das wieder zusätzliche Leistungsaufnahme bedeuten würde.
  3. Eine USB-Grafikkarte für Unraid (damit man die GPU exklusiv für die VM nutzen kann) kann man bestimmt auch vergessen, oder?
  4. Habe ich eventuell Glück mit einer neueren GPU oder ist das komplett unabhängig davon? Auf kurz oder lang wollte ich sowieso mal auf was aktuelleres wechseln; vorzugsweise von Nvidia. Wenn ja, würde ich mir zumindest den Kauf eines neuen AMD-Prozessors mit iGPU ersparen.

 

4 hours ago, mgutt said:

Ich nehme also an, dass wenn du den Server startest, dass du dann das BIOS siehst und danach das bootende Unraid, korrekt?

Nach dem VFIO-Flag beim Booten friert das Bild ein und Unraid startet normal. Wenn man dann eine Windows-VM mit durchgeschliffener GPU startet, wird das Bild vom Monitor schwarz und bleibt es auch (kein Signal). Es scheint so, dass der HV das Bild der VM ausgeben wollte. Im Falle der o.g. Ubuntu-VM wird dann das entsprechende Bild (vom Boot-Bildschirm bis zum Desktop) auf dem Monitor ausgegeben. Das spricht doch eigentlich dafür, dass das Durchschleifen meiner GTX 760 prinzipiell funktioniert, oder?

 

 

 

4 hours ago, mgutt said:

Fazit: Du brauchst eine CPU mit iGPU (Unraid nutzt dann die iGPU)

Schon bevor ich mir meinen 3600er gebraucht gekauft hatte, hatte ich einen AMD Ryzen 5 PRO 4650G oder 5650G in Betracht gezogen.

 

 

Trotzdem vielen Dank für deine konstruktive Antwort. Fürs erste hast du mir schon etwas weitergeholfen. Woanders wurde ich mit Aussagen abgewimmelt, dass mein Vorhaben mit 700er Karten nicht gehen würde (da zu alt?), ohne Angeben von Gründen oder ähnliches. Dabei gibt es einige hier in den Foren, welche Kepler-GPUs in VMs am Laufen hatten; auch wenn nicht wie in meiner Konstellation.

 

Beste Grüße

Edited by 4redundancy
Rechtschreibfehler
Link to comment
2 hours ago, 4redundancy said:
  1. D.h. selbst wenn ich die GPU in einen anderen PCIe-Slot stecken könnte, würde es nichts ändern?

Meiner Meinung nach brauchst Du eine zweite Grafikkarte. Eine sehr anspruchslose für unraid selber und dann eine, die dem entspricht, was Du mit anderen Anwendungen damit machen willst.

Deshalb werden CPU mit iGPU bevorzugt (sofern sie von unraid unterstützt werden).

Somit wäre es zu überlegen eine andere CPU mit iGPU zu verwenden (Prozessor mit dem Zusatzbuchstaben G) oder (vermutlich billiger) eine zweite Grafikkarte ins System zu setzen.

Sind wirklich alle, für eine Grafikkarte, in Frage kommenden Slots/Anschlüsse schon belegt?

ASRock B550M Pro4
  - 2 x PCI Express x16 Slots
  - 1 x PCI Express 3.0 x1 Slot
  - 1 x M.2 Socket (Key E), supports type 2230 WiFi/BT PCIe WiFi module

Bei allen 4 Slots sollte (ggf. mit Adaptierung) eine Grafikfunktion möglich sein.
Bei dem M.2 Key-E müßte man vielleicht erst von Key-E auf Key-M adaptieren und dann eine M.2 VGA Lösung platzieren.

https://www.notebookcheck.com/M-2-GPU-Diese-Grafikkarte-passt-auch-in-besonders-kompakte-PCs.509018.0.html

 

Edit: habe gerade gesheen, daß es diese M.2_VGA Grafikkarte kaum noch zu bekommen gibt.

Also könnte man von M.2 Key-E PCIe auf M.2 Key-B PCIe Adaptieren und von da aus mit einem dieser Mining-Kits/-Riser auf USB-artige Schnittstelle gehen und dann eine Grafikkarte als Dummy irgendwo ins Gehäuse schrauben.

https://www.ebay.de/itm/373272128095?hash=item56e8c0aa5f:g:mpIAAOSwv2FfhglF

Aber das wird dann nicht wirklich energieeffizient

 

2 hours ago, 4redundancy said:
  1. Könnte ich es evtl. damit umgehen, wenn ich eine zweite (low-end-) GPU in einer der nächsten Slots einbaue (deine Rede) und ggf. diese im BIOS als primäre GPU für Unraid definiere?

Da stellt sich die Frage in wie weit sich das im BIOS konfigurieren laesst.

Ich befürchte das kann man nur ausprobieren.

 

2 hours ago, 4redundancy said:
  1. Eigentlich wollte ich genau das vermeiden, da das wieder zusätzliche Leistungsaufnahme bedeuten würde.

Dann wechsele die CPU auf eine mit iGPU, die von unraid unterstützt wird.

 

2 hours ago, 4redundancy said:
  1. Eine USB-Grafikkarte für Unraid (damit man die GPU exklusiv für die VM nutzen kann) kann man bestimmt auch vergessen, oder?

Die meisten USB Grafikkarten, die ich kenne arbietn auf Basis der Displaylink-Chips. Die benötigen zusätzliche Software, die ja beim Systemstart vom BIOS noch nicht geladen sind. Somit kann das BIOS die auch nicht erkennen und als erste GPU dem nachgeladenen OS zur Verfügung stellen.

Ganz davon abgesehen, daß ich nicht weiß ob unraid überhaupt mit Displaylink Technik umgehen kann.

 

2 hours ago, 4redundancy said:
  1. Habe ich eventuell Glück mit einer neueren GPU oder ist das komplett unabhängig davon?

Wenn Dein Problem darin besteht, daß die erste GPU dem OS zugeordnet wird ist es egal welche einzige GPU Du einbaust.

 

2 hours ago, 4redundancy said:
  1. Auf kurz oder lang wollte ich sowieso mal auf was aktuelleres wechseln; vorzugsweise von Nvidia. Wenn ja, würde ich mir zumindest den Kauf eines neuen AMD-Prozessors mit iGPU ersparen.

Je nachdem welche aktuellere nVidia Du ins Auge gefasst hattest könnte der Neu-/Gebrauchtkauf eine CPU mit iGPU billiger sein.

Edited by DataCollector
wegen M2_VGA Situation ergänzt
Link to comment
3 hours ago, 4redundancy said:

wenn ich eine zweite (low-end-) GPU in einer der nächsten Slots einbaue (deine Rede) und ggf. diese im BIOS als primäre GPU für Unraid definiere?

Wenn du Pech hast, geht nicht mal das und die primäre muss im ersten Slot stecken. Wir hatten hier schon jemanden, der deswegen seinen X16 Slot opfern musste, weil das Board nur X16 CPU und X4 Chipsatz hatte und die Gaming VM lief dann nur über den X4. Kommt aber auch hier auf das BIOS und Board an.

 

3 hours ago, 4redundancy said:

Nach dem VFIO-Flag beim Booten friert das Bild ein und Unraid startet normal. Wenn man dann eine Windows-VM mit durchgeschliffener GPU startet, wird das Bild vom Monitor schwarz und bleibt es auch (kein Signal). Es scheint so, dass der HV das Bild der VM ausgeben wollte. Im Falle der o.g. Ubuntu-VM wird dann das entsprechende Bild (vom Boot-Bildschirm bis zum Desktop) auf dem Monitor ausgegeben. Das spricht doch eigentlich dafür, dass das Durchschleifen meiner GTX 760 prinzipiell funktioniert, oder?

Es klingt zumindest so als würde das Kernel Flag was nützen. Die Frage ist allerdings ob Unraid sie wirklich "loslässt" oder ob die GPU wieder zurück in ihren "Reset" Zustand geht, also in den wo sie nichts von einem OS weiß.

 

Eventuell hilft es die Karte aus den PCI Geräten zu entfernen und wieder aufzunehmen:

https://forums.unraid.net/topic/89922-unraid-nvidia-graphics-card-sleep-reset-script/

 

Oder mit dem Befehl nvidia-persistenced & wie hier erwähnt:

https://forums.unraid.net/topic/118039-strom-sparen-ansätze/

 

Mit solchen Tweaks muss man manchmal auch arbeiten, wenn man die selbe GPU in zwei verschiedenen VMs nutzen will. 

 

Ansonsten kann ich dir nur raten mal nach "Unraid Single GPU passthrough" zu suchen. Dabei habe ich zB das gefunden:

https://forums.unraid.net/topic/41951-gpu-passthrough-with-only-one-card/?do=findComment&comment=448403

 

Also ausprobieren, ausprobieren, ausprobieren...

 

 

 

Link to comment
On 8/2/2022 at 6:53 PM, 4redundancy said:

und freue mich auf Tipps

probier mal folgenden Eintrag in der syslinux (main, flash, unraid OS, letzter Eintrag in der append line)

video=efifb:off

 

damit "sollte" unraid in einen headless mode gehen, funktioniert leider nur nicht immer wie bereits erwähnt ...

 

hat hier einmal geklappt, jedoch auf einem intel system wo eine cpu ohne igpu verbaut war ...

 

25 minutes ago, mgutt said:

Oder mit dem Befehl nvidia-persistenced & wie hier erwähnt:

https://forums.unraid.net/topic/118039-strom-sparen-ansätze/

das hat andere Hintergründe und sollte Dir in der Situation nicht wirklich helfen, da geht es um den Schlafmodus der Karte, die wird damit nicht komplett frei gesetzt wenn in use von unraid, ich nutze das in einem anderen Zusammenhang ...

 

das wäre ein Thema wenn du das machen würdest

3 hours ago, 4redundancy said:

Eigentlich wollte ich genau das vermeiden, da das wieder zusätzliche Leistungsaufnahme bedeuten würde.

 

Bsp. eine 3080ti schluckt im idle sleep nicht viel, wenn du jetzt eine kleinere nimmst wird es noch weniger ...

image.png.8aa49825487683e853b132d5a0c86c36.png

 

wenn ich mich recht erinnere (immer davon ausgehend, es war ein Intel System und ich meine ein Z270er Board)

 

- Unraid Boot legacy

- vfio bind (ich meine ich hatte dies sogar noch per syslinux da gemacht, schon länger her ...)

- vbios extrahiert und eingebunden

- VM seabios (auch legacy)

- Mashine type i4400

 

so hatte ich die einzige GPU im System an eine VM reichen können, da aber dann nichts mehr für unraid übrig war wurde das System schnell upgraded auf eine CPU mit igpu ... viel Erfolg, wie @mgutt schrieb, probieren probieren .... 

Link to comment
23 hours ago, DataCollector said:

Meiner Meinung nach brauchst Du eine zweite Grafikkarte. Eine sehr anspruchslose für unraid selber und dann eine, die dem entspricht, was Du mit anderen Anwendungen damit machen willst.

Das werde ich auf jeden Fall mal ausprobieren. Ich habe hier noch eine olle Single-Slot Karte herumliegen, die ich jedoch nicht für den produktiven Einsatz nutzen möchte, da dessen Passivkühler immer extrem heiß wird.

 

23 hours ago, DataCollector said:

Sind wirklich alle, für eine Grafikkarte, in Frage kommenden Slots/Anschlüsse schon belegt?

Was die PCIe-Slots zu den hinteren Blenden hin angeht, kann ich nur noch eine Single-Slot Karte ganz unten verbauen. Ansonsten hätte ich nur noch den x1-Slot und die von dir angesprochenen M.2-Slots.

 

23 hours ago, DataCollector said:

Bei dem M.2 Key-E müßte man vielleicht erst von Key-E auf Key-M adaptieren und dann eine M.2 VGA Lösung platzieren.

Ich weiß zwar, dass es sowas gibt (habe damals das Video von LTT dazu gesehen), allerdings bin ich selbst gar nicht auf solche Ideen gekommen. Super Ideen sind das auf jeden Fall, ich sehe aber eher davon ab, denke ich. 🙈

 

23 hours ago, DataCollector said:

Die meisten USB Grafikkarten, die ich kenne arbietn auf Basis der Displaylink-Chips. Die benötigen zusätzliche Software, die ja beim Systemstart vom BIOS noch nicht geladen sind.

Stimmt, ich dachte mir auch schon, dass sowas nicht funktionieren würde, aber du hast es besser in Worte fassen können und auf den Punkt gebracht. 😉

 

22 hours ago, mgutt said:

Wenn du Pech hast, geht nicht mal das und die primäre muss im ersten Slot stecken. Wir hatten hier schon jemanden, der deswegen seinen X16 Slot opfern musste, weil das Board nur X16 CPU und X4 Chipsatz hatte und die Gaming VM lief dann nur über den X4. Kommt aber auch hier auf das BIOS und Board an.

Diese Befürchtung hatte ich auch schon und wäre (wie gesagt) keine Option für mich. Dann wechsele ich lieber auf einen Prozessor mit iGPU.

 

22 hours ago, mgutt said:

Mit solchen Tweaks muss man manchmal auch arbeiten, wenn man die selbe GPU in zwei verschiedenen VMs nutzen will. 

Die von dir genannten Workarounds werde ich nochmal genauer anschauen. Ich glaube einiges davon hatte ich auch schon einmal ausprobiert. Primär geht es mir darum, nur eine Grafikkarte für eine Windows-VM zu nutzen, die ich dann bei Bedarf fürs Gaming aus der Ferne nutzen kann.

 

22 hours ago, alturismo said:

probier mal folgenden Eintrag in der syslinux (main, flash, unraid OS, letzter Eintrag in der append line)

Hört sich vielversprechend an. Ist auch eines der ersten Dinge, die ich ausprobieren werde.

 

22 hours ago, alturismo said:

Bsp. eine 3080ti schluckt im idle sleep nicht viel, wenn du jetzt eine kleinere nimmst wird es noch weniger ...

Wow, nicht schlecht; richtig effizient die neuen Karten. Wenn ich das mal mit meinen System vergleiche, dessen Leistungsaufnahme ich mal mit einem handelsüblichen Strommessgerät direkt an der Steckdose gemessen habe, verbraucht es mit der GTX 760 38W und ohne GTX 760 24W (selbstverständlich ohne HDDs): Also eine Differenz von 14W und sogar das doppelte als die o.g. RTX 3080 Ti.

 

In frühstens 1,5 Wochen melde ich mich nochmal (hoffentlich mit Erfolgen) zurück. Vielen lieben Dank für die ganzen Anreize bisher; ihr seid klasse! Ich hätte nicht gedacht, dass in den deutschen Foren hier so vorwärts geht.

Leider lässt mein System aufgrund meines Casemod nicht so viele Veränderungen an der Hardware zu. Aber selbst wenn ein Prozessor mit iGPU nicht hilft, werde ich Unraid headless zumindest ohne Gaming-VM einsetzen; es sind Einsatzzwecke genug da und das ganze Konstrukt hat es sowieso auf mich abgesehen. 😃 Die Casemod werde ich vermutlich auch mal öffentlich zeigen und dokumentieren.

 

Beste Grüße

Edited by 4redundancy
Rechtschreibfehler; Details ergänzt
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.