e il procedimento applicato di tmogkol(insanelymac.com)
Ringrazio entrambi.
Come abilitare l'AUDIO HDMi.
patchando l'AppleHDA.
PREMESSA: Se volete semplificarvi la vita senza ricorrere a edit del DSDT patchare binari ecc. ecc
c'e VoodooHDA, ma questo validissimo kext non e' argomento di questo topic,
quindi evitiamo di andare OFF TOPIC.
Dalla versione 1.7.9a4 dell'AppleHDA (10.6.2) quest'ultimo possiede un Encoder digitale per l'audio HDMi.
(Sono escluse le versioni precedenti...).
Al momento questa modifica dovrebbe/potrebbe funzionare con un ristretto gruppo di schede grafiche SOLO nVidia (per ora).
Le schede grafiche che possiedono il chip audio integrato sulla scheda grafica sono:
GT220, GT240, GT330, GTX470, GTX480
(Al momento questa e' la lista conosciuta)
Posso confermare che funziona, ho una GT240 sul mio secondo hack in firma e l'audio HDMi funziona.
Ho modificato l'eseguibile per funzionare anche con il controller integrato sulla mia motherboard con chip audio ALC1200.
Come procedere.
- Dobbiamo editare il nostro DSDT
- Abbiamo bisogno di Windows (probabilmente anche con altre utility.. ma e' la piu' facile) per poter ottenere informazioni sul codec usato dal chip della scheda grafica.
- Dobbiamo Editare il binario dell'AppleHDA, sostituendo il codec "standard" con quello "trovato" in windows.
Nel DSDT ci spostiamo nella parte elativa alla nostra scheda grafica (se usate l'enabler del bootloader dovete aggiungere ugualmente queste linee di codice)
NON CHIEDETE COME FARE AD AGGIUNGERE IL CODICE CI SONO UNA MAREA DI GUIDE SU QUESTO ARGOMENTO.
Da aggiungere:
Device (GFX0) { Name (_ADR, Zero) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "hda-gfx", Buffer (0x0A) { "onboard-1" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Device (HDAU) { Name (_ADR, One) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "hda-gfx", Buffer (0x0A) { "onboard-1" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } }
Esempio usando l'enabler del bootloader:
Device (PEG3) { Name (_ADR, 0x00030000) // Questo e' l'indirizzo dove si trova la mia scheda grafica, controlla il tuo. Device (GFX3) // il nome che ho dato al sub-device { Name (_ADR, 0x02000000) // Usa le info di LSPCI per ottenere il sub-address Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "hda-gfx", Buffer (0x0A) { "onboard-1" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Device (HDAU) { Name (_ADR, One) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "hda-gfx", Buffer (0x0A) { "onboard-1" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Name (_PRW, Package (0x02) // Gia' presente sul mio DSDT il tuo sara' diverso { 0x09, 0x04 }) Method (_PRT, 0, NotSerialized) // Gia' presente sul mio DSDT il tuo sara' diverso { If (PICM) { Return (AR13) } Return (PR13) } }
Esempio usando l'iniezione completa nel DSDT:
Device (PEG3) { Name (_ADR, 0x00030000) Device (GFX3) { Name (_ADR, 0x02000000) Method (_DSM, 4, NotSerialized) { Store (Package (0x1C) { "AAPL,slot-name", Buffer (0x0A) { "PCI-E 16x" }, "@0,compatible", Buffer (0x0B) { "NVDA,NVMac" }, "@0,device_type", Buffer (0x08) { "display" }, "@0,name", Buffer (0x0F) { "NVDA,Display-A" }, "@1,compatible", Buffer (0x0B) { "NVDA,NVMac" }, "@1,device_type", Buffer (0x08) { "display" }, "@1,name", Buffer (0x0F) { "NVDA,Display-B" }, "NVCAP", Buffer (0x18) { /* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0008 */ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, /* 0010 */ 0x00, 0x00, 0x00, 0x00 }, "NVPM", Buffer (0x1C) { /* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0018 */ 0x00, 0x00, 0x00, 0x00 }, "VRAM,totalsize", Buffer (0x04) { 0x00, 0x00, 0x00, 0x40 }, "device_type", Buffer (0x0C) { "NVDA,Parent" }, "model", Buffer (0x15) { "GeForce GT 240 [G92]" }, "rom-revision", Buffer (0x09) { "DSDT ROM" }, "reg", Buffer (0x78) { /* 0000 */ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0010 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x02, /* 0018 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0020 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, /* 0028 */ 0x14, 0x00, 0x02, 0x42, 0x00, 0x00, 0x00, 0x00, /* 0030 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0038 */ 0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x02, 0x42, /* 0040 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0048 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, /* 0050 */ 0x24, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, /* 0058 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0060 */ 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02, 0x02, /* 0068 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0070 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 }, [b]"hda-gfx", Buffer (0x0A) { "onboard-1" }[/b] }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } [b]Device (HDAU) { Name (_ADR, One) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "hda-gfx", Buffer (0x0A) { "onboard-1" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } }[/b] Name (_PRW, Package (0x02) { 0x09, 0x04 }) Method (_PRT, 0, NotSerialized) { If (PICM) { Return (AR13) } Return (PR13) } }
Queste sono le modifiche necessarie al DSDT.---
Ora andiamo in Windows con il medesimo computer (Nativamente non virtualizzato) abbiamo bisogno delle info specifiche del nostro hardware.


Qui una probabile?? lista di codec >> Vendor+deviceId
Ora.. la mia GT240 il suo controller AUDIO HDMi integrato ha questo id: 0x10DE000D
Mentre quello standar all'interno dell'AppleHDA : 0x10DE000A
Quindi dovete modificare il binario con un editor esadecimale, cercate e cambiate nelle 4 posizioni le istanze da
0A 00 DE 10 in 0D 00 DE 10 (nel mio caso).
piccoli appunti:
GT220 : 0x10DE000A (Non hai bisogno di modificare l'AppleHDA
GT240 : 0x10DE000D (Mio caso... bisogna modificare l'AppleHDA).
Quote
*HDMi nVidia GT240: 0a00de10 --> 0d00de10
sudo perl -pi -e 's|\x0a\x00\xde\x10|\x0d\x00\xde\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
sudo perl -pi -e 's|\x0a\x00\xde\x10|\x0d\x00\xde\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
Quote
*HDMI nVidia GTX460: 0a00de10 --> eb0bde10
sudo perl -pi -e 's|\x0a\x00\xde\x10|\xeb\x0b\xde\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
sudo perl -pi -e 's|\x0a\x00\xde\x10|\xeb\x0b\xde\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
Quote
*HDMI nVidia GTX470: 0a00de10 --> 1000de10
sudo perl -pi -e 's|\x0a\x00\xde\x10|\x10\x00\xde\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
sudo perl -pi -e 's|\x0a\x00\xde\x10|\x10\x00\xde\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA


Fabio



Sign In
Create Account











