Jump to content
Sign in to follow this  
Mirone

Guia de como corrigir a AppleHDA para o seu codec

Recommended Posts

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?140619020937263817.png
?
?
?
?
. 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 um LiveCD
? do Ubuntu ou outra distribuição de sua preferência.(obs: Use a versão mais recente do Linux assim como os drivers Alsa).

?

? no terminal digite:

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

?devera ser gerada uma pasta na sua Area de trabalho com o nome Codec_dump, salve a mesma em um local de sua escolha.

?nesta pasta além do codec_dump de seu codec de audio deverá conter também o codec_dump de sua placa de video, neste caso do HDMI,

?mas não usaremos o mesmo.

?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. Instale: GraphViz

?

. Segundo Passo:?Convertendo CodecGraph e CodecDump de hexadecimal para decimal:

? Copie e cole o arquivo "Codec_dump" para a pasta CodecGraph copie a pasta CodecGraph para seu Desktop e execute o

? arquivo chamado "comandos" que se encontra dentro da mesma. Dentro da pasta codecgraph serão gerados 5 arquivos:?codec_dump_dec.txt.svg,

? codec_dump.txt.svg, codec_dump_dec.txt,?verbs.txt,?verbitdebug.txt. Mais adiante usaremos os mesmos para corrigir a AppleHDA.

??

?. Nota:?Se o seu arquivo estiver com outro nome renome para "codec_dump.txt" antes de prosseguir com o passo anterior.

?

?. 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 MacIASL?Os Patches vocês encontram aqui.?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 da 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 o?Info.plist?a partir de um presente:?
? ? ?
? ? ?1-AppleHDAHardwareConfigDriver.kext
? ? ?2-Platform.xml?e layoutxxx.xml ou Layoutxxx.xml (Presentes na Pasta Resources)
? ? ?3-BinPatch
?
? ?.?AppleHDAHardwareConfigDriver.kext
? ? ?Para editar essa kext precisaremos obter ConfigData/CodecVerbs.
? ? ?abra a pasta codecgraph e vai ver dois arquivos um chamado?verbs.txt?e outro?verbitdebug.txt.
? ? ?verbit.txt?é o de nosso interesse. Pois nele encontramos nossos ConfigData/CodecVerbs originais encima e os corrigidos embaixo.
? ? ?Usarei o do meu Codec ALC887-VD como exemplo.
? ? ?verbs.txt:

??

Verbs from Linux Codec Dump File: codec_dump.txtCodec: 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?Line Out at Ext Rear ? ? ? ? ? ? ? ? ? ? ? ?20 0x14 ? 16859152 ? ? 01471c10 01471d40 01471e01 01471f01 ?? ? 1/8 ? Black ?Line Out at Ext Rear ? ? ? ?21 0x15 ? 0x01011012 ? 01571c12 01571d10 01571e01 01571f01?Line Out at Ext Rear ? ? ? ? ? ? ? ? ? ? ? ?22 0x16 ? 16867345 ? ? 01671c11 01671d60 01671e01 01671f01 ?? ? 1/8 ? ?Grey ?Line Out at Ext Rear ? ? ? ?23 0x17 ? 0x01012014 ? 01771c14 01771d20 01771e01 01771f01?Mic at Ext Rear ? ? ? ? ? ? ? ? ? ? ? ? ? ? 24 0x18 ? 27367504 ? ? 01871c50 01871d98 01871ea1 01871f01 ??Mic at Ext Front ? ? ? ? ? ? ? ? ? ? ? ? ? ?25 0x19 ? 44145760 ? ? 01971c60 01971d9c 01971ea1 01971f02 ??Line In at Ext Rear ? ? ? ? ? ? ? ? ? ? ? ? 26 0x1a ? 25243743 ? ? 01a71c5f 01a71d30 01a71e81 01a71f01 ??HP Out at Ext Front ? ? ? ? ? ? ? ? ? ? ? ? 27 0x1b ? 35736608 ? ? 01b71c20 01b71d4c 01b71e21 01b71f02 ?? ? 1/8 ? Black ?Speaker at Ext Rear ? ? ? ? 28 0x1c ? 0x411111f0 ? 01c71cf0 01c71d11 01c71e11 01c71f41Optical ? White ?Line Out at Ext N/A ? ? ? ? 29 0x1d ? 0x4005e601 ? 01d71c01 01d71de6 01d71e05 01d71f40Optical ?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?Line Out at Ext Rear ? ? ? ? ? ? ? ? ? ? ? ?20 0x14 ? 16859152 ? ? 01471c10 01471d40 01471e01 01471f01 ?? ? 1/8 ? Black ?Line Out at Ext Rear ? ? ? ?21 0x15 ? 0x01011012 ? 01571c70 01571d10 01571e01 01571f01?Line Out at Ext Rear ? ? ? ? ? ? ? ? ? ? ? ?22 0x16 ? 16867345 ? ? 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 ??Line In at Ext Rear ? ? ? ? ? ? ? ? ? ? ? ? 26 0x1a ? 25243743 ? ? 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 01d71f40Optical ?Orange ?SPDIF Out at Ext Rear ? ? ? 30 0x1e ? 0x01456130 ? 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:?
? 01471c10 = CAD (Codec Endereço)?
? 014?71c10 = NID (NodeID)?
? 01471c10 = Comandos verbo como 71 "c", "d", "e", "f"?
? 01471c10?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.
?
? 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. Eles estão no arquivo verbit.txt, usamos os "Modified
? Verbs" por exemplo:?01471c10 01471d40 01471e01 01471f01 que corresponde a uma LineOut(Saída de Linha). Neste caso Speaker, e o mesmo para as
? demais Entradas/Saídas.
?
? 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 em diante 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.
??o1dw.png
?
??2- Editando?Platform.xml.zlib e Layoutxxx.xml.zlib(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). Use a calculadora no modo
? Programador para fazer esta conversão. Calculadora/Visualizar/Programador.
? 2-PathMapID:?Mudar para 1.
??
??uip7.png
?
? Dentro de cada chave existem configurações correspondentes a seus componentes:
?
? CodecID:?É aqui que inserimos o ID de nosso codec na forma Decimal?0x10ec0887(Hexadecimal) --> 283.904.135(Decimal).
?
? Headphone:?Normalmente esta chave não possui nenhum valor, embora seja necessário no caso de Laptops.
?
? Inputs:?São as conexões(jacks) de saída neste caso, LineIn e Microfone.
?
? IntSpeaker: Corresponde aos velores dos Alto-falantes.
?
? LineIn: Conexão de saída, é necessário usar um MUTEGPIO.
?
? LineOut:?Normalmente esta chave não possui nenhum valor.
?
? Mic:?Conexão de saída, é necessário usar um MUTEGPIO.
?
? Outputs: Exibe as conexões de Saída.
?
? SPDFIn: Referente a Saída digital (Optica).
??
? 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:

??

??nxur.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.
?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-->24
?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.
?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.insanelym...-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 codec suportado pelo id de seu codec.
? No binário eles são escritos da direita para esquerda ou seja 10ec0887=8708ec10.
?
*Importante:?A partir do Mountain Lion a AppleHDA 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
?
?Créditos:?The King, bcc9, RevoGirl(R.I.P), EMlyDinEsH, Munky, TimeWalker,?Signal64?e outros.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.