Jump to content
Mirone

Guia de como corrigir AppleHDA

Recommended Posts

140619020937263817.png


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 Shell:

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: http://www.graphviz.org/Download_macos.php (somente versão para Lion)

Download CodecGraph: http://helllabs.org/codecgraph/ , descompactá-lo para desktop, copiar o codec_dump.txt gerado pelo linux para pasta CodeGraph em seguida, digite no termainal:

cd ~/Desktop/codecgraph 

e 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-AppleHDAController.kext

2-AppleHDAHardwareConfigDriver.kext

3-Platform.xml e layout12.xml ou Layout1.xml (Presentes na Pasta Resources)

4-BinPatch


1-AppleHDAController.kext

(clique com o botão direito do mouse /Mostrar conteúdo do pacote) Abra o Plist com um editor de Plist. http://www.osx86.net/downloads.php?do=file&id=3154

dentro da chave IOKitPersonalities mudar:

<key>IOPCIClassMatch</key>
<string>0x04020000&0xFFFE0000</string>

para:

<key>IOPCIPrimaryMatch</key>
<string>0x1c208086</string>

O 0x1c208086 é o meu device e Vendor ID de Audio. Mudar de acordo com o seu codec.

1110761120_CapturadeTela2012-11-11s23_05_28.png.df0966ab0ddd28bd217ec5ec511d4a0d.png

2-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: http://signal64.osx86.me/audio/verbit.zip

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    0x18 0x18                          27367504     01871c50 01871d90 01871ea1 01871f01  
Mic at Ext Front    0x19 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    0x1b 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

O codec usado no exemplo acima como podem ver é um ALC887-VD foi preciso mudar somente um dos microfones para externo.

Para entendermos como são feitas essas alterações precisaremos ir mais fundo.

Então, o que é um verbo codec?

Para cada entrada / saída que é uma sequência de 4 verbos.

Vamos dar um exemplo de codec usado antes:

1/8   Green  Line Out at Ext Rear        20(Decimal) 0x14(Hexadecimal)   0x01014010   01471c10 01471d40 01471e01 01471f01

Sobre NodeId (NID) 0x14 em hexadecimal, 20 em decimal:


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 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

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 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

 

- 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 ...

Gora que obtemos todas as informações necessárias sobre ConfigData/CodecVerbs vamos editar o info.plist da AppleHDAHardwareConfigDriver.kext.


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.

253301293_CapturadeTela2012-12-09s12_29_11.png.d4ef98b67d022d46dff3305d1c7e1c08.png

3- 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

*Nota: Excluiir MuteGPIO,SignalProcessing, de todas as chaves.

47632641_CapturadeTela2012-12-09s14_12_06.png.8622c556fd7788d40448d90509225846.png

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> Áudio

Aqui, 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:

1861674242_CapturadeTela2012-12-26s12_01_51.thumb.png.e55a6d860337df926afb32d7d5ca2389.png

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.

670776550_CapturadeTela2012-12-26s12_17_54.png.a03f077670893a15a206f49a617979b7.png

Um exemplo de Pathmaps para Mic (Externo):

note que 24(Pin complexo)-->35(nó Audio Mixer)-->9(nó de Saída de Audio)

Obs: Geralmente inicia-se ao contrário 9-->34-->241787081067_CapturadeTela2013-01-20s13_50_18.png.4f15ad6f08fd37e7872fb223d8ba0dfc.png

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


4-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.

patch-hda.zip

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), MlyDinEsH, Munky, Timewalker.

Script RevoGirl AppleHda.zip

Edited by Guest
btn_donate_SM.gif
Link to comment
Share on other sites

Boa tarde!


Eu estou usando o Mountain Lion e percebi que o graphviz não é compatível com meu OS. Posso fazer todo o processo usando o Snow Leopard e no final obter a kext do meu audio para o Mountain Lion?


Obrigado!

Pode sim!

no site do Graphiz eles explicam como fazer pra roda-lo no ML.

mas vc pode fazer todo processo no snow e depois so instalar a kext no ML .

btn_donate_SM.gif
Link to comment
Share on other sites

Pode sim!

no site do Graphiz eles explicam como fazer pra roda-lo no ML.

mas vc pode fazer todo processo no snow e depois so instalar a kext no ML .

 

Esse processo parece bem complicado... Eu vou pelo Snow Leopard mesmo, assim eu me atrapalho menos rsrs

Link to comment
Share on other sites

@livetodie

o ideal agora é vc "Abrir" a kext e olhar quais as modificações foram feitas nela.

ela é Applehda ou uma voodoohda?

 


Ela é voodoohda... Não sei ver exatamente que alterações foram feitas... Existe um pouco de ruido quando não se está tocando nada... Acho q é problema de relação sinal/ruido dessa placa q não deve ser grandes coisa.... Se quiser eu lhe mando a kext.

Link to comment
Share on other sites



Ela é voodoohda... Não sei ver exatamente que alterações foram feitas... Existe um pouco de ruido quando não se está tocando nada... Acho q é problema de relação sinal/ruido dessa placa q não deve ser grandes coisa.... Se quiser eu lhe mando a kext.

Tente corrigir sua Applehda ela tem um som melhor do que a vodoohda.

btn_donate_SM.gif
Link to comment
Share on other sites

Olá:

Eu tento criar meu AppleHDA.kext personalizado.

Quando eu tento copiar o meu codec_dump, no codecgraph, eu recebo o seguinte:

error : can't read input file codec_dump.txt


errormg.jpg


Eu tenho leão da montanha, e viu codecgraph, este bug


bugscodegraph.jpg


Será que o erro está relacionado com o bug? Será que o bug sempre aparece ou não? O problema é que eu tenho ML? O codec_dump ruim?


Espero que possa me orientar e obrigado pelo seu tempo.


Uzmi


P.S. Aqui anexo o meu codec_dump


http://depositfiles.com/files/3rv517q90


(Usado traductor Google Español-Portugues)

I5 9600K - Ga Z390M Gaming -Shappire RX 580 4Gb - DDR4 16gB- Big Sur Open core

Link to comment
Share on other sites

Olá:

Eu tento criar meu AppleHDA.kext personalizado.

Quando eu tento copiar o meu codec_dump, no codecgraph, eu recebo o seguinte:

error : can't read input file codec_dump.txt


errormg.jpg


Eu tenho leão da montanha, e viu codecgraph, este bug


bugscodegraph.jpg


Será que o erro está relacionado com o bug? Será que o bug sempre aparece ou não? O problema é que eu tenho ML? O codec_dump ruim?


Espero que possa me orientar e obrigado pelo seu tempo.


Uzmi


P.S. Aqui anexo o meu codec_dump


http://depositfiles.com/files/3rv517q90


(Usado traductor Google Español-Portugues)

Exclua essa parte do seu codec_dump e tente novamente.

Node 0x0a [Audio Input] wcaps 0x100391: Stereo Digital
 Converter: stream=0, channel=0
 SDI-Select: 0
 Digital:
 Digital category: 0x0
 PCM:
   rates [0x560]: 44100 48000 96000 192000
   bits [0x1e]: 16 20 24 32
   formats [0x1]: PCM
 Unsolicited: tag=00, enabled=0
 Connection: 1
    0x1f

btn_donate_SM.gif
Link to comment
Share on other sites

Exclua essa parte do seu codec_dump e tente novamente.

Node 0x0a [Audio Input] wcaps 0x100391: Stereo Digital
 Converter: stream=0, channel=0
 SDI-Select: 0
 Digital:
 Digital category: 0x0
 PCM:
   rates [0x560]: 44100 48000 96000 192000
   bits [0x1e]: 16 20 24 32
   formats [0x1]: PCM
 Unsolicited: tag=00, enabled=0
 Connection: 1
    0x1f

 


Obrigado por sua sugestão, mas ainda o mesmo erro

I5 9600K - Ga Z390M Gaming -Shappire RX 580 4Gb - DDR4 16gB- Big Sur Open core

Link to comment
Share on other sites

Você colocou o codec_dump.txt na pasta codecgraph?


Aqui correu normal

./codecgraph codec_dump.txt 
Codec: Realtek ALC888
Generating codec_dump.txt.svg

Donation with Paypal | Mercado Livre | Premium and Donators Users | Installation GUIDE

Donation with BTC 33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3

Donation with PicPay @danielnmaldonado

Donated? Send me PM with files or use DSDT Patch Requests

Link to comment
Share on other sites

Você colocou o codec_dump.txt na pasta codecgraph?


Aqui correu normal

./codecgraph codec_dump.txt 
Codec: Realtek ALC888
Generating codec_dump.txt.svg

 

Ola:

isso é o que eu faço

errormg.jpg


sim correu normal, o problema é a minha instalação. (ML)

vai verificar meu S.O.


Obrigado

I5 9600K - Ga Z390M Gaming -Shappire RX 580 4Gb - DDR4 16gB- Big Sur Open core

Link to comment
Share on other sites

O arquivo codec_dump.txt você tem que colocar na pasta codecgraph do desktop. Na imagem que você postou acima ele não aparece.

Donation with Paypal | Mercado Livre | Premium and Donators Users | Installation GUIDE

Donation with BTC 33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3

Donation with PicPay @danielnmaldonado

Donated? Send me PM with files or use DSDT Patch Requests

Link to comment
Share on other sites

Meu erro, esquecer de copiar codec_dump.

Desculpe pelo meu erro.

Vou continuar com os passos seguintes.

Muito obrigado


20842500.jpg


uzmi.

I5 9600K - Ga Z390M Gaming -Shappire RX 580 4Gb - DDR4 16gB- Big Sur Open core

Link to comment
Share on other sites

Olá:

Não sou especialista e não tenho experiência, mas eu quero fazer este trabalho.

Tenho algumas dúvidas que eu resolver para continuar.

Eu não falo Português por isso, desculpa a minha gramática.


1) AppleHDAController.kext-->IOPCIClassMatch --> Device e vendor ID

Qual é o correcto?


duda1.jpg



2) Editando AppleHDAHardwareConfigDriver.kext (Info.plist) --> 2-ConfigData:

Poderia explicar isso melhor para um iniciante?


duda2.jpg


Obrigado novamente.


Uzmi


http://depositfiles.com/files/uzhnjx56f

I5 9600K - Ga Z390M Gaming -Shappire RX 580 4Gb - DDR4 16gB- Big Sur Open core

Link to comment
Share on other sites

Olá:

Não sou especialista e não tenho experiência, mas eu quero fazer este trabalho.

Tenho algumas dúvidas que eu resolver para continuar.

Eu não falo Português por isso, desculpa a minha gramática.


1) AppleHDAController.kext-->IOPCIClassMatch --> Device e vendor ID

Qual é o correcto?


duda1.jpg



2) Editando AppleHDAHardwareConfigDriver.kext (Info.plist) --> 2-ConfigData:

Poderia explicar isso melhor para um iniciante?


duda2.jpg


Obrigado novamente.


Uzmi


http://depositfiles.com/files/uzhnjx56f

Vendor e device id=

3a3e8086

ConfigDAta:

 21471c10 21471d40 21471e01 21471f01 21871c40 21871d90 21871ea1 21871f01 21971c50 21971d90 21971ea1 21971f01
21a71c60 21a71d30 21a71e81 21a71f01 21b71c20 21b71d40 21b71e21 21b71f01 21d71c70 21d71dc0 21d71e05 21d71f40
21e71c30 21e71d60 21e71e44 21e71f01

btn_donate_SM.gif
Link to comment
Share on other sites

Ola:

Corrigida minha

AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist

AppleHDA.kext/Contents/Resources/layout12.xml.zlib


mas eu não posso minha Platforms.xml.zlib


capturadepantalla201303e.png


a) Porque 4?

b) Porque 3? Eu tenho 7 dispositivos (de acordo com verbs.txt)


c) Como eu descobrir a correspondência entre o nó e dispositivo?


Se necessário:

Anexo datos (10.8.3)



Obrigado.

Datos.zip

I5 9600K - Ga Z390M Gaming -Shappire RX 580 4Gb - DDR4 16gB- Big Sur Open core

Link to comment
Share on other sites

Ola:

Corrigida minha

AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist

AppleHDA.kext/Contents/Resources/layout12.xml.zlib


mas eu não posso minha Platforms.xml.zlib


capturadepantalla201303e.png


a) Porque 4?

b) Porque 3? Eu tenho 7 dispositivos (de acordo com verbs.txt)


c) Como eu descobrir a correspondência entre o nó e dispositivo?


Se necessário:

Anexo datos (10.8.3)



Obrigado.

Mic Externo Frontal: 9-34-25

Mic Externo Traseiro: 9-34-24

Entrada de Linha:8-35-26

Saida de Linha:20-12-2

Fone: 27-15-5

SPDIF Out: 30-6

Compare com a kext usada neste Guia.

pra você notar as diferenças.

btn_donate_SM.gif
Link to comment
Share on other sites

Mic Externo Frontal: 9-34-25

Mic Externo Traseiro: 9-34-24

Entrada de Linha:8-35-26

Saida de Linha:20-12-2

Fone: 27-15-5

SPDIF Out: 30-6

Compare com a kext usada neste Guia.

pra você notar as diferenças.

 

Desculpe.

Eu não expliquei bem.

Minhas dúvidas são:

a) Identificar os dispositivos sobre o arquivo de Platforms.xml

b) O que fazer quando tenho 4 NodeID em um dispositivo.


capturadepantalla201303w.png


capturadepantalla201303m.png


capturadepantalla201303k.png


Obrigado

I5 9600K - Ga Z390M Gaming -Shappire RX 580 4Gb - DDR4 16gB- Big Sur Open core

Link to comment
Share on other sites


Desculpe.

Eu não expliquei bem.

Minhas dúvidas são:

a) Identificar os dispositivos sobre o arquivo de Platforms.xml

b) O que fazer quando tenho 4 NodeID em um dispositivo.


capturadepantalla201303w.png


capturadepantalla201303m.png


capturadepantalla201303k.png


Obrigado

Abra a kext usada como exemplo neste guia, veja o platforms.xml e compare.

Onde tem 4 nodes você deixara somente 3 por que seu codec so tem 3.

pode excluir um.

btn_donate_SM.gif
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
  • Create New...
The popup will be closed in 15 seconds...