Автор Тема: Пробуждения из спящего/ждущего режима  (Прочитано 3311 раз)

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 413
выкладываю "пошаговый мануальчик"

Железо:
Ноутбук Fujitsu P702 i5-3340M 8GB RAM графика Intel® HD Graphics 4000
Про тачпад в описании сказно так:"Сенсорная панель, поддерживающая технологию множественных прикосновений, с двумя кнопками мыши и эргономичным колесом прокрутки"

Симптомы проблемы:
не работает "фирменное колесо прокрутки" - ну не работает и ладно..
при пробужден ии из спящего/ждущего режимов начинаются глюки с тачпадом/мышью - курсор мыши перемещается, но при щелчке, например в области системного меню, ничего не происходит. При нескольких накладывающихся друг на друга окнах, складывается впечатление что событие от щелчка мыши передается "не в то окно" в z-буфере.
Подключение в этот момент внешней usb мышки проблему не лечит.
Без каких-бы то ни было доп. действий проблема лечится переключением на терминал по Ctrl-Alt-F1 и обратно в граф. среду по Ctrl-Alt-F7.
Проблема диагностирована в mate (Кентавр) и xfce (SimplyLinux).

Диагностика:
Диагностировать причину проблемы на настоящий момент не удалось
Экспериментальным путем удалось выяснить, что устраняет симптомы проблемы следующая последовательность команд:
rmmod psmouse
modprobe psmouse

Лечение:

Для автоматического устранения симптомов были произведены следующие действия:
1. Установлены скрипты eeepc-acpi-scripts
apt-get install eeepc-acpi-scripts
2.Также понадобятся pm-utlils (у меня в системе они были установлены и сконфигурированы изначально)

Исследования показали что c помощью acpi-скриптов можно поймать событие открытия крышки ноутбука при пробуждении, но собственно события пробуждения "поймать" не удалось. Установленный хук pm-utils срабатывает на событие 'resume' когда ноутбук выводится из сна нажатием на кнопку питания, но не срабатывает при пробуждении "открытием крышки".
Их совместная настройка позволяет убрать симптомы проблемы полностью.
Настройка pm-utils:
в папку /etc/pm/sleep.d поместить вот такой скрипт и разрешить  выполнение этого скрипта.
$ cat /etc/pm/sleep.d/02repairmouse
#!/bin/sh
echo "repairmouse arg=$1"
case "$1" in
hibernate|suspend)
rmmod psmouse
echo "psmouse removed"
                ;;
        thaw|resume)
modprobe psmouse
echo "psmouse repaired"
                ;;
        *) exit $NA
                ;;
esac

команды echo в файле для отладки, их можно убрать.
вариант без обработки в скрипте события suspend, но с вот такой секцией resume
.....
        thaw|resume)
rmmod psmouse
modprobe psmouse
echo "psmouse repaired"
        ;;

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

в папку /etc/acpi/events положить вот такой файл:

$ cat /etc/acpi/events/lidopen
event=button/lid LID open
action=/etc/acpi/actions/lidopen.sh


в папку /etc/acpi/actions поместить вот такой скрипт и разрешить его исполнение:

$ cat /etc/acpi/actions/lidopen.sh
#!/bin/sh
echo "repairmouse-acpi" >> /var/log/repair-mouse.log
date >> /var/log/repair-mouse.log
rmmod psmouse
modprobe psmouse

команды echo в файле для отладки, их можно убрать.

После все манипуляций с файлами и настройками имеет смысл перезагрузить компьютер (правда я не уверен что это обязательно, но хуже точно не будет).

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 30 552
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Решение вынесено из темы
http://forum.altlinux.org/index.php/topic,34205.0.html

Спасибо автору.