Eine SSDT ist teil des ACPI. Die Spezifikation ACPI (Advanced Configuration and Power Interface) ist einen offenen Standard, mit dem Betriebssysteme die Erkennung und Konfiguration von Computerhardware durchführen können, um beispielsweise das Energiemanagement durchzuführen. ACPI definiert viele Tabellen, die die Schnittstelle zwischen einem ACPI-kompatiblen Betriebssystem und der System-Firmware darstellen. Dies schließt beispielsweise die Differentiated System Description Table (DSDT), Secondary System Description Table (SSDT) sowie weiteres mit ein.
SSDTs werden auch dynamisch während der Computer Laufzeit geladen. Das Script ssdtprgen.sh erstellt nur eine SSDT in Bezug auf deine verbaute CPU.
Deshalb eignet sich eine SSDT hervorragend um Powermanagement und Speedstep der CPU zu patchen, falls dieses nicht richtig läuft. Noch dazu gibt es nicht nur eine SSDT in einem Board. Die Anzahl kann locker bis zu 10 Stück sein. Auf Laptops ist es üblich, dass in einer dieser SSDTs auch wichtige Daten zu den verbauten Grafik-Karten (sowohl IntelHDs als auch AMD/Nvidias) drinnen steht. Wir werden aber jetzt eine weitere SSDT benutzen, um das Takten unseres Prozessors (Speedstep) zu beeinflussen.
Tiefer gehende Informationen und Feintuning Infos werden hier beschrieben: CPUFriend Guide, HWP & Speedstep: X86PlatformPlugin vs ACPI_SMC_PlatformPlugin
Zuerst solltet ihr also testen ob euer Speedstep überhaupt richtig funktioniert. Dazu könnt ihr beispielsweise das Intel Power Gadget nutzen und damit beobachten, ob eure CPU richtig taktet. Verändert sich der Takt? Taktet die CPU komplett hoch? (zB bei einem Benchmark) Taktet die CPU auch mal ganz tief? (zB 800 MHz). Falls es hier Probleme gibt, benötigt ihr eine SSDT. Diese ist ganz einfach zu erstellen: (Die meisten CPUs werden unterstützt. Wenn ihr euch aber nicht sicher seit, schaut hier vorbei: https://github.com/Piker-Alpha/ssdtPRGen.sh/tree/Beta/Data )
- Terminal öffnen
- Script herunterladen hierzu folgenden Befehl im Terminal eingeben
- Script startfähig machen. Dazu im Terminal eingeben
startfähig machen
- Im Terminal eingeben
(hier können weitere Befehle angehängt werden, siehe unten)
- ENTER drücken
- Passwort eingeben
- Frage, ob ihr die SSDT.dsl einsehen wollt beantworten (mit y oder n)
Und dann ist eure SSDT erstmal erstellt. Jetzt müsst ihr sie nur noch einbinden. Dazu geht ihr in den Finder und klickt auf "Gehe zu" und gebt dort ein: /Benutzer/USERNAME/Library/ssdtPRGen
In diesem Ordner sollten sich einige SSDTs befinden. Wir brauchen ganz einfach die "SSDT.aml".
Diese kopiert ihr jetzt auf die EFI Partition in den Ordner /Volumes/EFI/Efi/Oz/Acpi/Load.
Als letztes nur noch einen Neustart machen (wenn ihr wollt auch noch einen NVRam Reset) und die SSDT sollte eingebunden sein. Dadurch sollten sich jetzt auch passende Werte im Intel Power Gadget finden lassen.
Wer zB Overclocking betreibt, muss den Maximal Takt verändern. Wer von Hand sein Prozessor Model eingeben will, kann dies auch tun. Hier sind die Befehle, die ihr hinter das sudo sh ssdtPRGen.sh setzen könnt, um selber nur Einstellungen zu verändern:
- -acpi Prozessor Name (example: CPU0 or C000)
- -bclk frequency (base clock frequency, angegeben in Mhz, zB "100")
- -board-id (zB: Mac-F60DEB81FF30ACF6)
- -cpus number of physical processors [1-4]
- -debug output [0/1/3]
- 0 = no debug injection/debug output
- 1 = inject debug statements in: ssdt.dsl
- 2 = show debug output
- 3 = both
- -extract ACPI tables nach [Zielpfad]
- -frequency (clock frequency)
- -help info (Auskunft über alle Befehle)
- -lfmode, niedrigste idle Frequenz (zB 800 Mhz)
- -logical processors [2-128]
- -mode script mode [normal/custom]:
- normal –benutzt ACPI/IOREG Daten des Computers
- custom – benutzt ACPI Daten aus: /Users/Benutzer/Desktop
- -model (example: MacPro6,1)
- -open die gerade erstellte SSDT
- -processor model (zB: 'E3-1285L v3')
- -show supported board-id and model combinations:
- Kabylake
- Skylake
- Broadwell
- Haswell
- Ivy Bridge
- Sandy Bridge
- -target CPU Typ:
- 0 = Sandy Bridge
- 1 = Ivy Bridge
- 2 = Haswell
- 3 = Broadwell
- 4 = Skylake
- 5 = Kabylake
- -turbo maximum (turbo) Frequenz:
- 6300 bei Sandy Bridge und Ivy Bridge
- 8000 für Haswell und Broadwell
- zB 4800 wenn euer Overclock 4,8 Ghz beträgt
- -tdp [11.5 - 150]
- -compatibility workarounds: [0/1/2/3]
- 0 = keine workarounds
- 1 = inject extra (turbo) P-State am Anfang mit der maximum (turbo) Frequenz + 1 MHz
- 2 = inject extra P-States am Ende
- 3 = beides
- -xcpm mode [0/1]
- 0 = XCPM mode disabled
- 1 = XCPM mode enabled