Asus P52F-380M и Debian
Недавно я обзавёлся новой игрушкой — Asus P52F-380M. В общем и целом ноут хороший, но некоторые моменты вызывают раздражение. Например, клавиатура немного прогибается (в прямом смысле слова), но когда привыкаешь и начинаешь набирать, не глядя (я, к стыду своему, всё ещё не обучился слепому набору), этот недостаток перестаёт волновать. Гораздо больше раздражает идиотское расположение стрелочек:
То есть кнопка «вправо» находится в области, занимаемой numpad’ом, что, поверьте мне, очень неудобно (в основном из-за огромного RgtCtrl, который я постоянно нажимаю вместо стрелочки влево). Даже на EeePC сделали лучше:
Думаю, теперь я таки перейду на hjkl в vim’е ☺
В остальном дизайн и сборка, к счастью, претензий не вызывают, так что перейдём наконец к теме поста — установке и последующей настройке моего любимого Debian.
Замечу, что в данном ноутбуке используется процессор Intel Core i3, а значит, лучше всего использовать Debian, собранный под amd64. Надеюсь, читатели этого блога в состоянии сами установить систему (если нет — замечательная инструкция virens’а вам в помощь).
Сначала я попытался поставить Squeeze, но после установки наткнулся на неприятный баг: внешние колонки ноутбука продолжают играть даже когда воткнуты наушники. Мириться с этим никак нельзя, тем более что в LiveCD Ubuntu 10.10, оказавшемся под рукой, всё работало. Признаюсь, я не стал долго ковыряться и просто поставил Wheezy, в котором, к счастью, всё работало из коробки.
Впрочем, даже в Wheezy с ходу не заработали некоторые вещи, в частности:
- веб-камера выдавала перевёрнутое изображение;
-
wicd-curses
не видел мою Wi-Fi-точку; - из Fn-клавиш работали только три: Fn+F5/Fn+F6, регулирующие яркость монитора, и Fn+F7, которая монитор выключала;
-
pm-suspend
иpm-hibernate
вроде как работали, но не выключали машину; - противно пищал PC speaker (он не настоящий, конечно же, просто эмуляция).
Карт-ридер я на работоспособность не проверял из-за отсутствия подходящих карточек, но наличие в выводе lspci
SD Bridge внушает надежду.
Ну-с, проблемы перечислены — вперёд, на барикады! ☺
К счастью, для камеры и suspend’а решения приведены в Linux Laptop Wiki. Для полноты поста я размещу здесь вольный пересказ этих рецептов.
Веб-камера
Починить это раз и навсегда (слегка поправив какой-нибудь конфиг), к сожалению, не получится. Единственный выход — все приложения, использующие веб-камеру, запускать с библиотекой v4l1compat.so
. Для начала ставим соответствующий пакетик:
$ sudo aptitude install libv4l-0
После этого все приложения, использующие веб-камеру, следует запускать следующим образом (на примере MPlayer’а):
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so mplayer tv://
Для удобства можно создать алиас — библиотека не нарушает работоспособность программы, так что можно подгружать её даже в тех случаях, когда веб-камера вам не нужна.
Suspend и hibernate
Как гласит Linux Laptop Wiki, питание не выключается из-за неотключенных USB-устройств. Чинится всё написанием скриптов, которые перед засыпанием отключают устройства, а потом подключают обратно, но тут всплывает неприятный баг: машинка успешно засыпает и просыпается, но в точках монтирования флешек становится пусто. Почему так и как это исправить, я ещё не понял. Stay tuned.
В общем, сделать нужно следующее:
ставим любимый пакетик для suspend/hibernate. Я пользуюсь
pm-utils
:$ sudo aptitude install pm-utils
создаём конфиг с модулями, которые нужно выгружать перед suspend’ом:
$ sudoedit /etc/pm/config.d/modules
и пихаем в него вот что:
SUSPEND_MODULES="usb_storage mac80211 cfg80211 btusb bluetooth ahci libahci sdhci_pci sdhci led_class ath9k ath9k_common ath rfcomm sco bnep l2cap asus_laptop ehci_hcd"
Не забываем разрешить утилитам читать его:
$ sudo chmod a+r /etc/pm/config/d/modules
создаём скриптик, который будет отключать и подключать устройства:
$ sudoedit /etc/pm/sleep.d/10_unbindusb
и помещаем в него следующее:
#!/bin/bash function unbind_usb { for driver in ehci ohci uhci; do cd "/sys/bus/pci/drivers/${driver}_hcd"; ids=$(ls | grep :); echo $ids > /tmp/DISABLED_$driver; for id in $ids; do echo "Unbinding $id"; echo -n "$id" > unbind; disabled="$disabled $id"; done; done; } function bind_usb { for driver in ehci ohci uhci; do cd "/sys/bus/pci/drivers/${driver}_hcd"; for id in $(cat /tmp/DISABLED_$driver); do echo "Binding $id"; echo -n "$id" > bind; done; rm /tmp/DISABLED_$driver; done; } case "$1" in hibernate|suspend) unbind_usb; ;; thaw|resume) bind_usb; unbind_usb; bind_usb; ;; *) exit 1; ;; esac; exit 0;
даём скрипту необходимые права:
$ sudo chmod u=rwx,go=rx /etc/pm/sleep.d/10_unbindusb
Теперь можно спокойно ложить машинку в suspend командой pm-suspend
(от рута, конечно же). Не забывайте также о hibernate и suspend-hybrid.
Если после просыпания у вас не определяются USB-устройства, перезагрузите модуль ehci_hcd
:
$ sudo rmmod ehci_hcd
$ sudo modprobe ehci_hcd
UPD 14.02.2012: даже после вышеприведённых инструкций машинка иногда не просыпалась (точнее, просыпалась, но на этапе загрузки образа уходила в ребут). Только что поставил linux-image-3.2.0-1-amd64
— шесть циклов hibernate пройдены на «ура» (причём в одном из случаев система засыпала от AC, а просыпалась от аккумулятора; в ещё одном случае было наоборот; во всех остальных — AC).
Wi-Fi
Беспроводная сеть была чуть ли не самой простой проблемой из всех. Следать нужно следующее:
поставить менеджер сетевых соединений wicd (помимо curses-клиента существуют также gtk и cli):
$ sudo aptitude install wicd wicd-curses
прописать в
/etc/network/interfaces
беспроводной интерфейс:$ sudoedit /etc/network/interfaces
В конец файла нужно дописать следующее:
allow-hotplug wlan0 iface wlan0 inet manual
прописать
wlan0
в настройках wicd, для чего в curses-интерфейсе (запускаемом с помощью командыwicd-curses
) нужно нажать P (это большая английская буква P) и тут же в поле Wireless Interface написать заветное «wlan0» (без кавычек)жмакнуть F10, чтобы сохранить настройки
После этих нехитрых манипуляций ноутбук начинает-таки видеть беспроводные точки доступа.
Кстати говоря, Fn+F2 работает из коробки, только лампочка на передней панели, показывающая состояние Wi-Fi, не работает. Меня, впрочем, это мало волнует, поэтому я (пока что) не разбирался, почему так.
UPD: за лампочки отвечает модуль asus_laptop
. Не знаю, что там у меня случилось во время написания статьи, но сейчас, спустя неделю, модуль загружается сам, так что лампочки в порядке.
Fn-клавиши
Сразу после установки работали только клавиши, регулирующие яркость монитора, и Fn+F2, отключающая/включающая Wi-Fi. Мне очень сильно не хватало возможности регулировать громкость звука (и вообще выключать его), так что пришлось отлавливать события acpi и писать обработчики. На самом деле это не так сложно, как может показаться. Следуйте инструкции:
создаём файлы, задающие события, на которые мы хотим реагировать (надеюсь, вы уже запомнили команду
sudoedit
, потому что на этот раз я просто покажу содержимое файлов, не расписывая процесс их создания):$ cat /etc/acpi/events/volume_mute event=hotkey ATK0100:00 00000032 action=/etc/acpi/volume_mute.sh
$ cat /etc/acpi/events/volume_up event=hotkey ATK0100:00 00000030 action=/etc/acpi/volume_up.sh
$ cat /etc/acpi/events/volume_down event=hotkey ATK0100:00 00000031 action=/etc/acpi/volume_down.sh
Если какой-то из Fn-хоткеев у вас работать не будет, запустите
acpi_listen
, понажимайте хоткей и посмотрите, соответствует ли вывод строке «event» (обратите внимание, что acpi присваивает событиям последовательные номера — их включать в строку event нельзя)создаём обработчики:
$ cat /etc/acpi/volume_mute.sh #!/bin/sh amixer sset 'Master' toggle
$ cat /etc/acpi/volume_up.sh #!/bin/sh amixer sset 'Master' 2+
$ cat /etc/acpi/volume_down.sh #/bin/sh amixer sset 'Master' 2-
заставляем
acpid
перечитать настройки:$ sudo pkill -SIGHUP acpid
PC speaker
«Пищалка» в данном ноуте детская, не настоящая даже — вместо взрослого PC speaker’а ноутбук пищит колонками. Отключается это тоже по-детски: достаточно открыть alsamixer
(выполнив в терминале одноимённую команду), выбрать ползунок Beep и выключить его (нажав m).
Как видим, ни одной серьёзной проблемы — все вещи настраиваются парой изменений в конфигах. И кто после этого посмеет сказать, что Linux не готов для потребителя? ☺
Comments (migrated from Blogger)
On 2011-09-05T15:28:56.227+03:00, Minoru wrote:
Упс… Спасибо, GalS — пофикшено!
On 2011-09-06T07:57:36.590+03:00, goblinyara wrote:
>>Правда, в TTY спикер все равно будет эмулироваться — как это побороть, я не знаю.
alsamixer, там будет PCM, убавляете в ноль, и не надо шаманства с xset=)On 2011-09-06T13:05:52.938+03:00, Minoru wrote:
goblinyara, PCM — это, так сказать, «общесистемный» регулятор. Если убрать его в ноль, звук пропадёт во всей системе. Но все равно спасибо — пока проверял PCM, заметил Beep. Mute'им этот регулятор — и «пищалка» замолкает даже в TTY. Спасибо!
On 2011-09-11T03:17:01.243+03:00, virens wrote:
Знатный пост, баянщики и графоманы одобряют :-)
Про acpi_listen - это не панацея, надо сказать. У меня на ноутбуке оно вообще нифига не слышит (никаких выхлопов на нажатие спецклавиш). Тем не менее, Яркость, ВайФай и переключение на внешний монитор работают. Ни разу не из коробки, между прочим.
Про вайфай - тебе крупно повезло, отец, что в ядре поддерживается radio frequency kill switch (rf_kill). Это была большая боль в пояснице, ибо найти это в конфигах ядра было делом непростым (см. ту же ссылку).
И да, спасибо за ссылку на мой старый пост по дебиану. Забавно, но это до сих пор один из самых посещаемых постов по статистике….
Your thoughts are welcome by email
(here’s why my blog doesn’t have a comments form)
On 2011-09-05T14:50:26.971+03:00, GalS wrote:
ссылка на инструкцию virens'а - на редактирование поста?