Jump to content

Editando a AppleHDA do Lion


oldnapalm
 Share

43 posts in this topic

Recommended Posts

Quem utilizava kext legacy para a AppleHDA no Snow Leopard vai perceber que esse método não funciona no Lion, pois a estrutura da kext foi alterada.

 

Veja como editar a AppleHDA original do Lion com base na kext legacy que você usava no Snow Leopard:

 

Abra o Info.plist da legacy para Snow Leopard;

 

Copie as chaves CommonPeripheralDSP e PathMaps para o arquivo AppleHDA.kext/Contents/Resources/Platforms.xml (substitua o conteúdo original);

 

Copie as chaves LayoutID e PathMapRef (de dentro da chave Layouts) para o arquivo AppleHDA.kext/Contents/Resources/layout??.xml (substitua o conteúdo original ou crie um novo arquivo se ele não existir, ?? = LayoutID);

 

Copie a chave HDA Hardware Config Resource para o arquivo AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist (substitua a chave com o mesmo nome).

 

Como editar o Info.plist

http://www.insanelymac.com/forum/index.php?showtopic=243652

 

Se o codec não for ALC889A ou AD1988B também será necessário editar o arquivo AppleHDA.kext/Contents/MacOS/AppleHDA (binário).

 

Para codecs Realtek (ALC) substitua as 4 ocorrências de 85 08 EC 10 (bytes invertidos do codec 0885 e vendor 10EC) pelo seu codec, por exemplo, 88 08 EC 10.

 

Utilize um editor hexa (0xED) ou o comando

sudo perl -pi -e 's|\x85\x08\xec\x10|\x88\x08\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA

 

Para codecs Analog Devices (AD) substitua as 4 ocorrências de 8B 19 D4 11 pelo seu codec

sudo perl -pi -e 's|\x8b\x19\xd4\x11|\x9b\x98\xd4\x11|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA

Link to comment
Share on other sites

  • 4 weeks later...

Ola Old,fiz o procedimento acima aqui,so esta faltando rodar o comando no terminal,mais a pergunta é,para ativar o HDA uso o HDEF no dsdt ou HDAenabler.kext,vou postar os arquivos modificados e a legacy que usei como espelho.

 

codec_dump.txt:codec_dump.txt

Platforms.xml:Platforms.xml

layout887.xml:layout887.xml

AppleHDAHardwareConfigDriver.kext/Contents/Info.plist:Info.plist.zip

legacy887:ALC887HDA.kext.zip

 

Faltando:

ALC887

sudo perl -pi -e 's|\x85\x08\xec\x10|\x87\x08\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA

 

para mim parece estar tudo certo,se puderem dar uma olhoda eu agradeço.

 

Obs:São kexts do Snow,mais como agora as legacy não funcionam mais e todos os topicos apontam pra ca eu postei aqui,se postei no lugar errado quiserem mudar o local ou se quiserem abrir um topico fiquem a vontade.

Link to comment
Share on other sites

Opa old,saiu daqui a kext:http://www.insanelymac.com/forum/lofiversi...hp/t256626.html

a data dos posts é de maio desse ano,tomara que de certo.

Editado:

Deu errado com essa kext.

 

 

Eu fiz mais algumas tentativas,vou postar aqui o material todo,pq não obitive sucesso por completo.

 

Tudo reconhecido,mais sem audio, :D

post-711330-1308981926.png

post-711330-1308981958_thumb.png

post-711330-1308981983_thumb.png

post-711330-1308982033_thumb.png

 

Bom usei essa kext legacy:ALC887_888b.kext.zip

 

AppleHDA.kext para ALC887:AppleHDA.kext.zip

 

Meu dsdt.aml com HDEF e patch para ALC887:dsdt.aml.zip

 

Bom é isso ai,mesmo com tudo reconhecido eu não tenho audio,se puderem ajudar e precisarem de mais informações é so socilitar eu posto aqui...ajuda :D

Link to comment
Share on other sites

Com os dados de qual legacy reconheceu tudo?

 

A do seu primeiro post é mais parecida com o seu codec dump (ConfigData)

01471C10 01471D40 01471E01 01471F02 
01571C70 01571D10 01571E01 01571F02 
01671C80 01671D60 01671E01 01671F02 
01771C90 01771D20 01771E01 01771F02 
01871C50 01871D90 01871EA0 01871F90 
01971C60 01971D90 01971EA1 01971F02 
01A71CA0 01A71D30 01A71E81 01A71F02 
01B71C20 01B71D40 01B71E21 01B71F02

 

Do seu dump (gerado pelo verbit)

01471c10 01471d40 01471e01 01471f01 
01571cf0 01571d11 01571e11 01571f41 
01671cf0 01671d11 01671e11 01671f41 
01771cf0 01771d11 01771e11 01771f41 
01871c30 01871d98 01871ea1 01871f01 
01971c40 01971d98 01971ea1 01971f02 
01a71c3f 01a71d30 01a71e81 01a71f01 
01b71c20 01b71d40 01b71e21 01b71f02

 

Dessa última legacy

21871C40 21871D90 21871EA0 21871F90 
21971C50 21971D90 21971E81 21971F02 
21A71C60 21A71D30 21A71E81 21A71F01 
21B71C70 21B71D40 21B71E21 21B71F02 
21471C10 21471D40 21471E11 21471F01 
21571C20 21571D10 21571E01 21571F01 
21671C30 21671D60 21671E01 21671F01 
21771C80 21771D20 21771E01 21771F01 
21E71C90 21E71D61 21E71E4B 21E71F01 
21F71CA0 21F71D01 21F71ECB 21F71F01

 

O melhor seria você ter funcionando com a legacy no 10.6.7 para depois editar a do 10.6.8 conforme a legacy.

Link to comment
Share on other sites

Com os dados de qual legacy reconheceu tudo?

 

Com a ultima carregou tudo Old,eu acho que essas kexts foram geradas em um GA,poque no pacote delas tinhas varias GA.

 

O melhor seria você ter funcionando com a legacy no 10.6.7 para depois editar a do 10.6.8 conforme a legacy.

Pois é Old,com certeza ai não daria esses erros,mais eu nunca usei nem nessa e nem em outra nenhuma placa kexts de som legacy.

 

Obs:continua tudo reconhecido e melhorou um pouco com dsdt,não sei se o pinconfig esta correto no pacth eu peguei em um topico aqui do forum de uma placa identica.

Link to comment
Share on other sites

  • 2 months later...
Copie as chaves (CommonPeripheralDSP, PathMaps, LayoutID, PathMapRef e HDA Hardware Config Resource) da AppleHDA editada. Procure nos PlugIns AppleHDAPlatformDriver e AppleHDAHardwareConfigDriver.

vou tentar por aqui! vlws old!

 

@EDIT

 

cara consegui fazer tudo ate a parte do comando o do editor EXA... não sei como fazer! meu codec é ALC888B qual seria o comando?

Link to comment
Share on other sites

Talvez, se ela for posterior a 10.6.2 (até essa versão o codec não era verificado). Localize os bytes 85 08 EC 10 no binário da kext original (mesma versão) e veja o que tem na mesma posição na kext modificada.

Link to comment
Share on other sites

Talvez, se ela for posterior a 10.6.2 (até essa versão o codec não era verificado). Localize os bytes 85 08 EC 10 no binário da kext original (mesma versão) e veja o que tem na mesma posição na kext modificada.

 

então cara eles são exatamente os mesmos nas duas kexts! visto isso eu fiz o teste aqui mas não to conseguindo gerar o mkext de cache para o sistema

 

me retorna isso aqui:

post-580097-1314788753_thumb.png

Link to comment
Share on other sites

Se são os mesmos a kext deve ser 10.6.2, na do Lion certamente tem que aplicar o patch no binário, tente com o mesmo da ALC888.

 

Esses erros devem ser por causa das permissões.

 

Old tive progresso! fiz o seguinte instalei o windows em outro HD instalei os drivers configurei a bios mas antes atualizei pra versão F5

 

extrai meu novo DSDT ( ja que mudou a bios....) apliquei o auto patch e peguei um programinha com os codecs da gigabyte ( aqui é meu pulo do gato) apliquei esse patch HDEF abri o DSDT com DSDT editor e lá estavam os números que eu precisava

 

8708EC10 ( pode incluir no tópico por favor?) para o codec ALC888b

então eu terminei o processo! o unico problema era aquele que eu falei sobre o cache

reparei as permissões todos os erros "omitting" desapareceram EXCETO o da AppleHDA.kext!! é mole meu amigo ? kkkkk

 

e agora? alguma idéia?

 

xD hackintosh tem desses mistérios....

Link to comment
Share on other sites

Como você reparou as permissões? Tenta reparar manualmente

http://www.insanelymac.com/forum/index.php?showtopic=209655

 

Se continuar o problema talvez você tenha editado algo errado no plist, você usou o PlistEdit Pro?

 

sim usei o programa que você sugeriu, kext utility só reconhece o Snow leopard.

vou tentar fazer isso Old mas antes tira uma dúvida aqui!

pesquisei sobre o patch HDEF para o codec ALC888b então no forum do tonymac encontrei um post dele com o seguinte patch:

 

 Device (HDEF)
{
Name (_ADR, 0x001B0000)
Method (_PRW, 0, NotSerialized)
{
Return (Package (0x02)
				{
					0x0D, 
					0x05
				})
			}

			Method (_DSM, 4, NotSerialized)
			{
				Store (Package (0x0A)
					{
						"built-in", 
						Buffer (One)
						{
							0x00
						}, 

						"codec-id", 
						Buffer (0x04)
						{
							0x88, 0x08, 0xEC, 0x10
						}, 

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

						"device-type", 
						Buffer (0x10)
						{
							"Realtek ALC888b"
						}, 

						"PinConfigurations", 
						Buffer (0x28)
						{
/* 0000 */	0x10, 0x90, 0xA1, 0x01, 0x20, 0x90, 0xA1, 0x02, 
/* 0008 */	0x80, 0x30, 0x81, 0x01, 0x90, 0x40, 0x21, 0x02, 
/* 0010 */	0x30, 0x40, 0x11, 0x01, 0x40, 0x40, 0x01, 0x01, 
/* 0018 */	0x50, 0x60, 0x01, 0x01, 0x60, 0x20, 0x01, 0x01, 
/* 0020 */	0x70, 0x61, 0x4B, 0x01, 0xA0, 0x01, 0xCB, 0x01
						}
					}, Local0)
				DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				Return (Local0)
			}
		}

 

baixei o programa Gigabyte HDEF que promete adicionar um patch para meu codec no DSDT:

 

Device (HDEF)
		{
			Name (_ADR, 0x001B0000)
			Method (_PRW, 0, NotSerialized)
			{
				Return (Package (0x02)
				{
					0x0D, 
					0x05
				})
			}

			Method (_DSM, 4, NotSerialized)
			{
				Store (Package (0x08)
					{
						"codec-id", 
						Buffer (0x04)
						{
							0x87, 0x08, 0xEC, 0x10
						}, 

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

						"device-type", 
						Buffer (0x10)
						{
							"Realtek ALC888b"
						}, 

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

 

agora eu te pergunto qual desses é o correto? sem dúvidas que um esta errado.

outra pergunta! aqui no layoutid seguindo seu tutorial eu adicionei o layout 2183 então...

não seria o caso de alterar essa tag?:

 

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

ou não tem nada haver e eu to falando bobagem?

 

tenso isso e já se vai a tarde inteira....</div>

Link to comment
Share on other sites

O correto é o valor do layout-id em hex na DSDT e em decimal no xml. Alguns usam o layout12.xml e colocam 0x0c na DSDT.

 

Se você vai usar layout887.xml então na DSDT use 0x377, mas o binário tem que coincidir com o codec-id, não layout-id. Veja como está na kext do Snow e no dsdt.aml que você usa com ela (ou na HDAEnabler).

 

Acho que o do Gigabyte HDEF está errado, avise o Maldon. Talvez você tenha baixado de um link desatualizado.

Link to comment
Share on other sites

O correto é o valor do layout-id em hex na DSDT e em decimal no xml. Alguns usam o layout12.xml e colocam 0x0c na DSDT.

 

Se você vai usar layout887.xml então na DSDT use 0x377, mas o binário tem que coincidir com o codec-id, não layout-id. Veja como está na kext do Snow e no dsdt.aml que você usa com ela (ou na HDAEnabler).

 

Acho que o do Gigabyte HDEF está errado, avise o Maldon. Talvez você tenha baixado de um link desatualizado.

 

eu baixei do tópico oficial....

ah entendi! tenho que converter o valor. para avisar ao maldon vai ser complicado eu entendo bem pouco do que eu to fazendo e confio mais no que você diz do que no que eu mesmo penso. quero dizer não tenho como argumentar com ele e dizer que o trabalho dele esta errado xD

 

vou continuar tentando. tem que sair alguma coisa.

 

obrigado!

Link to comment
Share on other sites

Você baixou do tópico em português ou inglês? Acho que o em português está desatualizado.

 

Por que você não usa o mesmo dsdt.aml que funciona no Snow? O LayoutID na kext deve estar coincidindo, isso que importa. O patch do binário você pode testar os 2, 887 e 888.

Link to comment
Share on other sites

Você baixou do tópico em português ou inglês? Acho que o em português está desatualizado.

 

Por que você não usa o mesmo dsdt.aml que funciona no Snow? O LayoutID na kext deve estar coincidindo, isso que importa. O patch do binário você pode testar os 2, 887 e 888.

 

 

Old tentei comò você disse, deixando tudo igual a kext legacy do snow+DSDT mas não deu certo!! então vi que no meu DSDT novo com gigabyte HEF tem 0x0c então converti e deu 12, assumi isso como sendo o layoutID e editei toda a kext

 

agora são reconhecidas algumas saídas/entradas de audio mas nenhuma realmente funciona... o ícone tb não ta mais cinza porem não tem som enfim creio que falta pouco!

 

será que pode dar uma olhada na minha kext e no meu patch do dsdt ?

só vou anexar depois da sua resposta.

 

obrigado.

Link to comment
Share on other sites

 Share

×
×
  • Create New...