OpenCore Sammelthread (N-D-K Fork)

  • Hat jemand eine Idee? Gibt es sowas wie FixShutdown unter OC?

    Ich habe mit einen Wolf nach einer SSDT-FixShutdown.aml gesucht, weil ist bei meinem ASRock Z87 auch der Fall, der Rechner lässt sich nicht ausschalten, das habe ich wie folgt gelöst.


    Vorher in der Clover config.plist mit dem Clover Configurator unter dem Reiter ACPI alles abhaken bis auf den FixShutdown.



    Anschließend mit Clover booten und in macOS mit der App DPCI Manger die DSDT ziehen.



    Die nach FixShutdown.aml umbenannt und in OC im Ordner ACPI eingesetzt, zum Schluss der Eintrag in der OC config.plist gesetzt.



    Das Ergebnis kann sich sehen lassen, der Rechner schaltet jetzt vollständig aus.

  • derHackfan ..danke, dass Du mir immer hilfst - wenn ich mal nach Bremen komme, muss ich Dir mal ein Bier ausgeben :)


    Ich probier das mal, ich hab halt noch keine Clover Config.plist, die durchbootet, das war ja damals bei meiner Konfiguration das Problem...


    EDIT________

    Ich hab in einem älteren Thread Deine FixShutdown.aml gefunden und sie schamlos stibitzt ;) Funktioniert! :hurra:

  • Hey, gibt es eine Möglichkeit das weiße Quadrat zur Auswahl mit einem anderen Bild auszutauschen um das Theme näher an das original von Apple zu bringen?

    CPU: i9 10900K - Board: Aours Master Z490 - Grafik: AMD 6800 XT - Sound: External USB DAC WLAN+BT: Broadcom BCM94360CD RAM: 4x16GB DDR4 - Dispay: LG 27GP950 (4k mit 144hz) über Display Port 1.4 + DSC - Bootloader: OpenCore - Installationsanleitung auf GitHub

  • Was macht denn eigentlich die SSDT-DTGP (oder DTPG?)?

    Grundsätzlich ist eine SSDT eine individuelle Table, die man der ACPI hinzufügen kann. Man kann bestehende bearbeiten, oder eigene hinzufügen. Letzteres ist oft einfacher und überschaubarer. In der von dir genannten SSDT ist nur eine Methode drin, nämlich die "DTGP". Diese findest du auch in Apples originalen DSDT.



    Gebraucht wird diese Methode wiederum von anderen Methoden, den "_DSM-Methods". Wann immer man also per _DSM-Methode zusätzliche Properties neuen Geräten "Device" oder vorhandenen Geräten via "Scope" Properties via "_DSM-Methode" beibringen möchte, referenziert diese wiederum auf die Methode "DTPG". Diese kann in einer extra SSDT stehen und wird via Link im Header von anderen SSDTs aufgerufen, oder die Methode steht in der SSDT drin, wo sie eigentlich gebraucht wird.


    Beispiel einer kompletten SSDT:



    Wie du siehst, wird oben im Header zum einen auf das Vorhandensein von "PCI0" hingewiesen, es wird ein "Scope" zur näheren Beschreibung des vorhandenen Devices "PCI0" eröffnet, in diesem wird ein neues Device "TATA" erstellt welches an einer bestimmten Adresse zu finden ist. Über die "_DSM-Methode" werden dem Device TATA weiter Properties mitgegeben, die Methode hat ganz unten die Methode DTGP eingebunden. Damit das funktioniert, ist oben im Header ein Link nach extern für dieses "MethodObj" festgelegt. Damit ist diese SSDT zunächst "sauber" definiert. Damit das Ganze auch läuft, muss in einer anderen Table eben auch die Methode "DTGP" enthalten sein.


    Das es bei dir auch ohne läuft, kann verschiedenste Gründe haben.


    • du benutzt keine weiteren SSDTs mit _DSM-Methoden

    • du benutzt weitere SSDT mit _DSM-Methoden aber ohne Einbindung von "DTGP"

    • du benutzt weitere SSDT mit _DSM-Methoden aber mit der zusätzlichen DTGP-Methode innerhalb dieser SSDT(s)

    • du weist Clover per config.plist an, eine "DTGP-Methode zu implementieren



    EDIT:

    In deinem EFI-Ordner benutzt du in den meisten SSDTs _DSM-Methoden ohne Einbindung von "DTGP", in der Thunderbolt-SSDT ebenso die meisten, nur für die Devices "NHI" und "XHC5" benutzt du eine Mischform, die so nicht sonderlich schlau ist. Jedenfalls ist da zwar DTGP eingebunden und im Header auch korrekt als extern definiert. Sieht trotzdem "unprofessionell" aus und spielt so auch keine Rolle, daher funktioniert eben auch erstaunlicherweise … ;)


    In deiner config.plist ist mir noch aufgefallen, da ist bei USB der "EH00" (Rename von EHCI") angewählt. Ist natürlich Unfug, diesen alten reinen USB2-Controller hat das Board überhaupt nicht und ist somit auch nicht in der ACPI vorhanden.

    ASUS PRIME X299-DELUXE i9-9940X • DDR4 64GB • SSD 960 PRO 1TB • Thunderbolt3 Titan Ridge • 2x AMD Radeon RX Vega 64 • BMD Intensity Pro 4K

    ASUS WS X299 SAGE/10G i9-10980XE • DDR4 64GB • SSD 970 PRO 1TB • Thunderbolt3 Titan Ridge • 2x AMD Radeon VII • BMD DeckLink 4K Extreme 12G


    Ordnung ist die primitivste Form von Chaos. (Hans-Jürgen Quadbeck-Seeger)

    Einmal editiert, zuletzt von apfelnico () aus folgendem Grund: EDIT

  • Ich probier das mal, ich hab halt noch keine Clover Config.plist, die durchbootet

    Dafür gibt es in MaciASL unter General den Shutdown Fix - Intel, also mit OpenCore booten und mit DPCI Manager extrahieren und anschließend patchen,



    mein Umweg über Clover ist der Bequemlichkeit geschuldet.

  • apfelnico Danke für die tolle Erklärung und die Hinweise! Sensationell!

    HACKINTOSH für Musik- und Videoproduktion

    EFI-Ordner für mein System:

    Gigabyte Z390 DESIGNARE: OpenCore-EFI-Ordner und Anleitung

  • derHackfan ...hm, da ich ja Deine FixShutdown.aml verwende, wäre es vielleicht doch besser, meine eigene DSDT zu patchen?


    Oder ist in Deiner FixShutdown.aml NUR dieser FixShutdown-Patch ohne die ganzen anderen DSDT-Informationen aus Deiner Konfiguration enthalten?

  • Guten Morgen


    Ich habe nur den FixShutdown eingebaut, wenn es bei dir zu keinen Problemen wegen der DSDT/SSDT kommt dann kannst du es dabei belassen.

    Du kannst in der Zwischenzeit versuchen deine eigene DSDT mit MaciASL zu patchen, ansonsten einfach mal deine rohe DSDT hier im Thread hochladen, werde versuchen beizeiten das dann zu übernehmen.

    Ist im Grunde nur eine vorübergehende Notlösung, vielleicht kommt ja mal jemand mit einer echten SSDT-FixShutdown daher, dann fühlt es sich irgendwie noch echter an.


    Siehe Grundlagen -> https://khronokernel.github.io…ith-ACPI/Manual/dump.html

  • Ich hab jetzt mal die ganz aktuelle Version ausprobiert. Mit der "HideAuxiliary"-Funktion gibt es bei mir noch ein Problem:

    Wenn ich "HideAuxiliary" aktiviere, bekomme komme ich durch Drücken der Leertaste (oder der anderen angegeben Tasten) die anderen Einträge nicht angezeigt. Stattdessen passiert entweder gar nichts oder das Boot-Menü friert ein, so dass keine Auswahl und kein Booten mehr möglich ist.

    In der Anleitung steht außerdem über die Auxiliary-Funktion in den Entry Properities:


    This entry will not be listed by default when HideAuxiliary is set to true.


    Das stimmt so nicht ganz. Ein Eintrag mit Auxiliary auf "true" wird auch dann nicht im Menü angezeigt, wenn HideAuxiliary überhaupt nicht aktiviert ist. Im Moment entspricht diese Funktion einfach dem alten "Hidden" und funktioniert auch fast genau so – außer dass dem Booteintrag jetzt automatisch ein Auxiliary-Icon verpasst wird – was eigentlich gar nicht so cool ist, wenn man ihn eigentlich nur verstecken will und bei Bedarf durch die Leertaste wieder anzeigen will.

    Besser wäre es meiner Meinung nach gewesen, man hätte die alte "Hidden"-Funktion stattdessen einfach drin gelassen.

    HACKINTOSH für Musik- und Videoproduktion

    EFI-Ordner für mein System:

    Gigabyte Z390 DESIGNARE: OpenCore-EFI-Ordner und Anleitung

  • Besser wäre es meiner Meinung nach gewesen, man hätte die alte "Hidden"-Funktion stattdessen einfach drin gelassen.

    Nun, "N-D-K" folgt ja auch nur dem Original. Dort tut es wie beschrieben.

    ASUS PRIME X299-DELUXE i9-9940X • DDR4 64GB • SSD 960 PRO 1TB • Thunderbolt3 Titan Ridge • 2x AMD Radeon RX Vega 64 • BMD Intensity Pro 4K

    ASUS WS X299 SAGE/10G i9-10980XE • DDR4 64GB • SSD 970 PRO 1TB • Thunderbolt3 Titan Ridge • 2x AMD Radeon VII • BMD DeckLink 4K Extreme 12G


    Ordnung ist die primitivste Form von Chaos. (Hans-Jürgen Quadbeck-Seeger)

  • Besser wäre es meiner Meinung nach gewesen, man hätte die alte "Hidden"-Funktion stattdessen einfach drin gelassen.

    Auxiliary ist etwas anderes als das was NDK mit hide gemacht hat. Hide ist rein kosmetischer Natur, daran haben die OC Devs kein Interesse. Auxiliary verschnellert den Startprozess indem die angegebenen Einträge garnicht erst gescannt werden. Somit ist es also auch nicht möglich diese Einträge durch Druck der Leertaste angezeigt zu bekommen, die Einträge sind garnicht gescannt.

    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.

    Einmal editiert, zuletzt von kuckkuck ()

  • kuckkuck Ah, dann ergibt es Sinn – auch wenn wiederum der Satz hier weiterhin so nicht stimmt:

    „To see all entries picker menu needs to be reloaded by pressing one of the designated keys: Escape, 0, Spacebar.“

    Zumindest sollte er nicht bei der Erklärung der Boot Properties und „HideAuxiliary“ stehen, sondern eher bei der Erklärung der Entry Properties (dort dann bei „Auxiliary“), mit dem Hinweis, dass er nur zutrifft, wenn wenn HideAuxiliary deaktiviert ist.


    EDIT: Wenn man weiß, wie es gemeint ist, kann man es schon auch trotzdem richtig verstehen, das gebe ich zu. Es fehlt halt der Hinweis darauf, dass Auxiliary-Einträge grundsätzlich erstmal versteckt sind und dass sie mit HideAuxiliary auch gar nicht erst gescannt werden.

    HACKINTOSH für Musik- und Videoproduktion

    EFI-Ordner für mein System:

    Gigabyte Z390 DESIGNARE: OpenCore-EFI-Ordner und Anleitung

  • Ich muss mich korrigieren, durch Druck der Leertaste soll der Picker wohl neu geladen werden und scannt dabei wohl alle Entries. Wenn du das Feature testen willst musst du jedoch die offizielle OC Version nutzen. Im Fork können immer Sachen verkorkst sein, wenn es da nicht funktioniert sagt dies nichts aus.

    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.

  • OK, dann stimmt die Beschreibung durchaus und der Fehler liegt einfach am Fork.

    HACKINTOSH für Musik- und Videoproduktion

    EFI-Ordner für mein System:

    Gigabyte Z390 DESIGNARE: OpenCore-EFI-Ordner und Anleitung

  • Anschließend mit Clover booten und in macOS mit der App DPCI Manger die DSDT ziehen.

    Kannst du die dabei gezogene DSDT von Clover mit ShutdownFix kurz anhängen? Vielleicht kann ich eine SSDT-FixShutdown.aml wie du sie gerne hättest bauen.

    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.

  • Das hier SSDT-DPCI.aml müsste sie sein, ich habe da in den letzten Tagen viel getestet, kann aber gerne auch nochmal CLOVERX64.efi über die Shell anwerfen und einen F4 Dump machen.

    Heute habe ich zusätzlich noch mal mit acpidump.efi über die Shell per acpidump.efi -b -n DSDT -z eine DSDT gezogen, die anschließend Fehler bereinigt und mit Insert DGTP (vorsorglich) und mit dem Shutdown Fix - Intel gepatcht.

    Beide funktionieren einwandfrei und der Rechner fährt sauber herunter, aber die Umbenennung einer DSDT nach SDDT ist wie eine Macke im Profil, welche ich heimlich mit einer Fase versuche zu kaschieren.

    Dateien

    • SSDT-DPCI.aml

      (42,61 kB, 80 Mal heruntergeladen, zuletzt: )
    • DSDT.aml

      (42,67 kB, 63 Mal heruntergeladen, zuletzt: )
    • acpidump.efi.zip

      (15,13 kB, 49 Mal heruntergeladen, zuletzt: )
  • Danke, ich bin nah dran. Hast du zufällig auch noch eine DSDT in der der ShutdownFix noch nicht eingebaut ist?

    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.

  • Bei dem genannten Shutdown Patch geht es insbesondere um die Erweiterung der _PTS (Prepare to Sleep) Methode. Hierbei wird bei den herkömmlichen Patches eine If Bedingung um den bestehenden _PTS Code gelegt, sodass dieser nur in bestimmten Fällen ausgeführt wird. Ich habe einen möglichen ACPI Patch rausgesucht, der diese If () Else{ Bedingung in die bestehende _PTS Methode einfügt. Ein erster Entwurf könnte zB sein:

    5F 50 54 53 015F 50 54 53 01 A0 05 93 68 0A 05 A1 4D 0F


    Wie man sieht werden jedoch aus 10 Bytes nach dem Patch 28 Bytes, sprich Find und Replace ist nicht gleich groß. Laut Configuration.pdf muss Find & Replace jedoch die gleiche Größe haben, da Byte für Byte verglichen und gepatcht wird, eine Erweiterung des bestehenden ACPI Codes per Hotpatch ist also mit OC derzeit nicht möglich. Ich habe Download-Fritz mal gefragt was da so machbar ist, er wird sich mal bei vit erkundigen. Entweder ein entsprechendes Feature wird eingebaut, oder wir müssen das ganze per SSDT lösen.


    Edit: Das Feature wird nicht eingebaut, da bestimmte OperationRegions hardgecodete Offsets haben können, die beim append verloren gehen... Wieder mal etwas das Clover gekonnt ignoriert...


    Die 2. Lösung würde jetzt so aussehen, dass wir _PTS umbenennen, sodass alle Aufrufe von _PTS erstmal ins Nichts laufen. Gleichzeitig bauen wir eine SSDT-PTS, welche die eingebaute If () Else{ Bedingung beinhaltet und sich um alle Aufrufe von _PTS kümmert, die damit dann durch die gepatchte _PTS SSDT laufen und dann von dieser SSDT (wenn die If () Bedingung nicht eintritt) zum umbenannten _PTS geleitet werden, sodass auch die Funktionalität der alten _PTS Methode nicht verloren geht. Ich werde berichten :)

    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.

    3 Mal editiert, zuletzt von kuckkuck ()

  • derHackfan

    magst du mal diese DSDT ausprobieren? Ist zwar ungefragt, aber ich würde gern wissen ob die läuft. Hab nur etwas aufgeräumt und einige Fixes noch drin (basierend auf deine DSDT #196). Ist experimentell, aber du kannst es ja mal testen …

    Dateien

    • DSDT.aml

      (37,23 kB, 60 Mal heruntergeladen, zuletzt: )

    ASUS PRIME X299-DELUXE i9-9940X • DDR4 64GB • SSD 960 PRO 1TB • Thunderbolt3 Titan Ridge • 2x AMD Radeon RX Vega 64 • BMD Intensity Pro 4K

    ASUS WS X299 SAGE/10G i9-10980XE • DDR4 64GB • SSD 970 PRO 1TB • Thunderbolt3 Titan Ridge • 2x AMD Radeon VII • BMD DeckLink 4K Extreme 12G


    Ordnung ist die primitivste Form von Chaos. (Hans-Jürgen Quadbeck-Seeger)