mi laptop Dell está sujeta a este error con el kernel 3.14. Como solución, escribí un script simple
/ usr / bin / brillo-arreglo:
#!/bin/bash
echo 0 > /sys/class/backlight/intel_backlight/brightnes
(y hecho ejecutable: chmod +x /usr/bin/brightness-fix
)
y un servicio systemd que lo llama que se ejecuta al inicio:
/etc/systemd/system/brightness-fix.service
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=forking
ExecStart=/usr/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
#RemainAfterExit=yes
#SysVStartPriority=99
[Install]
WantedBy=multi-user.target
y habilitado: systemctl enable /etc/systemd/system/brightness-fix.service
Eso funciona de maravilla y puedo controlar el brillo de mi pantalla como lo desee. El problema se produce cuando la computadora portátil se reanuda después de ir al modo de suspensión (por ejemplo, al cerrar el borde de la computadora portátil): el control de brillo ya no funciona a menos que ejecute manualmente mi primer script anterior:/usr/bin/brightness-fix
¿Cómo puedo crear otro servicio systemd como el anterior para que se ejecute a la hora de reanudar?
EDITAR:
Según los comentarios a continuación, he modificado mi brightness-fix.service
como este:
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=oneshot
ExecStart=/usr/local/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
[Install]
WantedBy=multi-user.target sleep.target
También he agregado echo "$1 $2" > /home/luca/br.log
a mi script para verificar si realmente se ejecuta. El script se ejecuta realmente también en resume ( post suspend
) pero no tiene ningún efecto (la retroiluminación es del 100% y no se puede cambiar). También intenté iniciar sesión $DISPLAY
y $USER
, en el momento de reanudar, están vacíos. Entonces, supongo que el script se ejecuta demasiado temprano cuando se despierta. Alguna pista?
WantedBy=sleep.target
.../usr/local/bin
no es/usr/bin
. ese directorio está reservado solo para el administrador de paquetes.sleep.target
unidad ejecutará la unidad cuando la computadora duerma, en lugar de cuando se reanude. Vea mi respuesta a continuación para obtener un archivo de unidad que funcionó para mí con un problema similar.Respuestas:
Sé que esta es una pregunta antigua, pero el siguiente archivo de unidad me funcionó para ejecutar un script al reanudar desde el sueño:
Creo que es lo
After=suspend.target
que hace que se ejecute en el currículum, en lugar de cuando la computadora se duerme.fuente
After=suspend.target
en Unidad yWantedBy=multi-user.target sleep.target
en Instalar .Como alternativa a escribir y habilitar un archivo de unidad, también puede poner un script de shell (o un enlace simbólico a su script)
/lib/systemd/system-sleep/
.Se llamará antes de dormir / hibernar, y a la hora de reanudar.
De
man systemd-suspend.service
:Pruébalo con esto:
fuente
/usr/lib
pero todos sus ejemplos se refieren a archivos bajo/lib
system-sleep
directorio parece estar/lib/systemd/
y/usr/lib/systemd
contiene otras cosas.Seguimiento de la respuesta de mivk, en la que evito muckear con un nuevo archivo de unidad (vea mi pregunta aquí ¿Cómo reaccionar ante los eventos de la tapa de la computadora portátil? ). Aquí está mi solución; no es 100% sencillo ( suspiro ) porque el sistema no es estable cuando sale del sueño:
En mi cuadro Fedora 26 pongo un enlace simbólico aquí:
/usr/lib/systemd/system-sleep/sleepyhead
que señala aquí:/root/bin/sleepyhead
que contiene:El
/root/bin/trackpoint
guión sigue. Tenga en cuenta que el primer sueño es crítico. El dispositivo se configura cada vez que se abre la tapa, por lo que no existe al principio. Si intento hacer algo más que dormir, el script "dormilón" tarda mucho tiempo en salir y mi puntero se congelará durante al menos 60 segundos. Además, tenga en cuenta que no puede poner el/root/bin/trackpoint
script en segundo planosleepyhead
, arriba. Si lo hace, el proceso se cancelará cuandosleepyhead
salga.fuente