cparm Posted August 26, 2009 Share Posted August 26, 2009 Commençons par ce dont vous aurez besoins pour débuter: un editeur d'hex tel 0xED Property List Editor (je vous conseille PlistEdit Pro) un dump de votre codec, la méthode la plus simple étant de l'extraire via un livedvd de linux (la distribution la plus récente possible) convert_hex_to_dec.rb, le script de Munky pour le dump de votre codec, démarrer le livedvd de linux, une fois logger, ouvrez une Konsole, et tapez: cat /proc/asound/card0/codec#0 > ~/Desktop/CodecDump.txt si cela ne fonctionne pas, remplacez codec#0 par codec#1 ou codec#2 un fois que le fichier CodecDump.txt apparait sur le bureau, copiez le sur un endroit où vous pourrez le récupérer par la suite, et redémarrer sur OSX 1 patch du fichier binaire En premier lieux vous devez connaitre l'identifiant du codec audio de votre mobo: Pour cela ouvrez alors le fichier CodecDump.txt, et cherchez l'occurrence "Vendor Id" le numéro qui ce trouve a coté est L'identifiant de votre carte, (0x10ec0888 dans mon cas) copiez le fichier /System/Library/Extensions/AppleHDA.kext sur le bureau ouvrez le fichier binaire a l'intérieur de applehda (~/AppleHDA.kext/Content/MacOS/AppleHDA) avec 0xED cherchez 6202EC10 (ce qui correspond a l'Id 0x10ec0262) verifiez que le type de recherche s'effectue bien en hexadecimal et non texte, pour cela, si vous utilisez la zone de recherche de la fenetre principal, changer "Text search" en "Hex search" : si vous utilisez la recherche via Pomme+F, changer le type de recherche de "Text" en "Hex": ensuite, remplacez les tous par le votre, dans mon cas 8808EC10 (qui correspond a mon Id 0x10ec0888) . 2 patcher AppleHDAController Dans cette partie nous allons définir ce que l'on appel le "codecverb" qui va bien avec votre chipset audio: Commencez par dupliquer votre fichier codecdump.txt (une copie de l'original sera utile plus tard), ouvrez ce fichier chercher l'occurrence Addresses au début du fichier, le numéro qui ce trouve a coté est la valeur de l'adresse de votre chipset (notez-le) maintenant nous allons passer aux choses sérieuses, vous avez sans doute remarquez que le mot Node apparait plusieurs fois dans ce fichier, beaucoup nous sont inutile, nous allons donc effacer toutes les Node qui ne nous intéresse pas pour cette partie du tuto, celle qui sont a effacer sont celle qui ne contienne pas l'entré Pin Default exemple sur un extrait de mon codecdump: Node 0x0f [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x80 0x80] Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0 Amp-Out vals: [0x00 0x00] Connection: 2 0x05 0x0b Node 0x10 [UNKNOWN Widget] wcaps 0xf00000: Mono Node 0x11 [UNKNOWN Widget] wcaps 0xf00000: Mono Node 0x12 [UNKNOWN Widget] wcaps 0xf00000: Mono Node 0x13 [UNKNOWN Widget] wcaps 0xf00000: Mono Node 0x14 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x083e: IN OUT HP Detect Trigger Pin Default 0x01014410: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Green DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x20: IN Unsolicited: tag=00, enabled=0 Connection: 5 0x0c* 0x0d 0x0e 0x0f 0x26 nous ne garderons que alors la node 0x14, comme suit: Node 0x14 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x083e: IN OUT HP Detect Trigger Pin Default 0x01014410: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Green DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x20: IN Unsolicited: tag=00, enabled=0 Connection: 5 0x0c* 0x0d 0x0e 0x0f 0x26 mais nous pouvons nettoyer le fichier un peu plus pour nous faciliter encore plus le travail par la suite, dans chacune des node que nous gardons, certaines lignes nous sont inutiles, voici les lignes que je vous conseil de garder (si elles sont présentes) pour chaque node valide: Node 0x14 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Pin Default 0x01014410: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Green une fois nettoyé, votre fichier codecdump.txt doit ressembler a ca : Node 0x14 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Pin Default 0x01014410: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Green Node 0x15 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Pin Default 0x01011412: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Black Node 0x16 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Pin Default 0x01016411: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Orange Node 0x17 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Pin Default 0x01012414: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Grey Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Pin Default 0x01a19c40: [Jack] Mic at Ext Rear Conn = 1/8, Color = Pink Node 0x19 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Pin Default 0x02a19c50: [Jack] Mic at Ext Front Conn = 1/8, Color = Pink Node 0x1a [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Pin Default 0x0181344f: [Jack] Line In at Ext Rear Conn = 1/8, Color = Blue Node 0x1b [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out Pin Default 0x02214c20: [Jack] HP Out at Ext Front Conn = 1/8, Color = Green Node 0x1c [Pin Complex] wcaps 0x400001: Stereo Pin Default 0x593301f0: [N/A] CD at Int ATAPI Conn = ATAPI, Color = Unknown Node 0x1d [Pin Complex] wcaps 0x400000: Mono Pin Default 0x411111f0: [N/A] Speaker at Ext Rear Conn = 1/8, Color = Black Node 0x1e [Pin Complex] wcaps 0x400300: Mono Digital Pin Default 0x014b6130: [Jack] SPDIF Out at Ext Rear Conn = Comb, Color = Orange Node 0x1f [Pin Complex] wcaps 0x400200: Mono Digital Pin Default 0x01cb7160: [Jack] SPDIF In at Ext Rear Conn = Comb, Color = Yellow créons maintenant notre codecverb pour chaque node: Ici, nous allons prendre en exemple la node 0x14: relevez la valeur Pin Default de la node soit 0x01014410, ne retenez que 01014410 pour cette valeur, et inversez cette valeur deux par deux: c'est a dire que 01 01 44 10 donnera 10 44 01 01 et c'est cette suite de chiffres qui nous intéresse un codecverb ce structure comme suit: [adresse][node][71C][premier chiffre] ce qui donnera 21471C10 [adresse][node][71D][deuxieme chiffre] ce qui donnera 21471D44 [adresse][node][71E][troisieme chiffre] ce qui donnera 21471E01 [adresse][node][71F][quatrieme chiffre] ce qui donnera 21471F01 le codecverb complet pour la node 0x14 sera donc: 21471C10 21471D44 21471E01 21471F01 Les plus malins l'auront compris, l'étape d'inversement de la valeur Pin Default n'est pas obligatoire, car on peut très bien inversé la structure du codecverb comme cela: [adresse][node][71C][quatrieme chiffre] [adresse][node][71D][troisieme chiffre] [adresse][node][71E][deuxieme chiffre] [adresse][node][71F][premier chiffre] tout dépend si vous préférez lire de gauche a droite ou de droite a gauche en utilisant la même méthode, j'obtiens mon codecverb complet pour toutes les node: 21471C10 21471D44 21471E01 21471F01 21571C12 21571D14 21571E01 21571F01 21671C11 21671D64 21671E01 21671F01 21771C14 21771D24 21771E01 21771F01 21871C40 21871D9c 21871EA1 21871F01 21971C50 21971D9c 21971EA1 21971F02 21A71C4F 21A71D34 21a71E81 21A71F01 21B71C20 21B71D4c 21B71E21 21B71F02 21B71CF0 21C71D01 21C71E33 21C71F59 21D71CF0 21D71D11 21D71E11 21D71F41 21E71C30 21E71D61 21E71E4B 21E71F01 21F71C60 21F71D71 21F71ECB 21F71F01 Malheureusement ces valeurs ne fonctionneront pas telle quelle, il nous faudra alors les modifier, mais avant cela il nous faut comprendre a quoi elles correspondent. Prenons le codecverb pour la node 0x14: 21471C10 21471D44 21471E01 21471F01 21471C10 le nombre 1 correspond a une valeur que l'on nome Default association, 0 a Sequence 21471D44 4=Color, 0=Misc 21471E01 0=Default Device, 1=Connection Type 21471F01 0=Port Connectivity, 1=Location quelque règles a savoir: la valeur Default association ne peut égal qu'a 1,2,3,4,5,6 ou f, elle définie la façon dont le système va géré les différents canaux, c'est pour cela qu'une même valeur ne peut être attribué fois, sauf de le cas des entrées/sorties du panneaux frontal, et des entrées/sortie S/PDIF la valeur Sequence doit toujours égal a 0 la valeur Color correspond a la valeur inscrite dans la description de la node, vérifiez qu'elle coïncide avec la couleur du port sur la carte, voici toute les valeurs possibles: Unknown 0 Black 1 Grey 2 Blue 3 Green 4 Red 5 Orange 6 Yellow 7 Purple 8 Pink 9 Reserved A-D White E Other F pour la valeur Misc il est preferable de la laisser telle quelle si elle est egal a 0 ou 1, sinon mettez la a 0 Default Device, indique le type de materiel qui correspond a la node, voici les valeurs possibles: Line Out 0 Speaker 1 HP Out 2 CD 3 SPDIF Out 4 Digital Other Out 5 Modem Line Side 6 Modem Handset Side 7 Line In 8 AUX 9 Mic In A Telephony B SPDIF In C Digital Other In D Reserved E Other F Connection Type, est le type de port qui correspond au materiel, voici les valeurs possibles: Unknown 0 1/8" stereo/mono 1 1/4" stereo/mono 2 ATAPI internal 3 RCA 4 Optical 5 Other Digital 6 Other Analog 7 Multichannel Analog (DIN) 8 XLR/Professional 9 RJ-11 (Modem) A Combination B Other F la valeur Port Connectivity peut rester telle quelle la valeur Location, correspond a l'endroit ou ce trouve le port: 0 pour internal Atapi 1 pour le panneau arriere 2 pour le panneau avant il vous est aussi possible, et meme consseillé de retirer les node dont vous n'avez pas besoin ex: si votre tours ne dispose pas de panneau avant, vous pouvez sans hésitation retirer de votre codecverb les node 0x1B et 0x19, qui correspondent respectivement aux entrées casque et microphone du panneau avant une fois ce travail terminer la forme de votre codecverb devra ressembler a cela : 21471c10 21471d40 21471e01 21471f01 21571c20 21571d10 21571e11 21571f01 21671c30 21671d60 21671e21 21671f01 21a71c40 21a71d30 21a71e81 21a71f01 21871c50 21871d90 21871ea1 21871f01 21e71c60 21e71d61 21e71e4b 21e71f01 21f71cf0 21f71d01 21f71ecb 21f71f00 avant d'aller plus loin nous allons convertir notre Codec Id (ou Vendor Id) de Hex a decimal, pour cela il vous faut ouvrir la calculette de Mac OS X, de la metre en mode "Programmeur" (alt+pomme+3), de choisir le mode Hex, collez ensuite la valeur de votre Codec Id (0x10ec0888 pour moi), et ensuite de basculer en mode décimal, ce qui donne pour moi 283904136 gardez ces deux valeurs (codecverb et Codec Id) bien au chaud vous en aurez besoin plus tard Félicitation car le plus dure est fait !!! nous allons maintenant écrire toutes ces données dans AppleHDA.kext: ouvrez ~/Desktop/AppleHDA.kext/Contents/PlugIns/AppleHDAController.kext/Contents/Info.plist avec PlistEdit Pro, et trouver les valeurs CodecID et ConfigData collez la valeur en décimal de votre Codec Id dans la colonne a droite de CodecID, collez ensuite la valeur de votre codecverb a droite de ConfigData par ailleurs vérifiez que la valeur LayoutID est bien 12, si ce n'est pas le corrigé cela vous pouvez enregistrer et fermer ce fichier 3 Patcher AppleHDAPlatformDriver ouvrez maintenant ~/Desktop/AppleHDA.kext/Contents/PlugIns/AppleHDAPlatformDriver.kext/Contents/Info.plist dans l'Arrey Layout, cherchez L'Items qui a la valeur LayoutID a 12 ne gardez que l'item qui contient la LayoutID a 12, vous pouvez effacer les autre Items, dans l'Arrey PathMapRef ouvrez l'Arrey CodecID, dans la colonne de droite remplacez la valeur présente par la valeur en décimal de votre codecID maintenant dans l'Arrey PathMaps, cherchez l'Items qui contient la valeur PathMapID égal a 9 vous pouvez effacer les autres Items ouvrez ensuite l'Arrey PathMap, en fonction des nodes que vous avez laisser ou supprimez dans votre codecverb nous allons modifier cette partie, vous pouvez voir dans ce schéma a quoi correspond chaque Items, pour définir les valeur nodeID, appliquez le script de Munky, a la copie de l'original de votre CodecDump.txt, comme cela: placer d'abord le fichier convert_hex_to_dec.rb sur le bureau chmod +x ~/Desktop/convert_hex_to_dec.rb ~/Desktop/convert_hex_to_dec.rb ~/Desktop/codecdump.txt > ~/Desktop/ConvertedCodecDump.txt pour découvrir les nodeID du micro arrière par exemple, explorons d'abord la node 9, a la fin en dessous de connection: 1 nous pouvons voir le chiffre 34, allons ensuite a la node 34 et en dessous de connection: 11 le premier chiffre est 24, allons maintenant a la node 24 et a coté de Pin Default on peut lire [Jack] Mic at Ext Rear, donc c'est la bonne les nodeID pour le microphone arrière, seront donc 9-34-24 faisons la même chose pour Line IN, allons a la node 8, en dessous de connection: 1 on voit le chiffre 35, et a la node 35 prenons le 3 eme chifre qui est 26 , a la node 26 on voit [Jack] Line In at Ext Rear a coté de Pin Default les nodeID pour l'entrée Line IN seront 8-35-26 Je l'avoue pour ce qui est des entrées cette methode ressemble un peu a du tatonage, mais pour les sortie c'est beaucoup plus cohérant voyons la sortie verte du panneau arrière qui s'appelle [Jack] Line Out at Ext Rear, une recherche nous montre quelle appartiens a la node 20, en dessous de connection : ..... un chiffre devrait être étoile, logiquement le 12, c'est la deuxième partie de notre nodeID, allons maintenant a la node 12, en dessous de connection : ....., prenez toujours le premier chiffre pour les sorties, c'est a dire 2 Les nodeID pour la sortie Line Out verte seront, 20-12-2 heureusement c'est chiffre semble être commune a toutes les cartes, contrairement au codecverb, vous devriez donc pouvoir utiliser les valeurs suivante: Internal Mic (Frontpanel) 8-35-25 Mic 9-34-24 Line in 8-35-26 Internal Speakers 20-12-2 Headphones 21-13-3 Line Out 22-14-4 Side 23-15-5 Headphones (Frontpanel) 27-38-37 SPDIF IN 10-31 SPDIF OUT 30-6 il vous suffit maintenant d'editer chaque Items avec les bonnes valeur en fonctions des entrée/sortie que vous avez gardé, voila c'est a peu près tout Bonne chance .......... A venir le patch pour snow leopard et leopard 10.5.8, et le patch dsdt pour l'audio ....... 1 Link to comment Share on other sites More sharing options...
Recommended Posts