Ich bin bei der Recherche zu Thunderbolt patching für Laptops auf eine Repo gestoßen, in dem der Autor der Config vor Allem durch seine Skills im Bereich ACPI beeindruckt: https://github.com/benbender/x1c6-hackintosh
Bei der Ansicht seiner ACPI tables bin ich dann auf das gestoßen: SSDT-UTLS.
In die Tabelle hat der Autor u.a. den OSI-Check für macOS als Methode ausgelagert. Ich habe mir daraus mal eine Tabelle SSDT-OSDW gebastelt:
Somit muss der eigentliche macOS-Check nicht mehr in jeder einzelnen Methode erneut in jede SSDT eingebaut werden, sondern kann zentral über OSDW() erfolgen. Das reduziert Redundanz und potenzielle Fehlerquellen (Stichwort: DRY).
Statt also wiederholt Konstrukte wie:
zu verwenden, kann in anderen SSDTs oder Methoden einfach auf OSDW() zurückgegriffen werden, z. B.:
Das Konzept ähnelt funktionaler Abstraktion aus der Softwareentwicklung: Eine häufig benötigte Logik wird einmal sauber gekapselt und anschließend überall wiederverwendet. Der Ansatz ist sehr elegant, da sich Plattform-spezifische Abfragen klar von der eigentlichen Patch-Logik trennen lassen. Gerade, wenn man viele und teils komplexe ACPI-Patches (z. B. für Thunderbolt, USB, Power Management oder Geräte-Disablement) iverwendet.
Ich habe dass dann mal auf 2 Systemen ausprobiert und die ACPI Tables angpapasst. Hier ein Beispiel für SSDT-EC, vorher:
nachher:
- External (OSDW, MethodObj) // Verweis auf externe Methode OSDW() aus z. B. SSDT-OSDW
- Scope (\_SB)
- {
- Device (EC) // Fake Embedded Controller für macOS
- {
- Name (_HID, "ACID0001") // ACPI-ID für den emulierten EC
- Method (_STA, 0, NotSerialized)
- {
- If (OSDW()) // Prüft, ob das aktuelle OS macOS (Darwin) ist
- {
- Return (0x0F) // Gerät ist vorhanden und funktionsfähig
- }
- Return (Zero) // Unter anderen OS nicht aktiv
- }
- }
- }
Funktional ändert sich dabei nichts, aber die zentrale OSDW()-Methode sorgt anscheinend für konsistente, einheitliche ACPI-Aufrufe, was bei den beiden getesteten Systemen dazu führt, dass der Shutdown schneller abläuft und sich die Systeme insgesamt „snappier“ anfühlen. Aber testet es selbst. Vorher EFI Backup anlegen nicht vergessen ![]()
Wichtig: die SSDT-OSDW muss vor allen anderen Tables geladen werden, die die Metthode aufrufen. In RL quasi: SSDT-DMAR (falls custom), dann SSDT-OSDW, dann der Rest.