Posts by kuckkuck

    5T33Z0 Das macht schon mehr Sinn, die Daten aus dem ACPI werden dann nicht mehr weiter überprüft und können im schlechten Fall den Systemstart verhindern.


    ssdtprgen funktioniert nur für die Nutzung des ACPI_SMC_PlatformPlugins. Sobald das X86PlatformPlugin genutzt wird, sind die Daten irrelevant. Somit macht eine Weiterentwicklung nicht viel Sinn, da die meisten neuen Prozessoren das X86PlatformPlugin nutzen (sollten).

    Da es einen iMac mit exakt meiner CPU gibt, sollte das Speedstepping/Powermanagement mit dem SMBIOS iMac19,1 doch ohne Anpassungen laufen.

    Nur, wenn du die Frequency-Daten (Board-ID.plist) des iMacs mit exakt deiner CPU injectest. Ohne weiteres werden die Frequency-Daten deines gewählten SMBios geladen.

    wenn ich die CF Freq Data aus einer Board-ID.plist extrahiere und dann in die SSDT-Plug einbaue, dann benötige ich ja nicht noch zusätzlich den CPUFriend.kext, oder? Weil die CF Freq Daten werden ja dann über die SSDT ans System übermittelt, oder?

    Das stimmt so nicht. cf-frequency-data steht für "CPUFriend-Frequency-Data". Das ist ein Eintrag, der ausschließlich von CPUFriend ausgelesen wird, das System weiß damit nichts anzufangen und ignoriert es.

    dann kannst du die niedrigste Frequenz weiter senken. Aber wenn sie zu niedrig wird, startet der Rechner nicht, also am besten erst mit nem USB Bootstick experimentieren.

    Meiner Erfahrung nach, kann man zum Testen den LFM in den FrequencyVectors auch temporär auch 00 setzen. Dass der Rechner dann nicht mehr startet, ist mir neu, aber vielleicht hatte ich da einfach nur Glück mit meinen Systemen.

    Oder kann man den Providerkext auf jede x-belibige Board-ID.plist anwenden, wenn man ihn erstmal erstellt hat???

    Ich weiß nicht genau was du meinst. Sobald du den CPUFriendDataProvider.kext oder die SSDT per ResourceConverter erstellt hast, sind die davor übergebenen CPU Parameter gespeichert. CPUFriend injectet unabhängig vom gewählten SMBios die übergebenen Daten immer ins X86PlatformPlugin (bzw. ACPI_SMC Plugin).


    macdream Kontrollier am besten nochmal, dass du alle Veränderungen an der EFI korrekt in deine config.plist eingetragen hast.

    kann man ja ssdtPRGen verwenden, um aus der erstellte SSDT mit Hilfe von ResourceConverter die CF-Freq Data auszulesen

    Woher hast du das? ResourceConverter extrahiert nichts, sondern wandelt lediglich Dateiformate um. Dementsprechend würde es deine SSDT nehmen und als Ganzes umwandeln. Im CPUFriend.kext Source Code finde ich keine Indizien dafür, dass die Kext solche Daten verarbeiten kann.

    In den Github Instructions heißt es:

    Quote
    • file should be a complete plist from Recources inside ACPI_SMC_PlatformPlugin or X86PlatformPlugin with certain modifications(Otherwise why is CPUFriend even required?) instead of something like a raw FrequencyVectors entry.

    5T33Z0 Du kannst dir sicher sein, dass ich beim Schreiben kein Interesse daran hatte die Satzkonstruktion möglichst kompliziert zu gestalten. Dieser Thread ist doch für Fragen da, wenn es Verständnisprobleme gibt. Es steht dir natürlich offen und du bist herzlich von mir dazu eingeladen, entweder einen Guide zu den Inhalten zu verfassen, bei dem alles klar und eindeutig ohne Klärungsbedarf ist, oder entsprechende Verbesserungsvorschläge hier anzubringen, die ich dann gerne übernehme.

    Die für mich passende *.plist enthält keine Frequency-Vectors.

    Das ist natürlich blöd. Konntest du bei per CPUFriend injecteter Mac-FC02E91DDD3FA6A4.plist einen Unterschied im Taktverhalten feststellen? CPUFriend injected nicht nur die Frequency-Vectors, sondern die ganze Plist mit allem drum und dran. Bei Benutzung des iMac13,2 SMBios konntest du ja Veränderungen feststellen...

    Alternativ hast du natürlich immernoch die Möglichkeit die X86PlatformPlugin-Plist eines SMBios zu benutzen, dass eine ähnliche CPU wie deine besitzt und diese anzupassen.

    bluebyte Dein Vorgehen ist prinzipiell (nach dem korrekten Einbauen der generierten Dateien) richtig. Da der iMac Pro eine CPU besitzt, die anders als deine verbaute CPU taktet, injectest du mit CPUFriend FrequencyVector-Daten, die zu deiner CPU passen. In deinem Fall hast du das Glück, dass ein iMac mit deiner CPU existiert, das ist natürlich nicht immer so.

    Im Guide werden dann noch Schritte beschrieben, wie du die Frequency-Vector Daten weiter nach Belieben manuell anpassen kannst, um das Taktverhalten deiner CPU zu verändern. Vor allem in Fällen wo kein Apple Mac Modell existiert, dass die selbst verbaute CPU besitzt, sind diese Schritte wichtig.


    5T33Z0 Everymac funktioniert natürlich auch. 4. wäre dann das händische Anpassen der FrequencyVector-Daten, um das taktverhalten weiter zu personalisieren oder optimieren. Nicht zu jeder Intel-CPU existiert ein passendes Mac SMBios mit identischer CPU. Vorallem die Anpassungs-Schritte bringen häufig erst das gewünschte Taktverhalten.

    Der Guide hat nicht den Anspruch einfach zu sein, sondern den Anspruch vollständig und korrekt zu sein und technische Informationen an einem Ort zusammenzufassen, die so als Ganzes nicht ohne Weiteres im Internet auffindbar sind. CPUFriendFriends Mechanismen sind nicht vollständig und unterscheiden sich in Teilen zu den Inhalten, die im Guide behandelt werden.

    Genau so ist es, den hilfreichsten Beitrag eines Threads kann nur der Fragesteller, oder Mitglieder des Teams, zB. Experten, markieren.


    Wäre natürlich wünschenswert, wenn die Funktion ein wenig mehr benutzt werden würde :)

    Ja, da sieht an sich alles "richtig" aus. Wenn du die SSDT-PLUG deaktivierst, hast du wahrscheinlich wieder das CPU Verhalten, dass du noch aus Clover Zeiten kennst. In dem Fall lädt dann das ACPI_SMC_PlatformPlugin. Wenn du einen Blick in den verlinkten Thread wirfst findest du aber:

    Das X86PlatformPlugin ist das korrekte Plugin für aktuelle CPUs und Chipsets. Das Plugin sowie die bekannte Technologie XCPM (Xnu Power Management) ist tief in den Kernel Integriert und hat Einfluss auf viele Verschiedene Bereiche

    Sollte dir das PowerManagement bei geladenem X86PlatformPlugin nicht passen, kannst du den verlinkten Guide befolgen, um das Plugin auf deine CPU anzupassen, bis du zufrieden bist.

    maybe you can explain a bit the modifications added to Clover.

    Sorry for the huge delay, I was away for a while. The main modification is the patch released in the first post which you can look at using the disassembler of your choice. Since the Kernel&Kext-Patcher within Clover didn't work at the time and I couldn't get it to work without studying all the messy code, I deactivated it in kext_inject. Furthermore the addition of two nvram variables was needed which I did using Clovers SetNvramVariable function. Take a look at the Clover Source in order to understand how it works. You can use if (os_version >= AsciiOSVersionToUint64("XX.XX")) to only execute your code when e.g. Big Sur is loaded (see DataHubCpu.cpp for reference).

    The nvram variables to force prelinked kernel don't work anymore. The Kernel&Kext-Patcher within Clover works but the patches have no effect since the prelinked kernel isn't loaded. Clover has switched to an OpenCore based Kext Injection which is exactly what I was talking about. As stated many times, my patches where just a workaround and not future proof in any way which is why there was no reason to release any code but only to explain what changes I made.

    This should be enough information to reproduce exactly what I did if this is what you are looking for.

    Sehr schön erklärt:top:

    Die unteren beiden "Zero" haben sich mir auch noch nicht erschlossen.

    Reserviert für weitere mögliche Spezifikationen in der Zukunft ;)

    Hier aus dem ACPI Spec die Return Package Values:

    1. ConnectableIf this value is non-zero, then the port is connectable. If this value is zero, then the port is not connectable.
    2. TypConnector Typ:
    0x00: Type ‘A’ connector
    0x01: Mini-AB connector
    0x02: ExpressCard
    0x03: USB 3 Standard-A connector
    0x04: USB 3 Standard-B connector
    0x05: USB 3 Micro-B connector
    0x06: USB 3 Micro-AB connector
    0x07: USB 3 Power-B connector
    0x08: Type C connector - USB2-only
    0x09: Type C connector - USB2 and SS with Switch
    0x0A: Type C connector - USB2 and SS without Switch
    0x0B – 0xFE: Reserved
    0xFF: Proprietary connector
    3. Reserved0This value is reserved for future use and must be zero.
    4. Reserved1This value is reserved for future use and must be zero.

    Ich weiß nicht welche Fehler da beanstandet werden.


    Beim durchschauen fallen mir 3 Kleinigkeiten auf:

    1. Die Porttypen (USB2 / USB 3) sollten bereits beim Ein- und Ausstecken der USB Sticks deklariert werden. Im Nachhinein ist es sonst häufig schwer noch nachzuvollziehen, welchen HS und SS Ports zusammen gehören und gemeinsam den gleichen Identifikator benutzen sollten.

    2. Die Renames sind keine USBInjectAll spezifischen Renames und können deshalb auch nach der Benutzung von USBInjectAll beibehalten werden. Vorausgesetzt das Gerät besitzt überhaupt die entsprechenden Namen im ACPI.

    3. Es gibt eventuell schnellere Methoden ohne USBInjectAll und die Bootargs die USB Ports zu konfigurieren. Ich sehe das aber als keine Kritik, denn dein Guide ist sehr schön ausführlich und sollte dank der Benutzung von USBInjectAll auch auf praktisch allen Systemen genau so funktionieren.