10 декабря 2012

Как установить Wi-Fi драйвер Broadcom на GNU/Linux


Если вам не повезло и ваш компьютер содержит чипы от Broadcom, то при настройке системы Linux могут возникнуть проблемы.

Чтобы узнать какие у вас установлены устройства, выполните в терминале команду:

lspci -vnn -d 14e4:
Отобразится список устройств от вендора с кодом 14е4: то есть от Broadcom. В моём случае это были:
BCM4401 - адаптер проводной сети Ethernet
BCM4311 - адаптер беспроводной сети Wi-Fi 802.11b/g

Сразу после установки операционной системы, соединение по проводу работало без проблем, а вот с беспроводным возникли трудности - команда iwconfig сообщала что интерфейс wlan0 присутствует, однако список сетей командой iwlist scan получить не удавалось.

Вообще для беспроводных чипов от Broadcom в мире Linux есть 3 драйвера:

В свежеустановленной системе понять какие из этих драйверов загрузились можно командой

lsmod | grep "b"
в полученном списке у меня видно драйвера b43 и b44.

Оказалось, что у Wi-Fi драйвера b43 есть нюанс - ему для работы нужна прошивка от микросхемы BCM4311, которую система не предоставляет автоматически.
Установить же самому её очень просто используя Debian пакет firmware-b43-installer:

apt-get install firmware-b43-installer

После установки и перезагрузки, всё заработало как надо - iwlist scan выдал список сетей, правда NetworkManager applet ничего не показывал, пришлось вручную в его вкладке Wireless создать соединение с нужной Wi-Fi сетью.

Ради эксперимента попробовал установить родной драйвер Broadcom STA версии 6.30.223.141 (64bit). После скачивания, следуя нехитрой инструкции в его README, скомпилировать его с 1ой попытки не получилось. Многие пишут что в его Makefile есть ошибка с кодом автоопределения нужного ему для работы wireless kernel API. Решается простым комментированием соответствующей части Makefile и явным заданием переменной APIFINAL:= CFG80211 или := WEXT.

Компиляция с вручную заданным параметром CFG80211 прошла успешно, но попытка установить результирующий модуль ядра wl.ko командой insmod wl.ko приводила к kernel panic.

При использовании параметра WEXT, команда insmod wl.ko проходила успешно, драйвер загружался однако ничего не происходило. В выводе dmesg была видна такая запись: wl failed with code 21.

На этом эксперимент был окончен :)


Автор

© Dmytro Nikandrov