Chip de sonido AppleHDA ALC889a en macOS 10.6.3

Snow Leopard 10.6.3 y AppleHDA.kext para chip de sonido ALC889a

Al instalar la versión 10.6.3 de Snow Leopard se pierde el sonido que funcionaba con AppleHDA modificado según instrucciones de mormegil en InfiniteMac. El chip de mi placa base Gigabyte EP35-DS3r es Realtek ALC889a. Hay comentarios de más usuarios a los que les pasa lo mismo. Hay 2 soluciones posibles.

Usando VoodooHDA

En espera de un arreglo, las versiones más recientes de VoodooHDA (2.5.2 y 2.5.3, de ambas hay versiones para 32 y 64 bits) parecen funcionar bien y el sonido no se pierde al salir del modo de reposo.

Para instalar VoodooHDA es conveniente:

  1. copiar la extensión a /System/Library/Extensions (no funciona bien desde /Extra)
  2. borrar o renombrar AppleHDA
  3. regenerar la caché de extensiones
  4. antes de reiniciar, teclear en Terminal
sudo touch /System/Library/Extensions

Para recrear la caché de extensiones:

sudo kextcache -v -l -t -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /System/Library/Extensions


Usando AppleHDA vanilla y LegacyHDA de tmongkol

Para aquellos a quienes no convenza usar VoodooHDA (que viene de origen con unos volúmenes muy bajos para este chip) he encontrado una posible solución. Tmongkol tiene en InsanelyMac un hilo titulado «ALC889A, Gigabyte (Intel), and other ALC88#(x)» del que he cogido un LegacyHDA que en conjunción con AppleHDA vanilla y código HDEF en DSDT me ha devuelto el sonido y he podido quitar VoodoHDA. El método es:

  1. usar AppleHDA.kext de Apple, el que corresponde a la versión de Snow Leopard que estamos usando
  2. usar LegacyHDA.kext del hilo al que me refiero (los enlaces están en el primer mensaje del hilo justo en la entrada «Series of LegacyHDA.kext for Gigabyte ALC888 and ALC889a 10.5.8 & SL Ready«), yo he probado con el que está en la carpeta «3out2in HDA headphone«
  3. modificar DSDT con arreglo a ésto:

3a) Donde pone

Notify (_SB.PWRB, 0×02)
Notify (_SB.PCI0.AZAL, 0×02)

se cambia por

Notify (_SB.PWRB, 0×02)
Notify (_SB.PCI0.HDEF, 0×02)

(si ya has modificado anteriormente el DSDT es posible que ya lo tengas como HDEF en lugar de AZAL).

3b) Buscar el dispositivo «Name (_ADR, 0x001B0000)» que suele corresponder al audio y ponerlo como sigue:

Device (HDEF)
{
Name (_ADR, 0x001B0000)
Method (_PRW, 0, NotSerialized)
{
Return (Package (0×02)
{
0x0D,
0×05
})
}

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x0A)
{

“built-in”,
Buffer (0×01)
{
0×01
},

“codec-id”,
Buffer (0×04)
{
0×85, 0×08, 0xEC, 0×10
},

“layout-id”,
Buffer (0×04)
{
0×75, 0×03, 0×00, 0×00
},

“device-type”,
Buffer (0×10)
{
“Realtek ALC889A”
},

“PinConfigurations”,
Buffer (0×28)
{
/* 0000 */ 0×10, 0×90, 0xA1, 0×01, 0×20, 0×90, 0xA1, 0×02,
/* 0008 */ 0×80, 0×30, 0×81, 0×01, 0×90, 0×40, 0×21, 0×02,
/* 0010 */ 0×30, 0×40, 0×11, 0×01, 0×40, 0×40, 0×01, 0×01,
/* 0018 */ 0×50, 0×60, 0×01, 0×01, 0×60, 0×20, 0×01, 0×01,
/* 0020 */ 0×70, 0×61, 0x4B, 0×01, 0xA0, 0×01, 0xCB, 0×01
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}

}

Si no has modificado el DSDT para el audio hasta ahora, el dispositivo puede aparecer como AZAL con estas pocas líneas:

Device (AZAL)
{
Name (_ADR, 0x001B0000)
Method (_PRW, 0, NotSerialized)
{
Return (Package (0×02)
{
0x0D,
0×05
})
}
}

Se trata entonces de cambiar AZAL por HDEF y de incluir dentro del dispositivo el método DTGP y los detalles relativos al chip de audio.

AVISOlas instrucciones y propuestas de esta página se proporcionan sin garantía de ningún tipo a la hora de llevarlas a la práctica. Lo que ha funcionado bien en mi caso pudiera no hacerlo en el tuyo.

5 comentarios en «Chip de sonido AppleHDA ALC889a en macOS 10.6.3»

  1. Si el audio sale en Perfil de sistema significa que en el DSDT está bien porque lo inyecta desde ahí.

    Si no tienes sonido todavía es que falta o bien AppleHDA.kext original (versión coincidente con la versión de Snow Leopard que tengas, es decir, sacas AppleHDA para 10.6.5 por ejemplo del DMG de actualización de SL 10.6.5) o bien LegacyHDA.kext apropiado.

    Los enlaces están en el primer mensaje del hilo al que me refiero en el artículo, justo en la entrada “Series of LegacyHDA.kext for Gigabyte ALC888 and ALC889a 10.5.8 and SL Ready”, yo he probado con el que está en la carpeta “3out2in HDA headphone”.

  2. De puta madre, no sé qué estaba haciendo mal porque lo tenía, en otro sitio, pero lo tenía..

    Muchas gracias!!

    Ahora ya tengo en el perfil del sistema el audio y tiene muy buena pinta lo que veo, pero no me sale nada en preferencias del sistema / sonido…

    Creo que la he debido de liar en algun momento con los kext, a ver si lo saco, que estoy cerquita cerquita!!

  3. Ese error por lo general indica que el archivo DSDT no tiene (o tiene mal escrito) el método DTGP que es el encargado de que se carguen los cambios que inyectamos en el código.

    Doy por supuesto en mi artículo que uno sabe crear un archivo DSDT por lo que los comentarios referidos a ALC899a sólo tienen en cuenta el dispositivo de audio HDEF pero éso no sirve de nada sin que el DSDT tenga método DTHP, método _WAK, etc.

    En resumen, si cambias sólo lo que lees en este artículo no funcionará bien.

    ¿Tienes en tu DSDT los métodos DTGP y _WAK? Yo los tengo seguidos justo antes del método Scope (_SI). Y aparte de ello los cambios de HDEF comentados. Y por supuesto el LegacyHDA.kext que también comento.

  4. Hola.

    He leido y releido varios de tus post en os86 y me han venido bastante bien. Pero con este no acabo de conseguir entenderlo…
    De tu código obtengo este error:

    Error 4064 -
    Object does not exist ^ (DTGP)

    Alguna idea?
    Usando el voodoo tampoco consigo que funcione el sonido y tengo exactamente la misma placa que tú…

    Cualquier cosa será bienvenida, GRACIAS!! 😀

  5. Este mismo método sigue funcionando con las versiones 10.6.4 y 10.6.5 de Snow Leopard.

Los comentarios están cerrados.