我的戴尔笔记本电脑的内核3.14 受此错误影响。作为解决方法,我编写了一个简单的脚本
/ usr / bin /亮度修复:
#!/bin/bash
echo 0 > /sys/class/backlight/intel_backlight/brightnes
(和由可执行:chmod +x /usr/bin/brightness-fix
)
以及在启动时执行的调用它的系统服务:
/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
并启用: systemctl enable /etc/systemd/system/brightness-fix.service
这就像一种魅力,我可以根据需要控制显示屏的亮度。问题出在笔记本电脑进入睡眠模式后恢复正常运行时(例如,当合上笔记本电脑的嘴唇时):亮度控制不再起作用,除非我手动执行上面的fisrt脚本:/usr/bin/brightness-fix
如何创建另一个像我上面的系统服务,以便在恢复时执行?
编辑:
根据下面的评论,我已经修改了我brightness-fix.service
这样的:
[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
我还添加echo "$1 $2" > /home/luca/br.log
了脚本以检查其是否实际执行。实际上,该脚本也可以在resume(post suspend
)处执行,但是无效(背光为100%,无法更改)。我还尝试了日志记录$DISPLAY
,$USER
并且在恢复时它们为空。因此,我的猜测是该脚本从睡眠中唤醒时执行得太早了。有什么提示吗?
/usr/local/bin
不是/usr/bin
。该目录仅保留给程序包管理器。
sleep.target
会在计算机休眠时(而不是在恢复时)运行该单元。请参阅以下我的答案,以获取适用于我的类似问题的单位文件。
WantedBy=sleep.target
...