Linux setterm -powersave - ошибка: "не могу установить режим энергосбережения"
Я пытаюсь полностью отключить подсветку ЖК-панели, встроенной в устройство, которое я использую. Хотя экран не отображается, вы можете увидеть свечение от подсветки в затемненной комнате.
Я думаю, что (как корень) я должен быть в состоянии сделать это следующим образом:
setterm -powersave powerdown > /dev/tty1
который должен форсировать состояние DPMS, когда экран отключен. Однако, хотя man setterm
предполагает, что -powersave
является допустимым параметром, какой бы из предложенных аргументов я не указывал (вкл., выкл., выключение и т. д.), я получаю сообщение об ошибке:
setterm: cannot (un)set powersave mode: Invalid argument
Я пробовал это в двух других установках Ubuntu с похожими результатами.
Может кто-нибудь предложить:
- Почему эта команда нигде не работает?
- Есть ли лучший способ управления мощностью подсветки?
Дополнительная информация:
- Это устройство 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. Но, возможно, просто нет способа отключить подсветку программным обеспечением (если только вы не добавите свое собственное оборудование).