8 votos

la cafeína no puede evitar que la pantalla se duerma

Tengo una flota de 7 macbook pro's con mac osx 10.10, 10.11 y 10.12, y 3 mac pro's con mac os 10.13 ("high sierra"). En todos los sistemas, lo he configurado para que nunca duerma el sistema o la pantalla. Curiosamente, eso no es suficiente, por lo que también uso el cafeinato para evitar el sueño. En los sistemas 10.13, sin embargo, la pantalla sigue durmiendo, no importa lo que intente. Esto afecta a dos cosas:

  • mis pruebas de opengl se cuelgan
  • "osascript -e 'dile a la aplicación "Eventos del sistema" que se reinicie'" se cuelga

Como sólo la pantalla está dormida, aún puedo conectarme por ssh y echar un vistazo.

Actualmente ejecuto mi script bajo caffeinate -dsiu -t 31536000, y cuando se cuelga, evidentemente todavía tengo todas las aserciones adecuadas:

$ pmset -g assertionslog
2017-11-20 19:34:27 -0800 : Showing all currently held IOKit power assertions
Assertion status system-wide:
BackgroundTask 0
ApplePushServiceTask 0
UserIsActive 1
PreventUserIdleDisplaySleep 1
PreventSystemSleep 1
ExternalMedia 0
PreventUserIdleSystemSleep 1
NetworkClientActive 1

y sin embargo la pantalla está en DevicePowerState 1:

$ ioreg -n IODisplayWrangler | grep -i IOPowerManagement
| | "IOPowerManagement" = {"DevicePowerState"=1,"CapabilityFlags"=0,"CurrentPowerState"=1,"MaxPowerState"=4}

Ejecutar otro caffeinate -u despierta la pantalla y la pone en DevicePowerState 4 durante 15 segundos más o menos, luego vuelve a dormir y a DevicePowerState 1, incluso si le doy un tiempo de espera más largo con -t. También he probado a repetir el argumento -t después de cada afirmación (por si la confusa página de manual se refería a eso).

Para rescatar "osascript -e 'tell app "System Events" to restart'", tengo que emitir "caffeinate -u". "caffeinate -d" o "caffeinate -i" no son suficientes.

Ver mis comentarios en https://github.com/newmarcel/KeepingYouAwake/issues/92 para más detalles.

Supongo que debería usar lldb para obtener un backtrace de una prueba de opengl colgada, averiguar en qué API está colgada, y luego crear una aplicación mínima que establezca la aserción de gestión de energía apropiada, duerma un poco, y luego llame a la API colgada. Intentaré hacerlo cuando tenga la oportunidad.

Para solucionarlo, actualmente tengo esto en un script de fondo:

while true
do
   caffeinate -ud sleep 10
done

pero no es suficiente; CurrentPowerState baja a 1 con frecuencia en todos los sistemas (aunque creo que sólo los sistemas 10.13 realmente duermen la pantalla y cuelgan mis pruebas).

¿Alguien más se ha encontrado con esto? ¿Alguna sugerencia de cómo puedo diagnosticar esto más adelante?

1voto

Marcela_R Puntos 21

Descubrí que la cafeína no me funcionaba en Catalina o en Big Sur. He descubierto que la anfetamina funciona muy bien y no he tenido ningún problema con ella.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X