Команда xset dpms не выключает монитор

Команда xset dpms не выключает монитор

У меня возникла проблема с этой командой: 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 и после перезапуска - все заработало.

Связанный контент