Mirone Posted January 15, 2014 Share Posted January 15, 2014 Guia de como corrigir a AppleHDA para o seu codec Capítulo 1: Obtendo Informações do Codec. Intro: Este guia é para aqueles que querem usar AppleHDA e / ou tentar aprender como ele funciona. Ele se divide em várias etapas e vamos abordar cada uma delas ao longo do guia. Primeiro Passo: Obtendo informações do codec. Existem outras maneiras mas neste guia vamos explicar como obter pelo Linux. Usando o Ubuntu ou outra distribuição.(obs: Use a versão mais recente do Linux assim como os drivers Alsa) no terminal digite: cat /proc/asound/card0/codec#1 > ~/Desktop/codec_dump.txt ou cat /proc/asound/card0/codec#0 > ~/Desktop/codec_dump.txt ou se preferir Use este script de zhell: cd ~/Desktop && mkdir CodecDump && for c in /proc/asound/card*/codec#*; do f="${c/\/*card/card}"; cat "$c" > CodecDump/${f//\//-}.txt; done && zip -r CodecDump.zip CodecDump Salve-o em um lugar seguro. No OS X, devemos usar o codec_dump para obter uma interface gráfica, convertê-lo para decimal (vou explicar mais tarde por quê), obter os verbos codec dele e corrigi-los para o OS X. Baixe e instale: graphviz (somente versão para Lion) Download CodecGraph: Codegraph , descompactá-lo para desktop, copiar o codec_dump.txt gerado pelo linux para pasta CodeGraph em seguida, digite no termainal: cd ~/Desktop/codecgraphe depois: ./codecgraph codec_dump.txt Segundo Passo: Convertendo CodecGraph e CodecDump de hexadecimal para decimal: Download convert_hex_to_dec.rb.zip http://www.mediafire.com/?1ytbnh0zvfl Créditos a Munky Que o fez.Descompacte-o na mesma pasta usada anteriormente (codecgraph) - No terminal: cd ~/Desktop/codecgraph chmod +x ./convert_hex_to_dec.rb ./convert_hex_to_dec.rb codec_dump.txt.svg > ~/Desktop/codecgraph/codec_dump_dec.txt.svg* substituir "codec_dump.txt" com seu usuário e nome do arquivo codec (se você deu um nome espécifico) ./convert_hex_to_dec.rb codec_dump.txt > ~/Desktop/codecgraph/codec_dump_dec.txt * substituir "codec_dump.txt" com seu usuário e nome do arquivo codec (se você deu um nome espécifico) Terceiro Passo: Por padrão nossa placa de som onboard não é reconhecida pelo OS X então pra que a mesma seja reconhecida devemos adicionar o device HDEF ao nosso DSDT.aml. Pra isso usamos os seguintes patchs: HDEF ou AZAL to HDEF em Ambos o Método DTGP tem que estar presente no nosso DSDT.aml. Devemos usar o DST Editor para aplicar os patchs corretamente http://olarila.com/forum/viewtopic.php?f=7&t=646 Os Patchs vocês encontram aqui http://olarila.com/forum/patches.php Esta é uma injeção de áudio geral e deve funcionar para todos os codecs: Device (HDEF) { Name (_ADR, 0x001B0000) Method (_DSM, 4, NotSerialized) { Store (Package (0x04) { "layout-id", Buffer (0x04) { 0x0C, 0x00, 0x00, 0x00 }, "PinConfigurations", Buffer (Zero) {} }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Method (DTGP, 5, NotSerialized) { If (LEqual (Arg0, Buffer (0x10) { /* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, /* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B })) { If (LEqual (Arg1, One)) { If (LEqual (Arg2, Zero)) { Store (Buffer (One) { 0x03 }, Arg4) Return (One) } If (LEqual (Arg2, One)) { Return (One) } } } Store (Buffer (One) { 0x00 }, Arg4) Return (Zero) } Capítulo 2: Correção de AppleHDA.Kext Para que a AppleHDA Trabalhe corretamente para nosso codec devemos fazer algumas modificações nos plists da mesma. Então quais são estas modificações? Se você olhar para ela (clique com o botão direito do mouse /Mostrar conteúdo do pacote), você vai encontrar na pasta Content do Info.plist principal (não tocá-lo) e uma pasta de plugins. Há os plugins que temos que corrigir, mas não todos apenas Info.plist a partir de um presente: 1-AppleHDAHardwareConfigDriver.kext 2-Platform.xml e layout12.xml ou Layout1.xml (Presentes na Pasta Resources) 3BinPatch AppleHDAHardwareConfigDriver.kext Para editar essa kext precisaremos obter ConfigData/CodecVerbs. Você pode corrigi-los de duas maneiras, manual ou automático usando o script de Signal64 chamado Verbit que realiza todo o processo automaticamente sendo necessário alguns poucos ajustes você pode baixa-lo aqui: verbit Descompacte-o na pasta codecgraph a mesma utilizada anteriormente. em seguida, Rodar este comando no terminal: cd /Users/seu_nome_de_usuário/Desktop/codecgraph e depois: ./Verbit codec_dump.txt> verbs.txt Nota: É necessário excluir do codec_dump.txt a linha: AFG Function Id: 0x1 (unsol 0) Tendo feito isso abra a pasta codecgraph e vai ver dois arquivos um chamado verbs.txt e outro verbitdebug.txt. verbit.texto é o de nosso interesse. Pois nele encontramos nossos ConfigData/CodecVerbs originais encima e os corrigidos embaixo. verbs.txt: Verbs from Linux Codec Dump File: codec_dump.txt Codec: Realtek ALC887-VD Address: 0 DevID: 283904135 (0x10ec0887) Jack Color Description Node PinDefault Original Verbs -------------------------------------------------------------------------------------------------------- ATAPI Unknown SPDIF Out at Int ATAPI 17 0x11 0x99430140 01171c40 01171d01 01171e43 01171f99 1/8 Black Speaker at Ext Rear 18 0x12 0x411111f0 01271cf0 01271d11 01271e11 01271f41 1/8 Green Line Out at Ext Rear 20 0x14 0x01014010 01471c10 01471d40 01471e01 01471f01 1/8 Black Line Out at Ext Rear 21 0x15 0x01011012 01571c12 01571d10 01571e01 01571f01 1/8 Orange Line Out at Ext Rear 22 0x16 0x01016011 01671c11 01671d60 01671e01 01671f01 1/8 Grey Line Out at Ext Rear 23 0x17 0x01012014 01771c14 01771d20 01771e01 01771f01 Mic at Ext Rear 0x18 0x18 27367504 01871c50 01871d98 01871ea1 01871f01 Mic at Ext Front 0x19 0x19 44145760 01971c60 01971d9c 01971ea1 01971f02 1/8 Blue Line In at Ext Rear 26 0x1a 0x0181305f 01a71c5f 01a71d30 01a71e81 01a71f01 HP Out at Ext Front 0x1b 0x1b 35736608 01b71c20 01b71d4c 01b71e21 01b71f02 1/8 Black Speaker at Ext Rear 28 0x1c 0x411111f0 01c71cf0 01c71d11 01c71e11 01c71f41 Optical White Line Out at Ext N/A 29 0x1d 0x4005e601 01d71c01 01d71de6 01d71e05 01d71f40 Optical Orange SPDIF Out at Ext Rear 30 0x1e 0x01456130 01e71c30 01e71d61 01e71e45 01e71f01 1/8 Black Speaker at Ext Rear 31 0x1f 0x411111f0 01f71cf0 01f71d11 01f71e11 01f71f41 -------------------------------------------------------------------------------------------------------- Jack Color Description Node PinDefault Modified Verbs -------------------------------------------------------------------------------------------------------- ATAPI Unknown SPDIF Out at Int ATAPI 17 0x11 0x99430140 01171c40 01171d00 01171e43 01171f90 1/8 Green Line Out at Ext Rear 20 0x14 0x01014010 01471c10 01471d40 01471e01 01471f01 1/8 Black Line Out at Ext Rear 21 0x15 0x01011012 01571c70 01571d10 01571e01 01571f01 1/8 Orange Line Out at Ext Rear 22 0x16 0x01016011 01671c80 01671d60 01671e01 01671f01 1/8 Grey Line Out at Ext Rear 23 0x17 0x01012014 01771c90 01771d20 01771e01 01771f01 Mic at Ext Rear 24 0x18 27367504 01871c50 01871d90 01871ea1 01871f01 Mic at Ext Front 25 0x19 44145760 01971c60 01971d90 01971ea1 01971f01 1/8 Blue Line In at Ext Rear 26 0x1a 0x0181305f 01a71ca0 01a71d30 01a71e81 01a71f01 HP Out at Ext Front 27 0x1b 35736608 01b71c20 01b71d40 01b71e21 01b71f01 Optical White Line Out at Ext N/A 29 0x1d 0x4005e601 01d71cb0 01d71de0 01d71e05 01d71f40 Optical Orange SPDIF Out at Ext Rear 30 0x1e 0x01456130 01e71c30 01e71d60 01e71e45 01e71f01 -------------------------------------------------------------------------------------------------------- verbitdebug.txt: Blacklist: 411111f0 400000f0 CD at Int ATAPI Removed Nodes: 0x12 0x1c 0x1f Checking 71c Associations Current Associations 01171c40 = 4 01471c10 = 1 01571c12 = 1 01671c11 = 1 01771c14 = 1 01871c50 = 5 01971c60 = 6 01a71c5f = 5 01b71c20 = 2 01d71c01 = 1 note: Changed 0 to 1 01e71c30 = 3 Used associations = 4 1 1 1 1 5 6 5 2 1 3 Unused associations = 7 8 9 a b c d e Correcting duplicate associations Checking if 4 already exists in: 1 1 1 1 5 6 5 2 1 3 no duplicate found Checking if 1 already exists in: 4 1 1 1 5 6 5 2 1 3 duplicate found - Is this the first time we've seen this association? yes - ignoring Checking if 1 already exists in: 4 1 1 1 5 6 5 2 1 3 duplicate found - Is this the first time we've seen this association? no - replacing association with: 7 Checking if 1 already exists in: 4 1 7 1 5 6 5 2 1 3 duplicate found - Is this the first time we've seen this association? no - replacing association with: 8 Checking if 1 already exists in: 4 1 7 8 5 6 5 2 1 3 duplicate found - Is this the first time we've seen this association? no - replacing association with: 9 Checking if 5 already exists in: 4 1 7 8 9 6 5 2 1 3 duplicate found - Is this the first time we've seen this association? yes - ignoring Checking if 6 already exists in: 4 1 7 8 9 5 5 2 1 3 no duplicate found Checking if 5 already exists in: 4 1 7 8 9 5 6 2 1 3 duplicate found - Is this the first time we've seen this association? no - replacing association with: a Checking if 2 already exists in: 4 1 7 8 9 5 6 a 1 3 no duplicate found Checking if 1 already exists in: 4 1 7 8 9 5 6 a 2 3 duplicate found - Is this the first time we've seen this association? no - replacing association with: b Checking if 3 already exists in: 4 1 7 8 9 5 6 a 2 b no duplicate found New 71c Associations Before After -------------------------------------------------- 01171c40 01171c40 01171d01 01171e43 01171f99 01471c10 01471c10 01471d40 01471e01 01471f01 01571c12 01571c70 01571d10 01571e01 01571f01 01671c11 01671c80 01671d60 01671e01 01671f01 01771c14 01771c90 01771d20 01771e01 01771f01 01871c50 01871c50 01871d98 01871ea1 01871f01 01971c60 01971c60 01971d9c 01971ea1 01971f02 01a71c5f 01a71ca0 01a71d30 01a71e81 01a71f01 01b71c20 01b71c20 01b71d4c 01b71e21 01b71f02 01d71c01 01d71cb0 01d71de6 01d71e05 01d71f40 01e71c30 01e71c30 01e71d61 01e71e45 01e71f01 Reset 71d Misc to 0 New 71d Associations Before After -------------------------------------------------- 01171d01 01171c40 01171d00 01171e43 01171f99 01471d40 01471c10 01471d40 01471e01 01471f01 01571d10 01571c70 01571d10 01571e01 01571f01 01671d60 01671c80 01671d60 01671e01 01671f01 01771d20 01771c90 01771d20 01771e01 01771f01 01871d98 01871c50 01871d90 01871ea1 01871f01 01971d9c 01971c60 01971d90 01971ea1 01971f02 01a71d30 01a71ca0 01a71d30 01a71e81 01a71f01 01b71d4c 01b71c20 01b71d40 01b71e21 01b71f02 01d71de6 01d71cb0 01d71de0 01d71e05 01d71f40 01e71d61 01e71c30 01e71d60 01e71e45 01e71f01 Correct 71f 02 FP to 01 New 71f Associations Before After -------------------------------------------------- 01171d01 01171c40 01171d00 01171e43 01171f90 01471d40 01471c10 01471d40 01471e01 01471f01 01571d10 01571c70 01571d10 01571e01 01571f01 01671d60 01671c80 01671d60 01671e01 01671f01 01771d20 01771c90 01771d20 01771e01 01771f01 01871d98 01871c50 01871d90 01871ea1 01871f01 01971d9c 01971c60 01971d90 01971ea1 01971f01 01a71d30 01a71ca0 01a71d30 01a71e81 01a71f01 01b71d4c 01b71c20 01b71d40 01b71e21 01b71f01 01d71de6 01d71cb0 01d71de0 01d71e05 01d71f40 01e71d61 01e71c30 01e71d60 01e71e45 01e71f01 Sobre NodeId (NID) 0x14 em hexadecimal, 20 em decimal: 1/8 Green Line Out at Ext Rear 20(Decimal) 0x14(Hexadecimal) 0x01014010 01471c10 01471d40 01471e01 01471f01 Os verbos padrão para ele: 01471c10 01471d40 01471e01 01471f01 01471c10: 0 471c10 = CAD (Codec Endereço) 0 14 = 71c10 NID (NodeID) 014 71 c10 = Comandos verbo como 71 "c", "d", "e", "f" 01471c 10 de Dados = verbo E o mesmo para o resto. Acho que Cad, NID e comandos verbais são muito simples de entender: os 2 primeiros você pega do dump do linux, e os comandos são padrão 71c, 71d, 71e, 71f. Vamos ver sobre os dados do verbo: - 71c XY X=Default Association(Associação Padrão) Y=Sequence(Seqüência) Associação padrão e Seqüência: são utilizados em conjunto por um software para Complexos grupo PIN (e, portanto, tomadas) juntos em blocos funcionais para apoiar a operação multicanal. O Software pode assumir que todas as Tomadas(Jack) com a mesma quantidade de associação são destinados a ser associados, por exemplo, para fornecer seis canais de saída analógico. A Associação padrão também pode ser usado por um software para priorizar a alocação de recursos em situações restritas. Os valores mais baixos de associação padrão seria o maior em prioridade para recursos como nós de processamento ou de entrada e de saída de conversores. Note-se que esta é uma associação padrão única, e o software pode substituir esse valor, se necessário, em particular se o usuário fornecer informações adicionais sobre a configuração do sistema particular. Um valor de 0000b é reservado e não deve ser usado. O Software pode interpretar esse valor para indicar que os dados de configuração Pin não foram inicializados corretamente. Um valor de 1111b é um valor especial que indica que a Associação tem a menor prioridade. Complexos de múltiplos pinos diferentes podem partilhar este valor, e cada um se destina a ser mostrado como dispositivos independentes. Sequência: indica a ordem das tomadas(jacks) do grupo de associação. A tomada de número menor no grupo de associação deve ser atribuído a menor canais numerados na Corrente, etc Os números não precisam ser seqüencial dentro do grupo, apenas a ordem. Os números de seqüência dentro de um conjunto de associações padrão devem ser exclusivo. * Minha nota para isso, se você olhar para o CodecVerb da AppleHDA.kext (não importa o codec) você vai ver que a seqüência é sempre 0. Por isso, e por que os nossos CodecVerbs são diferentes? Simples a Apple não tem saída analógica multicanal! Por isso você deve alterá-lo para 0. * Sobre Associação padrão, Mantenha o padrão, em ordem, e se algum NID usar a mesma associação, substituir pela que esta na reserva ... os valores que você pode usar são: 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e f (ver o que faz verbit se você ainda não entendeu). - 71d XY X=cores Y=variadas Indica a cor do conector físico para uso do software. Desconhecido 0 Preto 1 Cinza 2 Azul 3 Verde 4 Vermelho 5 Laranja 6 Amarelo 7 Roxo 8 Rosa 9 Reservados A-D Branco E Outros F Miscelânea: é um campo de bits usado para indicar outras informações sobre a tomada(jack). Atualmente, apenas o bit 0 é definido. Se 0 é pouco definido, indica que a tomada não tem presença detectar capacidade, por isso mesmo um Complexo Pin indica que o hardware codec suporta detectar a funcionalidade da tomada, o circuito externo não é capaz de suportar a funcionalidade. Reservado 3 Reservado 2 Reservado 1 Jack Detect Override 0 * Use 0 para Jack Detect - dispositivo externo (por exemplo, fones de ouvido Mic etc) Use 1 para Jack desativadas - dispositivo interno (por exemplo, alto-falantes internos, microfone interno) - 71e XY X=Dispositivo padrão Y=Tipo de conexão Dispositivo padrão: indica a intenção de uso da Tomada (Jack) ou dispositivo. Isto pode indicar tanto a etiqueta sobre a Tomada (Jack) ou o dispositivo que está fisicamente conectado uma porta, tal como altofalantes integrados e semelhantes. Line Out 0Speaker 1HP Out 2CD 3SPDIF Out 4Digital Other Out 5Modem Line Side 6Modem Handset Side 7Line In 8AUX 9Mic In ATelephony BSPDIF In CDigital Other In DReserved EOther F Tipo de conexão: indica o tipo de conexão física, como uma saída estéreo 1/8-inch ou um conector digital óptico, etc Software pode usar esta informação para fornecer descrições de interface do usuário úteis para o usuário ou para modificar as capacidades de codec relatados com base nas capacidades do transporte físico externo para o codec. Unknown 0 1/8" stereo/mono 11/4" stereo/mono 2ATAPI internal 3RCA 4Optical 5Other Digital 6Other Analog 7Multichannel Analog (DIN) 8XLR/Professional 9RJ-11 (Modem) ACombination B Other F - 71f XY X=Porta de Conectividade Y=Localização Porta de conectividade: indica a conectividade externa do Complexo Pin. O software pode usar esse valor para saber a quais Complexos Pins estão ligados as tomadas, dispositivos internos, ou não estão ligados em tudo. 00b - O Complexo Portuário está conectado a uma tomada (1/8 ", ATAPI, etc.) 01b - Sem conexão física para a Porta. 10b - Um dispositivo de função fixa (alto-falante integrado, microfone integrado, etc) esta conectado. 11b - Tanto uma Tomada (Jack) e um dispositivo interno estão ligados. A informação fornecida em todos os outros campos se refere ao dispositivo integrado. O pino de PD irá refletir o estado da tomada, o usuário terá de ser consultado para descobrir o que é. Localização: indica a localização física da tomada ou dispositivo para o qual o complexo de pino é conectado. Isto permite que o software possa indicar, por exemplo, de que o dispositivo é o "painel frontal Headphone Jack", em oposição às ligações do painel traseiro.* Detalhes: Converter o número hexadecimal de 2 dígitos para binário. Preencher a frente com zeros para torná-lo 8 dígitos. Exemplo: 0x02 = 10 = 00000010 binário 8 dígitos Lendo os bits da esquerda para a direita: Conectividade da porta - bits 07:06 ----------------------------------------------------------- 00 - A porta está conectado a uma tomada (jack) 01 - Não é uma porta externa ou não há nenhuma conexão física para a porta 10 - Função fixa / embutido no dispositivo (alto-falante integrado, microfone, etc) 11 - Dispositivo e tomada interna estão ligados Parte 1 Localização - bits 05:04 ----------------------------------------------------------- 00 - Externa ao chassi primário 01 - Interna 10 - Chassi separado 11 - Outros Parte 2 Localização - bits 03:00 ----------------------------------------------------------- O significado depende Parte 1 Localização 00 0000 N/A 00 0001 Traseira 00 0010 Frente 00 0011 Esquerda 00 0100 Direito 00 0101 Superior 00 0110 Inferior 00 0111 Especial (painel traseiro) 00 1000 Especial (baia drive) 01 0000 N/A 01 0111 Especial (Riser) 01 1000 HDMI 01 1001 ATAPI 10 0000 N/A 10 0001 Traseira 10 0010 Frente 10 0011 Esquerda 10 0100 Direito 10 0101 Superior 10 0110 Inferior 11 0000 N/A 11 0110 ? 11 0111 Dentro da tampa móvel (exemplo: mic) 11 1000 Fora da tampa móvel Bits 71cf01 = 00 00 0001 - Porta tem um jack - É Externo - Localização Traseira 71cf02 = 00 00 0010 - Porta tem um jack - É Externo - Localização do painel frontal 71cf59 = 01 01 1001 - Não é uma Porta externa - ATAPI 71cf18 = 00 01 1000 - Porta tem um jack - Externa - HDMI 71cf90 = 10 01 0000 - Dispositivo Interno - Interna - N/A | | |||| | | |--------- Localização parte 2 | |------------ Localização parte 1 |--------------- Conectividade da porta Obrigado novamente a Signal64 para sua VerbCheatSheet: http://rapidshare.de/files/48146006/VerbCheatSheet.rtf.html * Todas as informações vieram da especificação High Definition Audio Leia-o para mais detalhes!http://download.intel.com/standards/hdaudio/pdf/HDAudio_03.pdf Conclusão: O script faz um ótimo trabalho, ainda não é perfeito ele não sabe quais são as nossas opções ... talvez uma aplicação GUI possa ser acrescentada no futuro. Então, o que pode ser essas opções? - Você pode querer configurar microfone como interno para obter redução de ruído ambiente para isso. - Alguns codecs tem apenas saídas de linha mesmo truque pode aplicado e você pode definir a primeira saída como Altofalantes e obter no software dsp a opção para ele. - Para suporte do painel frontal pode ser necessário transformar de novo microfone em Line In.(Saída de Linha) E assim por diante ... Agora que obtemos todas as informações necessárias sobre ConfigData/CodecVerbs vamos editar o info.plist da AppleHDAHardwareConfigDriver.kext. 1- Editando AppleHDAHardwareConfigDriver.kext (Info.plist) (clique com o botão direito do mouse /Mostrar conteúdo do pacote) Abra o Plist com um editor de Plist. navegar até a chave IOKitPersonalities/HDA Hardware Config ResourceHDAConfigDefault. 1-CodecID: Colocar o ID de seu codec em Números Decimais 0x10ec0887(Hexadecimal) --> 283.904.135(Decimal) 2-ConfigData: Aqui colocamos nossos ConfigData/Verbs codec que corrigimos anterirormente. 3-FuncGroup: Deve ser sempre 1. 4-LayoutID: Por padrão é 12 mas pode ser qualquer outro número desde que você também mude o número do layout no seu DSDT.aml *OBS: Nas kexts de Mountain Lion so podemos usar um layout que já tenha na própria kext e não outros como layout887.xml como era usado nas kexts de Lion. 2- Editando Platform.xml e layout12.xml ou Layout1.xml (Presentes na Pasta Resources) Esta é a parte mais complicada. Dentro da pasta Resources você encontrará vários layouts.xml e um Platforms.xml. vamos editar ambos de acordo com as correções anterirores ou seja em AppleHDAHardwareConfigDriver.kext usamos o layout12 então vamos fazer as devidas edições sobre este. 1-CodecID: Colocar o ID de seu codec em Números Decimais 0x10ec0887(Hexadecimal) --> 283.904.135(Decimal) 2-PathMapID: Mudar para 1 O que tinhamos que corrigir em Layout12.xml ja esta concluído.Agora vamos editar o Platforms.xml é aqui que se encontra os pathmaps. Dentro da Chave Pathmaps existem outras chaves que estão numeradas e cada uma corresponde a um Layout.xml especifico por exemplo: usamos layout12.xml dentro do mesmo tem uma chave com pathmap Id=1.No exemplo do codec que estamos usando um ALC887-VD temos 4 saídas e 2 entradas de audio. Totalizando 6 dispositivos.Para dispositivos de saída, o PathMap segue esse padrão:Pin Complexo(NodeID)-> Audio Mixer-> Saída de Áudio Então, nós temos que encontrar um nó Pin Complexo(NodeID), um nó Audio Mixer e, finalmente, um nó de saída de áudio. Para dispositivos de entrada, o PathMap seguem esse padrão:Pin-Complexo(NodeID)> Audio Selector/Mixer- entrada> ÁudioAqui, temos de encontrar um nó Pin Complexo(NodeID), um mixer de áudio / nó Selector e, finalmente, um nó de entrada de áudio.Abra o arquivo codec_dump_dec.txt.svg gerado na pasta codegraph você vai ver algo como isto: note que 20(Pin complexo)-->12(nó Audio Mixer)-->2(nó de Saída de Audio) a partir dai ja temos nosso pathmap formado para LineOut(no caso o node20 é um Alto-falante Interno). Faremos o mesmo para o restante do nosso pathmaps. Obs: Observe que na captura de tela anexada acima você pode ver que as linhas continuas são as ligações dos nodes. Captura de Tela 2013-01-20 às 13.50.18.png[/attachment] Os pathmaps para o codec usado como exemplo ficaram assim: 9-34-24= Mic Externo 9-34-25= Mic Externo Frontal 8-35-26= Saída de Linha 20-12-2= Auto-Falantes Internos 27-38-37= Fone 23-15-5= Saída de Linha 22-14-4= Saída de Linha 23-13-3= Saída de Linha 30-6= Saída Digital 3- BinPatch: A partir da versão de Snow Leopard 10.6.3 foi necessário corrigir também o arquivo binário da Applehda.kext ele se encontra dentro da pasta MacOs que fica dentro da Kext, para fazermos esta correção usaremos o script feito por bcc9. [attachment=1]patch-hda.zip[/attachment] copie a pasta para o desktop e ja com a Applehda.kext edita e instalada em S/L/E digite o seguintes comandos no terminal: cd ~/desktop/patch-hda./patch-hda.pl 10ec0887 *Nota: Abra a pasta patch-hda e depois o arquivo patch-hda-codecs.pl dentro dele encontra-se todos os codecs suportados pelo script para mais informações: http://www.insanelymac.com/forum/topic/284004-script-to-patch-applehda-binary-for-osx107108/ Uma dica se o seu codec não for suportado pelo script você pode tentar corrigir manualmente usando um editor binário como HexFiend e substituir um dos codecs usados na correção pelo seu. No exemplo acima foi corrigido o binário para o codec ALC887-VD se você for corrigir para seu codec é necessário substituir o 10ec0887 pelo id de seu codec. No binário eles são escritos da direita para esuerda ou seja 10ec0887=8708ec10. *Importante: A kext do Mountain Lion tem uma nova estrutura e os arquivos são compactados em .zlib para descompactar e editar esses arquivos usaremos o Zlib. Esse aplicativo é baseado no script de RevoGirl, ele torna o processo de arquivos .zlib da AppleHDA.kext para descompactar/compactar mais fácil. Basta arrastar o arquivo zlib. Ao aplicativo e ele irá descompactar ou arraste o arquivo xml. E ele vai compactar para .zlib Download Zlib Kext usada como exemplo para este guia: http://www.sendspace.com/file/tbfthk Pasta com todas ferramentas necessárias para edição da Applehda.kext e algumas kexts originais de diversas versões do OS x: http://www.sendspace.com/file/kemzwt Créditos: The King, bcc9, RevoGirl(R.I.P), EMlyDinEsH, Munky, TimeWalker e outros. 3 Link to comment Share on other sites More sharing options...
Allan Posted January 15, 2014 Share Posted January 15, 2014 Hey Mirone parabens pelo tuto. uma duvida, no Capítulo 2: Correção de AppleHDA.Kext. o Platform.xml e layout12.xml ou Layout1.xml tem que ser o padrão? por exemplo, todo o codec que eu tiver seja Realtek, Conexant ou outro, a modificação será aplicada só nos Platform.xml e layout12.xml ou Layout1.xml ? Link to comment Share on other sites More sharing options...
Mirone Posted January 15, 2014 Author Share Posted January 15, 2014 Não pode usar outro, eu uso LayoutID 4, o importante é o conteúdo dele. mas tem que ser um LayouiD nativo, não pode usar mais um com mesmo número do codec por exemplo layout887.xml.zlib. Link to comment Share on other sites More sharing options...
Allan Posted January 15, 2014 Share Posted January 15, 2014 Não pode usar outro, eu uso LayoutID 4, o importante é o conteúdo dele. mas tem que ser um LayouiD nativo, não pode usar mais um com mesmo número do codec por exemplo layout887.xml.zlib. Beleza Mirone valeu mesmo. Duvida solucionada Link to comment Share on other sites More sharing options...
danielstuart14 Posted January 23, 2014 Share Posted January 23, 2014 cara, o verbit ta off... Tem como tu reupar? Link to comment Share on other sites More sharing options...
Mirone Posted January 23, 2014 Author Share Posted January 23, 2014 cara, o verbit ta off... Tem como tu reupar? Corrigido, Obrigado por mencionar que o link estava quebrado. Link to comment Share on other sites More sharing options...
andreJPBR Posted November 11, 2014 Share Posted November 11, 2014 O final ficou meio que inexplicado, claro, para nós mais desentendidos. Os pathmaps para o codec usado como exemplo ficaram assim: 9-34-24= Mic Externo 9-34-25= Mic Externo Frontal 8-35-26= Saída de Linha 20-12-2= Auto-Falantes Internos 27-38-37= Fone 23-15-5= Saída de Linha 22-14-4= Saída de Linha 23-13-3= Saída de Linha 30-6= Saída Digital Como aplicar estes pathmaps dentro do Platforms.xml????? Usamos as três sequências decimais de cada item???? Meu layout id é 1, eEntão qual Platforms.xml devo editar? Achei bem confusa essa tradução/explicação, agradeço se alguém puder detalhar melhor. Obrigado. Mais uma dúvida: as versões do OSX mudam, mas o pathmap do codec ALC8889a, que é o meu, é sempre o mesmo independente da versão, correto? Então bastaria copiar e colar no Yosemite o Platforms do Mavericks, por exemplo? Link to comment Share on other sites More sharing options...
Allan Posted November 11, 2014 Share Posted November 11, 2014 Eu recomendaria você ir pelo caminho mais fácil, por ex: Se existe uma AppleHDA para o seu codec, você pode usar o AppleHDAPatcher, ou se usa uma já patheada, e quer atualizar para outro OS X, você pode ir por aqui: Atualizando sua AppleHDA Mas se nenhum desses atalhos que te dei ajudaram, espere a ajuda do Mirone, ele é o mais qualificado para te ajudar nesse assunto. 1 Link to comment Share on other sites More sharing options...
Recommended Posts