Ubuntu 9.10: Борьба с wi-fi.

Предыстория или не было заботы, купила баба порося.

Обновившись до новой Ubuntu 9.10 на своем ноуте, я обнаружил неприятную вещь: некоторые web-странички перестали отображаться. Firefox буквально повисал при попытки открыть какую-либо страничку. Изредка минут через 5 он все-таки отображал, но что-то странное - то страничка была без стилей, то кусками, то еще как-нибудь криво...

Проблема была в драйвере wi-fi (ath5k), который используется в новой версии ubuntu. Этот драйвер видимо как-то не подружился с моим модулем wi-fi - D-Link Air-Plus DWL-G650. А вернее с чипсетом Atheros AR5001X+, который лежит в его основе. Решить проблему можно поставив старый добрый madwifi.

Установка madwifi

Погуглив интернет я нашел достаточно подробный мануал по установке драйверов.

Итак по шагам:

  1. Устанавливаем пакеты для сборки драйвера.
  2. $ sudo apt-get -y install build-essential bin86 sharutils
    
  3. Скачиваем исходники самого драйвера. Автор описывает установку для версии 0.9.3.2. Я использовал более новую версию драйвера (на данный момент - 0.9.4). Свежие драйвера можно всегда взять тут.
  4. Далее копируем загруженный архив с исходниками в папку /usr/src и распаковываем его
    $ sudo cp ~/madwifi-0.9.4.tar.gz /usr/src/
    $ cd /usr/src
    $ sudo tar -xzf madwifi-0.9.4.tar.gz
    $ cd /usr/src/madwifi-0.9.4
    
  5. Собираем и устанавливаем драйвера. Перед сборкой очищаем систему от старых версий драйвера wi-fi (если таковые установлены)
    $ sudo make clean
    $ sudo make
    $ sudo make install
    
  6. Меняем драйвер на только что установленный. В меню Система > Администрирование > Драйверы устройств включаем наш драйвер.
  7. Перезагрузка.

Колыбельная для madwifi

После установки madwifi странички загружались на ура. Но возникла другая проблема - если ноут переходил в ждущий или спящий режим, то после пробуждения он не мог подключиться к моей домашней wi-fi-сети.

Гугл и на этот раз помог мне, хотя решение отыскалось на сайте opensuse. Там предлагалось сначала добавить следующую строчку в файл /etc/pm/config.d/config

SUSPEND_MODULES="ath_pci"

Затем проверить и если это не поможет, создать файл /etc/pm/sleep.d/60madwifi следующего содержания:

#!/bin/bash
case $1 in
    hibernate|suspend)
        /sbin/rmmod ath_pci ath_rate_sample ath_hal
        ;;
    thaw|resume)
        /sbin/modprobe ath_hal
        /sbin/modprobe ath_rate_sample
        /sbin/modprobe ath_pci
        ;;
    *)  echo "madwifi power management script called incorrectly."
        ;;
esac

И добавить права на запуск для созданного файла:

 $ sudo chmod +x /etc/pm/sleep.d/60madwifi

Я сделал и то и другое. После чего проблем с wi-fi не наблюдаю...