CPUFriend Guide, HWP & Speedstep: X86PlatformPlugin vs ACPI_SMC_PlatformPlugin

  • Habe mal n bisschen rumprobiert die letzten Tage und ein SSDT Plug für Skylake mit CF-Frequency Vektoren ausprobiert und einmal ohne und dann mal verglichen, was im Intel Power Gadget so passiert. Ohne CF Frequency Data springt er nicht so viel in den Frequenuen, aber taktet trotzdem runter im Idle-Betrieb.


    Am Ende habe ich dann CPUFriend.kext gelöscht und die CF Frequency Vektoren auch wieder aus der SSDT-Plug entfernt. Ist anscheinend echt nicht notwendig für aktuellere CPUs.

  • kuckkuck

    Nun ist es vollbracht. FreqVectorsEdit v3.3 erlaubt nun die Nutzung eines beliebigen Pfades für IOPlatformPluginFamily.kext (option -k).

    Damit kann man nun das kext ganz entspannt in sein Home-Verzeichnis kopieren und dort alle notwendigen Änderungen vornehmen.

    Das macht dann auch die Erzeugung der Dateien für CPUFriend etwas leichter und SIP kann die ganze Zeit eingeschaltet bleiben.


    Leider bliebt mir nicht die Zeit eines wirklich ausgiebigen Tests, insbesondere das Abfangen von falschen Pfadangaben ist nur rudimentär implementiert, es wird nur die Existenz von "IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources" unter dem spezifizierten Pfad überprüft.

    Einmal editiert, zuletzt von Inspector42 ()

  • Vielen Dank für diese ausführliche Anleitung!

    Habe mich eben daran versucht, aber ich komme leider schon bei der Wahl des Macs nicht weiter...

    Ich habe einen i9 10900K, mein Boost-Takt ist 5GHz.

    Müsste also nicht iMac20,2 (Mac-AF89B6D9451A490B) bzw. iMac20,1 (Mac-CFF7D910A743CAAF) perfekt sein, da es diese Modelle mit i9 10910K gibt und die auch mit 5GHz angegeben sind? Ich finde in den entsprechenden Plists leider nur jeweils einen Eintrag bei "Frequencies", 4500. Ist da der i9 (noch) nicht berücksichtigt? Oder habe ich einen Denkfehler? Probiert habe ich es mit dem aktuellen 10.15.6 19G2021.

  • Inspector42 Tolle Sache, danke! Könntest du das Readme im git noch überarbeiten mit einer kleinen Erklärung, wie die Anpassungen am besten zu nutzen sind? Auch könntest du hier eine kurze Anleitung dazu verfassen und ich verlinke sie entsprechen im Guide an der passenden Stelle, wenn du willst :)


    traeu Sorry ich habe leider keinerlei Infos inwiefern die neuen CPUs schon in dem X86PlatformPlugin implementiert sind.

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

  • kuckkuck

    Ich hatte die Readme in meinem Branch (Inspector42) nach dem Muster der man-Pages ergänzt, ich gebe allerdings zu, das könnte etwas ausführlicher ausfallen - setze mich da morgen nochmal dran.

    Hatte mit dem Pull-Request auf github in den master-branch noch gewartet, um ggf. noch auf erste Fehlermeldung reagieren zu können.

    Bin mir eh nicht sicher, ob der Pull-request ohne Zutun des Original-Authors überhaupt funktioniert.


    Update: Habe das README in meinem Branch nochmal von Grund auf überarbeitet, da auch die Orginial-Beschreibung nicht mit den letzten Versionsstand übereinstimmte. Zur schnellen Referenz habe ich die hier mal angefügt. Falls ich noch etwas wichtiges vergessen habe, bitte einfach nochmal melden.


    Update 2: Habe jetzt einen Pull Request gestellt, um meine Änderungen in den master branch zu integrieren, anbei mal zur Sicherheit das gesamte Repository mit meinen Änderungen.


    freqVectorsEdit.sh.zip

    3 Mal editiert, zuletzt von Inspector42 () aus folgendem Grund: Aktualisierte Info zur gewünschten Überarbeitung und nach Pull-Request auf GitHub

  • kuckkuck aber es ist denkbar und plausibel, dass Apple für die neuen Prozessoren die Infos noch nicht eingebaut hat?

    Denn der neue iMac mit 10th Gen i9 wird ja schon verkauft...

    Aber gut, wenn bei den 2019er iMac Plists passende Frequenzen zu allen verfügbaren CPUs eingetragen sind und bei den 2020er Modellen nicht, muss es wohl so sein, dass da noch etwas fehlt!

  • traeu

    Der Unterschied in den Frequency Vectors und der angegebenen maximalen Turbofrequenz könnte ggf. mit Intels neuem Turboboost Max zusammenhängen, bei dem ja nur die vorher im Fertigungsprozess selektierten besonders "fähigen" Kerne nochmal gepusht werden.

    Da ich den genauen Aufbau der plist-Einträge und die genaue Funktion von XCPM noch nicht wirklich durchdrungen habe, bleibt das aber Spekulation.

    Hinzu kommt noch, dass Intel bei der 10ten Generation den K-Modellen weitreichende Freiheiten in der Konfiguration auch der thermischen Grenzen erlaubt und keiner so genau sagen kann, welcher Prozessor (ggf. customized) denn am Ende im neuen iMac steckt.

    Eine andere Option ist, dass Apple (wie in der Vergangenheit) die neuen Modelle mit einer speziellen Variante des aktuellen Betriebssystems Catalina ausgeliefert und die 5GHz Turbo erst in Big Sur für die Allgemeinheit auftauchen. Da ich im Moment kein System "zum Spielen" habe, kann ich zu Big Sur aber leider gar nichts sagen.

  • Inspector42 danke für die Erklärung! Da es bisher nur einen einzigen Frequenz-Eintrag in der iMac20,1 bzw. iMac20,2 Plist gibt, denke ich, dass es am wahrscheinlichsten ist, dass die Einträge noch nachgeliefert werden und die aktuellen iMacs tatsächlich mit angepasstem OS ausgeliefert werden (an die Möglichkeit hatte ich gar nicht gedacht...)

    Wenn für die 10. Generation wirklich nur ein einziger Eintrag für alle CPUs ausreichend wäre, würde das doch bedeuten, dass es eine größere Änderung gegeben hätte oder? Bisher schien es ja doch wichtig zu sein, die richtige Maximalfrequenz und ein möglichst ähnliches CPU-Modell zu wählen...
    Ich werde auf jeden Fall nach jedem Update in die Dateien schauen, dann werde ich ja schon sehen, ob und wann sich noch was ändert!

  • Vielen Dank für diese ausführliche Anleitung!

    Habe mich eben daran versucht, aber ich komme leider schon bei der Wahl des Macs nicht weiter...

    Ich habe einen i9 10900K, mein Boost-Takt ist 5GHz.

    Müsste also nicht iMac20,2 (Mac-AF89B6D9451A490B) bzw. iMac20,1 (Mac-CFF7D910A743CAAF) perfekt sein, da es diese Modelle mit i9 10910K gibt und die auch mit 5GHz angegeben sind? Ich finde in den entsprechenden Plists leider nur jeweils einen Eintrag bei "Frequencies", 4500. Ist da der i9 (noch) nicht berücksichtigt? Oder habe ich einen Denkfehler? Probiert habe ich es mit dem aktuellen 10.15.6 19G2021.

    Danke für den Hinweis. Habe bei meinem Z490 Vision G mit i9 10850K gerade mal iMac20,2 ausprobiert und das funktioniert soweit ganz gut. Ich hatte vorher 18,3, aber 20,2 fühlt ich "snappier" und performanter an. Damit kann ich bei meinem Logic Pro benchmark test auf jeden Fall nochmehr Spuren hinzufügen, bvor er in die Knie geht, als vorher.


    Catalina und Big Sur booten auch mit 20,2. Für High Sierra benötige ich 18,3. Ich werde mal cf freq Data in die DSDT-PLUG.aml einbauen und schauen, ob es einen Unterschied macht. Es gibt ja auch noch einen Kext um TSC Syncronisation zu steuern (https://github.com/lvs1974/CpuTscSync), aber nocht nicht getestet ob das notwendig ist und ob es etwas bringt.


    Edit: ich stelle fest, dass mit iMac 20,2 das Power Management viel besser funktioniert und die CPU besser und weiter runter taktet, wenn nicht viel los ist.

  • Nachdem ich nochmal recherchiert habe und herausfand, dass iMac20,2-Geräte nur 10th Gen i7 oder i9 sein können, wollte ich nochmal probieren, das CPU-Management an meinen i9 10900K anzupassen.

    Dabei bin ich auf ein Problem gestoßen und ich komme nicht weiter:
    Ich nutze das SMBIOS iMacPro1,1, Board ID Mac-7BA5B2D9E42DDD94, und wollte als Basis fürs CPU-Management iMac20,2 verwenden.

    Die zu meinem SMBIOS gehörende Plist vom iMacPro1,1, die ja durch FreqVectorsEdit bearbeitet wird (habe die Variante von Inspector42 gewählt und nutze eine Kopie des Kext auf dem Desktop), hat keinen "Frequencies" Eintrag, er scheint komplett zu fehlen. Dementsprechend kann ich folgenden Punkt der Anleitung nicht ausführen und weiß nicht, ob und wie wichtig das ist:

    Unter Frequencies steht ein Eintrag mit genau der Maximalfrequenz unserer installierten CPU. Wenn nicht, passen wir den nähesten Eintrag auf unseren MaxClock an und merken uns den Index.

    Kann ich diese Methode trotzdem irgendwie mit dem SMBIOS iMacPro1,1 nutzen?

    Wie wichtig ist es, dort die passende Maximalfrequenz stehen zu haben, bzw. was bedeutet es, wenn dort einfach gar kein Eintrag vorhanden ist?


    Edit: Habe noch ein bisschen rumgespielt, aber wirklich schauer bin ich nicht geworden. Ich habe die Prozedur zwei Mal gemacht, einmal mit Standardeinstellungen, also dass FreqVectorsEdit mein SMBIOS iMacPro1,1 als Basis nimmt, und einmal mit dem Parameter -b und der Board-ID vom iMac19,1. Beide Male iMac20,2 bzw. dessen Board-ID in der Liste in FreqVectorsEdit ausgewählt. In den Plists habe ich die gleichen Anpassungen vorgenommen und mit dem Ergebnis dann mit dem Ressource Converter von CPU Friend die .dsl Dateien erstellt. Dabei fällt mir auf, dass sich die dsl-Dateien wesentlich in der Größe unterscheiden. Die Plist mit iMac19,1-Basis erzeugt die größere dsl-Datei (ca. 3x so groß, enthält auch 3 verschiedene Vektoren statt nur einem beim iMacPro1,1).

    Ich dachte, man nimmt diese Methode, um unabhängig vom genutzten SMBIOS ein zur CPU passenderes Management zu erhalten. Jetzt bin ich mir unsicher, inwiefern sich das aktuell gewählte und dann wohl auch als Basis in FreqVectorsEdit verwendete SMBIOS auf das Endergebnis auswirkt und was passiert, wenn in einer Plist wie beim iMacPro1,1 die Einträge mit der Maximalfrequenz fehlen.

  • Ich nutze das SMBIOS iMacPro1,1, Board ID Mac-7BA5B2D9E42DDD94, und wollte als Basis fürs CPU-Management iMac20,2 verwenden.

    Die zu meinem SMBIOS gehörende Plist vom iMacPro1,1, die ja durch FreqVectorsEdit bearbeitet wird (habe die Variante von Inspector42 gewählt und nutze eine Kopie des Kext auf dem Desktop), hat keinen "Frequencies" Eintrag, er scheint komplett zu fehlen.

    Verstehe ich nicht. Wenn du das PowerManagement des iMac20,2 nutzen willst, musst du doch die Plist des iMac20,2 durch FreqVecs bearbeiten lassen, eventuell noch selber manuell anpassen und dann durch CPUFriend injecten lassen. Da ist doch egal was in der Plist des iMacPro1,1 steht, denn die wird ja dann durch CPUFriend im Speicher überschrieben. Vielleicht hast du einfach nur einen Dreher drin.


    Der Eintrag mit der Maximalfrequenz ist nur zum matching der dazugehörigen FrequencyVectors vorhanden. Wenn der Eintrag nicht vorhanden ist, ist primär die Frage, ob in der Plist überhaupt FrequencyVectors hinterlegt sind.

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

  • iMac20,2 läuft bei mir echt super samt Power Management. Auch ohne FreqVectors. Taktet runter bis 1.3 gHz.

  • Ob 1,3 GHz als LFM so optimal ist, ist ansichtssache würde ich mal sagen... :/

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

  • Da bin ich mir nicht sicher, ich hab eine solche CPU nie besessen. Ich würde aber tendenzielle auf 800 MHz tippen. Du kannst einfach mal den LFM in den FrequencyVectors auf 800 MHz stellen und dann überprüfen, ob die CPU diese Frequenz erreicht.

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

  • traeu

    Die Option -b bei FreqVectorsEdit ändert die Ziel-Plist, welche mit den Einstellungen des gewählten Eintrages überschrieben wird. Gleiches gilt für die Option -m.

    Das Script überschreibet mit -b und der board-id vom iMac19,1 genau diese plist mit den Inhalten der Konfiguration, die Du aus der langen Liste mittels Eingabe der Nummer eingegeben hast.

    Wenn Du dann aber mit der iMacPro1,1-plist für CPUFriend weitermachst, verwendest Du die unveränderte Original-plist aus der kext.

    Die Optionen -b und -m machen eigentlich nur Sinn, wenn man danach die kext selbst im System nutzt und mit -b oder -m das beim Booten auf dem System verwendete SMBIOS ausgewählt hat. Das funktioniert dann aber wegen der ungültigen Signatur durch die Änderung nur auf Systemen mit zu mindest teilweise deaktiviertem SIP.

  • kuckkuck frage werden eigentlich immer beide also

    ACPI_SMC_PlatformPlugin und das X86PlatformPlugin geladen wenn plugin-type=1 gesetzt sind?



    Mac Mini M2 Pro (2023) 16 GB RAM. 512 GB Sonoma 14.2

    real iMac 13.1    Ventura 13.01 (late 2012)

    real MacBook Pro 14.2 Sonoma 14.2   13" 2018



  • immer beide also ACPI_SMC_PlatformPlugin und das X86PlatformPlugin geladen

    Nein, zumindest mit 10.15 nicht. Für andere OS Versionen müsste ich nachschauen. X86PlatformShim lädt hingegen zusammen mit dem X86PlatformPlugin, wenn du vielleicht das meinst.

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

  • kuckkuck Systeminfo/Erweiterungen werden beide als geladen angezeigt,, dann schon Merkwürden...

    Mac Mini M2 Pro (2023) 16 GB RAM. 512 GB Sonoma 14.2

    real iMac 13.1    Ventura 13.01 (late 2012)

    real MacBook Pro 14.2 Sonoma 14.2   13" 2018



  • kuckkuck & Inspector42 danke für die Antworten!
    Ich möchte nicht ausschließen, dass ich aktuell noch einen gewaltigen Denkfehler mache und es noch nicht erkannt habe. Deshalb hier nochmal genau, was ich versucht habe und bei was ich gescheitert bin:

    -Vorab: Ich nutze eben das SMBIOS iMacPro1,1
    -Habe den Kext auf den Schreibtisch kopiert, um es mit der neuen FreqVectorsEdit-Version von Inspector42 zu bearbeiten

    -Habe vor der Verwendung von FreqVectorsEdit mir mal die originale Plist von Mac-7BA5B2D9E42DDD94 (also iMacPro1,1) angeschaut: Dort gibt es keine verschiedenen Frequencies, aber dennoch ist ein Vector hinterlegt
    -Habe dann FreqVectorsEdit mit der -k Option gestartet und auf meinen Schreibtisch gezeigt, damit die dort abgelegte Kopie vom Kext bearbeitet wird
    -Dann in FreqectorsEdit den Eintrag "Mac-AF89B6D9451A490B" gewählt (iMac20,2) und FreqVectosEdit seine Arbeit machen lassen

    -In den Kext reingeschaut: FreqVectorsEdit hat nun die Plist von Mac-7BA5B2D9E42DDD94 (iMacPro1,1) bearbeitet, vermutlich mit den Infos von iMac20,2 gepatcht, weil ich das ja ausgewählt habe
    -Die Plist hat aber nach dem patchen genau wie vor dem patchen keinen Frequencies-Eintrag, nur die binären Vector-Infos (habe einen Screenshot angehängt)


    Wenn ich dann der Anleitung weiter folge, trotz dass ich die Maximalfrequenz nicht anpassen kann, und am Ende CPUFriend und die erhaltene SSDT-data aktiviere, wird X86PlatformPlugin nicht mehr geladen, in den Energieeinstellungen sind zwei getrennte Slider und die Powernap-Funktion ist nicht mehr da.


    Habe ich also irgendwo einen groben Denkfehler, oder ist die Vorgehensweise eigentlich so korrekt? Eigentlich müsste doch jeder, der diese Anleitung ausprobiert und wie ich das iMacPro1,1 SMBIOS verwendet, auf das Problem gestoßen sein, dass in der zum iMacPro1,1 gehörenden Plist keine Frequencies-Einträge sind...deshalb suche ich den Fehler noch bei mir.

    EDIT: Ja, der Fehler lag bei mir...hätte ich Pfad und Namen der CPU in der generierten SSDT angepasst, hätte alles wunderbar funktioniert!


    Wenn der Eintrag nicht vorhanden ist, ist primär die Frage, ob in der Plist überhaupt FrequencyVectors hinterlegt sind. offline

    Ja, Vectors sind defintiv in der iMacPro1,1 Plist hinterlegt, nur eben keine Liste mit Maximalfrequenzen...



    Wenn du das PowerManagement des iMac20,2 nutzen willst, musst du doch die Plist des iMac20,2 durch FreqVecs bearbeiten lassen, eventuell noch selber manuell anpassen und dann durch CPUFriend injecten lassen. Da ist doch egal was in der Plist des iMacPro1,1 steht, denn die wird ja dann durch CPUFriend im Speicher überschrieben.

    Meinst du, ich muss die originale iMac20,2 Plist bearbeiten lassen? Also dass am Ende die original iMac20,2-Plist verändert wurde?

    FreqVectorsEdit scheint, wenn man keine weiteren Parameter angibt, immer die Plist von dem SMBIOS zu bearbeiten, das man gerade gebootet hat, und diese dann mit Infos von jener Plist abzuändern, die man im FeqVectorsEdit-Menü angegeben hat.

    (also iMacPro1,1 gebootet und im Menü iMac20,2 ausgewählt: Die iMacPro1,1-Plist wird mit Infos aus der iMac20,2-Plist abgeändert)
    Wenn am Ende die originale iMac20,2-Plist verändert sein muss: Muss dann die iMac20,2-Plist mit Infos von iMac20,2 (was ich ja im Menü auswähle) gepatcht werden? Das klingt für mich nicht wirklich logisch...
    Wenn am Ende die originale iMacPro1,1-Plist verändert sein muss: Dann macht es ja doch einen Unterschied, welche Plist man aktuell verwendet und was da vor dem patchen drinsteht, denn wenn vor dem patchen keine Frequencies-Einträge da waren, sind danach auch keine da, und dann kann ich sie auch nicht auf meine eigene Maximalfrequenz anpassen


    Das Script überschreibet mit -b und der board-id vom iMac19,1 genau diese plist mit den Inhalten der Konfiguration, die Du aus der langen Liste mittels Eingabe der Nummer eingegeben hast.

    Wenn Du dann aber mit der iMacPro1,1-plist für CPUFriend weitermachst, verwendest Du die unveränderte Original-plist aus der kext.

    Das habe ich nicht gut erklärt: Ich habe natürlich, als ich das Tool ohne Parameter verwendet habe, die iMacPro1,1-Plist weiterverwendet. Als ich es dann eben mal testweise mit -b und der iMac19,1-ID probiert habe, habe ich danach die iMac19,1-Plist weiterverwendet. Also immer die, die verändert wurde, das sieht man ja gut am Änderungsdatum.
    Das mit dem -b habe ich nur ausprobiert, weil ich sehen wollte, ob es egal ist, welche Plist man als Basis nimmt und ob es nur um den Vector-Eintrag geht oder auch um das Drumherum. Da ich aber verschiedene SSDT-data mit deutlich verschiedenen Größen erhalte, wenn einmal iMacPro1,1 und einmal iMac19,1 als Basis für die gleichen Patches (beide Male iMac20,2 ausgewählt und LFM, EPP & EPB gleich) gewählt wird, weiß ich jetzt, dass es nicht nur auf den Vector-Eintrag der zur Maximalfrequenz passt ankommt, sondern auch auf die Plist, die als Basis verwendet wurde.