
У меня возникла проблема с этой командой:
xset dpms force off
Она делает экран черным, но не выключает и не приостанавливает (с помощью команды suspend) монитор.
Команда 'xset -q'
показывает, что DPMS включен на моем мониторе.
Я использую Raspberry Pi с установленной на нем ОС Raspbian, а монитор подключен с помощью кабеля HDMI - DVI (и контакты, по которым передаются данные, работают).
Помогите, пожалуйста, может быть, подскажите, где найти ответ или какие-нибудь логи? Может быть, где-то есть файл конфигурации, содержащий информацию о количестве энергии, которое отправляется на монитор, когда он находится в режиме ожидания, включен или выключен?
Я нашел такое решение:http://shallowsky.com/linux/x-screen-blanking.html ,но я не могу установить VBETOOL на свой компьютер, так как на нем нет портов PCI (и папки /pci).
решение1
Я обнаружил, что эта специфическая проблема Raspberry Pi обсуждалась здесьпроблема с некоторыми обходными путями.
Драйвер буфера кадров на pi реализует или не реализует соответствующий ioctl FBIOBLANK для отключения монитора.
Обходной путь — использовать tvservice
команду для отключения питания видеосигналов, и в конечном итоге монитор должен выключиться. tvservice
Однако есть небольшая проблема, когда вы используете для повторного включения питания видео, и вам нужно обойти ее тоже, используя chvt
для переключения из X11 в виртуальный терминал консоли, а затем обратно.
Демонстрация:
sudo tvservice -o # turn off video
sleep 5
sudo tvservice -p # turn on video
whichvt=$(sudo fgconsole) # which vt are we on
let othervt=which==1?2:1
sudo chvt $othervt; sudo chvt $whichvt
решение2
В текущих версиях raspbian эти обходные пути больше не требуются, возможность dpms была добавлена в драйверы. Единственная проблема: она отключена по умолчанию. Вам нужно поставить
hdmi_blanking=1
в вашем /boot/config.txt для включения. Официальная документация еще не была обновлена для включения этой настройки, поэтому ее немного сложно найти.
решение3
Другой способ — использовать:
vcgencmd display_power 0
vcgencmd display_power 1
Вот и все.
Это более эффективный способ. Он не требует повторной инициализации всего фреймбуфера и не меняет разрешение. В основном, он быстрее, чем tvservice. Сначала он возвращал ошибку, но я обновил прошивку на RPi с помощью rpi-update и после перезапуска - все заработало.