CPUFriend Guide, HWP & Speedstep: X86PlatformPlugin vs ACPI_SMC_PlatformPlugin

  • Das ist jetzt in der Tat merkwürdig.

    Bin leider für die nächsten Wochen unterwegs und kann daher nicht auf meinen Hackintosh zugreifen, der hat allerdings ne IvyBridge CPU, die eh nur mit Tricks XCPM-fähig ist.

    Nach Umstieg auf MacPro1,1 Profil und CPUFriend habe ich nur mit AppleIntelInfo.kext überprüft, ob alle P-States auftauchen, aber nicht, welche CPU-PM kexte geladen werden.

    Ich meine aber irgendwo gelesen zu haben, dass ACPI_SMC_PlatformPlugin als Fall-Back fungiert. Vielleicht passt irgendwas im iMac20 FrequencyVector nicht zum iMacPro1,1. Wie schon erwähnt hat Intel ja bei der 10ten Generation ganz schön in die Trickkistw gegriffen.

    Was sagt denn IntelPowerGadget zum Frequenzverlauf, tut sich da überhaupt was ?

  • 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.

    Unabhängig davon was die von Inspector42 abgeänderte Version genau macht, ist es so, dass FreqVectorsEdit die Plist des aktuell benutzen SMBios (Board-ID) anpasst. Die Idee dabei ist, dass genau diese Plist ja automatisch von macOS benutzt wird und um die Daten eines anderen SMBios erweitert wird, damit diese dann Laden. In unserem Fall benutzen wir jedoch CPUFriend und haben hier die Möglichkeit komplett andere Plists/Daten zu injecten, ohne die SMBios-Plist zu verändern. Naja, FreqVectors tut dies trotzdem, deswegen müssen wir die von FreqVecs veränderte Plist injecten, was letztendlich die SMBios-Plist ist.

    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...

    In deinem Fall nein. Aber allgemein gesprochen ist das nicht redundant o.ä, da FreqVectorsEdit die Plists anpasst, selbst wenn keine Plist eines anderen SMBios gewählt wird.

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

    Das ist interessant. Da aber nur ein FrequencyVectors Eintrag vorhanden ist, ist ja klar welcher gewählt wird. Der Eintrag unter Frequencies mit der Maximalfrequenz ist nicht zum Festlegen der Maximalfrequenz vorhanden, sondern nur zum Matching mit dem korrekten Eintrag unter FrequencyVectors.

    denn wenn vor dem patchen keine Frequencies-Einträge da waren, sind danach auch keine da

    Und hier haben wir denke ich das Problem. Eigentlich soll FreqVectorsEdit die SMBios-Plist mithilfe der in FreqVectorsEdit ausgewählten Plist anpassen. Anscheinend wird aber kein komplettes Frequencies Array in der Plist erstellt, wenn dieses nicht vorhanden ist. Wie sich das Endresultat dann verhält kann ich nicht sagen. Was ich an deiner Stelle vorschlagen würde, wäre den Schritt mit FreqVectorsEdit zu überspringen. Nimm dir einfach die iMac20,2 Plist und pass die FrequencyVectors per Hex Editor mithilfe des Guides an. Injecte dann das Endresultat (also die iMac20,2 Plist) mit CPUFriend und es sollte alles passen.

    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

    Das sollte nicht passieren, ob das X86PlatformPlugin lädt ist eigentlich nur davon abhängig, ob plugin-type gesetzt ist, und ob das X86PlatformPlugin in Takt ist. plugin-type kannst du in IOReg abchecken, ob das X86PlatformPlugin kaputt ist über Systembericht/Erweiterungen.

    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 Ziemlich kompliziert machst Du dir das Ganze, glaube ich. Ich habe einfach ne SSDT mit SSDTTime erzeugt, dann mit CPU Friendfriend die zu iMac 20,2 zugehörige Bord ID plist aus der Liste ausgewählt (in meinem Fall #34, Mac-AF89B6D9451A490B, CPU) und LMF ("Floor") auf 800 mHz gesetzt.


    Ich hatte zuvor mit CPU Friend zwar cf freqeuncy data erzeugt, die ich in die SSDT-Plug Datei integriert hatte, aber der Rechner lief nicht mehr so rund damit und die Benchmarks waren auch schlechter, deswegen habe ich die wieder rausgenmmen und danach war alles gut.

  • Habe mich inzwischen erinnert, wo ich das mit dem Fallback gelesen habe:

    Pike‘s Blog on Wordpress

    Am Ende beschreibt er auch, wie man im System nachschaut, was tatsächlich benutzt wird:

    Tips:

    1.) The X86PlatformPlugin.kext will only load with the plugin-type property is set on the first logical CPU. This however is not enough to enable XCPM mode. No. You may still use AppleIntelCPUPowerManagement.kext Even when X86PlatformShim.kext is loaded.

    2.) The FrequencyVectors data in the plist is used to configure power management, and is not the same for all models/board-ids. Please use one that works for your setup.

    3.) If sysctl -n machdep.xcpm.vectors_loaded_count returns 0 then the FrequencyVectors data is not being used. Backup the plist for your board-id and replace it with a different plist.

    4.) If you use ssdtPRGen.sh to generate your ssdt_pr.aml then make sure to use the -turbo [top-turbo-frequency] argument for overclocked setups.

    5.) Check for XCPM related errors at boot time. Like this: X86PlatformShim::start – Failed to send stepper. You got to fix errors or things may not work properly.


    5T33Z0 : Auch wenn ich das selbst noch nicht ausprobiert habe, scheint der Weg mit CPUFriendFriend einfacher und weniger fehleranfällig zu sein. Ich bin mir auch nicht sicher, ob CPUFriend nur die FrequencyVectors injiziert oder nicht den gesamten Inhalt der ausgewählten plist, die ja noch andere Einstellungen wie AGPM beinhaltet. Das könnte ebenfalls Nebeneffekte hervorrufen.

  • Also irgendwie stimmt mit dem PW Management nichts mehr im Intel P. Gadget springt der der Min Core hin und her zwischen 0.7 und 3.5. Core AVG im Bereich über 3.6


    Das war vorher nicht so.


    Plugin Type steht auf 1


    Edit: Evtl. einer von Euch noch Interesse zu helfen?


    Mittlerweile tänzelt der CPU-Bereich nur noch zwischen 4 und 5 GHz , an sich wurde nichts verändert an den einstellungen, ausser das ich von OC 0.6 auf 0.6.1 umgestellt habe, aber dara wird wohl nicht liegen oder?


    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



    2 Mal editiert, zuletzt von schmalen ()

  • kuckkuck vielen Dank für deine ausführliche Antwort! Mit deiner Hilfe habe ich es geschafft, es zum laufen zu bringen. Also, ganz sicher bin ich mir noch nicht, ob alles gut so ist; ich hoffe, das kann noch jemand beurteilen der sich besser damit auskennt.


    Was ich gemacht habe:
    -Die Plist von iMac20,2 kopiert und entsprechend abgewandelt

    -Mit dem Konverter-Script die SSDT erstellt

    -aktuelle SSDT-PLUG deaktiviert, neu erstellte SSDT aktiviert, CPUFriend.kext aktiviert

    --> Plugin Type 1 wird nicht eingestellt, die Powernap-Option ist wieder verschwunden und X86PlatformPlugin lädt nicht...menno!

    Dann nochmal einen Schritt zurück: Mit der alten SSDT-PLUG wurde Plugin Type 1 geladen, mit der neuen SSDT nicht mehr...also habe ich angefangen zu vergleichen: Irgendwie sieht es in beiden SSDTs ähnlich aus an der Stelle, wo Plugin Type 1 geladen werden soll, aber nicht gleich...meine alte SSDT-PLUG band auch noch die SSDT-DTGP ein, die neue mit dem Konverter-Script generierte nicht mehr...also irgendwie unterscheiden sich die Methoden! Dann habe ich einfach mal ins Blaue hinein versucht, die bisherige SSDT-PLUG, die ja funktionierte, mit den Frequenz-Daten aus der neu erzeugten SSDT zu erweitern.

    Und dann klappte es! Man sieht am Verlauf der Taktraten deutlich, dass die CPU nicht mehr grundlos hochaktet und der Verlauf ruhiger geworden ist (beide Screenshots wurden im IDLE aufgenommen). Ich sehe auch in IORegistryExplorer, dass X86PlatformPlugin wieder geladen ist und dort sehe ich auch, dass die Frequenzinfos geladen sind.

    Jetzt aber meine große Frage:
    Wieso funktioniert Plugin Type 1 nicht bei der SSDT, die das Konverter-Script erzeugt? Kann sich das jemand erklären, der sich mit diesen ACPI-Sachen besser auskennt als ich?

    Und vor allem: Ist das in Ordnung so und "sauber" eingebaut?




      

  • -Die Plist von iMac20,2 kopiert und entsprechend abgewandelt

    traeu mit was und wie hast du diese abgewandelt, könntest du die entsprechende SSDT die nun läuft mal reinstellen?

    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



  • Wieso funktioniert Plugin Type 1 nicht bei der SSDT, die das Konverter-Script erzeugt?

    Und vor allem: Ist das in Ordnung so und "sauber" eingebaut?

    Der Grund ist, dass deine alte SSDT _SB.PR00 anspricht, während die generierte _PR.PR00 anspricht. Der Pfad zur CPU0 ist also in der generierten falsch, was häufig passiert. Du kannst einfach den Pfad in IORegistryExplorer überprüfen und in die generierte SSDT richtig eintragen, dann passt alles. DTGP ist nicht wichtig, kann man benutzen, kann man auch lassen. Ansonsten ist deine selbst zusammengebaute SSDT aber korrekt und die Ergebnisse lassen sich sehen, Gratulation :)


    mit was und wie hast du diese abgewandelt

    Mithilfe des Guides um den es hier geht :/ Was dein Problem angeht, müsstest du nochmal erklären, was du bisher genau gemacht hast.

    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.

  • -Die Plist von iMac20,2 kopiert und entsprechend abgewandelt

    Ist der iMac20,2 denn so viel besser?! Ich hab das gestern schonmal irgendwo gelesen das er besser wäre... Muss ich dann wohl auch mal ausprobieren.

    kuckkuck Hast du dazu schon mal was derartiges gelesen?

    Liebe Grüße, alex


     Mac mini Late 2020 – M1 – 16GB RAM – 256GB SSD

     MacBook Pro 15” Late 2015 – i7 4980HQ – 16GB RAM – 256GB SSD

     MacBook Pro 13” Late 2014 – i5 4278U – 8GB RAM – 120GB SSD

    iPhone 13 – iPhone 8 Plus – iPad Pro 12,9" – AirPods 1. Gen – AirPods Pro – Apple Watch S5 44mm




  • revunix iMac20,1 und iMac20,2 Systemdefinitionen sind für i5/i7/i9 Prozessoren der 10. Generation. Mein i9 10850K läuft damit auf jeden Fall smoother als mit iMac19,1 die Benschmarks sind besser und die idle Frequenz ist auch niedriger. Ansonsten habe ich da nicht viel daran gedreht, sondern nur ne SSDT erstellt und mit CPUFriendFriend die niedrigste Frequenz von 1200 auf 800 mHz gesenkt und ein Leistungsprofil ausgewählt.

  • Ist der iMac20,2 denn so viel besser?!

    kuckkuck Hast du dazu schon mal was derartiges gelesen?

    Da kann ich nur den Guide zitieren...

    Im Gegensatz zum ACPI_SMC_PlatformPlugin holt sich das X86PlatformPlugin seine Informationen nicht aus dem ACPI, sondern aus SMBios-abhängigen Profilen. In /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources sind für sämtliche Board-IDs Profile mit Properties und Daten hinterlegt.


    Da die Profile also SMBios abhängig sind, müssen wir jetzt erstmal ein SMBios finden, das am besten zu unserer CPU passt. Es empfiehlt sich MacTracker zu nutzen. Ihr solltet unbedingt einen Mac finden, der die gleiche CPU Generation besitzt (zB Kaby Lake). Die genauen CPU-Modell Bezeichnungen können von Mac zu eigener Hardware variieren, also am besten etwas möglichst Nahes wählen. Bei zB einem i5-8265U bietet sich das MacBookPro15,4 SMBios mit i5-8257U an, denn beide Prozessoren haben laut Intel Website die gleiche maximale Taktrate von 3,9 GHz (Wichtig! Wenn nicht möglich, dann möglichst nah).

    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.

  • Was dein Problem angeht, müsstest du nochmal erklären, was du bisher genau gemacht hast.

    kuckkuck Prinzipiell nichts!

    Ich habe die SSDT-PLUG mit dem ssdtime erstellt. Vorab habe ich über die Shell ein acpidump ausgeführt und die generierte DSDT.aml im Terminal mit der SSDTMASTER zur SSDT-PLUG gefertigt.


    An sich waren die Freq.Werte immer gut, seit update auf 10.15.6 habe ich das Gefühl das sich dahin was geändert hat.

    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



  • schmalen Wenn sich das Taktverhalten ins Negative geändert hat, was spricht dann dagegen den Guide mal durchzuarbeiten? Danach hast du Ruhe.

    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 Danke, das heisst die die SMBIOS iMacPo 1.1 Mac-7BA5B2D9E42DDD94 mit der FrequencyVectors bearbeiten oder die für 19.1 wg. gleichem Prozessor? (Schnellinfo)

    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



  • Du musst letztendlich mit CPUfriend eine plist injecten, die auf deinen Prozessor passt oder angepasst ist. Wenn Unklarheiten im Guide sind gib mir bescheid.

    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.

  • Der Grund ist, dass deine alte SSDT _SB.PR00 anspricht, während die generierte _PR.PR00 anspricht. Der Pfad zur CPU0 ist also in der generierten falsch, was häufig passiert.

    oh Mann, ein bisschen peinlich....jetzt, wo du es gesagt hast, sehe ich es natürlich auch! Aber da wäre ich irgendwie nicht von alleine draufgekommen...probiere ich direkt aus wenn ich wieder bei der Kiste bin!

    Danke für diesen Tipp :)

    traeu mit was und wie hast du diese abgewandelt, könntest du die entsprechende SSDT die nun läuft mal reinstellen?

    Ich habe nur in der Plist die Maximalfrequenz an meine CPU angepasst (bei iMac20,2 von 4500 auf 5000), dann noch (persönliche Preferenz) UnifiedSleepSlider auf NO gesetzt und dann die Zeichenkette bei Frequency Vector in einen Hex Editor kopiert und wie beschrieben die drei Werte Minimalfrequenz (auf 800), EPP (auf 0x40) und EPB (auf 4) angepasst.

    Meine eigene Plist anhängen sollte jetzt nicht mehr nötig sein, ich erwarte dass es auch mit der generierten direkt geht, wenn ich den von Kuckkuck gefundenen Fehler behebe indem ich den CPU Namen anpasse. (EDIT: Ja, wie soll es anders sein: Mit geändertem CPU-Namen funktioniert es auch mit der generierten SSDT!)

    Die einzige Frage die ich jetzt noch habe (die aber eigentlich gar nicht mehr relevant ist): Unterscheidet sich das Ergebnis des Ressource Converter Scripts, je nachdem ob man direkt die zur CPU passende Plist nimmt oder man erst FreqVectorsEdit verwendet?

  • Unterscheidet sich das Ergebnis des Ressource Converter Scripts, je nachdem ob man direkt die zur CPU passende Plist nimmt oder man erst FreqVectorsEdit verwendet?

    Ja, du kannst ja mal beide Wege durchlaufen und dann vergleichen, das Ergebnis ist ein anderes. Häufig deswegen weil FreqVectorsEdit die SMBios Plist nimmt und darauf aufbauend Veränderungen macht. Auch sind die FrequencyVectors in manchen Fällen ein bisschen anders. Wer es simpel haben will kann sich aber den Schritt über FreqVectorsEdit auch sparen und wird höchstwahrscheinlich nicht darunter leiden.

    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.

  • Ja, du kannst ja mal beide Wege durchlaufen und dann vergleichen, das Ergebnis ist ein anderes.

    Auch wenn ich keinen direkten Unterschied spüre, hat es dennoch geklappt, auch die iMacPro1,1-Plist als Basis zu nehmen. Werde jetzt einfach diese CPU-Daten nehmen! Sollte ja theoretisch am besten zu meiner CPU und meinem SMBIOS passen.

    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.

    Das hier war also völliger Unsinn, es hätte wunderbar funktioniert, wenn ich den CPU-Namen angepasst hätte...

    Ich habe wohl zu recht den Fehler damals schon bei mir vermutet :D

  • Auch wenn ich keinen direkten Unterschied spüre, hat es dennoch geklappt, auch die iMacPro1,1-Plist als Basis zu nehmen.

    Verstehe ich jetzt nicht, ich dachte, das Problem war, dass bei der Wahl des iMacPro als Basis das Frequencies Array nicht vorhanden war :/

    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.

  • Verstehe ich jetzt nicht, ich dachte, das Problem war, dass bei der Wahl des iMacPro als Basis das Frequencies Array nicht vorhanden war :/

    Genau, ursprünglich dachte ich, dass es ein Hindernis wäre, wenn die Plist kein Array mit Maximalfrequenzen hat, sondern nur einen Vector-Eintrag (wie auf dem Screenshot von mir in Post 120).

    Das dachte ich, weil es eben nicht geklappt hat, mit der aus dieser Plist erzeugten SSDT "Plugin Type 1" zu kriegen...

    Hätte ich da schon gewusst, dass nur der CPU-Name falsch ist, hätte ich da schon bemerken können, dass es egal ist, ob da die Maximal-Frequenz-Einträge sind oder nicht, weil der Ressource Converter in beiden Fällen ordentliche Ergebnisse liefert (bis eben auf den falschen CPU Namen, der mir nicht aufgefallen ist)