Linux setterm -powersave - 错误:“无法(取消)设置省电模式”

Linux setterm -powersave - 错误:“无法(取消)设置省电模式”

我正在尝试完全关闭我所用设备内置的 LCD 面板的背光。虽然屏幕空白,但在黑暗的房间中您仍然可以看到背光发出的光。

思考(作为 root)我应该能够执行以下操作:

setterm -powersave powerdown > /dev/tty1

一旦屏幕变黑,它应该会强制进入 DPMS 状态。但是,尽管man setterm建议这-powersave是一个有效的选项,但无论我提供哪个建议的参数(开启、关闭、断电等),我都会收到错误:

setterm: cannot (un)set powersave mode: Invalid argument

我在其他两个 Ubuntu 安装中尝试过此操作,得到了类似的结果。

有人可以建议:

  1. 为什么这个命令似乎在任何地方都不起作用?
  2. 是否有更好的方法来控制背光功率?

附加信息:

  • 该设备是一个O2 慢跑者基于 OpenPeak OpenFrame 7,运行稍作修改的 Ubuntu 12.04.02 服务器镜像由社区为此设备分发. 它是 i386 架构(Intel Atom 处理器)
  • 我尝试过的所有地方都没有安装 X(我知道它可以干扰 setterm 操作)。这也意味着命令xset无法运行
  • 提供了一个驱动程序,可通过 sysfs 控制显示屏,其中包括一个伪文件,该文件旨在关闭背光,但它仍然会发出微弱的光
  • 我尝试的另外两个安装(12.04 和 10.04)是不同的设备:分别是 VMWare VM 和物理戴尔服务器

答案1

我花了 5 个小时尝试 setterm、fbset 和其他...

这将关闭我主板上的监视器电源:

echo 1 > /sys/devices/pci0000\:00/0000\:00\:01.0/graphics/fb0/blank

也可以尝试搜索 LVDSbacklight描述符/sys/

答案2

实际上我也遇到了同样的问题并且设法解决了它。

在 strace 的帮助下,我发现 setterm -powersave powerdown 将 ioctl() 发送到 fd 0 (stdin)。

所以我尝试了:

root@zanac:~# setterm -powersave powerdown < /dev/tty1

并且成功了(命令返回 0)。我无法验证 ATM 命令是否确实按预期执行,因为我是通过 SSH 执行此操作的。此外,似乎您的配置很奇怪,所以 YMMV。

答案3

我发现了为什么setterm会出现错误... 在某种程度上。似乎通过 SSH 控制物理控制台屏幕的方法(即重定向输出到)setterm/dev/tty1这种情况下不起作用。

我被以下变化的事实所震惊完全按照预期工作(它从 SSH 会话中清除控制台的物理屏幕):

root@joggler:/home/bob# setterm -clear all > /dev/tty1

至于为什么有些setterm命令有效而其他命令无效,我没有答案。

对于那些发现这个问题与 Joggler 问题有关的人来说,我应该澄清一下,不是可以做我想做的事(完全禁用背光)setterm -powersave powerdown:屏幕仍然像以前一样昏暗。

答案4

数据表Joggler 中使用的 Sharp LQ070Y3LG4A 的 LED 背光直接连接到(第 11 页注释 1)针脚 24-30。因此,即使您使用DPMS(无论使用何种方法),背光保持亮着。

所以问题是主板上是否有其他硬件可以切断 LED 背光的电源,如果有,如何控制它。我在慢跑者 维基,典型的候选者是 I2C/SMBUS 控制的芯片。但也许根本就没有办法通过软件关闭背光(除非你添加一些自己的硬件)。

相关内容