LINUX.ORG.RU

Выход из суспенда при открытии крытки ноутбука


0

2

Ноутбук успешно уходит в hibernate-ram и успешно выходит из него при нажатии любой кнопки.

Как сделать так, чтобы он выходил из суспенда сразу после открытия крышки? Пока даже не знаю, с какой стороны подступиться.

ОС gentoo

ядро 38.2-zen

ASUS EeePC 1201NL

★★★★

Последнее исправление: Shtsh (всего исправлений: 2)

Ответ на: комментарий от TERRANZ

А хз.

Я так понимаю, что открытие/закрытие крышки обрабатывается как кнопка. По any key же выходит, может возможно, чтобы по открытии тоже выходил.

Shtsh ★★★★
() автор топика

некорректно обрабатывается событие. смотри в районе /etc/acpi/events, какой скрипт обрабатывает событие button/lid и подправь его так, чтобы в суспенд уходил только если третий параметр имеет значение close

ananas ★★★★★
()
Ответ на: комментарий от uzbl

просыпание при открытии
никаких конфигов не менял
дебьян анстейбл 2.6.38-2 из репов
да и на старых ядрах тоже всё прекрасно работало О_о

TERRANZ ★★★★
()
Ответ на: комментарий от ananas

У меня посылается всегда одно и то же значение при открытии и закрытии

Сделал следущее для различения

grep -q closed /proc/acpi/button/lid/*/state
if [ $? = 0 ]
then
        logger "LID is closed"
        /usr/sbin/hibernate-ram                                                    
else
        logger "LID is opened"
         /usr/sbin/laptop_mode auto
 fi

Без hibernate-ram всё хорошо, в логи пишется правильно.
С ним — при выходе из суспенда не обрабатывается открытие.

Shtsh ★★★★
() автор топика
Ответ на: комментарий от Shtsh

у меня такой скрипт, все работает

#!/bin/sh

if [ $# != 1 ]; then
        exit 1
fi
set $*

case "$1" in
  button/power)
    case "$2" in
      PBTN|PWRF)
        echo "disk" > /sys/power/state ; ret=0 ;;
      *)
        logger "ACPI action $2 in group $1 is not defined" ; ret=1 ;;
    esac
    ;;
  button/lid)
    case "$2" in
      LID)
          [[ $3 == "close" ]] && echo "mem" > /sys/power/state ; ret=0 ;;
      *)
        logger "ACPI action $2 in group $1 is not defined" ; ret=1 ;;
    esac
    ;;
  button/sleep)
    case "$2" in
      SBTN)
        echo "mem" > /sys/power/state ; ret=0 ;;
      *)
        logger "ACPI action $2 in group $1 is not defined" ; ret=1 ;;
    esac
    ;;
  *)
    logger "ACPI group $1 is not defined" ; ret=1 ;;
esac

exit $ret
ananas ★★★★★
()
Ответ на: комментарий от ananas

не работает. При суспенде не обрабатывается сигнал открытия крышки. Судя по всему, придётся на уровне ядра смотреть (если вообще это возможно).

Спасибо за помощь.

Shtsh ★★★★
() автор топика

У меня на старом ноуте искоробки было, на новом нет. Если найдешь решение, опишись

xorik ★★★★★
()

что только не менял, ничего не помогает
как говорят, значение LID в /proc/acpi/wakeup ответственно за это «открытие», но нихрена не помогает
какой-то чудо-комбинацией настроек (s2ram, и чистки handler.sh) вернул эту фичу, но после чего конкретно оно стало работать - сказать не могу и ядро не обновлялось в этот момент.

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

вообще это косяки acpid, как я понял
некоторые писали, что оно просто само по себе кривое

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

Я что-то подобное нагуглил, но у меня вообще нету LID в /proc/acpi/wakeup/
Возможно, что-то нужно включить в ядре

Shtsh ★★★★
() автор топика
Ответ на: комментарий от Shtsh

у меня тоже LID нету :)
дело не в ядре, говорю же
это acpid кривое само по себе - оно то отлавливает, то перестаёт отлавливать сигнал
вот у меня оно заработало внезапно, т.е. я копался в настройках, и не помогало, а потом внезапно само стало работать после обновления каких-то КДЕлиб, хотя у меня кде даже и не трогает никак суспенд (в настройках upowerd стоит Do nothing)
собсно, погугли косяки acpid, найдёшь пару статеек ;)

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

что-то такое у тебя есть?:

$ cat /etc/acpi/events/lid
event=button/lid (LID0)
action=/usr/sbin/pm-suspend

если нет, добавь, а из handler.sh вообще всё снеси вот так:

   button/lid)
        #echo "LID switched!">/dev/tty5
        ;;
    *)
        logger "ACPI group/action undefined: $1 / $2"
        ;;
esac
Sonsee
()
Ответ на: комментарий от ananas
$ cat /sys/power/state 
mem disk

http://pastebin.com/ny5afQd3

Я так понимаю, сделано ради этого

I: Bus=0019 Vendor=0000 Product=0005 Version=0000
N: Name="Lid Switch"
P: Phys=PNP0C0D/button/input0
S: Sysfs=/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0
U: Uniq=
H: Handlers=event0 
B: PROP=0
B: EV=21
B: SW=1

Shtsh ★★★★
() автор топика
Ответ на: комментарий от Sonsee

Это вообще характерно для красноглазых школьников - всё «говно и не работает», потом они «что-то где-то покрутили» и «оно само заработало».

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

Это вообще характерно для красноглазых школьников - всё «говно и не работает», потом они «что-то где-то покрутили» и «оно само заработало».

ну если ты такой умный, то расскажи нам в чём тут дело.

Sonsee
()

У меня acpi_listen при закрытии крышки вообще никаких событий не показывает :(

xorik ★★★★★
()
Ответ на: комментарий от Shtsh

не только. у меня еще и видеошина совпадает с lid, которая в хендлерах имеет kbd. и потому при открытии сигнал воспринимается как нажатие кнопки. у тебя такой штуки, к сожалению, нет - потому мое решение и не работало.

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