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

4360
Bob Sammers

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

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

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 соответственно.
0

4 ответа на вопрос

2
user308851

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

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

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

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

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

Спасибо за вашу помощь. Должен признаться, я не понимаю, что здесь должно происходить (перенаправление с консоли _ на_ команду `setterm`?), Но я вижу код возврата 0 на моем устройстве при использовании вашего варианта команды. Однако, к сожалению, это не влияет на подсветку. На самом деле я написал небольшую C-программу для прямой отправки `ioctl ()` в / dev / fb0, которая также не работала (сообщалось об ошибке 22: «Неверный аргумент», хотя, насколько я мог судить, я сделал что я должен был иметь). Bob Sammers 10 лет назад 0
1
eri

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

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

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

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

Что такое "твоя доска"? К сожалению, я не могу найти что-нибудь под именем `/ sys / devices / pci0000 \: 00/0000 \: 00 \: *` на моем устройстве. (Дословная команда приводит к ошибке «Нет такого файла ...».) Bob Sammers 7 лет назад 0
kirkwood with xgi pci graphics. your graphics may be placed at another bus, but it should be in sysfs eri 7 лет назад 0
попробуйте `find / sys / -name fb0` eri 7 лет назад 0
Я нашел записи sysfs `fb0` (и` backlight`). К сожалению, это не представляется возможным в моей установке: я получаю `bash: echo: write error: неверный аргумент` при записи в` blank` файл psuedo (как root), и хотя я могу контролировать мощность подсветки, написав число в `/ sys / class / backlight / openframe-bl / Bright`,` 0` по-прежнему оставляет подсветку тусклой. Bob Sammers 7 лет назад 0
осмотрите вашу доску и жк-панель. может быть, подсветка замкнута на питание физически ... eri 7 лет назад 0
0
Bob Sammers

I have discovered why setterm is giving an error... well up to a point. It seems that the method of controlling a physical console screen via SSH (i.e. redirecting the output of setterm to /dev/tty1 doesn't work in this case.

I was being thrown by the fact that the following variation does work exactly as expected (it clears the console's physical screen from an SSH session):

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

As to why some setterm commands work and others not, I don't have an answer for that.

For anyone finding this question in relation to a Joggler problem, I should clarify that it appears not to be possible to do what I want (completely disable the backlight) using setterm -powersave powerdown: the screen remains very dimly lit as before.

«setterm clear all» отправляет тот же символ, что и CRTL + L, очищая консоль и перемещая курсор в верхний левый угол. rob 10 лет назад 0
0
dirkt

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

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

Яркость подсветки можно изменить (и я знаю, как это сделать), поэтому есть что-то, что контролирует напряжение, подаваемое на эти светодиодные цепочки. Вопрос в том, может ли кто-то, кто несет за это ответственность, полностью отключить власть? Кажется разумным, что так и должно быть, но я не исследовал аппаратное обеспечение, и ваш подход интересен. На самом деле, я помню (я не смотрел на это в течение 3 лет, хотя я все еще использую устройство), что я установил, что `xset` может это сделать, но я уклонился от установки X просто для переключения _off_ дисплей. Возможно, я должен пересмотреть! Bob Sammers 7 лет назад 0
Так как же можно изменить подсветку? Не держи это в секрете. :-) Если бы вы могли сказать нам об этом, должно быть возможно выяснить, какой драйвер управляет им, и какое оборудование отвечает за него. Установка X также будет использовать только DPMS, так что это не имеет значения. dirkt 7 лет назад 0
Видел `openframe-bl` в другом комментарии. [This] (https://searchcode.com/codesearch/view/40100743/), похоже, код, который не сбивает с толку `драйвер / gpu / drm / gma500`, который имеет * другие * способы управления подсветкой на различных моделях , Таким образом, в GMA 500, по-видимому, имеется регистр широтно-импульсной модуляции `BLC_PWM_CTL` с битовым полем для яркости и некоторыми другими битами (например, бит 31, который всегда установлен). Возможно, вам придется установить / сбросить некоторые биты в этом регистре, чтобы полностью отключить подсветку. Но без надлежащей документации никто не знает, какие ... dirkt 7 лет назад 0
Я подробно рассказал о своих исследованиях в этой теме, http://www.jogglerwiki.com/forum/viewtopic.php?t=1277, которая включает в себя управление яркостью и некоторые другие вещи, обнаруженные мной и другими. Bob Sammers 7 лет назад 0
Похоже, что эта тема в основном ищет "какой API я могу использовать". В конце концов, независимо от того, какой API вы используете, вы должны управлять фактическим оборудованием, и как код для устройства кадрового буфера (`driver / gpu / drm / gma500`), так и` openframe-bl` только когда-либо устанавливают битовое поле яркости в `BLC_PWM_CTL`. Поэтому вывод тот же: если это не отключает ШИМ полностью в соответствии с вашим наблюдением, то либо он не может быть отключен полностью, либо некоторые другие биты в этом или аналогичных регистрах делают это. Без документации мы не можем знать, какие именно. dirkt 7 лет назад 0
Если вы можете кодировать, всегда есть возможность поиграться с другими битами и посмотреть, что произойдет, но это потенциально опасно для аппаратного обеспечения, особенно если где-то задействованы более существенные усилители. dirkt 7 лет назад 0