Geräte Eigenschaften (Device Properties) ohne DSDT Patch ändern.

  • Der Injector modifiziert also die ACPI Tabellen, die geladen werden?


    Wird dabei aktiv die _DSM Methode verändert oder gesetzt? Würde sich die Kext folglich so anpassen lassen, dass sie ebenfalls auch anderen Code als nur die _DSM Methode setzt, eine Methode _INI zum Beispiel?

    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.

  • Nein, der Injector verändert die ACPI-Tabellen nicht, er ändert nur die Properties in der IORegistry.
    Deshalb kann man mit dem Injector keine ACPI Tabelleneinträge und somit auch keine ACPI Methoden ändern.


    Die Annahme, dass Kexte mit ACPI Tabellen und Werten arbeiten ist in den meisten Fällen falsch.
    Mit Ausnahme der AppleACPIIrgendetwas Treiber, verwenden Treiber normalerweise keine ACPI Tabellen oder deren Werte.
    AppleACPIIrgendetwas Treiber kopieren die für sie relevanten Werte aus den ACPI Tabellen und speichern sie in der IORegistry und mit diesen Werten arbeiten dann die anderen Treiber, weshalb der Injector funktioniert ohne die ACPI Tabellen anzufassen. Ob die Werte aus einer ACPI Tabelle oder einem Zufallsgenerator stammen ist den Treibern völlig egal.


    Natürlich muss die Änderung der Properties abgeschlossen werden bevor sie verwendet werden. Da die Injection nach dem Start(aus Treiber-Sicht) des Gerätes erfolgt, kann die Änderung für bestimmte Operationen zu spät erfolgen.


    Das klingt schlimmer als es ist, da im Gegensatz zur landläufigen Vorstellung ein physikalisches Gerät wie eine Graphikkarte aus Systemsicht aus mehreren Geräten und Services (Treiber) besteht und bis z.B. der Framebuffer der Grafikkarte initialisiert wird, hatte der Injector schon Gelegenheit die nötigen Werte zu ändern.


    Davon abgesehen sind Werte, die die Initialisierung nicht beeinflussen, wie Slot-name, model etc., völlig unkritisch und können jederzeit geändert werden. Da sie jedesmal neu gelesen werden.


    Es gibt immer mal wieder ein Kext, das nicht die IORegistry benutzt, sondern die Werte anders bestimmt, da funktioniert der Injector nicht. Dass passiert auch Clover manchmal, dann funktioniert z.B. das Setzen einer FakeId durch Clover nicht und muss durch FakePCIID erfolgen.

  • Top, vielen Dank für die Erklärung :thumbup:

    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.

  • Hey,
    habe jetzt mal das Kext auf meine Bedürfnisse angepasst. Funktioniert soweit super.
    Eine Frage habe ich jedoch, ich kann mit XCode model und AAPL,slot-name nicht anpassen. Sobald ich es editiere kommt eine Fehlermeldung (siehe Screenshot).
    Die IOPCIPrimaryMatch ließ eine Editierung ohne Probleme zu. Was mache ich falsch?


    Danke schon mal für evtl Hilfe


    Grüße aus Augsburg

    Bilder

    System:
    Handmade
    Maindboard GB Z370 Aorus Gaming 7 Bios Latest (SMBios iMac19.1)
    CPU Coffee Lake i8700k
    Graka Powercolor Vega 56 (Watercool)
    Wasserkühlung Alphacool Eisbär 240
    Monitor Dell U3417W

    10gbit Nic Asus XC 100 C

    2 x 8 GB DDR 4 2400
    1 x NVME Big Sur
    1 x 1TB GB Datenplatte
    1 x 3 TB WD Green (TimeMachine Platte)
    Bootloader Open Core 0.67


    Unraid 6.9.1 Server im Keller

    Fujitsu Board D-3644-B mit C246 Chipsatz

    Xeon 2126g

    2x 16 GB nonBuf DDR4 ECC Ram Samsung

    1x Intel X550 10gbit NIc (Supermicro Karte)

    1x e1000 Intel NIc 1gbit Onboard

    3x 10 TB IronWolf (Array)

    2x 1 TB NVME (Cache)

    1x 250 GB SSD VM Xpenology für Surveillance Station

    1x 250 GB SSD VM Win10 Pro (Arbeitsrechner für Frau per RDP)

  • Das sollte funktionieren: Typ von "Data" auf "String" umstellen, Text eintippen, danach wieder auf "Data" zurückstellen.

  • @Harper Lewis


    Danke das wars.


    @Brumbaer


    Nochmal vielen lieben Dank. Wenn jetzt in Bayern wärst, würd ich ein Bier springen lassen (aber keine Berliner Weiße :-)


    Grüße aus Augsburg

    System:
    Handmade
    Maindboard GB Z370 Aorus Gaming 7 Bios Latest (SMBios iMac19.1)
    CPU Coffee Lake i8700k
    Graka Powercolor Vega 56 (Watercool)
    Wasserkühlung Alphacool Eisbär 240
    Monitor Dell U3417W

    10gbit Nic Asus XC 100 C

    2 x 8 GB DDR 4 2400
    1 x NVME Big Sur
    1 x 1TB GB Datenplatte
    1 x 3 TB WD Green (TimeMachine Platte)
    Bootloader Open Core 0.67


    Unraid 6.9.1 Server im Keller

    Fujitsu Board D-3644-B mit C246 Chipsatz

    Xeon 2126g

    2x 16 GB nonBuf DDR4 ECC Ram Samsung

    1x Intel X550 10gbit NIc (Supermicro Karte)

    1x e1000 Intel NIc 1gbit Onboard

    3x 10 TB IronWolf (Array)

    2x 1 TB NVME (Cache)

    1x 250 GB SSD VM Xpenology für Surveillance Station

    1x 250 GB SSD VM Win10 Pro (Arbeitsrechner für Frau per RDP)

  • @Harper Lewis :danke: für den tipp. an dem fehler hab ich auch schon diverse male festgehangen

    ersthilfe vor ort für altes zeugs (-> laptops) 8)

    berliner häckinTosh.stammTisch am 3.monatsmittwoch im maxFish/kunsthaus ACUD

    der stammtisch in berlin ist WIEDER DA!! nächster termin voraussichtlich: mittwoch 15.9.21, 19.00 uhr

  • Wahnsinn. Das wird mein Blackscreen Problem in 10.13.xx lösen. Das weiß ich.
    Aber ich bleibe bei 10.12.6. Bis ich einen Monitor besitze, der HDMI Audio ausgibt

  • Version 1.1


    Der NVidia Grafikkarten Treiber verwendet auch das model Property um den Namen der Karte zu setzen.
    Der Name wird allerdings nicht vom IOPCIDevice-Service eingetragen, sondern der Controller Treiber ändert das Property des IOPCIDevice-Service.
    Der Controller Treiber macht das genauso, wie das PropertyInjector Kext. Dummerweise macht der Controller Treiber das nach dem PropertyInjector Kext. Also egal was wir in das model Property schreiben, der Controller Treiber überschreibt es.
    Deshalb gibt es eine neue Option in Form einer Eigenschaft namens Delay für das IOKitProperty, das nach ein paar Sekunden die Properties einfach nochmal setzt.
    Boah Ey das klingt kompliziert.
    Ok, erst mal sehen wohin das Property Delay gehört.
    In den IOKitProperties des (Info.plist Files des) Kextes sind die Geräte(Services) gelistet für die Properties geändert werden sollen. Die Eigenschaft Delay soll für jedes Gerät einzeln gesetzt werden können. Es muss also in den Einträgen der Geräte deren Eigenschaften nochmal geändert werden sollen stehen.
    Langer Satz deshalb ein Beispiel:



    Man sieht nur der Eintrag NVidia (für die Grafikkarte) enthält einen Delay Eintrag.
    Der Eintrag ist vom Typ Number und gibt die Anzahl Sekunden an nach der die Properties noch einmal geschrieben werden. In diesem Falle nach 20 Sekunden.
    Es gibt allerdings ein Problem. Um verzögert schreiben zu können muss ein Treiber installiert werden. Um zu vermeiden, dass dieser Treiber einen der anderen Treibern, ersetzt muss er ein IOMatchCategory Property bekommen, das sich von allen IOMatchCategory Properties der anderen Treiber unterscheidet. Man kann z.B. den umgekehrten Namen der eigenen Webseite mit angehängter Kennung verwenden z.B. de.brumbaer.nvidia oder sonst irgendwas, was vermutlich kein anderer verwendet. Der IOMatchCategory Eintrag hat keinen Einfluss auf Einträge ohne Delay Eintrag, weshalb es keine Auswirkungen hat, dass er auch im Eintrag für das LAN Gerät auftaucht.
    Das war's.


    Im IORegistryEditor kann man den PropertyInjector Treiber(Service) dann als Kind des Gerätes sehen. Er enthält neben den Werten für dieses Gerät aus der Info.plist des PropertyInjector Kextes noch ein paar Status Variablen.




    Und zu guter letzt noch das Kext:
    PropertyInjector.kext.zip

  • Hallo, sehr gute Arbeit :thumbsup: , aber ich habe es versucht, aber es funktioniert nicht.
    Können Sie bitte erklären, wie Sie es mit Xcode vorbereiten?
    Vielen Dank :danke2:

    GA-Z87X-UD3H-F9 ROM updated with: Microcodes, VBIOS-EFI-GOP&VBT, OROMS, NVME and ME-Firmware, iMac15,1 SMBIOS in DMI  

    i7-4770 / G-SKILL16 GB DDR3 1600 MHz / GV-R928X3GD / SAMSUNG NVME SSD 256GB / Win10 x64 Pro for Gaming / macOS CATALINA for everything with OpenCore


    :feuerwerk:

  • Guten Abend!


    Ich hätte noch eine Frage bezüglich des Kextes @Brumbaer
    Um folgendes geht es mir dabei:


    Ich habe ein neues Board für welches ich ebenfalls ein Kext erstellt habe, mein Problem ist jedoch das er mal alles korrekt aus dem Kext einließt mit den jeweiligen Slots und mal sind sie doch falsch hinterlegt.
    Kann das eventuell damit zu tun haben wann er das ganze reinlädt?
    Komisch ist wie gesagt das es mal alles genau passt und mal eben nicht...


    Oder hab ich einen bösen Fehler drin ?

  • Passiert das mitten im Betrieb oder liegt jedes mal ein Neustart und/oder ein Sleep/Wake dazwischen ?


    Kannst du mir bitte zwei IORegs schicken
    eine aufgenommen, wenn es funktioniert und
    eine aufgenommen, wenn es nicht funktioniert.

  • Hallo @Brumbaer,
    kann man eigentlich mit dieser Methode auch die Geräteeigenschaften eines I2C Trackpads ändern?
    Es geht um ein ELAN 1200 Trackpad.
    Da der VoodooI2C Kext mein Trackpad nicht ladet kann würde ich gerne den Hexadecimal APIC pin Wert von aktuell HEX 0x55 = DEC 85 ändern auf eine Wert unter HEX 0x2F.


    Code
    1. VoodooGPIOSunrisePointLP:: pin 85 cannot be used as IRQ


    Keine Ahnung ob das mit dieser Methode überhaut geht. ?(
    Danke dir schon mal im Voraus für deine Mühe und diesen Thread.


    Gruß Michael.


    PS: es geht um den gpioPin > 0x55


  • @Brumbaer : Da lag immer ein Reboot dazwischen, komischerweise funktioniert es mittlerweile wie es soll.
    Keine Ahnung was da genau los war... Jedenfalls wurde nichts danach verändert...

  • Hallo <a href="https://www.hackintosh-forum.de/index.php/User/36356-Brumbaer/">@Brumbaer</a>,
    kann man eigentlich mit dieser Methode auch die Geräteeigenschaften eines I2C Trackpads ändern?
    Es geht um ein ELAN 1200 Trackpad.
    Da der VoodooI2C Kext mein Trackpad nicht ladet kann würde ich gerne den Hexadecimal APIC pin Wert von…


    Ändern solltest du den Wert können, aber ob die Änderung rechtzeitig erfolgt um Wirkung zu zeigen, musst du ausprobieren.
    Kommt der Wert schon in einem Gerät weiter oben in der Hierarchie vor, oder taucht er hier zum ersten Mal auf ?
    Falls er schon früher auftaucht solltest du ihn dort ändern und schauen ob die Änderung durchgereicht wird.

  • Hallo @Brumbaer,
    ich wollte dir mal zurückmelden das ich den PropertyInjector.kext inzwischen auf meinen Zenbook und dem G4 Rechner nutze.
    Mir ist jetzt erst klar geworden was der größte Voreil dieses Kextes ist. Dadurch das durch den Kext direkt das Gerät über die Device und Vendor ID angesprochen wird funktionieren damit eingerichtete Geräte unabhängig von jeglichen DSDT, SSDT und Clover Patches.


    Benötigt der Kext irgendwann ein Update oder ist es so das wenn er einmal funktioniert immer funktionieren wird? Meine Frage ist bezogen auf den Quellcode des Kextes und zukünftige OSX Versionen.


    Nochmals danke für das erstellen des Kextes. :thumbsup:


    PS: Unter Mojave funktionier der Kext bis jetzt auch bestens.

  • Die Frage ist schwer zu beantworten.


    Ohne grundlegende Änderungen an der Geräteverwaltung ist nicht mit der Notwendigkeit eines Updates auf Grund des Funktionsprinzipes zu rechnen.
    Solange eine 10 am Anfang der OS Version steht ist eine Änderung sehr unwahrscheinlich.


    Da Apple die „Security Schraube“ stetig anzieht mag es dazu kommen, dass der Einsatz von Third Party Kexten erschwert wird, was ein Update erforderlich machen könnte.
    Ob das passiert und ob es eine Hintertür geben wird steht in den Sternen.

  • Dann warten wir mal was passiert.
    Diese Art mit dem Kext ist jedenfalls eine sehr coole und effiziente Art Geräte anzusprechen und zusätzliche Eigenschaften einzuspielen.


    :danke:

  • Ist der Kext immer auf die Hardware bezogen oder generell für alle nutzbar?

    Aktuelle Baustelle: Gigabyte H270 Gaming 3, i7-7700K, RX580 8GB, 16GB DDR4, ALC1220, WIfi AR9287, OSX 10.15, Clover r5103

    Gigabyte Z77-DS3H, Bios: F11a Ozmosis [Rev 1.1], i7-2600K, GT710, 8GB DDR3, 240GB SSD, OSX 10.12.6 & 10.13.5, Wlan: TP-WDN4800
    Asus P8Z77-M, i7-3770, 10GB DDR3-1333, 240GB SSD, OSX 10.12.6, iMac 14.2, Ozmosis
    Dell 7570, i7-8550U, UHD620, 16GB DDR4, ALC295, DW1830, 240GB SSD, 10.12.6 & Mojave PB2, Clover r4586

    Lenovo Ideapad 500s-14isk, i5-6200U, 16GB DDR3,ALC236, DW1560 (BCM94352z), OSX 10.15 Beta, Clover r4972

    Lenovo L540, i5-4300M, 8GB DDR3, ALC3202, DW1560 (BCM94352z), OSX 10.15. Beta, Clover r4972


    XPEnology DS918+ Intel i5 6400 4x2,7GHz, 8GB DDR5, 4x3TB mit Jun 1.02b + DSM 6.1.7

  • Der Kext ist bezogen auf die Vendor und Device ID des Gerätes und funktioniert dann mit gleichen ID's.