Установка драйверов на Wi-Fi Broadcom для Fedora

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск

Содержание

Настройка свободного драйвера (рекомендуемый, поддерживаемый драйвер)

Предисловие

Для начала - сверяемся со списком устройств, которые поддерживаются модулем, входящим в состав ядра. Посмотреть это можно тут. В списке поддерживаемых устройств, конечно, указаны не все модели, проще всего сравнить по vendor и product id. Идентификаторы получаем такой вот командой:

lspci -nn | grep 14e4

ее вывод выглядит примерно так:

08:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g LP-PHY [14e4:4315] (rev 01)

Где [14e4:4315] - это и есть трубуемые идентификаторы. 14e4 - это vendor id, 4315 - product id. Из примера видно, что точного соответствия в списке поддерживаемых моделей нет, что не мешает моему wifi превосходно работать.

Если адаптер достаточно новый, а product_id соответствует приведенным тут, то есть замечательная возможность испытать, а возможно и остаться (как сделал я) на новом свободном драйвере brcm80211, который разрабатывают сотрудники Broadcom. К слову, для таких адаптеров не подходит модуль b43!

Также стоит отметить, что brcm80211 не получится использовать в версии Fedora ниже 15-ой.

Установка

Если с ходу, у Вас не заработал wifi, то значит драйвер не находит прошивку.

Давайте последуем желаниям модуля ядра.

Свободные (открытые прошивки)

Проверим наличие пакета b43-openfwwf следующей командой:

yum list installed b43-openfwwf

Если пакет отсутствует среди установленных (что бывает крайне редко), то устанавливаем его командой:

yum install b43-openfwwf

Перезапускаем модуль:

modprobe -r b43; modprobe b43

Есть два варианта, wifi не запустился и не стал обнаруживать точки доступа вокруг себя, тогда переходим к следующему пункту Проприетарные прошивки. Если же все заработало отлично, перестаем читать сей нудный текст, а начинаем активно пользоваться wifi. :)

Проприетарные прошивки

Проверяем наличие пакета в системе:

yum list installed b43-fwcutter

Данный пакет предоставляет нам утилиту, способную "изьять" прошивку из драйвера для другой, менее популярной ОС. Если пакета нет, устанавливаем:

yum install b43-fwcutter

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

Получаем требуемые права (команда попросит ввода пароля на пользователя root) и скачиваем архив с драйвером:

su -
wget http://downloads.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

Ну и наконец-то, кульминация, мы изымаем и устанавливаем прошивки в дерево ядра:

b43-fwcutter -w /lib/firmware/ wl_apsta_mimo.o

Напоследок перегружаем модуль ядра:

modprobe -r b43; modprobe b43

После этих манипуляций wifi должен заработать. Говоря "должен", я понимаю, что wifi может и не заработать, увы.

Известные проблемы

Многие LP-PHY устройства просто отказываются работать в режиме DMA, их следует принудительно переключить в режим PIO. Проверяем, наш ли это случай, для чего перегрузим модуль ядра с определенным параметром, выполняем:

modprobe -r b43; modprobe b43 pio=1

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

echo "options b43 pio=1" > /etc/modporbe.d/options-b43-pio.cof

Все, после этого при каждой перезагрузке, b43 будет работать в PIO-режиме.

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

Но настоятельно рекомендую сообщить об ошибке при работе с Вашим устройством. Если вы знаете английский язык, то лучше всего сообщить напрямую сюда. Если английский язык - не Ваш конёк, то сюда в проект "Fedora (upstream)".

В таком случае есть большой шанс, что в следующей версии Fedora Ваш wifi заработает "из коробки".

Установка brcm80211

Уже сейчас данный модуль входит в состав ядра Linux, но пока (ради стабильности), мейнтейнеры Fedora не включают его в состав пакета ядра. Но рано или поздно всё будет работать "изкоробки" :)

Сейчас же для установки модуля пользователям RFRemix достаточно выполнить одну из команд:

yum install akmod-brcm80211

или

yum install kmod-brcm80211

Пользователям Fedora придется, или установить соответствующий репозиторий russianfedora-free или скачать и установить пакеты вручную отсюда. Версию стоит выбирать, чтобы она соответствовала текущему ядру.

После установки пакетов надо будет выполнить обновление initrd:

/usr/libexec/plymouth/plymouth-update-initrd

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

Установка проприетарного (неподдерживаемого) драйвера

В Fedora драйвера ставятся одной из команд:

yum install kmod-wl

или

yum install akmod-wl

в случае использования архитектуры i686 и ядра с поддержкой PAE:

yum install akmod-wl kernel-PAE-devel

Вместе с пакетов установится файл /etc/modprobe.d/broadcom-wl-blacklist.conf. Обязательно убедитесь, что он установился!

Мейнтейнер RPMFusion - поставщик пакетов (a)kmod-wl, увы, грешен тем, что "забывает" положить данный файл в пакет, а без него будут проблемы.

Если вышеназванного файла нет, то создаем его самостоятельно такой последовательностью команд:

su
echo "blacklist bcm43xx" >> /etc/modprobe.d/broadcom-wl-blacklist.conf
echo "blacklist ssb" >> /etc/modprobe.d/broadcom-wl-blacklist.conf
echo "blacklist b43" >> /etc/modprobe.d/broadcom-wl-blacklist.conf
echo "blacklist ndiswrapper" >> /etc/modprobe.d/broadcom-wl-blacklist.conf

Данный файл запрещает запуск "нативных" модулей (драйверов) из поставки ядра Linux.

Теперь нам надо дать понять ядру, чтобы он на этапе до загрузки root-раздела также не загружал модули из поставки ядра, делается это следующей командой:

/usr/libexec/plymouth/plymouth-update-initrd

выполняется команда не быстро, примерно от 20 секунд до полутора минут, в зависимости от мощности компьютера.

Если мы установили akmod пакет, давайте проверим, что после перезагрузки драйвер заработает, запустим от root:

akmods --force

должно появится несколько строчек, которые заканчиваются [OK], если это не так, то скорее всего у нас архитектура i686 и PAE ядро, смотрим вверх и доустанавливаем пакет kernel-PAE-devel.

После этого необходимо перезагрузить компьютер:

reboot

Загрузившись мы получим один из 2-х вариантов: все работает или ничего теперь не работает вовсе.

Если все работает, то можем забыть о последующих шагах.

Мейнтейнер пакетов wl, как я уже упоминал - большой разгильдяй и часто забывает постустановочные команды положить в пакет, потому у нас ничего и не работает. Выполняем от root следующую команду:

modprobe wl

если команда вернула нам ошибку, то выполним еще одну команду:

depmod -qa

и затем снова:

modprobe wl

Обычно после этих шагов wifi от broadcom начинает работать в Fedora/RFRemix.

Если же wifi так и не запустился, идем сюда или на jabber-конференцию fedora@conference.jabber.ru. И там и там помогут!


Общие проблемы

Ядро 2.6.40

Начиная с ядра 2.6.40-4 (так называется 3-ая версия ядра в Fedora 15) появилась проблема с модулями для Broadcom wifi (b43, bcm43xx, wl, brcm80211). Проблема заключается в том, что в данной версии-релизе ядра присутствует модуль bcma (Broadcom's specific AMBA driver), который на данный момент блокирует работу всех остальным модулей. А в будущем заменит многострадальный модуль ssb.

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

Запись об ошибке тут, Джон Линвилль обещал отключить bcma для ядер в составе Fedora 15, но в общем Fedora решила, что блокирование модулей, отличных от b43 - это проблема конкретного пользователя. Т.е. решать конкретно эту проблему, мы точно будем в Fedora 16, а может быть и далее.