Internet, Linux & IT

Undervolting lohnt sich!

In den letzten Tagen habe ich mich mit dem Undervolting meines Prozessors und meiner Grafikkarte beschäftigt. Undervolting bei CPUs und GPUs bedeutet, dass man die Betriebsspannung (Voltage) der Prozessoren absenkt, ohne dabei (idealerweise) die Leistung spürbar zu beeinträchtigen. Ziel ist es, den Stromverbrauch und die Hitzeentwicklung zu reduzieren.

Undervolting des Prozessors AMD Ryzen 9950X3D

Hierzu stehen direkt im UEFI (Bios) verschiedene Tools zur Verfügung, unter anderem der Curve Optimizer und der Curve Shaper. Ich habe mich an dem Video von ParteeMike Tech orientiert, aber nur das Undervolting umgesetzt und keine Overclocking-Maßnahmen vorgenommen. Dabei habe ich festgestellt, dass mein Prozessor bei -30mV auf allen Kernen stabil läuft, und daher auch nur im Curve Optimizer entsprechende Einstellungen vorgenommen. Stabilität kann man u.a. mit dem kostenlosen Tool CoreCycler testen, darf aber neben der Stabilität unter Last auch das Verhalten im Leerlauf nicht vernachlässigen.

Curve Optimizer Einstellungen für den Ryzen 9950X3D im UEFI (Bios)

Die Ergebnisse können sich durchaus sehen lassen: Durch diese eine Einstellung verbraucht der Prozessor im Einzelkernbetrieb 21% weniger Energie bei 2% höherer Performance im Vergleich zu den Werkseinstellungen. Im Mehrkernbetrieb mit allen 16 Kernen sind es zwar nur 4% Energieersparnis, aber immerhin 4% Performancesteigerung. In der Praxis wird die relative Energieersparnis/Leistungssteigerung wohl irgendwo dazwischen liegen, da beispielsweise in Spielen nur 8 der insgesamt 16 Kerne verwendet werden.

Cinebench R23 - Single Core Performance Punkte Performance relativ Leistungs- aufnahme Watt Leistungs- aufnahme relativ
Werks- einstellungen 2.215 100 % 70 W 100 %
Core Optimizer: All Cores @ -30mV 2.269 102 % 55 W 79 %

Cinebench R23 - Multi Core Performance Punkte Performance relativ Leistungs- aufnahme Watt Leistungs- aufnahme relativ
Werks- einstellungen 42.328 100 % 200 W 100 %
Core Optimizer: All Cores @ -30mV 44.066 104 % 193 W 96 %

Undervolting der Grafikkarte Nvidia GeForce 5090FE

Im Bereich der Grafikkarten ist der kostenlose MSI Afterburner das etablierte Tool fürs Undervolting. Beim den Grundlagen und der Bedienung dieses Werkzeugs hat mir zunächst das Video von Panjno geholfen; speziell beim Undervolting der 5090FE habe ich dann aber die Einstellungen aus dem Video von Eiga übernommen. Diese laufen auch bei mir zuverlässig und stabil.

Spannungs-/Taktraten-Kurve der GeForce RTX 5090FE bei 2737MHz @ 885mV

Spannungs-/Taktraten-Kurve der GeForce RTX 5090FE bei 2572MHz @ 870mV

Auch bei der GPU kann man mit Undervolting sehr viel rausholen: Je nach Einstellung z.B. 1% mehr Performance bei 15% geringerer Leistungsaufnahme – was immerhin 86 Watt entspricht. Alternativ 2% weniger Performance bei 21% geringerer Leistungsaufnahme – satte 115 Watt. Zusammen mit dem Undervolting der CPU macht sich das nicht nur beim Stromverbrauch, sondern auch bei der Wärmeentwicklung im Gehäuse bemerkbar.

3DMark Demo Steel Nomad Performance Punkte Performance relativ Leistungs- aufnahme Watt Leistungs- aufnahme relativ
Werks- einstellungen 14.048 100 % 577 W 100 %
UV 2737MHz @ 885mV 14.181 101 % 490 W 85 %
UV 2572MHz @ 870mV 13.708 98 % 458 W 79 %

Internet, Linux & IT

Neuer PC: AMD Ryzen 9950X3D mit Nvidia GeForce RTX 5090FE im NCASE M2

Nach etwas mehr als fünf Jahren habe ich mir einen neuen PC zusammengestellt. Diesmal habe ich mir einen High-End-Rechner gegönnt und ihn in dem kompakten NCASE M2 Round Silver-Gehäuse im klassischen Layout verbaut.

Neuer PC im kompakten Gehäuse NCASE M2 Round Silver

Hardware:

  • CPU: AMD Ryzen 9950X3D
  • GPU: Nvidia GeForce RTX 5090FE
  • CPU-Kühler: Thermalright Peerless Assassin 120 Mini Black (PA120Mini)
  • Mainboard: ROG STRIX B850-I GAMING WIFI
  • RAM: 2× Corsair Pro 32 GB DDR5-5600
  • SSD: 2× Samsung 990 Pro 4 TB
  • Netzteil: Corsair SF1000
  • Gehäuselüfter: 5× Arctic P14 Slim PWM PST
  • Sonstiges: Gummischrauben für Lüfter, 3 mm Kühlkörper für hintere SSD (nicht im Bild), 5 mm Abstandshalter für Bodenlüfter, einfacher Anti-Sag-GPU-Halter, zusätzliche Lüfterhalterung für das NCASE M2

Die neue Hardware im Überblick

Verwendungszweck / Ziele:

  • Dual-Boot-System mit Gentoo Linux für Produktivität und Windows 11 für Gaming
  • Fast lautloser Betrieb im normalen Desktop-Einsatz (Web-Browsing, Videos)
  • Kann beim Gaming lauter sein, da ich ein Headset benutze

Bau-Erlebnis:

Der Zusammenbau verlief unkompliziert und ohne größere Probleme.

Der CPU-Lüfter ist als Lufteinlass konfiguriert. Die oberen und seitlichen Lüfter sind als Luftauslass eingestellt. Die Bodenlüfter sorgen für zusätzliche Frischluftzufuhr.

Linke Gehäuseseite

Rechte Gehäuseseite - Ich habe nachträglich noch einen 3 mm Kühlkörper auf die SSD gesetzt, was die Temperaturen etwas verbessert hat.

Ansicht von oben

Rückseite - Den 90-mm-Lüfter habe ich inzwischen entfernt, weil er selbst bei niedriger Drehzahl zu laut war.

Wie auf den Bildern zu sehen, hatte ich ursprünglich einen zusätzlichen 90-mm-Gehäuselüfter hinten als Lufteinlass montiert, habe ihn aber wegen der Lautstärke entfernt. Ich denke, er bringt nicht genug, um den zusätzlichen Lärm zu rechtfertigen. Vielleicht befestige ich ihn später direkt am CPU-Kühler, aber momentan bin ich mit den CPU-Temperaturen zufrieden.

Die 5090 FE kommt mit ihrer eigenen Kühlung gut zurecht. Die Bodenlüfter unterhalb der GPU sind nur dafür da, die Temperatur unter 52°C zu halten. Das ist die Schwelle, ab der die Lüfter der 5090 FE anspringen – und wenn das passiert, sind sie ziemlich laut. Damit das nicht passiert, müssen die Bodenlüfter so nah wie möglich an der GPU positioniert werden. Deshalb habe ich Abstandshalter unter die Lüfter gesetzt, um sie näher an die GPU zu bringen. So laufen sie sehr leise und langsam (~28 % PWM), sodass die GPU-Lüfter während Web-Browsing, YouTube oder im Idle nie anspringen.

Mit meinen aktuellen Lüftereinstellungen (siehe Anhänge) bleibt das System beim Surfen, YouTube oder im Idle angenehm leise, bei einer Raumtemperatur von etwa 22°C. Beim Spielen eines anspruchsvollen Spiels wie Indiana Jones mit maximalen Einstellungen zieht das System ca. 700 Watt und das Gehäuse wird spürbar heiß – fast wie ein großer Kühlkörper. Nach der Gaming-Session kühlt es aber schnell wieder ab. Natürlich werden die Lüfter dabei deutlich hörbar, aber da meine 5090 FE sowieso hörbares Spulenfiepen hat und ich mit Kopfhörern spiele, stört mich das nicht weiter.

Temperaturen & Optimierungen:

Im HWInfo-Screenshot sieht man die Temperaturen nach über einer Stunde Gaming. Insgesamt bin ich zufrieden, außer mit dem SSD-Controller-Chip meiner primären SSD. Diese Samsung SSD ist vorne am Mainboard montiert, zwischen GPU und CPU. Es gibt wohl ein bekanntes Problem mit diesem SSD-Kühlkörper: Der SSD-Controller-Chip sitzt etwas tiefer als die Flash-Speicher, sodass ein kleiner Spalt zwischen Controller und Kühlkörper entsteht. Eine mögliche Lösung besteht darin, Wärmeleitpads mit unterschiedlichen Dicken zu verwenden: 0,5 mm für die Flash-Speicher und 1 mm für den Controller. Ich habe solche Pads bestellt, aber sie sind gerade nicht lieferbar. Sobald sie ankommen, werde ich testen, ob sie helfen, die Temperatur unter 70°C zu halten.

Temperaturen während/nach dem Spielen von Indiana Jones: In der "Maximal"-Spalte sind die Temperaturen, die während dieses Spiels zu erwarten sind.

Ich habe weder Overclocking noch Undervolting oder EXPO-Profile aktiviert. Mir ist Systemstabilität wichtiger als eine kleine Leistungssteigerung. Deshalb habe ich auch bewusst JEDEC-konformen DDR5-5600 RAM gewählt, statt des oft empfohlenen DDR5-6000 „Sweet Spots“. Möglicherweise probiere ich aber in Zukunft Undervolting aus, um die Temperaturen weiter zu senken.

Und ja, mein Kabelmanagement ist schrecklich – bitte nicht beurteilen!

Übersicht der vorgenommenen Bios-Einstellungen:

SATA deaktiviert

Stromspareinstellungen

Stromspareinstellungen sowie WLAN und internes Audio deaktiviert, da nicht benötigt

In der CPU integrierte GPU deaktiviert

Der Standardlüfter des PA120 Mini bleibt bis etwa 35% PWM ruhig, weshalb ich ihn auf diesen Wert eingestellt habe für Temperaturen bis 70°C (die bei leichter Desktop-Nutzung normalerweise nicht erreicht werden). Darüber hinaus stelle ich ihn so ein, dass er schnell auf 100% PWM ansteigt, sobald 90°C erreicht werden, um die CPU unter die Drosselungsgrenze von 95°C zu halten, bei CPU-intensiven Aufgaben und gemischten CPU/GPU-Lasten, wie zum Beispiel beim Gaming.

Chassis-Lüfter: Dies sind die beiden oberen Abluftlüfter. Die Arctic P14 Slims bleiben bis etwa 25% PWM ruhig, weshalb ich sie auf niedrigen 20% belasse und sie erst hochfahre, nachdem die CPU 70°C erreicht, um die warme Luft abzuführen.

Extra Flow Lüfter: Dies ist der seitliche Abluftlüfter. Die Arctic P14 Slims bleiben bis etwa 25% PWM ruhig, weshalb ich sie auf niedrigen 20% belasse und sie erst hochfahre, nachdem die CPU 70°C erreicht, um die warme Luft abzuführen.

AIO-Pumpenlüfter: Dies sind die beiden unteren Zuluftlüfter. Die Arctic P14 Slims bleiben bis etwa 25% PWM ruhig, aber ich lasse sie bei etwa 28% PWM laufen, um zu verhindern, dass die GPU 52°C erreicht, was dazu führen würde, dass ihre lauten Lüfter anspringen. (Siehe Text)

Probleme und Lösungen:

Der im Mainboard integrierte Netzwerkadapter Intel I226-V ist leider als Problemkind bekannt. Ich hatte damit zwei verschiedene Probleme:

  • Unter Windows war die Übertragungsgeschwindigkeit sehr langsam (nur 10–100 Mbit/s statt der erwarteten 1000 Mbit/s). Ich habe zahlreiche Einstellungen ausprobiert – insbesondere bei den Energiesparfunktionen im BIOS und im Netzwerktreiber – sowie verschiedene Treiberversionen installiert. Irgendwann funktionierte es schließlich. Leider kann ich nicht mehr genau sagen, woran es letztlich lag. Da ich die Energiesparfunktionen inzwischen wieder aktiviert habe, dürften sie nicht die Ursache gewesen sein. Vermutlich hat die Installation des aktuellen Treibers aus dem Intel Ethernet Adapter Complete Driver Pack geholfen.
  • Unter Linux hat sich der Adapter gelegentlich nach einiger Zeit komplett deaktiviert, mit der Fehlermeldung: "lPCIe link lost, device now detached". Dieses Problem scheint tatsächlich mit den Energiesparfunktionen zusammenzuhängen. Laut diesem Beitrag können sie durch die Kernel-Parameter pcie_port_pm=off und pcie_aspm.policy=performance deaktiviert werden.

Internet, Linux & IT

Hardwareverschlüsselung nach TCG OPAL mit SEDUTIL

Mit SEDUTIL lässt sich die Hardwareverschlüsselung nach dem TCG-OPAL-Standard für kompatible SSDs aktivieren. Der große Vorteil: Die Lösung funktioniert betriebssystemunabhängig und kann zudem unkompliziert ein- oder wieder ausgeschaltet werden.

Das Grundprinzip: Im gesperrten Zustand stellt die SSD einen kleinen, unverschlüsselten, alternativen Bootbereich zur Verfügung. In diesem wird ein minimalistisches Linux-System installiert, das beim Start direkt eine Eingabeaufforderung zur Passworteingabe öffnet. Nach erfolgreicher Authentifizierung wird die SSD entsperrt und das eigentliche Betriebssystem neu gestartet.

Installation

Die Installation ist auf sedutil.com gut dokumentiert. Dort findet sich auch ein Build, das mit Ryzen-CPUs kompatibel ist – diese Version verwende ich selbst seit über fünf Jahren. Hier eine Kurzfassung der wichtigsten Befehle für die Installation nach dem Booten von der bootbaren Installations- bzw. Recovery-Disk (inkl. Beispielausgaben):

linux ~ # gunzip /usr/sedutil/UEFI64-*img.gz
linux ~ # sedutil-cli --initialsetup debug /dev/nvme0
- 14:06:39.709 INFO: takeOwnership complete
- 14:06:41.703 INFO: Locking SP Activate Complete
- 14:06:42.317 INFO: LockingRange0 disabled
- 14:06:42.694 INFO: LockingRange0 set to RW
- 14:06:43.171 INFO: MBRDone set on
- 14:06:43.515 INFO: MBRDone set on
- 14:06:43.904 INFO: MBREnable set on
- 14:06:43.904 INFO: Initial setup of TPer complete on /dev/nvme0
linux ~ # sedutil-cli --enablelockingrange 0 debug /dev/nvme0
- 14:07:24.914 INFO: LockingRange0 enabled ReadLocking,WriteLocking
linux ~ # sedutil-cli --setlockingrange 0 lk debug /dev/nvme0
- 14:07:46.728 INFO: LockingRange0 set to LK
linux ~ # sedutil-cli --setmbrdone off debug /dev/nvme0
- 14:08:21.999 INFO: MBRDone set off
linux ~ # sedutil-cli --loadpbaimage debug /usr/sedutil/UEFI64-*.img /dev/nvme0
- 14:10:55.328 INFO: Writing PBA to /dev/nvme0
33554432 of 33554432 100% blk=1500
- 14:14:04.499 INFO: PBA image /usr/sedutil/UEFI64.img written to /dev/nvme0

Test

Nun folgt ein wichtiger Test des Unlocking-Tools mit dem festgelegten Probepasswort "debug". Die Ausgabe für die betreffende SSD muss dabei "is OPAL Unlocked" lauten. Falls stattdessen eine andere Meldung erscheint, sollte OPAL wieder deaktiviert werden, um Probleme beim späteren Zugriff auf die Daten zu vermeiden.

linux ~ # linuxpba
DTA LINUX Pre Boot Authorization
Please enter pass-phrase to unlock OPAL drives: debug
Scanning....
Drive /dev/nvme0 Samsung SSD 960 EVO 250GB is OPAL Unlocked
Drive /dev/sda Crucial_CT250MX200SSD1 is OPAL NOT LOCKED

Echtes Password setzen und Shadow-MBR aktivieren:

Mit den folgenden Befehlen wird das Probepasswort "debug" durch ein eigenes Passwort ersetzt. Zudem wird der Shadow-MBR aktiviert, sodass die verschlüsselte SSD das zuvor installierte Linux-System zur Passworteingabe als bootbare Partition bereitstellt.

linux ~ # sedutil-cli --setsidpassword debug yourrealpassword /dev/nvme0
linux ~ # sedutil-cli --setadmin1pwd debug yourrealpassword /dev/nvme0
- 14:20:53.352 INFO: Admin1 password changed
linux ~ # sedutil-cli --setmbrdone on yourrealpassword /dev/nvme0
- 14:22:21.590 INFO: MBRDone set on

Deaktivierung von OPAL:

Falls erforderlich, kann mit den folgenden Schritten OPAL deaktiviert werden. Dabei ist "debug" das zuvor gesetzte Probepasswort. Falls bereits ein eigenes Passwort vergeben wurde, muss es entsprechend ersetzt werden.

linux ~ # sedutil-cli --disablelockingrange 0 debug /dev/nvme0
- 14:07:24.914 INFO: LockingRange0 disabled
linux ~ # sedutil-cli --setmbrenable off debug /dev/nvme0
14:08:21.999 INFO: MBREnable set off

Troubleshooting und Hinweise

Kompatibilität

Die SEDutil-Version von sedutil.com ist nicht kompatibel mit der Originalversion der Drive Trust Alliance, da sie für die Passwort-Hash-Berechnung SHA-512 anstelle von SHA-1 verwendet.

Initialsetup meldet "NOT AUTHORIZED"

Wie im Fehlerbericht #291 dokumentiert, schlagen bei einigen NVMe-SSDs die "initialsetup"-Operationen mit dem Fehler "NOT AUTHORIZED" fehl. In vielen Fällen kann dieses Problem durch das vorherige Ausführen des "PSIDrevert"-Befehls behoben werden:

linux ~ # sedutil-cli --PSIDrevert DieLaufwerksPSIDhier /dev/nvme0

(Der PSID-Code der SSD befindet sich auf einem Aufkleber auf dem Laufwerk selbst.)

Achtung: Der Befehl PSIDrevert ist gefährlich! Er löscht normalerweise alle Daten auf dem Gerät. Daher sollte vorher unbedingt ein vollständiges Backup durchgeführt werden.

In meinem Fall – sowie in anderen Fällen, die im verlinkten Fehlerbericht dokumentiert sind – wurde das Laufwerk jedoch nicht gelöscht. Stattdessen wurde dadurch die "initialsetup"-Operation freigeschaltet. Ich vermute, dass bei meinem Laufwerk der PSIDrevert-Befehl die Festplatte nur löscht, wenn die OPAL-Sperre aktiviert ist, und ansonsten lediglich den Schutz für die Aktivierung der Verschlüsselung aufhebt. Mittlerweile habe ich das ebenfalls getestet: Meine gesperrte SSD ließ sich auf diese Weise vollständig löschen und entsperren.

Windows Update überschreibt den Linux Bootloader bei Dual-Boot-Systemen

Im Fehlerbericht 27 habe ich meine Lösung für das Problem dokumentiert, dass Windows Update den Grub-Bootloader bei einer Dual-Boot-Konfiguration von Windows und Linux beschädigt. Da mein UEFI-Setup die Standard-Fallback-Pfade verwendet, musste ich Grub an den Speicherorten /EFI/Boot und /EFI/Microsoft/Boot ablegen und den Windows-Bootloader in ein anderes Verzeichnis verschieben, z. B. /EFI/Windows.

Das Verschieben von Grub an diesen Speicherort war notwendig, wie in dem Fehlerbericht beschrieben (siehe z. B. den Kommentar von mesiu84). Der Grund ist, dass mein UEFI nach der Pre-Authentifizierung alle UEFI-Einträge von nicht verfügbaren Partitionen löscht und daher nie Grub am Standard-Speicherort (/EFI/gentoo in meinem Fall) startet, sondern immer auf die Fallback-Pfade /EFI/Microsoft/Boot oder /EFI/Boot zurückgreift.

Nun habe ich herausgefunden, dass mein UEFI nach der Pre-Authentifizierung und dem Entsperren der Laufwerke immer versucht, von der EFI-Partition des ersten Laufwerks zu booten. In meinem Setup habe ich zwei identische Laufwerke, beide mit aktiviertem Verschlüsselungsmechanismus.

Die Lösung: Windows Boot Manager auf ein zweites EFI-Volume verschieben

Meine Idee war: Was wäre, wenn ich den Windows Boot Manager auf eine zweite EFI-Partition auf dem zweiten Laufwerk verschieben könnte? Dann könnte ich Grub ausschließlich auf der EFI-Partition des ersten Laufwerks installieren und den Windows Bootloader von der zweiten EFI-Partition auf dem zweiten Laufwerk aus starten (Chainloading).

Der Vorteil: Windows Update würde nur die zweite EFI-Partition aktualisieren und nicht mehr die primäre EFI-Partition mit Grub überschreiben. Gleichzeitig würde mein UEFI nach dem Entsperren der Laufwerke weiterhin automatisch Grub von der EFI-Partition auf dem ersten Laufwerk starten.

Und tatsächlich funktioniert das! Meine Grub-Installation hat seitdem die Windows-Updates überlebt!

Mittlerweile weiss ich, dass diese Methode auch mit nur einem Laufwerk funktioniert, indem man dort zwei separate EFI-Partitionen anlegt.

Ausgangs-Partitionierung

  • Laufwerk 1 (Disk 1):
    • EFI
    • Windows
    • Linux (System)
  • Laufwerk 2 (Disk 2):
    • Linux (Daten)

Durchgeführte Schritte

  1. Mit gparted die Linux-Partition auf Disk 2 verkleinert
  2. Mit fdisk eine neue (leere) EFI-Partition auf Disk 2 erstellt (Partitionstyp 1, entsprechend dem Gentoo-Handbuch)
  3. Windows starten
  4. cmd als Administrator ausführen
  5. Neue EFI-Partition auf Disk 2 mit diskpart als Laufwerk "Z:" einhängen:
    1. Verwende 'list disks', um eine Liste der Festplatten und deren Nummern anzuzeigen.
    2. Verwende 'sel disk <Nr.>', um das Laufwerk mit der neuen EFI-Partition auszuwählen.
    3. Verwende 'list par', um die Liste der Partitionen des ausgewählten Laufwerks anzuzeigen.
    4. Verwende 'sel par <Nr.>', um die EFI-Partition (Partition vom Typ "System") auszuwählen.
    5. Verwende 'assign letter="z"', um einen Laufwerksbuchstaben zuzuweisen.
    6. Verwende 'exit', um diskpart zu schließen.
  6. Windows Bootloader mit bcdboot auf die neue EFI-Partition schreiben:
    bcdboot c:\windows /l de-de /s z: /f UEFI
  7. Laufwerkbuchstaben der EFI-Partition mit diskpart im Administratormodus wieder entfernen:
    1. Verwende 'sel disk <Nr.>', um das Laufwerk mit der neuen EFI-Partition auszuwählen.
    2. Verwende 'sel par <Nr.>', um die EFI-Partition (Partition vom Typ "System") auszuwählen.
    3. Verwende 'remove letter="z"', um den Laufwerksbuchstaben zu entfernen.
    4. Verwende 'exit', um diskpart zu schließen.
  8. Linux booten
  9. Erste (ursprüngliche) EFI-Partition auf Disk 1 einhängen
  10. Alle Dateien der EFI-Partition auf Disk 1 löschen
  11. Grub neu installieren inklusive Removable Mode:
    linux ~ # grub-install --target=x86_64-efi --efi-directory=<Mountpoint der ersten EFI-Partition auf Disk 1>
    linux ~ # grub-install --target=x86_64-efi --efi-directory=<Mountpoint der ersten EFI-Partition auf Disk 1> --removable
  12. Grub konfigurieren, um den Windows Bootloader auf Disk 2 zu starten
    1. UUID der zweiten EFI-Partition mit lsblk ermitteln (in meinem Fall: 6276-B891)
    2. Grub-Konfigurationsdatei anpassen und um den Chainload-Eintrag für die zweite EFI-Partition (Windows EFI) ergänzen:
      menuentry 'Windows 11 (disk2, /Microsoft/)' --class windows --class os $menuentry_id_option 'osprober-efi-6276-B891' --unrestricted '' {
              insmod part_gpt
              insmod fat
              if [ x$feature_platform_search_hint = xy ]; then
                search --no-floppy --fs-uuid --set=root  6276-B891
              else
                search --no-floppy --fs-uuid --set=root 6276-B891
              fi
              chainloader /EFI/Microsoft/Boot/bootmgfw.efi
      }
      
  13. Sicherstellen, dass die Grub-EFI-Datei an allen "magischen" Orten auf der ersten EFI-Partition des ersten Laufwerks platziert sind (z.B. durch manuelles Erstellen der Verzeichnisse und Kopieren und Umbenennen der GRUB-EFI-Datei), die anscheinend wie folgt sind:
    1. /EFI/BOOT/BOOTX64.EFI
    2. /EFI/Microsoft/Boot/bootmgfw.efi
    Dies kann das UEFI dazu bringen zu glauben, dass auf diesem Laufwerk ein Windows-Bootloader installiert ist, und es bevorzugt dann diese Partition gegenüber der zweiten EFI-Partition.

Internet, Linux & IT

Linux Bluetooth: Stotternder Klang beim Start eines Songs

Problem: Der Klang ist stotternd, wenn man einen Song in Amarok oder einem anderen Linux-Audioplayer mit VLC-Backend und einem Bluetooth-Headset abspielt.

Merkwürdigerweise tritt dieses Problem nur auf, wenn der Song mit VLC mit einem Bluetooth-Headset abgespielt wird. Andere Anwendungen funktionieren einwandfrei. Auch die Verwendung kabelgebundener Kopfhörer ist unproblematisch.

Das Muster ist immer gleich: zwei Aussetzer von ca. 1 Sekunde, getrennt durch ca. 1 Sekunde normalen Klangs, danach spielt der Song ohne Probleme. Wenn man den VLC-Cursor zurück an den Anfang des Songs bewegt, um ihn erneut abzuspielen, ohne Stop/Start zu verwenden, treten keine Aussetzer auf.

Lösung: Öffne pavucontrol -> Ausgabegeräte -> Öffne den Abschnitt Erweitert in den Bluetooth-Geräteeinstellungen -> Stelle den Latenzversatz auf einen Wert zwischen -100 ms und -1000 ms ein.

Quelle: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2958

Internet, Linux & IT

Spiele und Desktop streamen mit Sunshine und Moonlight

Gestern habe ich auf Youtube den Erfahrungsbericht von Keno zum Spiele-Streaming mit Sunshine und Moonlight gesehen. Ich selbst hatte auch schon verschiedene Lösungen wie Parsec und Stream Remote Play ausprobiert. Wirklich überzeugen konnte mich aber bisher nichts.

Da ich die Kombination von Sunshine (Server) und Moonlight (Client) noch nicht kannte, habe ich es einmal ausprobiert, mit meinem Windows PC als Server und einem Raspberry PI4 2GB als Client. Ob es brauchbar ist, muss sich noch zeigen.

Die Installation war aber leider gerade auf Client-Seite etwas fummelig, daher hier meine Notizen:

Windows Host:

Die Installation erfolgte ohne Probleme: Einfach den aktuellen sunshine-windows-installer.exe von der Homepage laden und den Anweisungen des Installationsprogramms folgen.

Linux Client:

Das aktuelle Raspberry OS (bookworm) in der Lite-Version mit dem Raspberry Pi Imager auf eine SD-Karte installieren. Dabei kann direkt SSH, WLAN sowie ein eigener User konfiguriert werden.

Nach dem Booten konnte dann der Moonlight Client enstprechend der Anleitung installiert werden mit den Befehlen:

user@linux ~ $ curl -1sLf 'https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-qt/setup.deb.sh' | distro=raspbian sudo -E bash sudo apt install moonlight-qt

Moonlight kann man dann grundsätzlich mit dem folgenden Befehl starten:

user@linux ~ $ moonlight-qt

Nach der Installation ggf. die Kernel-Parameter in Datei /boot/firmware/cmdline.txt um folgende zwei Parameter erweitern:

video=HDMI-A-1:1920x1080M@60 usbhid.mousepoll=0

Der erste Parameter stellt die Auflösung fest ein. Dies ist sinnvoll, falls diese nicht korrekt erkannt wird, was bei meinem Monitor der Fall war. Übrigens, dass Aktivieren der Anzeige-Option "4K Output" in raspi-config führte bei mir dazu, dass Moonlight keine Bildausgabe schaffte (Ich habe allerdings auch keinen 4K Monitor). Der zweite Parameter hilft dabei, falls die Maus zu langsam ist.

Zuächst funktionierte bei mir der Ton in Moonlight nicht. Hier half es, Pulseaudio zu installieren und anschliessend mit Raspi-Config den Audio-Ausgang auf den korrekten HDMI-Port zu legen:

user@linux ~ $ sudo apt install pulseaudio
user@linux ~ $ sudo raspi-config

Damit jetzt noch Pulseaudio und Moonlight in der richtigen Reihenfolge automatisch beim einschalten des Raspis gestartet werden, musste ich im Verzeichnis /lib/systemd/system zwei .service-Dateien anlegen:

/lib/systemd/system/pulseaudio.service:

[Unit]
Description=pulseaudio
After=rc-local.service
Before=moonlight.service

[Service]
Type=simple
User=pi
ExecStart=/usr/bin/pulseaudio --daemonize=no --log-target=journal

[Install]
WantedBy=multi-user.target

/lib/systemd/system/moonlight.service:

[Unit]
Description=moonlight
After=rc-local.service
After=pulseaudio.service

[Service]
Type=simple
User=pi
ExecStart=/usr/bin/moonlight-qt

[Install]
WantedBy=multi-user.target

Damit diese Services auch automatisch beim Systemstart gestartet werden, noch die Befehle ausführen:

user@linux ~ $ sudo systemctl enable pulseaudio.service
user@linux ~ $ sudo systemctl enable moonlight.service

Computerspiele

SiN

Mit Dominatrix ist ein Source Port für das Spiel SiN aus dem Jahr 1998 erschienen. Neben dem Source Port selbst wird auf der Homepage auch auch ein Installer bereitgestellt, mit dem die Spieldateien bequem von der Windows-CD unter Linux installiert werden können.

Computerspiele

Windowstaste umbelegen

In Computerspielen verwende ich gerne die linke Windowstaste für bestimmte Bewegungen (v.a. Ducken). Leider lässt sich diese nicht in allen Spielen binden, sondern ruft dann das Windows-Menü auf. Abhilfe schafft das kleine Tool AutoHotkey.

Dazu im Order Dieser PC > Dokumente eine Konfigurationsdatei mit dem Dateinamen AutoHotkey.ahk anlegen, um so beispielsweise die linke Windowstaste (LWin) auf einen anderen Buchstaben, hier "p", zu mappen:

LWin::p

Dieses Skript wird beim Start des Tools automatisch ausgeführt.

Computerspiele

Quake 2

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Yamagi Quake 2 mit Neural Upscale Mod

Yamagi Quake 2 mit Neural Upscale Mod

Für ein originalgetreues Spielerlebnis der Singleplayer-Kampagne von Quake 2 aus dem Jahr 1997 verwende ich den Source Port Yamagi Quake II mit der grafischen Modifikation Quake 2 Neural Upscale.

Das Spiel

Grundsätzlich wird auch für den Source Port eine Originalversion des Spiels benötigt. Wer das Spiel nicht ohnehin bereits auf CDROM besitzt, kann es u.a. bei Steam oder GOG erwerben. Laut Internetforen ist bei den digitalen Versionen allerdings nicht immer der Soundtrack enthalten.

Die Modifikationen

Die Modifikation Quake 2 Nueral Upscale enthält mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken, welche auf den heutigen hochauflösenden Monitoren optisch ansprechender sind als die Originalgrafiken.

Die Verzeichnisstruktur und Spieldateien

Es wird davon ausgegangen, dass sich die Original-(Windows/Steam/GOG)-Version von Quake 2 im Ordner ~/Quake2 befindet. Hier werden zusätzlich gemäß den nachfolgenden Anweisungen die Dateien der Modifikationen und die Audiodateien des Soundtracks abgelegt. Der Source Port wird über die Paketverwaltung des Betriebssystems ausserhalb dieses Verzeichnisbaums installiert. Die Ordnerstruktur sieht in etwa wie folgt aus:

~/Quake2                    Originalversion von Quake 2
├── baseq2                  Datendateien des Hauptspiels und Modifikationen
│   ├── music               Verzeichnis für Soundtrack des Hauptspiels
│   ├── players
│   │   ├── crakhor
│   │   ├── cyborg
│   │   ├── female
│   │   └── male
│   ├── save
│   │   ├── current
│   │   └── save0
│   └── video
├── ctf                     Erweiterung Capture the Flag (optional)
├── docs
│   └── quake2_manual
│       └── images
├── rogue                   Erweiterung Ground Zero (optional)
│   ├── docs
│   ├── music               Verzeichnis für Soundtrack der Erweiterung
│   └── video
└── xatrix                  Erweiterung The Reckoning (optional)
    ├── docs
    ├── music               Verzeichnis für Soundtrack der Erweiterung
    └── video

Installation von Yamagi Quake II unter Gentoo Linux

Eine (fast) aktuelle Version von Yamagi Quake II ist in der offiziellen Paketdatenbank von Gentoo Linux enthalten. Ich empfehle die Installation mit den folgenden USE-Flags:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="client ctf dedicated openal opengl rogue softrender vulkan xatrix" emerge games-fps/yamagi-quake2 -pv

Download der Modifikationen

Die benötigten Dateien der Modifikationen können von folgenden Seiten bezogen werden:

Installation der Modifikationen

Es wird davon ausgegangen, dass sich alle heruntergeladenen Dateien im Ordner ~/Downloads befinden.

user@linux ~ $ cp ~/Downloads/quake2-neural-upscale-models-2.0.1.pkz ~/Quake2/baseq2/
user@linux ~ $ cp ~/Downloads/quake2-neural-upscale-textures-2.0.1.pkz ~/Quake2/baseq2/

Installation der Musikdateien:

Der Soundtrack von Quake 2 und den beiden Erweiterungen befindet sich nur in Form von separaten Tonspuren auf den jeweiligen Original-CDs. Das hantieren mit CDs ist in der heutigen Zeit natürlich unpraktisch und die Source Ports haben dafür eine elegante Lösung parat: sie können die Musik auch ohne CD abspielen, wenn die Tonspuren mit einem geeigneten Programm (z.B. K3b) ausgelesen und als Musikdateien im Ogg Vorbis-Format mit bestimmten Dateinamen in bestimmten Verzeichnissen abgelegt wurden:

  • Die Tonspuren von Quake 2 können mit den Dateinamen 02.ogg bis 12.ogg im Verzeichnis ~/Quake2/baseq2/music abgelegt werden.
  • Die Tonspuren von Ground Zero können mit den Dateinamen 02.ogg bis 11.ogg im Verzeichnis ~/Quake2/rogue/music abgelegt werden.
  • Die Tonspuren von The Reckoning können mit den Dateinamen 02.ogg bis 11.ogg im Verzeichnis ~/Quake2/xatrix/music abgelegt werden.

Starten von Yamagi Quake II

Um Yamagi Quake 2 zu starten, muss lediglich in das Verzeichnis ~/Quake2 gewechselt werden und dort das systemweit installierte Programm yquake2 aufgerufen werden. Die im Verzeichnis baseq2 abgelegten Modifikationen werden automatisch geladen. Parameter sind lediglich für die Auswahl der Erweiterungen erforderlich.

1. Start des Hauptspiels:

user@linux ~ $ cd ~/Quake2
user@linux ~/Quake2 $ yquake2

2. Start der Erweiterung Ground Zero:

user@linux ~ $ cd ~/Quake2
user@linux ~/Quake2 $ yquake2 +set game rogue

3. Start der Erweiterung The Reckoning:

user@linux ~ $ cd ~/Quake2
user@linux ~/Quake2 $ yquake2 +set game xatrix

Computerspiele

Heretic

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Heretic (1994)

Heretic (GZDoom) m. Neural Texture Pack

Den Fantasy-Doom-Clone Heretic aus dem Jahr 1994 spiele ich mit dem Source Port GZDoom. Für ein aufgewertetes, aber immer noch weitgehend originalgetreues Spielerlebnis kombiniere ich diesen mit der grafischen Modifikation Heretic Neural Texture Pack und den musikalischen Modifikationen Dwars's Heretic HQ SFX Pack sowie dem Heretic SC-55 Music Pack oder alternativ dem Heretic Music Cover by Xeotroid.

Das Spiele

Grundsätzlich wird auch für den Source Port eine Originalversion des Spiels benötigt. Diese kann u.a. bei GOG.COM erworben werden.

Die Modifikationen

Die Modifikation Heretic Neural Texture Pack enthält mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken, welche auf den heutigen hochauflösenden Monitoren optisch ansprechender sind als die Originalgrafiken.

Dwars's Heretic HQ SFX Pack enthält originalgetreue Neuaufnahmen der Soundeffekte in hoher Tonqualität. In mühevoller Kleinarbeit wurden entweder die Originalquellen der Soundeffekte ermittelt oder annähernd gleichklingende Samples abgemischt.

Das Heretic SC-55 Music Pack enthält Aufnahmen der Original-MIDI-Soundtracks von einem echten Roland MIDI Synthesizer im SC-55 Standardprofil. Der SC-55 war in den 90er Jahren bei Komponisten beliebt und die MIDI-Wiedergabe auf diesen Geräten entspricht daher am ehesten der Originalkomposition. Alternativ ist das Heretic Music Cover by Xeotroid für den Soundtrack empfehlenswert.

Die Verzeichnisstruktur und Dateien für den Source Port

Alle für Heretic benötigten Datendateien sollen der Einfachheit halber unterhalb des Ordners ~/Heretic abgelegt werden, so dass am Ende die folgende Ordner/Dateistrukur entsteht:

~/Heretic
├── dos                             ORIGINAL DOS-VERSION VON HERETIC
│   ├── HERETIC.WAD                 Datendatei von Heretic
│   └── ...
└── mods
    ├── audio                       MODIFIKATIONEN AUDIO:
    │   ├── sfxogg.wad              Dwars's Heretic HQ SFX Pack
    │   ├── heretic_sc55_ogg.zip    Heretic SC-55 Music Pack
    │   └── HereticPK3.pk3          Heretic Music Cover by Xeotroid
    │
    └── graphics                    MODIFIKATIONEN GRAFIK:
        └── heretic_gz.pk3          Heretic Neural Texture Pack

Aufbau der Verzeichnisstruktur und Ablage der Original-Spieldaten

Zuerst werden die Verzeichnisse angelegt:

user@linux ~ $ mkdir -p ~/Heretic/{dos,mods/audio,mods/graphics}

Anschließend werden die Dateien des DOS-Originalspiels in den Ordner ~/Heretic/dos kopiert. Für den Source Port ist die WAD-Datei HERETIC.WAD ausreichend.

Installation von GZDoom unter Gentoo Linux

Die aktuelle Version von GZDoom ist in der offiziellen Paketdatenbank von Gentoo Linux enthalten. Ich empfehle die Installation mit den folgenden USE-Flags:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="gtk non-free openmp vulkan -debug gles2 -telemetry" emerge games-fps/gzdoom -pv

Download der Modifikationen

Die benötigten Dateien der Modifikationen können von folgenden Seiten bezogen werden:

  • Heretic Neural Texture Pack (Version 4.0.1 für GZ): heretic_gz.pk3
  • Dwars's Heretic HQ SFX Pack (OGG-Version for GZDoom, 06/28/21): sfxogg.wad
  • Heretic SC-55 Music Pack (OGG Pack): heretic_sc55_ogg.zip
  • Heretic Music Cover by Xeotroid (Game Covers -> Heretic -> For ZDoom-based ports): HereticPK3.pk3

Installation der Modifikationen

Es wird davon ausgegangen, dass sich alle heruntergeladenen Dateien im Ordner ~/Downloads befinden.

user@linux ~ $ cp ~/Downloads/heretic_gz.pk3 ~/Heretic/mods/graphics/
user@linux ~ $ cp ~/Downloads/{sfxogg.wad,heretic_sc55_ogg.zip,HereticPK3.pk3} ~/Heretic/mods/audio/

Starten und Konfigurieren von GZDoom

Um GZDoom mit der gewünschten Kombination von Spiel(daten) und Modifikationen zu starten, gibt es zwei Möglichkeiten: Entweder werden die Informationen in Form von Kommandozeilenparametern bei Programmstart übergeben, oder sie werden in einer Konfigurationsdatei hinterlegt und können anschließend bei Programmstart über ein Popup ausgewählt werden. Für beide Varianten gilt, dass nach dem ersten Programmstart im Options-Menü Einstellungen vorgenommen werden sollten. Mehr dazu unten.

Hinweis: Falls GZDoom schon früher verwendet wurde, empfehle ich, die alte Konfigurationsdatei ~/.config/gzdoom/gzdoom.ini zu löschen, um bei der Konfiguration mit einer sauberen Ausgangslage zu beginnen.

1. Auswahl von Spiel(daten) und Modifikationen per Kommandozeile:

Heretic mit SC-55 Music Pack:

user@linux ~ $ gzdoom -iwad ~/Heretic/dos/HERETIC.WAD -file ~/Heretic/mods/graphics/heretic_gz.pk3 -file ~/Heretic/mods/audio/sfxogg.wad -file ~/Heretic/mods/audio/heretic_sc55_ogg.zip

Heretic mit Music Cover by Xeotroid:

user@linux ~ $ gzdoom -iwad ~/Heretic/dos/HERETIC.WAD -file ~/Heretic/mods/graphics/heretic_gz.pk3 -file ~/Heretic/mods/audio/sfxogg.wad -file ~/Heretic/mods/audio/HereticPK3.pk3

2. Auswahl von Spiel(daten) und Modifikationen per Popup:

Analog zu den Angaben in meinem Beitrag zu Doom.

3. GZDoom nach dem ersten Start konfigurieren

Analog zu den Angaben in meinem Beitrag zu Doom.

Computerspiele

Blood

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Blood (1997)

NBlood mit Upscale Pack

Für die Singleplayer-Kampagnen des DOS-Spiels Blood aus dem Jahr 1997 verwende ich den Source Port NBlood mit der Modifikation Blood Upscale Pack, welche optional mit dem Blood Voxel Pack kombiniert werden kann.

Der Source Port NBlood

Mit NBlood lässt sich Blood nativ unter Linux mit heutigen Bildschirmauflösungen und wahlweise einem Software- oder OpenGL-Renderer spielen

Mit Stand vom 19.11.2021 unterstützt der NBlood-Hauptentwicklungszweig (master) allerdings noch nicht das Feature "indexed hightiles" (u.a. Definition von "T_INDEXED" in der Datei source/build/src/defs.cpp). Dieses wird benötigt, wenn das aktuelle Upscale-Paket (Version 2.1) verwendet werden soll und ist im Entwicklungszweig "upscale" enthalten (commit).

Der NBlood-Entwicklungszweig "upscale" kann wie folgt heruntergeladen und kompiliert werden:

Im Folgenden wird davon ausgegangen, dass sich die DOS-Version von Blood im Ordner ~/Blood befindet. Auf Abhängigkeiten zu externen Bibliotheken wird an dieser Stelle nicht eingegangen.

user@linux ~/Blood $ git clone https://github.com/nukeykt/NBlood.git
user@linux ~/Blood $ cd NBlood
user@linux ~/Blood/NBlood $ git checkout upscale
user@linux ~/Blood/NBlood $ make

Soll das Upscale-Paket nicht verwendet werden oder wurde die "indexed hightiles" Funktionalität in den Hauptzweig aufgenommen, kann auf den Befehl "git checkout upscale" verzichtet werden.

Die Installation des Gentoo-Pakets aus dem inoffiziellen Overlay jorgicio (enthält nicht die "indexed hightiles" Funktionalität) ist unabhängig von dessen Verwendung vor dem Kompilieren der GIT-Version empfehlenswert, da so automatisch alle benötigen Bibliotheken installiert werden:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="flac fluidsynth gtk opengl pulseaudio server timidity vorbis vpx xmp tools" emerge nblood -pv

Zuletzt von mir verwendete Revision: dfbee4aa6c233af062147d9cb873b217b322201d

Die Mods Blood Upscale Pack und Blood Voxel Pack

Das Upscale Pack enthält mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken, welche auf den heutigen hochauflösenden Monitoren optisch ansprechender sind als die Originalgrafiken. Es enthält außerdem eine ebenfalls hochskalierte Version der Modifikation Smoothblood, welche das Spiel um flüssigere Waffenanmiationen ergänzt.

Das Voxel Pack ersetzt die 2D-Sprites einiger Objekte durch 3D-Modelle. Leider sind die Texturen dieser 3D-Modelle nicht analog zu den Grafiken des Upscale Packs hochskaliert und die betroffenen Objekte wirken in der Spielewelt daher pixeliger als die im Upscale-Pack enthaltenen Grafiken. Hier muss man abwägen, was besser gefällt: auf die restliche Optik abgestimmte 2D-Sprites mit feineren Pixeln oder 3D-Modelle mit etwas gröberen Pixeln.

Die Mods können wie folgt heruntergeladen werden:

Die Mods können wie folgt installiert werden:

Im Folgenden wird davon ausgegangen, dass die heruntergeladenen Dateien im Ordner ~/Downloads gespeichert wurden.

Upscale Pack:

user@linux ~ $ mkdir -p ~/Blood/mods/blood-upscale-pack-v2.1
user@linux ~ $ unzip ~/Downloads/bloodupscalepack.zip -d ~/Blood/mods/blood-upscale-pack-v2.1/

Voxel Pack:

user@linux ~ $ mkdir -p ~/Blood/mods/blood-voxel-pack-v0.95
user@linux ~ $ cp ~/Downloads/voxels_blood_v095.zip ~/Blood/mods/blood-voxel-pack-v0.95/.

NBlood kann mit den installierten Mods wie folgt gestartet werden:

Reguläre Kampagne und Plasma Pak:

user@linux ~/Blood $ NBlood/nblood -g mods/blood-upscale-pack-v2.1/autoload/base-component.zip -g mods/blood-upscale-pack-v2.1/autoload/smoothblood_upscale.zip -g mods/blood-voxel-pack-v0.95/voxels_blood_v095.zip -h mods/blood-upscale-pack-v2.1/blood.def

Offizielle Erweiterung Cryptic Passage:

user@linux ~/Blood $ NBlood/nblood -ini CRYPTIC.INI -g mods/blood-upscale-pack-v2.1/autoload/base-component.zip -g mods/blood-upscale-pack-v2.1/autoload/smoothblood_upscale.zip -g mods/blood-voxel-pack-v0.95/voxels_blood_v095.zip -h mods/blood-upscale-pack-v2.1/blood.def

Der gewünschte Renderer (Software oder OpenGL) kann gemeinsam mit der Bildschirmauflösung über das Popup bei Programmstart ausgewählt werden.

Soll das Voxel-Pack nicht verwendet werden, ist es ausreichend, den Kommandozeilenparameter "-g mods/blood-voxel-pack-v0.95/voxels_blood_v095.zip" wegzulassen.

Anmerkung: Die Definitionsdatei blood.def aus dem Upscale-Pack sieht bereits die Integration des Voxel-Packs vor und enthält bereits dessen Definitionen. Daher ist es nicht erforderlich, die dem Voxel-Pack beiliegende Definitionsdatei zusätzlich zu laden.

Multiplayer

Ob Multiplayerspiele mit NBlood möglich sind, habe ich bislang weder recherchiert noch ausprobiert. Ggf. ist hier ein anderer Source Port erforderlich oder es muss auf die ursprüngliche DOS-Version mit DOSBox zurückgegriffen werden.

Nachtrag - Auch interessant:

Blood: HQ sound effects [44 kHz]