Problemas con el MacBook Air

Thursday, 2 de January de 2014

Hace poco renové Mac, esta vez pasándome al MacBook Air. Es uno de los mejores ordenadores que he tenido nunca, pero por desgracia, está lejos de ser perfecto. Tiene unos cuantos fallos, aunque por suerte, algunos tienen solución:

El perfil de pantalla. La mayoría de MBA llevan pantallas LCD fabricadas por el LG. El perfil de colores es muy mejorable. Por suerte, tiene muy fácil solución. Y en minutos, la pantalla se vuelve a ver como debería verse.

El bug del apagado de pantalla. En los MBA de mid-2013, al apagar la pantalla, hay un breve periodo entre que se la pantalla se pone en negro hasta que se apaga por completo, incluida la retroiluminación del teclado. Si se toca el teclado o el trackpad antes de que se apague del todo (por ejemplo, justo antes de que la retroiluminación se apague), el ordenador se cuelga. Por el momento, no tiene solución.

El botón de encendido. Por defecto, el botón de encendido del MacBook Air apaga la pantalla y pone el ordenador en reposo. Eso no sería un problema si no fuese por dónde está situado. Para hacerlo peor, el bug anterior hace que la reacción por instinto (lanzar el reposo por accidente y querer interrumpirlo tocando el teclado) hace que se cuelgue del todo. Pero hay una solución: hacer que no se apague la pantalla al tocar el botón.

Lo primero, los riesgos. La solución supone lanzar a cada arranque un binario que analiza una aplicación en memoria y la altera, de tal forma que en lugar de iniciar la entrada en reposo, salte a la acción que muestra el diálogo de encendido. No se trata de algo especialmente peligroso, salvo por el hecho de que una actualización muy posiblemente lo deje inutilizado, o en el peor de los casos, el cambio en tiempo de ejecución que produce deje temporalmente inservible el sistema (algo altamente improbable). De ocurrir, habría que entrar en modo recovery y borrar el plist dentro de /Library/LaunchAgents/ para evitar que se ejecute.

Primero hay que descargar el código fuente aquí, para luego compilarlo y situarlo en la carpeta bin (o cualquier otra, realmente), y finalmente, hacer un plist que haga que se lance a cada arranque. Como recordatorio, hay que tener curl así como las herramientas para poder compilar (es muy fácil).

curl https://raw.github.com/binchewer/power_fixer/master/power_fixer/main.c > main.c
sudo su
gcc -o /usr/bin/power_fixer main.c
chmod +x /usr/bin/power_fixer
echo "ALL     ALL=(root)      NOPASSWD: /usr/bin/power_fixer" >> /etc/sudoers
mkdir -p /Library/LaunchAgents
curl https://gist.github.com/adrinavarro/8226124/raw/74202b0e5b2edd96dba65cbd00a34\
91f369994cb/gistfile1.xml > /Library/LaunchAgents/com.power_fixer.plist
launchctl load -w /Library/LaunchAgents/com.power_fixer.plist

Después de reiniciar, el botón de encendido debería mostrar el diálogo en lugar de apagar la pantalla. No olvides los riesgos, de todos modos.


Nota a junio de 2014: Al parecer alguna actualización de software ha solucionado dos de los tres problemas — todos, salvo el perfil de color, que por otra parte, no es un problema como tal. Hurra!