AppleHDA für AD1984 (Laptop Codec für die T6X, R6X Serie von Lenovo und andere Laptops mit dem selben Codec)

  • Mit der freundlichen Unterstützung von @MacPeet von http://root86.com haben wir in den letzten Wochen an einem Weg gearbeitet die VoodooHDA auf dem T6X, R6X und anderen Laptops mit dem AD1984 Codec los zu werden und gegen eine gepachte AppleHDA zu ersetzen. Die Vorteile dieser Lösung liegen auf der Hand denn zum einen fällt ein weiterer externer Kext weg was nur gut ist und zum anderen braucht sich auf die Weise auch niemand mehr Gedanken um das VoodooHDA Prefpane und/oder den Settingsloader machen. Die gute Nachricht ist, wir haben eine Lösung gefunden die Funktioniert und sogar Updates überdauert, die schlechte ist die Lösung hat noch einige Macken mit denen man aber leben kann wenn man weiß wie damit umzugehen ist...


    Um in den Genuss des AppleHDA Sounds zu kommen müsst Ihr zunächst alles was mit VoodooHDA zu tun hat vom Rechner entfernen. Hierzu einfach aus dem Verzeichnis /System/Library/Extensions die VoodooHDA.kext sowie einen eventuell vorhandenen AppleHDADisabler.kext entfernen. Zudem bitte auch, falls vorhanden aus allen /EFI/Clover/Kexts Verzeichnissen entfernen. Damit das Ganze nun funktioniert müssen wir als nächstes die DSDT anpassen so, dass unser Audio Device auf die LayoutID3 verweist. Hierzu einfach den passenden Patch herunterladen HDEF_Patch.txt und dann die DSDT auf der EFI Partition aus dem Ordner /EFI/CLOVER/ACPI/patched mit macIASL öffnen und den Patch laden.

    und anschließend anwenden. Wer von Euch auf dem T61 eh meine gepachte DSDT aus der Signatur einsetzt kann sich hier dsdt.aml auch einfach die schon vorbereitete Version herunter laden und diese entsprechend einsetzen. Nachdem nun alles erledigt ist geht es an die eigentliche Installation der AppleHDA und der nötigen Support Files. Alles dazu nötige findet Ihr hier T61_AppleHDA.zip. Die im Archiv enthaltene AppleHDA wird einfach mit dem KextUtility installiert, die realtekALC.kext kommt in das Verzeichnis /EFI/Clover/Kexts/others auf der EFI Partition und das war es auch schon. Nach dem obligatorischen Neustart sollte Euch nun der Sound über die AppleHDA zur Verfügung stehen :D


    Einschränkungen: Es ist uns beim AD1984 Codec bislang nicht gelungen den Switchmode korrekt zu aktivieren sprich im Status Quo gibt diese Lösung den Sound sowohl intern als auch Extern über die Internen Lautsprecher aus. Ein Anstecken eines Klinke Kabels an den LineOut (links oder Doking Station) gibt den Sound auf dem externen Gerät aus und schaltet die internen Speaker stumm allerdings bleibt der Ausgang auf den Internen Speaker. Bitte stellt in den SystemEinstellungen den Ausgang nicht auf HeadPhone um denn das funktioniert nicht. Weiterhin funktioniert das interne Mikro vom T61 allerdings ist der Anschluss (links oder Dock) als LineIn definiert sprich hier funktioniert ein Mikro ohne Vorverstärker nicht wirklich...


    Nun denn viel Spaß damit und lasst uns wissen ob es bei Euch auch funktioniert :D

  • Schön, dass sich jemand um diesen alten Codec kümmert. Ich hab selbst einen AD1984A (Elitebook 8530w inkl. Dock) und hatte
    mir vor einiger Zeit mal die Datenblätter der Codecs 1984, 1984A, 1984B angesehen, weil es mir genau um jenen Switch Mode
    ging (die drei Codecs sind nahezu identisch).
    Nachdem ich mich zunächst mit der VoodooHDA arrangiert hatte, hab ich vor einiger Zeit die ApplaHDA von MacPeet für
    den Dell Optiplex installiert, die auf meiner Maschine mit Einschränkungen funktioniert (der Optiplex hat halt keine internen
    Lautsprecher etc.)


    Was nach meinem Verständnis bei Deiner AppleHDA problematisch ist, sind die PathMaps. Diese lauten bei Dir:
    9-13-20-2
    8-12-21
    18-10-4
    17-7-34-4
    27-2


    Meines Wissens müssen die Pfade (genauer: Pfadgruppen, s.u.) disjunkt sein; jeder Knoten (Node) darf nur in einem Pfad
    auftauchen, es sei denn, die Pfade sind im Switch Mode konfiguriert (das ist hier aber nicht der Fall). Hier tauchen die 2
    und die 4 jeweils in zwei Pfaden auf.


    Zum Vergleich: meine Pathmap sieht so aus:
    9-13-20
    8-12-21
    18-10-4 (Line Out (Dock))
    17-7-34-3 (Headphones)
    22-11-15-3 (Internal Speaker),


    wobei die letzten beiden im Switch Mode konfiguriert sind.
    Es kann sein, dass der Pfad oben für das Mikro bei mir nicht stimmt (nie getestet).


    Auszug aus der Platforms.xml:

    Zitat

    PathMap is an array where each element describes a unique
    hardware configuration. The hardware configuration consists
    of an array of path groups. Each path group will instantiate
    a separate IOAudioEngine.
    Each path group consists of an
    array of widget Node ID values that represent the signal path
    through the CODEC.


    Ich stell mir das so vor, dass die IOAudioEngines sich gegenseitig die
    Ressourcen wegnehmen, wenn die zugehörigen Pfadgruppen nicht
    disjunkt sind. Im Switch Mode hingegen definiert man eine Pfadgruppe,
    die zwei Pfade enthält.

  • Nun muss ich doch mal hier meinen Senf dazu geben.


    Zitat: Codecs 1984, 1984A, 1984B (die drei Codecs sind nahezu identisch)


    Sie sind dennoch um einiges unterschiedlich.


    Betreffs des Switch Mode und der Nodes (insbesondere 3 und 4) hast Du im Prinzip recht, ist auch alles bekannt, jedoch eben doch nicht immer so einfach. Wir hatten wohl mehr als 40 verschiedene PathMaps getestet in allen Variationen. Ergebnis war immer, dass das Stecken vom HP im Switch Mode nicht erkannt wurde oder eben HP nur für 30 Sekunden funktionierte.
    Für mich ohnehin etwas schwer mit den Test´s, da ich den T61 nicht selbst besitze.
    Der Ansatz von Dir ist aber gut und da die PinConfig im realtekALC.kext ja steht kann ja jeder T61-User selbst noch an den PathMaps experimentieren. Vielleicht gibt´s ja noch eine Variation die uns damals entgangen ist beim Testen.


    <offtopic>
    betreffs AD1984A:
    Die PinConfig für den Optiplex hat sehr wohl einen Node für den internen Speaker, jedoch habe ich den bei der Desktopvariante rausgenommen, da er ohnehin nur auf einem Mono-Node endet und keinen Sinn macht.
    Wenn Du diesen nun auf einem Laptop verwendest, könntest Du ihn zur PinConfig hinzufügen, allerdings wird es dann auf Deinem Gerät auch Stereo-Nodes geben, welche Du nur mit einem codec_dump via Linux abzufragen brauchst.

    </offtopic>

    Medion P9614: C2D 2,8GHz 8GB DDR3 GT330M 512GB FullHD intern BCM WLAN/BT SSD 512GB + 512GB + 1TB macOS Catalina / Win10pro 8)

    Real: MacMini M1: 8GB 32" LG 4k SSD 250GB + 1TB nvme USB-C + 1TB thunderbolt nvme macOS 14.4.1

    MacBook Air M2 15": 8GB SSD 512GB macOS 14.4.1

    MacMini2014: i5 2,8GHz 16GB DDR3 Intel Iris 5100 23" Apple-Cinema 1TB NVMe / 1TB HDD macOS 13.6.6

    iPhoneSE 3.Gen 128GB: iOS 17.4.1 iPad Pro 9,7" WiFi 32GB: iPadOS 16.7.7 MacPro3,1 macOS 13.6.4 / 14.4

  • Zitat

    Sie sind dennoch um einiges unterschiedlich.


    Welche Unterschiede meinst Du? Meines Wissens hat der 1984 gegenüber dem 1984A zwei digitale Mikrofoneingänge mehr,
    und der 1984B hat gegenüber dem 1984A einen zusätzlichen, zweiten S/PDIF-Ausgang. Der gemeinsame Nenner dieser
    drei Codecs ist also der 1984A, und wenn man sich zunächst auf dessen Features beschränkt, so verhalten sich die drei Codecs
    gleich, denke ich. Ist mir hier etwas entgangen?


    Relevante Unterschiede können sich aber daraus ergeben, dass unterschiedliche Boardhersteller die Codecs unterschiedlich
    verdrahten. Wie aus der obigen Pathmap zu erkennen, ist beim 8530w an Knoten 22 (0x16) der interne Lautsprecher
    angeschlossen (dasselbe spuckt mir natürlich auch der Codec-Dump unter Linux aus). Diese Verdrahtung ist vom Codec-Hersteller
    zwar nicht zwingend vorgegeben, aber doch empfohlen (das 8530w hat Stereo-Lautsprecher). Es ist durchaus möglich, dass bei einem
    Laptop mit nur einem Lautsprecher dieser an Knoten 19 hängt; ich weiss nicht, wie das beim T61 ist.


    Zitat

    Die PinConfig für den Optiplex hat sehr wohl einen Node für den internen Speaker, jedoch habe ich den bei der Desktopvariante rausgenommen, da er ohnehin nur auf einem Mono-Node endet und keinen Sinn macht.


    Das ist ja auch vernünftig so. Man darf wohl annehmen, dass der Knoten im Optiplex gar nicht verdrahtet ist (ebenso in meinem Laptop),
    und wenn dem in der Tat so sein sollte, dann würde ich auch die Ausgabe des Linuxdumps für diesen Knoten in Frage stellen.


    Zitat

    Ergebnis war immer, dass das Stecken vom HP im Switch Mode nicht erkannt wurde ...


    Ich hab Zweifel, dass man das anhand der Pathmap beeinflussen kann, oder ob das nicht durch
    die Hardware vorgegeben ist. Dazu müsste man wohl besser verstehen, wie EAPD funktioniert und was man
    bzgl. EAPD überhaupt konfigurieren kann.


    Zitat

    ...oder eben HP nur für 30 Sekunden funktionierte


    Solche Artefakte kenne ich natürlich auch. Sie sind allesamt verschwunden, nachdem ich obige Regel
    (Pfadgruppen müssen disjunkt sein) befolgt habe.

    Einmal editiert, zuletzt von TheBorg ()

  • Vielleicht habe ich mich zu sehr an Deinem "nahezu identisch" gestört. Natürlich sind hierbei die Nodes anscheinlich gleich, aber auch diese können variieren, wie Du ja selbst erkannt hast und was auch bei Deinem Hersteller mit dem Node22 und der dazugehörigen Kette eben so ist.
    Da hier auch User mitlesen, die sich damit nicht ganz so gut auskennen, kann diese Aussage halt auch verwirren. Natürlich unterscheiden sich diese schon in der Device, somit wird eine HDA für AD1984 nie auf einem AD1984A laufen oder umgekehrt. Auch kann es sein, dass ein anderer Hersteller andere Nodes verwendet.


    Nur mal zum Vergleich, ich habe zwei Rechner von Medion, mit dem anscheinlich gängigen Chipsatz 888. Hier läuft aber nicht eine der gängig gepatchten HDA´s, die man so findet. In dem Fall wurden ganz andere Nodes verwendet, nicht nur das, sondern auch noch unterschiedliche bei beiden Geräten trotz gleichem Hersteller.


    Übrigens wenn Du die Speaker bei Dir hinzugefügt hast und diese funktionieren solltest Du den Kext auch für andere bereitstellen, z.B. mit dem Vermerk:
    AD1984A (Laptopvariante Elitebook 8530w)


    Du kannst aber die Sache eben nicht so pauschalisierenden, es lässt sich eben nicht auf jedem Gerät so einfach anwenden.
    Wie ich bereits schrieb, haben wir ja bereits die von Dir beschriebenen Varianten auf dem T61 versucht, beide Anschlüsse im SwitchMode mit dem gleichen End-Node zu betreiben, sowohl mit 4, als auch mit 3. Auch beide unterschiedlich mit 3 und 4 wurde versucht.
    Zum Vergleich benutzte VoodooHDA auch den Node 4 für beide Anschlüsse auf dem T61. Somit hatten wir es natürlich auch so versucht, aber trotzdem wird das Stecken von HP nicht erkannt bzw. kam kein Ton raus. So, wie willst Du ihn dann dazu überreden, wenn die Nodes so gesetzt sind wie von Dir beschrieben. @griven hat ja auch eingangs beschrieben, dass wir eine Lösung mit Macken gefunden haben, die aber so funktioniert.


    Ist eben von Hersteller zu Hersteller nicht so ganz gleich zu händeln. Auch bei vielen Desktoprechnern ist es sehr unterschiedlich, bei manchen klappt der Switch zwischen LineOut (back) und HP (front). Der Optiplex z.B. tut sich damit auch schwer. Bei anderen Rechnern klappt es halt wieder.


    Natürlich hatten wir auch den EAPDFix.kext benutzt, getestet, etc., wobei EAPD im codec_dump ja angegeben ist und hierbei kann man ja nicht so ganz viel falsch machen. Meist liegt EAPD auf den Speakern oder auf dem HP, in seltenen neueren Chipsätzen sogar auf beiden.

    Medion P9614: C2D 2,8GHz 8GB DDR3 GT330M 512GB FullHD intern BCM WLAN/BT SSD 512GB + 512GB + 1TB macOS Catalina / Win10pro 8)

    Real: MacMini M1: 8GB 32" LG 4k SSD 250GB + 1TB nvme USB-C + 1TB thunderbolt nvme macOS 14.4.1

    MacBook Air M2 15": 8GB SSD 512GB macOS 14.4.1

    MacMini2014: i5 2,8GHz 16GB DDR3 Intel Iris 5100 23" Apple-Cinema 1TB NVMe / 1TB HDD macOS 13.6.6

    iPhoneSE 3.Gen 128GB: iOS 17.4.1 iPad Pro 9,7" WiFi 32GB: iPadOS 16.7.7 MacPro3,1 macOS 13.6.4 / 14.4

    4 Mal editiert, zuletzt von MacPeet ()

  • Hallo @MacPeet


    dieses bundle hat bislang wunderbar mit el capitan gearbeitet auf meinem T61...
    Wenn ich mich nicht irre sogar bei den ersten betas...


    Werde parallel aufjedenfall mal ne cleaninstall probieren... Aber vill hast du ja auch vorab schon eine idee :)

    Gruß CrusadeGT


  • Sorry, dass ich erst jetzt antworte, ich bin nicht so ganz oft hier angemeldet, dabei entgeht mir schon mal etwas.


    Jupp, in den Sierra-Beta´s lief dieses Paket ganz sicher noch, nur leider hat Apple mit der GM wieder einen Riegel vorgeschoben der das Laden von älteren HDA´s verhindert.
    Die Lösung ist aber ganz einfach. Es müssen nur die beiden Dateien "layout3.zml.zlib" und Platform.zml.zlib" aus der alten HDA (AppleHDA.kext/Contents/Resources/) in die neue originale AppleHDA gelegt werden.
    Zusätzlich muss der Clover Kext-To-Patch "8319D411" in "8A19D411" geändert werden.


    Ich möchte Dir hier jetzt aber kein neues Paket schnüren für on the fly, ferner bitte ich Dich mal folgendes Paket zu testen. Wenn es funktioniert gebe ich den Entwicklern der AppleALC die neue Resource und es wird im nächsten Release online sein.


    Dafür ist folgendes nötig beim Wechsel von on the fly auf AppleALC:
    - vor dem Test: Sicherung aller Dateien der derzeitigen Audiolösung
    - AppleALC installieren nach S/L/E (SIP aus für Installation und Cacheaufbau)
    - originale AppleHDA nach S/L/E
    - Löschen der realtekALC.kext aus Clover´s Kextordner
    - Löschen aller AppleHDA betreffenden Kext-To-Patch-Einträge in Clover´s config.plist
    - Das Ändern der LayoutID von 3 auf 11 (0B in der DSDT), (Das liegt daran, dass die ID´s 1-10 reserviert sind vom Entwickler der AppleALC für gewisse Entwickler, sind etwas eigen die Jungs)


    AppleALC.kext_1.0.17_Testversion_for_IBM_Lenovo_ThinkPad_T61.zip

    Medion P9614: C2D 2,8GHz 8GB DDR3 GT330M 512GB FullHD intern BCM WLAN/BT SSD 512GB + 512GB + 1TB macOS Catalina / Win10pro 8)

    Real: MacMini M1: 8GB 32" LG 4k SSD 250GB + 1TB nvme USB-C + 1TB thunderbolt nvme macOS 14.4.1

    MacBook Air M2 15": 8GB SSD 512GB macOS 14.4.1

    MacMini2014: i5 2,8GHz 16GB DDR3 Intel Iris 5100 23" Apple-Cinema 1TB NVMe / 1TB HDD macOS 13.6.6

    iPhoneSE 3.Gen 128GB: iOS 17.4.1 iPad Pro 9,7" WiFi 32GB: iPadOS 16.7.7 MacPro3,1 macOS 13.6.4 / 14.4

    Einmal editiert, zuletzt von MacPeet ()

  • Das mit dem AppleALC hört sich interessant an. Wir haben es zwar letztlich auch mit der on the fly Methode hinbekommen aber AppleALC wäre natürlich noch eine Spur schicker.
    @CrusadeGT bitte teste das doch mal und gib Feedback ob es funktioniert ich habe ja leider keinen Zugriff mehr auf das T61...


    @MacPeet sorry habe auch vergessen Dir noch mal Feedback zu geben es hat sich etwas hingezogen bis @CrusadeGT es testen konnte und mir Feedback zu der onthefly Lösung mit Sierra gegeben hat. Letztlich hatte ich Honk aber nur vergessen die Plattforms.zlib ebenfalls mit einzubauen so konnte es natürlich dann auch nicht gehen...

  • Werde ich wennn ich morgen dazu komme direkt testen... :)

    Gruß CrusadeGT


  • Kein Thema, @griven, Hauptsache es hat geklappt.


    Ja, diese AppleALC-Lösung wäre langfristig schon die bessere Variante falls Apple nochmals das Laden älterer Pakete verhindert. Da die AppleALC ja mit der jeweils originalen AppleHDA arbeitet ist dies dann halt besser.
    Für meine Rechner ist das Audio (1984A und ALC262) auch schon in die AppleALC aufgenommen worden. Alle Rechner arbeiten prima mit der aktuellen Release1.0.16 und auch inzwischen ohne Flag -alcbeta. KP´s gibt´s mit der neuen Version auch keine mehr. Der Umstieg lohnt sich also.
    Alle T61-User sind hier gefragt das obere Paket einmal zu testen. Hinweise beachten!

    Medion P9614: C2D 2,8GHz 8GB DDR3 GT330M 512GB FullHD intern BCM WLAN/BT SSD 512GB + 512GB + 1TB macOS Catalina / Win10pro 8)

    Real: MacMini M1: 8GB 32" LG 4k SSD 250GB + 1TB nvme USB-C + 1TB thunderbolt nvme macOS 14.4.1

    MacBook Air M2 15": 8GB SSD 512GB macOS 14.4.1

    MacMini2014: i5 2,8GHz 16GB DDR3 Intel Iris 5100 23" Apple-Cinema 1TB NVMe / 1TB HDD macOS 13.6.6

    iPhoneSE 3.Gen 128GB: iOS 17.4.1 iPad Pro 9,7" WiFi 32GB: iPadOS 16.7.7 MacPro3,1 macOS 13.6.4 / 14.4

    Einmal editiert, zuletzt von MacPeet ()

  • Hat jemand zufällig die originale AppleHDA noch parat für mich? :D Wollte mich grad dran machen es zu testen! Sorry für die späte Rückmeldng

    Gruß CrusadeGT


  • Hier wäre eine originale AppleHDA.kext aus der Install 10.12 macOS Sierra. Hast du keinen Installer aufm Rechner? Einfach die IntallESD.dmg mounten, dann die versteckte OSXBaseSystem.dmg und dann in S/L/E die AppleHDA raus holen @Crusade

  • Da hätte ich auch selber drauf kommen können :D
    danke @Fredde2209

    Gruß CrusadeGT


  • Viel interessanter wäre ja jetzt ein Ergebnis aus den Tests :D
    Lass uns mal wissen ob es geht dann kann ich das bei meinem Dad auch umstellen :D

  • Momentan komm ich nicht wirklich weiter :D Versuche grad


    Zitat

    Das Ändern der LayoutID von 3 auf 11 (0B in der DSDT), (Das liegt daran, dass die ID´s 1-10 reserviert sind vom Entwickler der AppleALC für gewisse Entwickler, sind etwas eigen die Jungs)


    aber ich hab null plan wie ich das genau anstelle :D

    Gruß CrusadeGT


  • Naja, du kannst ja den patch für die layout ID 12 nehmen für Laptops. Dort änderst du den wert einfach auf 11 und schon hat sich das :D patch über Kloppen und fertig. Hast du die Datei die du hier im forum mit der neusten Version downloaden kannst drin, sodass du die ganzen patches bereits zur Verfügung hast, oder hast du sie einzeln eingetragen (die Quellen)?

  • Oooch.... ;)
    Öffne die DSDT, suche "Device (HDEF)" und dort "layout-id".
    Das sieht das ungefähr so aus:

    Code
    1. "layout-id",
    2. Buffer (0x04)
    3. {
    4. 0x01, 0x00, 0x00, 0x00
    5. },


    Aus dem "0x01" was der Layout-ID 1 entspricht (Oh wunder), machst du die Layout-ID 11.
    Da der Eintrag aber Hexadezimal sein muss, darfst du dort nur "0x0B" eintragen.
    Das sieht dann so aus:

    Code
    1. "layout-id",
    2. Buffer (0x04)
    3. {
    4. 0x0B, 0x00, 0x00, 0x00
    5. },


    Und hier mal noch eine schnelle Umrechnungstabelle für Dezimal zu Hexadezimal:
    http://www.peterzintl.de/hextab.htm

    Gruß
    Al6042

    Keine Unterstützung per PN oder Pinnwand... Eure Anfragen gehören ins Forum, nicht in mein Postfach!

  • @al6042 Danke für dein Post.. Naja wenn man das nicht alltäglich macht, dann ist das ein wenig ungewohnt :D die layout ID war zuvor auf 0x03 habe diese dann auf 0x0B geändert.


    @griven @MacPeet
    Habe die o.g. Anleitung befolgt.... Sound funzt! Allerdings musste ich auf Headphones umstellen, damit die internen Lautsprecher funktionieren... Allerdings wenn ich Kopfhörer anschließe switcht er passend um und auch wieder zurück also so wie es soll

    Gruß CrusadeGT


  • Nice :D :D

  • Großer Dank geht auf alle Fälle an @MacPeet :)
    @griven du nutzt es jetzt auch auf dem t61? Unter El Capitan oder Sierra?:P

    Gruß CrusadeGT