LINUX.ORG.RU

Переход в режим энергосбережения.

 ,


0

0


Здравствуйте, у меня наблюдается непонятная ситуация с батареей, вернее с отображением информации о ее состоянии. На ноуте, настроены два режима электропитания: пауэрсзйв с затемнением экрана- при работе от батареи и ондеманд с ярким экраном- при работе от адаптера. Вобщем, что бы полностью перевести ноут на питание от батареи, приходится два раза передергивать шнур адаптера, т.е. ноут работает от сети- достаю штекер- ноут переходит в пауэрсэйв, батарея разряжается (в консоли), на рабочем столе ни намека на то что комп работает от батареи, а если второй раз вставить-достать подзарядку, то и на рабочем столе видны изменения- экран тухнет, значок батарейки- меняется.
Куда копать? ...KDE 4.8.4 Debian 7, электропитание настроено с помощью лаптоп-моде-тулз

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

Trauka ()
Ответ на: комментарий от Trauka

подскажите, что отвечает за опрос батареи

Скорее всего, upower. Поэтому советую помониторить события udev при подключении/отключении адаптера.

anonymous ()
Ответ на: комментарий от anonymous

....вот, что получилось

#мониторю сразу после загрузки

user@Lenovo-IdeaPad:~$ upower -m
Monitoring activity from the power daemon. Press Ctrl+C to cancel.
[21:19:15.910]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:19:45.924]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:20:15.924]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:20:45.895]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:21:15.908]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:21:45.923]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:22:15.906]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:22:45.924]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1

#отключаю подзарядку

[21:23:00.385]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:23:00.397]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:23:30.946]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:00.914]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1

#подключаю подзарядку

[21:24:20.181]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:20.201]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:20.201]  device changed:     /org/freedesktop/UPower/devices/line_power_ACAD
[21:24:21.896]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:22.904]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:23.895]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:24.904]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:25.895]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1

#повторно отключаю подзарядку

[21:24:51.730]  daemon changed:
[21:24:51.731]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:51.731]  device changed:     /org/freedesktop/UPower/devices/line_power_ACAD
[21:24:51.737]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:52.912]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:53.895]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:54.912]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:55.895]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:24:56.905]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:25:26.935]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:25:56.929]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1

#повторно подключаю подзарядку

[21:26:22.858]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:26:22.885]  daemon changed:
[21:26:22.885]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:26:22.886]  device changed:     /org/freedesktop/UPower/devices/line_power_ACAD
[21:26:23.901]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:26:24.895]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:26:25.895]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:26:26.904]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1
[21:26:27.895]  device changed:     /org/freedesktop/UPower/devices/battery_BAT1

Trauka ()
Ответ на: комментарий от Trauka

какой

daemon changed
? мониторил процессы до-и-после, вроде, новых не нашел

Trauka ()
Ответ на: комментарий от Trauka

Ну вот у вас при первом отключении адаптера нет записи об изменении состояния /org/freedesktop/UPower/devices/line_power_ACAD. Поэтому и среда не реагирует.

Можно попытаться провернуть следующее: помониторить udev и определить, какое событие соответствует вставке/извлечению адаптера, а затем создать хук для pm-utils, который сгенерирует событие changed для данного устройства (см. man udevadm).

Также имейте в виду, что на некоторых устройствах порядок отключений («от сети, от ноутбука» и «от ноутбука, от сети») имеет значение.

anonymous ()
Ответ на: комментарий от anonymous

....действительно, после повторного включения появляется событие, связанное с адаптером.

отключаю
KERNEL[305.176590] change   /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT1 (power_supply)
UDEV  [305.185588] change   /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT1 (power_supply)
KERNEL[305.185715] change   /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT1 (power_supply)
UDEV  [305.185819] change   /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT1 (power_supply)

включаю
KERNEL[343.604120] change   /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ACAD (power_supply)
UDEV  [343.620120] change   /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ACAD (power_supply)
KERNEL[343.795347] change   /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT1 (power_supply)
UDEV  [343.798209] change   /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT1 (power_supply)

отключаю
KERNEL[381.494595] change   /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ACAD (power_supply)
KERNEL[381.524262] change   /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT1 (power_supply)
UDEV  [381.526425] change   /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT1 (power_supply)
UDEV  [381.527323] change   /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ACAD (power_supply)

включаю
KERNEL[465.587265] change   /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ACAD (power_supply)
UDEV  [465.652125] change   /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ACAD (power_supply)
KERNEL[465.654129] change   /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT1 (power_supply)
UDEV  [465.655779] change   /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT1 (power_supply)

...но как должно выглядеть правило в моем случае? ...и оно ведь должно выполняться при старте компа

Trauka ()
Ответ на: комментарий от Trauka

Для начала попробуйте после старта с подключённым адаптером пнуть устройство с помощью udevadm trigger. Если это избавит от проблемы, можно просто вписать эту команду в один из стартовых сценариев.

Правило udev тут скорее всего не поможет, ибо прописывает реакцию на события ядра, которые в данном случае отсутствуют.

anonymous ()
Ответ на: комментарий от anonymous

...здравствуйте, пожалуйста просматривайте эту тему, очень вас прошу, я новичок в linux. но с-горем-по-полам, все настроил, кроме отключения адаптера (сижу сейчас второй раз перепаиваю гнездо после экспериментов).
udevadm trigge отлично пинается, но только после отключения адаптера. Пытался сделать скрипт

#!/bin/bash
udevadm trigger

и создать правило
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Charging", RUN+="/путь к скрипту"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Full", RUN+="/путь к скрипту"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Unknown", RUN+="/путь к скрипту"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Discharging", RUN+="/путь к скрипту"

после этого система вообще не стартует.

Trauka ()
Ответ на: комментарий от Trauka

Во-первых, не стоит выполнять просто udevadm trigger. Это пнёт вообще все устройства, что мягко говоря неэффективно. Я имел в виду, что вы после прочтения man udevadm сами подставите нужные параметры, указывающие на нужное устройство: udevadm trigger --sysname-match=ACAD.

Алгоритм проверки таков: загружаетесь с включённым адаптером, выполняете команду, отключаете адаптер и смотрите на реакцию системы. Если всё хорошо с первого раза, то просто вставьте её перед exit 0 в /etc/rc.local.

В правило udev вставлять запуск данной команды не стоит, ибо она сама по себе генерирует событие udev, которое снова подпадёт под данное правило, снова вызовет команду, которая сгенерирует ещё одно событие, которое снова подпадёт под правило...

anonymous ()
Ответ на: комментарий от anonymous

...

udevadm trigger --sysname-match=ACAD
после перезагрузки не работает, если выдернуть адаптер и дать команду, то работает.

Trauka ()
Ответ на: комментарий от Trauka

Попробуйте:

  1. Загрузитесь с подключённым адаптером.
  2. Выполните /sbin/on_ac_power; echo $?.
  3. Отключите адаптер и снова выполните приведённую выше команду.
anonymous ()
Ответ на: комментарий от anonymous
user@Lenovo-IdeaPad:~$ /sbin/on_ac_power; echo $?
0
user@Lenovo-IdeaPad:~$ /sbin/on_ac_power; echo $?
1


...а с pm-utils не может быть проблем? ...заметил, что после удаления пакета на зарядку вообще не реагирует, но я пересмотрел весь пакет, искал какой-нибудь файл с упоминанием батареи или адаптера- вообще ничего не нашел.

Trauka ()
Ответ на: комментарий от Trauka

Значит, по крайней мере ядро реагирует на отключение адаптера.

Попробуйте загрузиться с подключённым адаптером, запустите acpi_listen и отключите адаптер. Если среди событий будет ac_adapter, то вашу проблему можно попытаться обойти следующим образом: создать /etc/acpi/events/ac_adapter:

event=ac_adapter.*
action=/sbin/udevadm trigger --sysname-match=ACAD

anonymous ()
Ответ на: комментарий от anonymous

....получилось вот что
...отключаю

battery PNP0C0A:00 00000081 00000001
battery PNP0C0A:00 00000080 00000001
processor LNXCPU:00 00000081 00000000
processor LNXCPU:01 00000081 00000000

...включаю
processor LNXCPU:00 00000081 00000000
processor LNXCPU:01 00000081 00000000
ac_adapter ACPI0003:00 00000000 00000001
processor LNXCPU:00 00000081 00000000
processor LNXCPU:01 00000081 00000000
battery PNP0C0A:00 00000080 00000001

....повторно отключаю
processor LNXCPU:00 00000081 00000000
processor LNXCPU:01 00000081 00000000
ac_adapter ACPI0003:00 00000000 00000000
processor LNXCPU:00 00000081 00000000
processor LNXCPU:01 00000081 00000000
battery PNP0C0A:00 00000080 00000001

...повторно включаю
ac_adapter ACPI0003:00 00000000 00000001
processor LNXCPU:00 00000081 00000000
processor LNXCPU:01 00000081 00000000
battery PNP0C0A:00 00000080 00000001
processor LNXCPU:00 00000081 00000000
processor LNXCPU:01 00000081 00000000

...почему-то при первом отключении появляются два события связанные с батареей? ...попробую сделать по вашему совету, только с battery. подскажите только как, в моем случае, должен event выглядеть?

Trauka ()
Ответ на: комментарий от Trauka

попробую сделать по вашему совету, только с battery. подскажите только как, в моем случае, должен event выглядеть?

event=battery.*

Как видите, среда не реагирует, ибо upower не получает событие от udev, потому что последний не получает событие от acpi. Возможно, дело всё же в ядре, но я подозреваю кривую реализацию acpi в вашем ноутбуке. Рекомендую обновить bios, если есть такая возможность - на некоторых моделях это исправляло многие ошибки совместимости.

anonymous ()
Ответ на: комментарий от anonymous

...вы- гений!!!! ...от души- большое спасибо.
все заработало!


p.s. ...а так на будущее, когда ядро буду собирать, на какие опции обратить внимание, что бы все это реализовать в ядре. BIOS у меня обновлен

Trauka ()
Ответ на: комментарий от Trauka

а так на будущее, когда ядро буду собирать, на какие опции обратить внимание, что бы все это реализовать в ядре

Тут подсказать не могу, ибо пересборкой ядра не страдалзанимался. Читайте множество статей на эту тему, включая и те, что здесь.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.