[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: acpi/events/lidbtn отрабатывает дважды -- как побороть?



On Wed, 08.04.2009 14:01:39 , Тихон Тарнавский wrote:
> On Mon, 30.03.2009 17:55:32 , Тихон Тарнавский wrote:
> > On Mon, 30.03.2009 18:13:00 , Alexander GQ Gerasiov wrote:
> > > Mon, 30 Mar 2009 14:20:55 +0300
> > > Тихон Тарнавский <tikhon@lexpr.ru> wrote:
> > > 
> > > > Создал скрипт из одной строчки (echo mem >/sys/power/state), прописал
> > > > его в /etc/acpi/events/lidbtn. При закрытии крышки скрипт отрабатывает
> > > > дважды, т.е. вот с этой командой ноут засыпает, а после включения
> > > > засыпает ещё рах -- включается лишь со второго раза. Это точно именно
> > > > этот скрипт запускается два раза: проверял, заменив строку на
> > > > echo 1>>/home/t/tmp/tmp. И запускается точно оба раза из одного и того
> > > > же места: больше нигде в /etc/acpi/ он не упоминается, и если из
> > > > lidbtn убрать, засыпания не происходит.
> > > > 
> > > > Прошу помочь разобраться, где корень проблемы; или хотя бы подсказать,
> > > > как проще её обойти. Спасибо.
> > > Для начала проверить, что генерится одно событие при помощи
> > > acpi_listen, Затем проверить в логах acpid что он пишет.
> > В лог я уже смотрел -- он пустой. События генетирся таки два. Но я был
> > уверен, что это оттого, что lidbtn ведь отвечает _и_ за закрытие, _и_
> > за открытие крышки; т.е. нажал-отпустил кнопку -- вот и есть два
> > события. А в случае с засыпанием второе событие по идее создаваться не
> > должно, т.к. в момент открытия крышки ноут спит. Проверил: написал в
> > тестовом варианте date вместо echo 1 -- таки да, вывод происходит в
> > момент нажания кнопки и в момент отпускания. А в варианте с засыпанием
> > хотя второе событие создаваться не должно, но оно всё же создаётся;
> > проверил так: нажал кнопку пальцем и включил не отпуская -- всё
> > отработало как надо, а когда отпустил -- тогда уже выключилось ещё
> > раз. Видимо, в момент просыпания сверяется состояние кнопки -- и, если
> > оно изменилось, всё же создаётся ещё одно событие. Получается, надо
> > либо всё же читать /proc/acpi/button/lid/*/state, либо, как написал
> > Иван, обходить путём контроля чётности. И действительно, оба варианта
> > работают. Понятно, что первый -- более правильный. Его и оставил.
> > Спасибо за наводку.
> Странно. Всё это время ноут усыплял (то на диск, то в память). Сейчас
> потребовалось перезагрузиться -- после перезагрузки на закрытие крышки
> вообще перестала система реагировать: даже acpi_listen молчит. С
> момента последнего перезапуска acpid ничего не обновлялось. Ядро не
> обновлялось с момента последней перезагрузки. В чём может быть
> проблема?..
Проверил несколько раз: проблема возникает после перезагрузки или
выключения и исчезает после первого же засыпания на диск. Т.е. ничего,
похоже, и не менялось -- так всё и было изначально. В чём корень
проблемы, так и не понял.

-- 
С уважением,
Тихон Тарнавский.
http://linuxforum.ru
http://posix.ru


Reply to: