суббота, 7 апреля 2012 г.

Проблемы с засыпанием на диск с подключенными USB устройствами

После очередного глюка с мышью из-за "раздербаненого" за несколько лет порта PS/2 я наконец решил, что пора сделать апгрейд. Заодно проапгрейдить и клавиатуру (с ней проблем почти не было, но приглянулась слим модель).

Поискав по интернет магазинам, я остановил свой выбор на продукции A4Tech. Кандидатом на новую клавиатуру стала модель A4Tech KV-300H. У этой модели помимо "ноутбучных" клавиш еще есть USB 2.0 хаб на два порта что делает более удобной работу с флешками и прочей USB-мелочевкой.

На роль нового грызуна была выбрана A4Tech N-360.
У этой модели нет никаких излишеств вроде кучи кнопок или геймерских примочек. Простая и надежная рабочая лошадка. К тому же производитель обещает уверенную работу на любой поверхности благодаря технологии V-Track.

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

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

На следующий день я стал изучать интернет на предмет упоминания аналогичных ситуаций - наиболее частое решение - выгружать модуль ehci_hcd в процессе засыпания. Поскольку у меня используется pm-utils + uswsusp для реализации засыпания на диск, то я просто дописал два модуля, ответственных за работу USB на моем компе. Получилось так:

$ cat /etc/pm/config.d/modules
SUSPEND_MODULES="ath9k_htc ohci_hcd ehci_hcd"

После этого засыпание и пробуждение стало работать как и прежде. Появилась проблема с раскладкой клавиатуры, посколько у меня она применяется при логине в профиль и не прописана в систему. Скорее всего есть способ реализовать вызов пользовательских скриптов на событие "пробуждение из suspend2disk". Пока же приходится просто выполнять это руками:

$ setxkbmap $(cat ~/.Xkbmap)

UPDATE. Добавил немного автоматизации.

Комментариев нет:

Отправить комментарий