Linux setterm -powersave - ошибка: "не могу установить режим энергосбережения"

Я пытаюсь полностью отключить подсветку ЖК-панели, встроенной в устройство, которое я использую. Хотя экран не отображается, вы можете увидеть свечение от подсветки в затемненной комнате.

Я думаю, что (как корень) я должен быть в состоянии сделать это следующим образом:

setterm -powersave powerdown > /dev/tty1

который должен форсировать состояние DPMS, когда экран отключен. Однако, хотя man setterm предполагает, что -powersave является допустимым параметром, какой бы из предложенных аргументов я не указывал (вкл., выкл., выключение и т. д.), я получаю сообщение об ошибке:

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

Я пробовал это в двух других установках Ubuntu с похожими результатами.

Может кто-нибудь предложить:

  1. Почему эта команда нигде не работает?
  2. Есть ли лучший способ управления мощностью подсветки?

Дополнительная информация:

  • Это устройство O2 Joggler, основанное на OpenPeak OpenFrame 7 и использующее слегка модифицированный образ сервера Ubuntu 12.04.02, распространяемый сообществом для этого устройства. Это архитектура i386 (процессор Intel Atom)
  • X (который, как я понимаю, может помешать работе setterm) не установлен нигде, где я пробовал это. Это также означает, что xset команда не будет действовать
  • Предоставляется драйвер, обеспечивающий управление дисплеем через sysfs, в том числе psuedo-файл, предназначенный для отключения подсветки, но он по-прежнему тускло светится.
  • Две другие установки, которые я пробовал (12.04 и 10.04), были разными устройствами: виртуальная машина VMWare и физический сервер Dell соответственно.

4 ответа

Решение

Я понял почему setterm дает ошибку... ну до определенного момента. Кажется, что метод управления экраном физической консоли через SSH (т.е. перенаправление вывода setterm в /dev/tty1 не работает в этом случае.

Я был удивлен тем фактом, что следующий вариант работает точно так, как ожидалось (он очищает физический экран консоли от сеанса SSH):

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

Что касается того, почему некоторые setterm команды работают, а другие нет, у меня нет ответа на это.

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

На самом деле у меня была такая же проблема, и мне удалось ее решить.

С небольшой помощью от strace я обнаружил, что при отключении питания setterm -powersave ioctl() отправляется на fd 0 (stdin).

Итак, я попробовал с:

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

и это сработало (команда возвращает 0). Я не могу проверить ATM, если команда действительно делает то, что должна, потому что я делаю это через SSH. Кроме того, кажется, у вас есть особая конфигурация, так что YMMV.

Я потратил 5 часов на то, чтобы попробовать setterm, fbset и другие...

Это полномочия контролировать на моей доске:

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

Также попробуйте поискать LVDS backlight дескриптор в /sys/

Лист данных Sharp LQ070Y3LG4A, используемый в Joggler, показывает, что светодиодная подсветка подключена напрямую (Примечание 1 на стр. 11) к контактам 24-30. Таким образом, даже если вы очищаете дисплей с помощью DPMS (любым другим способом), подсветка остается включенной.

Таким образом, вопрос заключается в том, есть ли какая-либо другая часть оборудования на материнской плате, которая позволяет отключать питание светодиодной подсветки, и если да, то как ее контролировать. Я не смог ничего найти по этому поводу на Joggler Wiki , типичными кандидатами являются чипы, управляемые I2C / SMBUS. Но, возможно, просто нет способа отключить подсветку программным обеспечением (если только вы не добавите свое собственное оборудование).

Другие вопросы по тегам