Problemas de reposo con USB3 en macOS 10.6

Recuperando el reposo (sleep) después de instalar el controlador USB3 en Snow Leopard

En un artículo del blog se comenta la manera de habilitar los puertos USB3 en la placa P55-USB3 con SL mediante el controlador de LaCie modificado por modbin.
También interesa recordar 2 artículos del blog en que se proponen maneras de tener sleep en el Hackintosh con SL: reposo1 y reposo2.

El inconveniente observado al instalar el controlador USB3 es que se pierde el modo de reposo conseguido gracias al script de KWS. La causa está en que, mientras esté cargado en memoria el controlador USB3 PXHCD.kext, el PC no entra bien en reposo pero descargando la extensión con el comando kextunload sí lo hace correctamente.

Es necesario algún método que permita descargar PXHCD.kext al entrar en reposo y volver a cargarlo al despertar. Este método es sleepwatcher.

Sleepwatcher es una utilidad de línea de comandos que funciona como proceso de fondo (daemon) vigilando la inactividad del Mac y los procesos de reposo y despertar. Su utilidad radica en la posibilidad de ejecutar un comando Unix al detectar que el Mac va entrar o sale del reposo. Se descarga desde la web del autor Bernhard Baehr.

Se instala de esta manera:

  1. copia la carpeta sleepwatcher_2.1 al Escritorio para que los siguientes comandos funcionen desde la ruta ~/Desktop/sleepwatcher_2.1
  2. copia el ejecutable y la página de ayuda
  3. copia a la carpeta /Library/LaunchDaemons la configuración de autoarranque de sleepwatcher
  4. copia a la carpeta /etc los archivos que se leen al entrar o salir del reposo, se trata de 2 scripts, rc.sleep y rc.wakeup
  5. lanza el agente sleepwatcher como proceso de fondo
$ sudo cp ~/Desktop/sleepwatcher_2.1/sleepwatcher /usr/local/sbin
$ sudo cp ~/Desktop/sleepwatcher_2.1/sleepwatcher.8 /usr/local/share/man/man8
$ sudo cp ~/Desktop/sleepwatcher_2.1/config/de.bernhard-baehr.sleepwatcher-20compatibility.plist /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
$ sudo cp ~/Desktop/sleepwatcher_2.1/config/rc.* /etc
$ sudo launchctl load /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist

Con esta configuración en marcha podemos crear en nuestra carpeta de usuario los archivos .sleep y .wakeup con los comandos que deseamos ejecutar al entrar (.sleep) o al salir (.wakeup) del reposo

El archivo .sleep ha de tener este contenido:

#! /bin/sh
  kextunload /System/Library/Extensions/PXHCD.kext/

el archivo .wakeup ha de tener este contenido:

#! /bin/sh
  kextload /System/Library/Extensions/PXHCD.kext/

Si tenemos algún dispositivo USB3 montado en el Escritorio en el momento de entrar en reposo el proceso se detendrá con un mensaje sobre la expulsión del dispositivo que requerirá acción del usuario (pulsar Aceptar). Es conveniente tenerlo desmontado.

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.