Beiträge von kuckkuck

    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:

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

    Verstehe, dann funktioniert ja sogar alles wie es soll... Und somit gilt dann wahrscheinlich folgendes:

    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.

    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.