我正在使用 Raspberry Pi 在办公室中运行信息显示。我希望在非工作时间时显示器处于省电模式。我本来打算cron
在一天的开始和结束时执行一些操作,但xset dpms force off
不起作用。
我已禁用屏幕保护程序(因此显示屏在白天保持打开状态)并在文件中添加xset s off
,xset -dpms
和。xset s noblank
/etc/xdg/lxsession/LXDE/autostart
以下是结果xset q
:
Keyboard Control:
auto repeat: on key click percent: 0 LED mask: 00000000
XKB indicators:
00: Caps Lock: off 01: Num Lock: off 02: Scroll Lock: off
03: Compose: off 04: Kana: off 05: Sleep: off
06: Suspend: off 07: Mute: off 08: Misc: off
09: Mail: off 10: Charging: off 11: Shift Lock: off
12: Group 2: off 13: Mouse Keys: off
auto repeat delay: 500 repeat rate: 33
auto repeating keys: 00ffffffdffffbbf
fadfffefffedffff
9fffffffffffffff
fff7ffffffffffff
bell percent: 0 bell pitch: 400 bell duration: 100
Pointer Control:
acceleration: 20/10 threshold: 10
Screen Saver:
prefer blanking: no allow exposures: yes
timeout: 0 cycle: 600
Colors:
default colormap: 0x20 BlackPixel: 0x0 WhitePixel: 0xffff
Font Path:
built-ins
DPMS (Energy Star):
Standby: 600 Suspend: 600 Off: 600
DPMS is Disabled
更新:xset s blank && xset +dpms && xset dpms force off
将使显示屏空白,但不会将其置于省电模式。在阅读了很多线程之后,我仍然无法获得正确的系统时间(我认为这可能是防火墙问题)...
答案1
这个问题确实属于 raspberrypi.stackexchange.com,因为它是 Raspberry Pi 特定的问题:Raspberry Pi 的内核帧缓冲区驱动程序不支持 X 用于使显示器进入睡眠状态的功能:
https://github.com/raspberrypi/linux/issues/487
在解决此问题之前,X 无法使用 DPMS 将显示器置于睡眠状态。
您可能对程序有一些运气/opt/vc/bin/tvservice
:tvservice -o
关闭 HDMI 电源,然后tvservice -p
重新打开 HDMI 电源。
答案2
消除错误路径
首先,几乎所有现代显示器都支持睡眠模式。另外,xset dpms force off
(或其他方式告诉 X 服务器)是关闭监视器的正确方法(在 X 下)。我已经使用它很多年了,没有任何问题。
其次,提及DPMS is Disabled
仅来自您的xset -dpms
.一旦您发出xset dpms force off
或其他与 DPMS 相关的 xset 选项,它就会重新启用,因此无论有或没有 ,您都会得到相同的结果,这是正常的xset +dpms
。
假设
现在,您写道您看到了“静态”。该显示器支持传统的模拟电视信号,对吗?
一种假设是,电视实际上并没有进入睡眠状态,而是切换到模拟电视,并且由于没有信号,因此会显示通常所说的“静电”。
检验该假设
这是一个可以尝试的选项。尝试插入另一台显示器,最好是不支持模拟电视的显示器。查看该显示器是否进入睡眠状态xset dpms force off
。如果是,则 Pi 端的设置没问题。
尝试变体
也许其他视频状态会指示电视保持在正确的频道上,但会减少功耗。而不是xset dpms force off
,请尝试以下操作:
xset dpms force standby
xset dpms force suspend
看看其中之一是否能产生您需要的东西。每次尝试后至少等待 10 秒,看看效果如何。按 Pi 键盘上的任意键将恢复显示(可以远程使用xset dpms force on
)。
投入生产
如果上述变体之一满足您的需要,那么很好,请分享!
如果没有,并且您确实需要使用原始显示器,请在菜单中查看是否可以以某种方式禁用模拟电视功能。
请分享您从这些尝试中学到的东西。
答案3
行不通vbetool
?
暂停屏幕(物理上表示显示器进入待机模式):vbetool dpms suspend
恢复(退出待机模式):vbetool dpms on
答案4
(您阅读了没有经验的人发表的文章,试图向您推销不同的操作系统或掩盖中国设备缺乏能源之星,或者没有阅读源代码 - 所有这些都不是建议阅读的材料) 。
xset 开;或者 ; xset+dpms
除非您想要消隐问题(例如唤醒),否则您不能同时执行这两项操作。两者都做同样的工作,但略有不同——它们确实会互相干扰。 (RedHat linux 因在这方面错误指导人们而闻名,并且在许多发行版中默认都打开了两者,debian 也是如此)
当您使用“xset dpms Force off ; sleep 2”时,您必须睡眠,这样它就不会被您按 Enter 唤醒(假设您使用键盘而不是脚本执行此操作)
至于 HDMI,我不确定 Energy Star 是否是 HDMI 1.0-2.x 规范的一部分。但如果它有 1/2 有效,那么也许就是这样。
linux 和 freeBSD 很漂亮,但如果您不是“大团队的一部分”,那么认为它可以运行您的家庭娱乐中心是不切实际的(控制媒体设备执行硬件特定的操作,如能源之星、真正的硬件 mpeg 播放支持(电视)等) 。他们确实有库、计划和工作设备的示例 - 但这些东西都是短暂的(你必须使用已知良好的相同操作系统和相同设备,或者“祝你好运”)