понедельник, 29 декабря 2008 г.

Broadcom BCM4318 и Kubuntu 8.04.1 - разгоняем Wi-Fi

Уже достаточно давно я заметил, что обновления Kubuntu несут с собой много сюрпризов. При этом количество приятных неожиданностей примерно равно количеству неприятных. Поэтому я решил обновлять эту ОС до предпоследнего релиза, когда все основные баги уже выявлены и широко освещены на форумах вместе с путями их преодоления. Но оказалось, что такая политика тоже имеет свои недостатки.
После выхода релиза 8.10 я обновил свою Kubuntu до версии 8.04.1, ожидая от нее стабильности (все-таки версия "с долгосрочной поддержкой") во всех отношениях. Но буквально с первых минут пользования ею меня ожидало крупное разочарование в отношении Wi-Fi: все соединения в локальной сети висли через пару секунд работы, хотя соединение с Интернетом, которое работает через ту же сетевую карту, было вполне нормальным.

Я попробовал установить фиксированную скорость вместо автоматической на точке доступа. Вначале я установил 802.11g (54 Мб/с), но проблему это не решило. Тогда я установил скорость на 802.11b (11 Мб/с). Соединение перестало зависать, но скорость достигала от силы 4 Мб/с, что мне совсем не нравилось.
Я начал искать ответы в Интернете и нашел их (как и ожидал) великое множество. Но практически все они касались версии 8.04, и описанные там проблемы уже были исправлены в версии 8.04.1. Однако на определенных форумах утверждалось, что виновато во всем само ядро 2.6.24, используемое как в 8.04, так и в 8.04.1, а вот ядро 2.6.25 из свежего релиза 8.10 уже работает корректно с драйверами для BCM43xx адаптеров.
Этот факт поставил меня перед дилеммой: либо изменить своему принципу "предпоследнего релиза" и обновиться до 8.10, либо мириться с черепашьей скоростью до выхода следующего релиза.
Для начала я решил попробовать разные драйверы (как с использованием ndiswrapper, так и без него) для имеющегося ядра. Но результат остался прежним.
Тогда я решил попробовать, так сказать, скрестить цаплю с козлом - установить ядро от 8.10 на имеющуюся 8.04.1.
Для этого я добавил новые репозитории в /etc/apt/sources.list

deb http://archive.ubuntu.com/ubuntu/ intrepid main
deb http://archive.ubuntu.com/ubuntu/ intrepid-updates main

Затем выполнил

$ sudo apt-get update

И вот в моем распоряжении появились новые ядра (и многое другое). Вначале я хотел было выполнить

$ sudo apt-get upgrade linux-image-386

Но при этом система заявила, что будет обновлено 508 пакетов. К такому глобальному обновлению я не был готов. Поэтому я выяснил конкретное название интересующего меня пакета

$ sudo apt-cache search linux-image
...
linux-image-2.6.25-2-386 - Linux kernel image for version 2.6.25 on i386
...

и выполнил

$ sudo apt-get install linux-image-2.6.25-2-386

Потом, конечно, перезагрузка с новым ядром, и ... почему-то результат меня совсем не удивил, - сеть пропала вообще (кроме того пропал звук, но к этому я уже почти привык :) ). Правда на этот раз все обошлось одним ударом в бубен: после повторного указания WEP-ключа я вновь оказался на связи с цивилизацией. Вернув автоматические настройки скорости, я обнаружил, что соединение больше не виснет, что уже радовало. Но вот скорость выросла всего в два раза. При других обстоятельствах я бы может и обрадовался, но в данном случае скорость составила 8 - 9 Мб/с, что меня тоже не очень устраивало.
В репозитории intrepid я увидел также ядро 2.6.27, но только generic. И я решил - ломать, так ломать

$ sudo apt-get install linux-image-2.6.27-9-generic

Еще одна перезагрузка. Ух-ты, звук вернулся :) . Правда с сетью повезло меньше - все те же 8 - 9 Мб/с. Но на этот раз я заметил интересные сообщения в dmesg, касающиеся беспроводного адаптера

b43-phy0 warning: You are using an old firmware image. Support for old firmware will be removed in July 2008.
b43-phy0 warning: You must go to http://linuxwireless.org/en/users/Drivers/b43#devicefirmware and download the latest firmware (version 4).

Другими словами мне говорят, что моя прошивка устарела и, мол, не пошел бы я за новой. Ну что ж, куда послали, туда и пошел. Согласно приведенным там инструкциям обновил прошивку

wget http://bu3sch.de/b43/fwcutter/b43-fwcutter-011.tar.bz2
tar xjf b43-fwcutter-011.tar.bz2
cd b43-fwcutter-011
make
cd ..
export FIRMWARE_INSTALL_DIR="/lib/firmware"
wget http://mirror2.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2
tar xjf broadcom-wl-4.150.10.5.tar.bz2
cd broadcom-wl-4.150.10.5/driver
sudo ../../b43-fwcutter-011/b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_apsta_mimo.o

Для верности еще раз перезагрузился. Ну вот теперь уже кое-что. Скорость достигает 16 - 20 Мб/с. А поскольку идей по ее дальнейшему увеличению у меня не осталось, то пока на этом и остановлюсь.
А строчки с репозиториями, добавленные в /etc/apt/sources.list я закомментировал, чтобы остальные пакеты у меня остались от 8.04.1.

5 комментариев:

  1. Вообще для автоматической установки прошивки есть пакет b43-fwcutter.

    Еще можно держать гибридную систему. Уназываешь несколько источников пакетов (разных версий дистрибутива) и опцией
    cat /etc/apt/apt.conf.d/release
    APT::Default-Release "hardy";

    тогда о поумолчанию будут свавиться пакеты текущей версии а необходимые пакеты можно поставить посвежее. удобнее всего разбираться в зависимостях с помощью aptitude в интерактивном режиме.

    ОтветитьУдалить
  2. > Вообще для автоматической установки прошивки есть пакет b43-fwcutter.

    Вообще я именно им и пользовался для установки прошивки.

    > Еще можно держать гибридную систему. Уназываешь несколько источников пакетов (разных версий дистрибутива) и опцией
    > cat /etc/apt/apt.conf.d/release
    > APT::Default-Release "hardy";

    Спасибо, не знал. Может как-нибудь попробую, если время будет.

    ОтветитьУдалить
  3. > Вообще я именно им и пользовался для установки прошивки.

    Извините не очень внимателен, Увидел wget дальше смотреть не стал. Этот пакет поидее должен быть в дистрибутиве и собирать его руками имхо излишне.

    ОтветитьУдалить
  4. Макс, ты все-таки прирожденный администратор. Зачем качать бинарники, если можно собрать самому! :)

    А по поводу нестабильности - именно поэтмоу я перешел на Debian. Там даже тестовая ветка выглядит куда стабильнее.

    С Наступающим! :-)

    ОтветитьУдалить
  5. > Макс, ты все-таки прирожденный администратор. Зачем качать бинарники, если можно собрать самому! :)

    А зачем тогда вообще пользоваться репозиториями? Всё можно собрать самому. Только на это нужно время, а с ним, сам понимаешь, всегда дефицит. Я и на это решение несколько часов убил (правда в основном из-за медленного канала :) )

    > А по поводу нестабильности - именно поэтмоу я перешел на Debian. Там даже тестовая ветка выглядит куда стабильнее.

    А я бы до сих пользовался FreeBSD, если бы не жизненная необходимость пользоваться софтом, который под ней никак не идет. И буду пользоваться Kubuntu, если не приключится другая жизненная необходимость :) . И только потому, что переход на новую ОС требует времени, которого... ну не будем повторяться.

    > С Наступающим! :-)
    Кто на кого наступает? ;-) Ты ведь знаешь, что для меня смена дня, месяца, года, века и тысячелетия выглядят одинаково.

    ОтветитьУдалить