SMBIOS iMac17,1 / Skylake i76700K und Powermanagement - wie funktioniert es richtig?

  • Ich konnte es doch nicht lassen und habe es doch nochmal mit CPUFriend und einem CPUDataProvider ausprobiert, den ich für ein anderes SMBIOS erstellt habe. Damit es keine Kernel Panic gibt, benötigt mein Board den Patch Kernel LAPIC und diesen KernelToPatch-Eintag:


    Find 20B9E200 00000F30
    Replace 20B9E200 00009090
    Comment MSR 0xE2 _xcpm_idle instant reboot (c) Pike R. Alpha


    AppleInfoKext:



    Schon besser. Allerdings hatte ich einmal mit geladenem AppleInfoKext eine Kernel Panic. Ansonsten läuft das ohne ganz gut.


  • Ich habe das nicht mehr großartig weiter verfolgt. Auf meinem Laptop hingegen schon, da ist mir das auch wichtiger.

  • @armut
    Was macht dein Hack laut Aktivitätsanzeige ? Vielleicht hat er ja was zu tun und deshalb die Zacken.

  • Ich greife das Thema wegen dem hier nochmal auf:

    Der einzige Sinn von CPUFriend ist dementsprechend andere FrequencyVectors als die im SMBios hinterlegten zu injecten.
    Dementsprechend macht die Nutzung der Kext auch nur Sinn, wenn die Daten aus der genutzten X86-Plist auch verändert werden.


    Das einzige was Sinn macht mit dem kext ist, wenn du zB eine CPU hast die einem iMac18.3 gleicht, du aber das SMBios von einem iMac 14.2 eingegeben hast aber die FrequencyVectors von den iMac18.3 nutzen möchtest.


    Wer sich den Thread mal durchliest, versteht schnell, warum die Benutzung von CPUFriend ohne Veränderung der benutzten Plist aus dem X86PlatformPlugin keinen Sinn macht.
    Deswegen hier meine Frage, hat jemand schonmal folgendes versucht?

    • freqVectorsEdit.sh von Pike ausführen und die Board ID eines Macs wählen, der am nähesten zur eigenen CPU passt (bei mir zb Mac-FA842E06C61E91C5, der den i7 4790k besitzt) Wichtig: Davor von der entsprechenden Plist (zB Mac-FA842E06C61E91C5.plist) aus /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources/ ein Backup machen
    • Jetzt wurde die Plist im X86Plugin ersetzt. Diese neue Plist aus /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources/ kopieren und sichern.
    • Die alte, gebackupte Plist wieder nach /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources/ einfügen, wir wollen nur das Produkt von freqVectorsEdit.sh haben
    • Die durch freqVectorsEdit.sh erstellte Plist mit Xcode öffnen und gegebenenfalls den LFM und das Energy Power Profile, kurz EPP o.ä anpassen
    • Mit ResourceConverter.sh eine SSDT oder Provider.kext mithilfe unserer gesicherten Plist (die durch freqVectorsEdit.sh erstellte und angepasste Plist) erstellen
    • CPUFriend und SSDT/Kext einsetzen und schauen wie das Ergebnis für die CPU aussieht. Am besten die SSDT auch noch mit einer ssdtprgen-SSDT kombinieren, die den PluginType=1 setzt. Das X86PlatformPlugin muss jetzt unbedingt laut IOReg genutzt werden.


    Edit:
    Gerade mal ausprobiert, sehr interessant. Folgende Erkenntnisse soweit bei mir:

    • Die CPU taktet viel häufiger runter auf 800 MHz. Das konnte sie zwar davor auch, macht es jetzt aber mindestens doppelt so häufig...
    • Die CPU läuft ein wenig heißer, aber ich bekomme ebenfalls 2000 Punkte mehr im Geekbench Multicore
    • Die CPU hat weniger verfügbare CPU States. Diese sind jetzt nur noch:



      • Lowest Frequency Mode (LFM): 800 MHz
      • Base Frequency: 4000 MHz
      • Max Turbo Frequency: 4400 MHz bzw. 4800 MHz

    Also sowohl positives als auch negatives Ergebnis :huh:

    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.

    4 Mal editiert, zuletzt von kuckkuck ()

  • Hi @kuckkuck,
    Ich habe es getestet. Egal was ich mache mit Piker-Alpha geht der Wert nicht unter 1300 MHz. Nur mit HWPEnabler und sonst nichts geht der Wert runter auf 800 MHz.


    Unter Windows gehts noch weiter runter auf 500 MHz. Das war der Grund warum ich es nochmals getestet habe. Diesen Wert habe ich unter OSX nie erreicht.


    ssdt_data:


    HWPEnabler:

  • Also hast dus so gemacht wie von mir beschrieben, mit der Kombi aus freqVectorsEdit und CPUFriend? Lädt das X86PlatformPlugin?


    Du kannst wie verlinkt im X86Plugin den LFM noch weiter runter setzen (500 MHz), wenn deine CPU das unterstützt... Vielleicht funktionierts ;)

    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 genau so. Auch das Limit rausgenommen "02 00 00 00 0D 00 00 00 01 00 00 00 00 00 00 00 (0x0d/1300MHz set as limit).".
    Keine Änderung. 1300 min.


    Nur mit dem HWPEnabler klappt es bei mir. Ist aber auch OK. Die Werte sind super. Das es unter Windows noch etwas weiter runter geht ist auch super, aber nich unbedingt nötig.

  • Bei 02 00 00 00 0D 00 00 00 01 00 00 00 00 00 00 00 ist ja das Limit noch drinnen.


    Mal mit eingetragenen 500 als LFM probiert?

    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.

  • Ich habe es mit 00 ohne Limit prpbiert. Aber ich teste das nochmal mit den 500 als Limit.

  • Hi @kuckkuck,


    Hier nochmals eine Rückmeldung. Habe das ganze jetzt nochmals nach deiner Anleitung komplett neu gemacht.


    > Mit freqVectorsEdit.sh eine gepatchte Mac-XXXXXXXXXX.plist erstellt.
    > LVM angepasst auf 00 > 05 erzielt das gleiche Ergebnis
    > Mit dem ResourceConverter.sh eine ssdt_data.dsl erstellt.
    > Die "Method (_DSM, 4, NotSerialized)" aus der ssdt_data.dsl kopiert und in die bereits zuvor mit ssdtPRGen.sh erzeugte ssdt.aml eingefügt.


    Ergebnis:
    Habe jetzt die gleichen Werte wie mit HWPEnabler. 800 MHz min. 500 MHz werden nicht erreicht.


    Trotzdem ist deine Anleitung ein voller Erfolg. Da nur so mit einer ssdt.aml diese Werte erreicht werden. Und das ganze ist zukunftssicher da ich auf meiner Mojave Testinstallation genau die gleichen Werte erreiche. :thumbsup:


    Ich werde das jetzt mal so mit der ssdt.aml und dem Kext CPUFriend.kext lassen da der HWPEnabler ab und zu Abgestürzt ist un dann hatte ich nur noch 3500 MHz und high Power Lüfter. Eventuell ist dieses Problem dann hiermit behoben.


    Wenn ich im Übrigen ohne den Kext CPUFriend.kext starte erreiche ich wieder nur die 1300 MHz. Das ist der gleiche Wert wie mit der unveränderten ssdt.aml generiert mit ssdtPRGen.sh.
    Keine Ahnung warum und auch nicht warum @Piker-Alpha das so voreingestellt hat. Für Laptops und dessen Batterie eher schlecht.


    Ich würde Vorschlagen das du deine Anleitung ins WIKI packst, da ich denke es ist der einzige und richtige Weg um CPU Power Management zusammen mit einer ssdt.aml zu steuern.


    Danke für deine Anleitung. :thumbsup:



  • Sauber! Genau so war das gedacht! :thumbup:


    Vielleicht kann ja noch jemand das ganze testen und wenn es gut funktioniert, schreib ich das freqVectorsEdit Script so um, dass man die Mac-XX...plist auf den Schreibtisch bekommt und am X86PlatformPlugin selber nichts verändert wird. FreqVectorsEdit.sh wird ja sowieso nicht mehr weiter entwickelt...


    der gleiche Wert wie mit der unveränderten ssdt.aml generiert mit ssdtPRGen.sh.
    Keine Ahnung warum und auch nicht warum @Piker-Alpha das so voreingestellt hat. Für Laptops und dessen Batterie eher schlecht.


    Ich bin mir ziemlich sicher, das ist garnicht so gewollt, nur ist denke ich mal die ssdtprgen Methode veraltet. Das einzige was aus der SSDT heutzutage noch übernommen wird, ist der PluginType=1, welcher für die Nutzung der X86Platform FrequencyPlists sorgt. In diesen ist in deinem Fall eben 1300MHz von Apple für das jeweilige Modell als LFM eingetragen. Die SSDT (prgen) kann daran nichts mehr verändern und die einzige Möglichkeit ist dann entweder die X86Plugin Plist manuell anzupassen, oder eine andere Plist mit CPUFriend laden zu lassen.

    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.

  • Mahlzeit,


    vielleicht stehe ich ja auch auf dem Schlauch, aber ist hier freqVectorsEdit.sh überhaupt notwendig? ResourceConverter.sh kann ja eine beliebige (existierende) Board-Id als Grundlage benutzen.

  • freqVectorsEdit.sh verändert die Mac-XXXXXXXXXX.plist passend zum Prozessor. Ohne diese Änderungen erhalte ich ein falsches Ergebnisse mit meinem i7-7500U Prozessor und der angepassten Datei ssdt.aml und dem CPUFriend Kext. Teste es mal.

  • Jau, dann so: Wenn es bereits eine Board-ID mit passender CPU gibt, dann sollte der erste Schritt nicht nötig sein.


    Und da habe ich mal eine Bitte: Hat jemand die plist für das MacBookPro15,2 (Mac-827FB448E656EC26.plist)? Dürfte eigens in der 10.13-Version für die neuen MacBookPros zu finden sein. @NoirOSX vielleicht?

  • Jau, dann so: Wenn es bereits eine Board-ID mit passender CPU gibt, dann sollte der erste Schritt nicht nötig sein.


    Selbst dann verändert FreqVectorsEdit.sh die Daten... Du kannst es ja mal durchlaufen lassen und Original mit Patch vergleichen ;)

    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.

  • Mache ich, wenn ich später wieder vor meinem Dell mit i5-8250U sitze :)

  • Tja, weit gekommen bin ich nicht. Nur bis zu einer Kernel panic (CPU). Das habe ich gemacht:

    • freqVectorsEdit.sh mit MacBookPro14,1 ausgeführt (das SMBIOS nutze ich auch)
    • plist kopiert, die durch freqVectorsEdit.sh erzeugte plist wieder durch das Original ersetzt
    • LFM Limit in allen drei Einträgen entfernt
    • ResourceConverter.sh ausgeführt
    • mit CPUFriend und CPUFriendDataProvider gebootet

    Ich muss das wohl nochmal in Ruhe machen.