Установка драйверов на 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, а может быть и далее.
