Jump to content

[Guia] Habilitar audio HDMI - Intel HD 4000


Allan
 Share

9 posts in this topic

Recommended Posts

Ola a todos.

 

Este guia ira auxiliar a todos que tem o video Intel HD 4000, e como no meu caso, se possui um Notebook e deseja habilitar tanto o video como o audio da saida HDMI.

Estarei explicando em duas formas da maneira mais facil possível, mas para ter sucesso requer muita atenção e paciência.

 

Antes de começar:

 

Verifique se realmente precisa da edição da AppleIntelFramebufferCapri.kext para ter audio HDMI. 

Como? - Conecte seu Hack a um Televisor/Monitor a entrada HDMI, se o video e audio está funcionando, não mexa em nada.

 

Se realmente tem problemas, veja abaixo as instruções.

 

O que vai precisar.

 

  • "AppleIntelFramebufferCapri.kext" que está em System/Library/Extensions
  • Patchs para video e audio presentes na DSDT.
  • Um app para edição de números hexadecimais - Recomendo o uso do app Hex Fiend - Download.
  • App Editor de Texto para edição dos valores.

 

Este tutorial ira usar o ig-platform-id  3 = 03006601, que está nos videos HD 4000 em CPUs IvyBridge.

Para mais informações sobre ig-platform-id e qual usar, leia aqui.

Vou colocar alguns valores diferentes de ig-platform-id para que possam ativar seu HDMI.

Tambem requer qual layout-id esta usando, caso use a AppleHDA.

 

Método usando DSDT - O que mais funciona.

 

Antes aplicar qualquer um desse metodos na sua DSDT, requer primeiramente que o método DTPG já esteja aplicado.

Insira este patch no device HDEF na sua DSDT:

Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Store (Package (0x0A)
                    {
                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        },  


                        "layout-id", 
                        Buffer (0x04)
                        {
                             0x0C, 0x00, 0x00, 0x00
                        }, 


                        "PinConfigurations", 
                        Buffer (Zero) {}
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }

Se usa grafico integrado (ex: Intel HD 4000) terá que renomear o device GFX para IGPU na DSDT, e adicionar este metodo no device IGPU:

Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Store (Package (0x0A)
                    {
                        "device-id", 
                        Buffer (0x04)
                        {
                             0x66, 0x01, 0x00, 0x00
                        }, 


                        "vendor-id", 
                        Buffer (0x04)
                        {
                             0x86, 0x80, 0x00, 0x00
                        }, 


                        "AAPL,ig-platform-id", 
                        Buffer (0x04)
                        {
                             0x03, 0x00, 0x66, 0x01
                        }, 


                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        }, 


                        "layout-id", 
                        Buffer (0x04)
                        {
                             0x0C, 0x00, 0x00, 0x00
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }

Verifique se não tem erros ou avisos, se não tiver salve a DSDT e coloque no local correto.

 

Verifique se audio e video está funcionado, se somente o video funcionou e não teve audio, vamos ter que modificar a AppleIntelFramebufferCapri.kext. Veja abaixo:

 

 Método alterando a AppleIntelFramebufferCapri.

1 - Seção.

Informações sobre as conexões de video presentes na kext AppleIntelFramebufferCapri:

 

Vamos analizar o que está presente nesta kext que possibilita a ativação do Video.

 

Veja as iniciais dos valores correspondentes, que estão em números hexadecimais:

503 - LVDS (LCD integrado nos Notebooks)
602 - VGA
205/406/304 - HDMI/DVI/DP

2 - Seção.

 

Sobre os números hexadecimais.

 

No OS X Mavericks ouve uma leve mudança nos valores presentes na kext AppleIntelFramebufferCapri, em conparação com o Mountain Lion, algo que não me atrapalhou na ativação da entrada HDMI.

 

Valores do OS X Mountain Lion:

03 00 66 01 01 02 04 02 00 00 00 04 
00 00 00 01 00 00 00 20 10 07 00 00 
10 07 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 
05 03 00 00 02 00 00 00 30 00 00 00 
02 05 00 00 00 04 00 00 07 04 00 00 
03 04 00 00 00 04 00 00 81 00 00 00 
04 06 00 00 00 04 00 00 81 00 00 00 

Valores do OS X Mavericks:

03 00 66 01 01 02 04 02 00 00 00 04 
00 00 00 01 00 00 00 40 10 07 00 00 
10 07 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 
05 03 00 00 02 00 00 00 30 00 00 00 
02 05 00 00 00 04 00 00 07 04 00 00 
03 04 00 00 00 04 00 00 81 00 00 00 
04 06 00 00 00 04 00 00 81 00 00 00

3 - Seção.

 

O que vai ser alterado para obter o funcionamento do HDMI.

 

Como viram acima as alterações foram poucas, apenas uma linha.

Agora como citado no inicio para obtermos o pleno funcionamento do HDMI temos de saber qual ig-platform-id está sendo usado, veja alguns valores.

0x00006601 (96MiB)
LVDS, DP, DP, DP
000066010003040300000006
000080010000002010070000
100700000000000000000000
000000000000000000000000
010000000200000030000000
020500000004000007000000
030400000004000007000000
040600000004000007000000

0x01006601 (96MiB)
LVDS, HDMI, DP, DP
010066010103040300000006
000080010000003010070000
100700000000000000000000
00000000f0d9050000000000
010000000200000030000000
020500000008000006000000
030400000004000007010000
040600000004000007010000
020000001100110000000000

0x02006601 (64MiB)
LVDS
020066010103010100000004
000080010000002010070000
100700000000000000de0500
00000000f0d9050000000000
010000000200000030000000
000000000100000040000000
000000000100000040000000
000000000100000040000000
000000001200000000000000

0x03006601 (64MiB)
LVDS, DP, DP, DP
030066010102040200000004
000000010000002010070000
100700000000000000000000
000000000000000000000000
050300000200000030000000
020500000004000007040000
030400000004000081000000
040600000004000081000000
000000000002001100000000

0x04006601 (32MiB)
LVDS
040066010103010100000002
000000010000001810070000
100700000000000000da0500
000000000000000000000000
050300000200000030020000
000000000100000040000000
000000000100000040000000
000000000100000040000000
000000000000000000000000

0x05006201 (32MiB)
DP, DP, DP
050062010002030200000002
000000010000002010070000
100700000000000000000000
000000000000000000000000
020500000004000011000000
030400000004000007010000
040600000004000007010000
000000000100000040000000
000000000000110000000000

0x06006201 (0MiB)
060062010000000000000000
000000000000001010070000
100700000000000000000000
000000000000000000000000
000000000100000040000000
000000000100000040000000
000000000100000040000000
000000000100000040000000
000000000000000000000000

0x07006201 (0MiB)
070062010000000000000000
000000000000001010070000
100700000000000000000000
000000000000000000000000
000000000100000040000000
000000000100000040000000
000000000100000040000000
000000000100000040000000
000000000000000000000000

0x08006601 (64MiB)
LVDS, DP, DP
080066010103030300000004
000000010000002010070000
100700000000000000000000
00000000f0d9050000000000
010000000200000030000000
020500000004000007010000
030400000004000007010000
000000000100000040000000
030000000100010010c80f00

0x09006601 (64MiB)
LVDS, DP, DP
090066010103030300000004
000000010000002010070000
100700000000000000000000
00000000f0d9050000000000
010000000200000030000000
020500000004000007010000
030400000004000007010000
000000000100000040000000
030000000000010010c80f00

0x0A006601 (32MiB)
DP, DP, HDMI
0a0066010002030200000002
000000010000002010070000
100700000000000000000000
000000000000000000000000
020500000004000007010000
030400000004000007010000
040600000008000006000000
000000000100000040000000
020000000000020010c80f00

0x0B006601 (32MiB)
DP, DP, HDMI
0b0066010002030200000002
000000010000002010070000
100700000000000000000000
000000000000000000000000
020500000004000007010000
030400000004000007010000
040600000008000006000000
000000000100000040000000
000000000000020010c80f00

Depois de verificar qual valor corresponde ao seu ig-platform-id, vamos alterar a linha que corresponde a entrada HDMI.

 

Faça um backup da kext, depois coloque a kext AppleIntelFramebufferCapri na Mesa, clique com o botão direito e vá em "Mostrar conteúdo do pacote" depois em Contents/MacOS.

 

Verá que dentro desta pasta está o arquivo chamado "AppleIntelFramebufferCapri" abra ele com o app Hex Fiend, e execute o comando ⌘ + F, vai abrir uma caixa de dialogo com as opções "Find" e "Replace".

qVc.png

 

Agora que você está com os valores corretos do seu ig-platform-id, insira o valor correspondente (veja a lista acima) no campo "Find" e precione Enter, quando o valor está correto irá aparecer o resultado em azul, caso não esteja certo um "X" irá aparecer no lado esquerdo. Veja:

pVc.png

 

Depois de se certificar que está com os valores corretos, copie e cole em um novo documento com o Editor de Texto, e organize desta maneira:

rVc.png

 

Agora vamos mudar os valores para o funcionamento do HDMI. Todo audio HDMI funciona independente do ig-platform-id que está usando com este valor abaixo:

02 05 00 00 00 08 00 00 06 00 00 00

Veja como irá deixar:

sVc.png

 

Depois que modificar, copie o valor inteiro e cole no campo "Replace" do app Hex Fiend, e clique no botão "Replace" que está abaixo dos campos.

mVc.png

 

Feito isso salve.

 

Agora instale a kext modificada com o KextWizard, e repare as permissões e recarregue o cache, depois execute estes 2 comandos no Terminal:

sudo touch /System/Library/Extensions

Depois:

sudo nvram -c

Agora reinicie.

 

 Método alterando a AppleIntelFramebufferCapri - Usando patch

 

Há um metodo muito funcional que possibilita habilitar a porta HDMI, usando apenas um patch.

 

1 - Baixe o patch. HD4000.zip

 

Feito isso, rode esse comando no Terminal:

cd Downloads/HD4000
./list

2 - Será criado vários arquivos dentro da pasta, cada um deles é para um ig-platform-id diferente. Você já sabendo qual é o seu, edite, veja só:

lVc.png

 

Como viu acima, este valor que eu inseri, é o valor HDMI.

02 05 00 00 00 08 00 00 06 00 00 00

Depois que você modificou, agora aplique o patch na kext - Deixe em System/Library/Extensions.

 

3 - Rode isso no Terminal:

sudo ./patch [nome do txt editado]

Ficaria assim

sudo ./patch 01660003-345264.txt

Esse metodo é 100% funcional, mas só terá sucesso se prestar atenção nos valores e deixar a formatação do arquivo como a original.

 

Feito isso, repare as permissões, recarregue o cache e reinicie.

 

3 - Seção.

 

Conecte seu Hack com um Televisor/Monitor a entrada HDMI, e vá em Preferências do Sistema > Som, terá de aparecer assim:

 

 

Vá em Sobre este Mac > Informações do Sistema > Graficos > e veja se as informações sobre sua Televisão/Monitor está presente, e tem que estar com a informação "Televisão - Sim" na ultima linha.

 

 

Informações adicionais.

 

  • Para o audio HDMI funcionar você tem que ter o audio funcionando nativamente, seja com a AppleHDA ou VoodooHDA.
  • Para devices integrados (IGPU) geramente se usa "onboard-1" nos patchs para DSDT. Alguns device dedicados (GFX) usam "onboard-2" Creditos da informação - Toleda
  • Tenha em mente que o OS X não vai prover o som, somente o Televisor/Monitor irá prover o som, volumes altos/baixos será controlado pelo Televisor/Monitor.
  • Para usar a AppleHDA veja isso: Guia de como corrigir a AppleHDA para o seu codec

 

Creditos: EMlyDinEsH, Bruxo, Toleda, Mirone e Pernacabeluda.

Edited by Allan
  • Like 6
Link to comment
Share on other sites

Opa estamos ai, caras pra chegar a essa conclusão da maneira correta pra ativar o audio HDMI, demorei quase 1 ano!!

 

Mas valeu a pena o trabalho, depois que a gente vê que é bem simples.

 

Vlw

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Antes aplicar qualquer um desse metodos na sua DSDT, requer primeiramente que o método DTPG já esteja aplicado.

Insira este patch no device HDEF na sua DSDT:

 

 

Bom dia, all@n.

 

Poderia me explicar como faço para aplicar o método DTGP na minha DSDT. 

 

Obrigado pela atenção...

Link to comment
Share on other sites

  • 1 month later...
  • 1 year later...

o edit da dsdt mais o método on the fly do clover arrumaram minha porta hdmi para áudio e vídeo. bom que se eu espelhar a tv os artefatos somem da tela do laptop também. demorei para arrumar a porta hdmi pois meu caso é o mesmo do artur onde temos que injetar os valores do fb=3 no 4, e com isso a porta hdmi morre. agora quando quero usar hdmi posso somente trocar o config.plist e a dsdt para isso e o reboot não precisa ser no windows. fica tudo pelo capitão mesmo hehehe.

 

valeu pelos dois guias! fáceis e funcionais.

  • Like 1
Link to comment
Share on other sites

  • 3 months later...

Fiz todos os procedimento, o audio do HDMI até habilitou, mas ele fica falhando. Fica mudo, de repente dá um estalo e ele volta, mas só um pequeno trecho, e fica mudo de novo... Parecido com o comportamento do som que um fone bluetooth faz quando está longe da origem do sinal.

Meu Note é o LG N460... Alguém mais teve esse problema?

Link to comment
Share on other sites

 Share

×
×
  • Create New...