Wie funktioniert es eigentlich? - Beispiel AppleHDA Patch

  • Moinsen! Bin erst vor kurzer Zeit auf das Thema »Hackintosh« gestoßen und habe nun einen installiert, mit ML 10.8.4, den beiden Tony-Biestern, auf GA-B75M-D3P und i3 3225 mit HD4000. Funzt im großen und ganzen sehr schön!


    Ich würde aber gerne genauer verstehen, wie die im Betreff genannten Teile [Korrektur: die verschiedenen Teile wie BIOS/ACPI/DSDT, EFI-Schnittstelle, Bootloader, Kernel und Kexte sowie deren Modifikationen] zusammenspielen, um die apfelfremde Hardware anzubinden. In den meisten Foren geht es ja um schrittweise Anleitungen, à la: mach dies das und jenes, dann sollte es funzen. Aber wenn man prinzipiell ein paar Kenntnisse von Rechnern und vom Programmieren hat und es genauer verstehen möchte? Oder ist das hier off-topic? (Und wo könnte man dann danach fragen?)


    Mal eine erste beliebige Frage, oder Bitte um Erläuterung, irgendwo muß man ja anfangen, zu AppleHDA und einer älteren Seite in eurem Wiki.


    http://hackintosh-forum.de/wiki/index.php/AppleHDA


    Ich schreib mal, wie ich es verstanden habe.


    Da geht es um Realtek Audio Codecs. Davon gibt es viele verschiedene. Auf den meisten PC Platinen findet man einen. Und auch auf den Macs. Aber Apple verbaut nur bestimmte und nicht die ganze Realtek Palette. Der Mac Realtek Treiber prüft nun, ob der erwartete Chip da ist, nämlich ALC885 oder AD1988B. Und dann wird der Chip entsprechend angesteuert. Dazu wird wahrscheinlich der Treiber konfiguriert.


    Hab noch nie einen Treiber von innen angeschaut, aber ich schätze, die Hardware wird nicht jedesmal komplett neu erfunden, sondern als Modifikation oder Verbesserung eines Vorgängermodells, und so muß auch der Treiber nicht neu geschrieben, sondern nur angepaßt werden und andere Parameter zur Konfiguration erhalten. Wissen tu ich das aber nicht.


    Also, wenn das so stimmt, dann muß für einen von Apple nicht verbauten Realtek Codec vielleicht nur der Code angepaßt werden, welcher den Treiber konfiguriert, weil der Treiber selber den Codec durchaus unterstützen würde, wenn man es ihm sagt. Und da reicht es vielleicht, die Binärdatei zu patchen (hier im Beispiel mit dem perl-Interpreter), so daß anstelle der Gerätenummer für den von Apple verbauten Chip die des im jeweiligen PC vorhandenen Chips gesetzt wird.


    Was anderes als die Binärdatei hat man auch gar nicht, weil der Quelltext von AppleHDA soweit ich weiß nicht offen liegt. Also muß man sich wohl durch Dekompilieren oder so ähnlich ein Verständnis zusammentüfteln?


    Und dann braucht man noch die Parameter für den Treiber. Die sind wohl in den XML-Dateien. Viele Parameter.


    Zusammenfassend also: Der Treiber im Mac OS X taugt für viele Realtek Codecs, man muß ihn nur richtig einstellen. Dafür patcht man den Code, der diese Einstellung vornimmt. Man sagt ihm, daß er Chip XYZ anstelle des von Apple verbauten ALC885 akzeptieren soll, und man gibt ihm die Parameter für Chip XYZ. Und dann funzt es.


    Ist das so richtig? Oder wie funktioniert es? Danke fürs Lesen, wers bis hier geschafft hat. :)

    Core i3-3225 (HD 4000) auf GA-B75M-D3P

    Einmal editiert, zuletzt von Heidschnucke ()

  • Teilweise stimmt das so. Da hilft es die IDS des Treibers in der Info.plist einzutragen. So dass die Hardware erkannt wird.




    Gesendet vom iPhone via
    Tapatalk

    Mac Pro 1.1 unter El Capitan
    :keinwindows:

  • Wie Ukeman schon ganz richtig sagt, teilweise stimmt das so. Es gibt Hardwarekomponenten, die grundsätzlich der gleichen Geräteklasse und der gleichen revision angehören wie die von Apple selbst verbaute Hardware, hier reicht es dann wirklich die device und vendor ID´s in die jeweiligen plist Dateien einzutragen und schon läuft es (Funktioniert oft bei bluetooth Modulen, aber auch bei Grafikkarten etc.).


    Soweit so gut nur leider funktioniert das bei der Audio Hardware auf eine so banale und einfach Weise nicht. Du hast in einem Recht, die Treiber selbst sind mehr oder weniger universell sprich wenn ein Realtek DSP Chip auf dem Board steckt lässt er sich in der Regel unabhängig vom verwendeten Codec auch ansprechen, hierfür sorgen nicht zu letzt auch einige Standards die unabhängig von der verbauten Hardware zumindest Stereo Sound ausgeben können sollten. Der AC97 Codec ist ein Beispiel für einen solchen Standard den alle Soundchips beherrschen können sollten. Lässt man jetzt mal Apple als Betriebssystem Lieferant aussen vor trifft das mit dem AC97 Codec für alle anderen gängigen Betriebssysteme auch zu. Sowohl Windows als auch Linux schaffen es der Hardware mit dem generischen AC97 Treibern sound zu entlocken, Apple hingegen unterstützt den Standard nicht, warum auch denn schließlich ist ja genau bekannt welche Codecs in MAC´s zum Einsatz kommen. Um auf Deine Grundsätzliche Frage zurück zu kommen lautet die Antwort prinzipiell ja es ist möglich die AppleHDA entsprechend zu patchen, es gibt zu diesem Zweck sogar ein Tool, dass die Binärpatches generiert und die AppleHDA entsprechend patched allerdings ist das alles andere als trivial und setzt eine Menge Detailwissen über den Aufbau von AudioCodecs, PinConfigs und so weiter voraus. Zudem schadet es in diesem Zusammenhang auch nicht sich mit der Linux Shell auszukennen, denn der Codec und die PinConfig müssen aus einem laufenden Linux extrahiert werden, dass den SoundCodec vollständig unterstützt.


    Ich selber habe mir an der Thematik die Zähne ausgebissen und es schließlich aufgegeben und zur VoodooHDA gegriffen. In Kombination mit dem ApplHDADisabler und dem Preference Loader eine ziemlich stressfreie Methode, die gegenüber der originalen AppleHDA inzwischen auch keine Nachteile mehr hat.

  • Danke für eure Antworten. Daß es nicht trivial ist, sieht man auch an der Menge der Parameter im XML. Nur der Patch der MacOS/AppleHDA ist trivial, einfach ID ersetzen und gut. Der Rest ist Konfig. Daher mein Schluß, daß der Treiber dahinter generisch sein muß. Würd ich ja als Hersteller auch so machen. Daß ich nicht zwanzig verschiedene Treiber pflegen muß, wenn ich alles mit einem erschlagen kann.


    Mit Linux, Shell, Perl etc kenne ich mich übrigens aus. Aber nicht mit Treibern. Ich will auch nicht selber an den Treibern herumhacken, sondern nur den Zusammenhang besser verstehen.


    Werde nun mal nach VoodooHDA und AppleHDADisabler schauen, über die du die Gemeinde ja auch schon aufgeklärt hast … :)


    Was genau bedeutet bei Audio Chips eigentlich »Codec«? Ich kenne das Wort von Audio oder Video Codecs wie LAME (MP3) ODER x264 (H.264). Da ist es eine Software zur De/Kompression der A/V Daten. Ist es bei Soundkarten synonym mit »Chip«? Oder ist es eine Firmware im Chip? Oder einfach die Wandlung A/D und D/A, also analog nach PCM und PCM nach analog?

    Core i3-3225 (HD 4000) auf GA-B75M-D3P

  • griven

    Hat das Label Erledigt hinzugefügt