Отключение дисплея в Linux

Управление энергосбережением под Linux

В настоящее время уже наверно не выпускаются мониторы, не поддерживающие функций энергосбережения. Здесь я хочу рассказать подробнее об этих функциях и о том, как их использовать под управлением ОС Linux.

Несколько вводных слов

Согласно стандарту управления энергопотреблением мониторов, монитор может находиться в четырёх различных режимах. Эти режимы отличаются набором узлов, находящихся в рабочем состоянии. Продолжительность выхода монитора на нормальную работу из режима энергосбережения также различна для разных режимов.
С помощью DPMS (Display Power Management Signals) можно программно управлять двумя основными узлами монитора: блоком вертикальной развертки и блоком горизонтальной развертки. Кроме того, во всех режимах энергосбережения с трубки снимается напряжение и электронный луч гасится.
Первый режим — Normal operation, никакого энергосбережения нет, это режим нормальной работы. Все узлы монитора функционируют. Это единственный режим работы, при котором на трубку подаётся высокое напряжение и луч совершает свои движения по экрану.
Второй режим — Stand-by mode, я бы перевёл это как режим резервирования. В этом режиме блок вертикальной развертки продолжает вырабатывать сигнал, а блок горизонтальной развёртки отключается. Это позволяет сэкономить около 10 Вт. Монитор выходит из этого режима практически мгновенно.
Третий режим — Suspend mode, отложенный режим. В этом режиме отключается блок вертикальной развёртки, но блок горизонтальной развёртки продолжает функционировать. Энергопотребление монитора в этом режиме обычно не превышает 15 Вт. К нормальной работе монитор возвращается ощутимо дольше, чем при выходе из режима Stand-by mode.
Четвёртый режим — Power-off mode, отвечает полному отключению питания от узлов развёртки. Выход из этого режима требует почти столько же времени, сколько необходимо монитору при включении питания. В этом режиме обычный монитор потребляет не более 5 Вт.

Управление консолью

Управление энергосбережением консоли осуществляется с помощью программы setterm. Консоль может находиться в трёх состояниях: нормальная работа, погашенный экран (blank) и энергосберегающий режим. Причем, энергосбережение может быть включено только после того, как экран погашен.
Для установления интервалов времени, через которое консоль будет менять своё состояние, используется две команды:

setterm -blank #
setterm -powerdown #

Первая из них устанавливает время в минутах, через которое экран будет гаситься. Вторая — время, по прошествии которого будет включаться режим энергосбережения.
Здесь уместно отметить, что гашение экрана не имеет никакого отношения к энергосбережению. При погашенном экране с него просто удаляется изображение, но все узлы монитора продолжают функционировать.
Чтобы определить, какой именно режим энергосбережения будет установлен, следует использовать следующие команды:

для режима Stend-by mode:
setterm -powersave hsync
для режима Suspend mode:
setterm -powersave vsync
или
setterm -powersave on
для режима Power-off mode:
setterm -powersave powerdown
чтобы запретить энергосбережение:
setterm -powersave off

Например, Вы хотите, чтобы при отсутствии каких-либо действий со стороны пользователя в течение двух минут, консоль гасла, а по прошествии ещё десяти минут, монитор переходил в состояние Power-off mode. Тогда Вам следует включить куда-нибудь в rc.locale следующие команды:

setterm -blank 2
setterm -powerdown 12
setterm -powersave powerdown

Следует также оговориться. Дело в том, что правильность работы setterm зависит от версии самой утилиты и версии ядра. Надежно работает только режим Power-off. Остальные режимы могут вызываться не вполне корректно, например вместо одного — другой.

Управление энергопотреблением монитора в X

Настроить X-сервер можно двумя способами. Первый — с помощью утилиты xset, включив её вызов в скрипт, запускающий X Window System, это обычно startx, или .xinit. Второй, на мой взгляд более изящный, способ — внести необходимые изменения в XF86Config. Я опишу оба способа. Здесь я не буду касаться вопросов сохранения экрана и управления screensaver’ами.

Настройка с помощью xset

Вся настройка производится одним-двумя вызовами xset. Обязятельно необходимо вызвать

xset dpms T1 T2 T3

где T1, T2, T3 — интервалы времени в секундах, через которые активизируются режимы Stend-by mode, Suspend mode, Power-off mode, соответственно. Естественно необходимо выполнить условие T1>=T2>=T3. Если одно из чисел равно нулю, то соответствующий режим не включается.
Если Ваш X-сервер не поддерживает энергосбережение по умолчанию (а обычно именно так и случается), то Вам придётся выполнить ещё одну команду:

xset +dpms

которая разрешит серверу включать режимы энергосбережения. Это можно сделать и передав X-серверу ключ dpms. Например, при вызове xinit:

xinit — dpms

(обратите внимание на то, что между «—» и «dpms» есть пробел).
Чтобы снова отключить энергосбережение, можно использовать команду:

xset -dpms

Здесь уместно сказать об одной возможности, могущей оказаться небесполезной. С помощью команды xset можно принудительно включать различные режимы эергосбережения:

xset dpms force stendby
xset dpms force suspend
xset dpms force off

Все эти команды вызывают переход монитора в экономичный режим только при условии, что энергосбережение разрешено (xset +dpms).

Настройка с помощью XF86Config

Здесь необходимо выполнить те же установки, что и при вызове xset.
Чтобы разрешить серверу запуск режимов энергосбережения, необходимо добавить в секцию Device запись:

Option «power_saver»

Теперь остается только добавить в секцию Screen записи:

StandbyTime T1
SuspendTime T2
OffTime T3

где T1, T2, T3, как и ранее интервалы времени, через которые активизируются режимы Stend-by mode, Suspend mode, Power-off mode, соответственно, но здесь время уже выражается не в секундах, а в минутах.

Запись опубликована в рубрике Общее. Добавьте в закладки постоянную ссылку.

Добавить комментарий