Problemas de audio en OSX 10.6.8

Como ya he comentado más de una vez, utilizo un Mac Mini con Plex instalado como mediacenter. Encantado estoy con mi elección y hasta ahora me ha dado muy pocos problemas que se han resuelto fácilmente. Pero desde que he actualizado el sistema a la versión 10.6.8, tengo un problema incómodo. Debido a un cambio que ha hecho Apple en un fichero de configuración del sistema, ahora cada vez que se reproduce un vídeo con audio en formato 5.1 cualquier otro tipo de audio deja de escucharse hasta un nuevo reinicio (o hasta que se ponga el equipo en reposo). El problema no está teniendo mucha repercusión en los medios digitales dado que solo se reproducen cuando se emplea la salida de audio digital, con la analógica (la más usada) no existe éste problema.

Rebuscando por internet y en en especial en los foros de soporte de Apple no he encontrado una solución oficial, pero si un truco que puede ayudar a solucionarlo. Es necesario disponer de una copia de un fichero ubicado en la carpeta /system anterior a la actualización a Snow Leopard 10.6.8, así que si tienes una imagen del disco o una copia de Time Machine no deberías tener problemas para localizarlo. El procedimiento es el siguiente:

  1. Localizar la copia del fichero /System/Library/Extensions/appleHDA.kext.
  2. Reemplazar en /System/Library/Extensions/ el fichero nuevo por el antiguo.
  3. Reiniciar el equipo.

Si todo sale correctamente, deberías tener el problema arreglado. En caso de error, lo mejor es volver a instalar la actualización de OSX.

En caso de que no quieras complicarte la vida mientras esperas por la solución de Apple (que aún no se ha pronunciado), puedes reiniciar el equipo o ponerlo en reposo cuando tengas éste problema o bien usar la salida analógica para el audio 2.0.

Actualización: En mi caso particular, no ha funcionado el cambio y ni reinstalando el combo 10.6.8 parece que el problema mejore. Yo no he podido restaurar mi fichero original y he tenido que tirar de uno de un iMac que me ha pasado @biciclo, por tanto mi recomendación es esperar a la solución oficial de Apple.

Expulsar discos desde Plex

Actualmente estoy usando Plex como centro multimedia en mi Mac Mini, algo que comentaré más detalladamente en la serie de artículos que estoy escribiendo sobre el tema (I y II). Una de las cosas que he buscado ha sido la comodidad, ya que mi Mac no tiene conectado ningún dispositivo de control, ni teclado, ni ratón ni nada similar y solo utilizo una aplicación de Logitech para manejar el puntero con el iPod Touch (o iPhone) y el Apple Remote. Por tanto, cualquier tarea debe ser sencilla de realizar.

Con la poca capacidad que tiene de disco mi Mini, me es imposible guardar todo el contenido en él, por lo que me apoyo en dos discos externos de la marca Western Digital, un My Book de 3,5″ y un Passport de 2,5″, ambos conectados mediante Firewire 800. El problema es el siguiente: ¿Por qué debo tener los discos todo el día funcionando si los uso de vez en cuando? Y hasta ahora la respuesta era simple: es un lio montar y desmontar los discos sin ratón ni teclado. Pero ya tengo la solución. Usando AppleScript he creado un programa muy simple que desmonta o monta los discos con un solo clic y gracias a que desde Plex se pueden lanzar aplicaciones, su ejecución es bien sencilla.

Lo primero que hay que hacer es abrir el AppleScript Editor, que podréis encontrar usando Spotlight o Quicksilver. Una vez abierto, pegamos el código siguiente:

set myVolumeLabel to “My Book”

tell application “GrowlHelperApp”

set the allNotificationsList to {“Disk mounted”, “Disk unmounted”}

register as application “Disk Mounter” all notifications allNotificationsList default notifications allNotificationsList icon of application “Disk Utility.app”

end tell

tell application “Finder”

set diskDev to do shell script “diskutil list | grep \”" & myVolumeLabel & “\” | grep -o ‘disk[1-9]*’ ”

if not (disk myVolumeLabel exists) then

do shell script “diskutil mountDisk ” & diskDev

tell application “GrowlHelperApp” to notify with name “Disk mounted” title “Volume mounted” description “Disk “” & diskDev & “” with volume “” & myVolumeLabel & “” has been successfully mounted.” application name “Disk Mounter” icon of application “Disk Utility.app”

else

do shell script “diskutil unmountDisk ” & diskDev

do shell script “hdiutil detach ” & diskDev

tell application “GrowlHelperApp” to notify with name “Disk unmounted” title “Disk unmounted” description “Disk “” & diskDev & “” with volume “” & myVolumeLabel & “” has been successfully unmounted.” application name “Disk Mounter” icon of application “Disk Utility.app”

end if

end tell

Lo único que se necesita cambiar en el código es en la primera línea el nombre del disco que queremos expulsar o montar, en éste caso “My Book”. También hay que tener algunas consideraciones en mente. El script sirve tanto para desmontar como para montar  un volumen de cada vez, si un disco físico tiene varios volúmenes habría que modificar el script a tal efecto. En mi caso, mi disco de 3,5″ al ser desmontado, si se vuelve a conectar no se carga por si solo, hay que lanzar el programa para que lo haga, para que luego no os coja por sorpresa si no os monta algún disco. Con estas premisas, solo es necesario guardar el script, eligiendo hacerlo como aplicación. Yo las he almacenado en la carpeta de aplicaciones del sistema, pero la ubicación no es realmente importante.

El último paso será añadir cada aplicación a la sección de Programas de Plex, algo que es bastante intuitivo. Cuando esté hecho, veréis que Plex cuando lanza un programa se cierra. En éste caso lo que ocurrirá es que montará o desmontará el disco dependiendo de su estado y luego tras 5 segundos volverá a abrirse Plex. Por ahora, en caso de que se produzca algún fallo, Plex no vuelve a abrirse solo, habrá que aceptar el error y dependiendo de la naturaleza del fallo, lanzar de nuevo el mediacenter.