SDB:Broadcom Bcm43xx
Version: 11.4+ Данная статья соответствует версии дистрибутива 11.4/12.x/13.x. Версии ниже имеют некоторые отличия в плане модулей ядра.
Содержание
Для поддержки беспроводных устройств на чипсетах Broadcom существуют несколько видов драйверов:
b43/b43legacy — свободные драйвера для набора стандартов связи 802.11 B/G/N. Если Ваша карта стандарта 802.11b (BCM4301) и модели 802.11g (BCM4306 Ver. 2), тогда используется драйвер b43legacy. Все остальные модели используют b43. Требуют файлы прошивки. Список поддерживаемых устройств
brcmsmac/brcmfmac — свободный драйвер (он же brcm80211) разрабатываемый сотрудниками Broadcom для поддержки PCIe устройств беспроводной связи на основе чипсетов Broadcom 802.11n SoftMAC (brcmsmac) и встроенных FullMAC (brcmfmac).Требуют файлы прошивки. Список поддерживаемых устройств.
rndis_wlan — драйвер для беспроводных USB-устройств RNDIS. Список поддерживаемых устройств.
broadcom-wl — проприетарный драйвер от Broadcom (он же broadcom-sta), обеспечиваещий поддержку некоторых устройств на основе аппаратного PCI. Список поддерживаемых устройств.
Установка и использование
Для установки соответствующих пакетов воспользуйтесь репозиторием Packman все в одном, согласно версии Вашего дистрибутива.
b43/b43legacy
Чтобы выяснить поддерживается ли Ваша карточка драйверами b43/b43legacy, выполните следующую команду:
$ /sbin/lspci -vnn | grep 14e4
Выполнение команды покажет строчки, подобные этим:
Проигнорируйте все, кроме последней строчки [ ], т. е. [14e4:4318]. Исходя из этого PCI-ID, удостоверьтесь в поддержке устройства.
По умолчанию соответствующие драйвера включены модулем ядра. Поэтому для полноценной работы устройства необходимо только установить прошивку — одним из двух способов:
- для драйвера b43
# /sbin/modprobe -r b43 ssb_hcd ssb
- для драйвера b43legacy
# /sbin/modprobe -r b43legacy ssb_hcd ssb
Установите прошивку одним из двух способов:
1. С помощью инструмента для извлечения прошивки, который автоматически загрузит последнюю версию:
# zypper in b43-fwcutter # /usr/sbin/install_bcm43xx_firmware
2. C помощью готового бинарного пакета rpm:
- для устройств стандарта 802.11b (BCM4301) и 802.11g (BCM4306 Ver. 2)
# zypper in b43legacy-firmware
- для остальных поддерживаемых карточек:
# zypper in b43-firmware
Если в настоящее время используется broadcom-wl и Вы переходите на b43, тогда необходимо убедиться в отсутствии загруженного модуля, выполнив:
$ lsmod | grep "brcmsmac\|wl"
- где brcmsmac — модули, которые необходимо выгружать для некоторых карт, т.е. это карты способные работать со всеми видами драйверов, например, 14e4:4353/14e4:4357 (версия ядра 3.1+).
Если после выполнения вышеприведенной команды соответствующие модули отображаются, тогда необходимо выгрузить их и занести в черный список:
# /sbin/modprobe -r brcmsmac wl # echo -e blacklist brcmsmac\\nblacklist wl > /etc/modprobe.d/50-broadcom-wl-blacklist.conf
Поскольку при подключении устройств к системе, необходимые модули ядра загружаются автоматически, то необходимо выгрузить их и снова загрузить для доступа к прошивке:
- для драйвера b43
# /sbin/modprobe -r b43 # /sbin/modprobe b43
- для драйвера b43legacy
# /sbin/modprobe -r b43legacy # /sbin/modprobe b43legacy
Проверьте устройство на наличие доступного интерфейса:
$ /usr/sbin/iwconfig
brcmsmac/brcmfmac
Для установки и использования данных драйверов никаких специальных шагов предпринимать не надо. Соответствующие драйвера по умолчанию включены модулем ядра и в системе присутствует прошивка. Вам лишь стоит убедиться в поддержке устройства модулями brcmsmac/brcmfmac, согласно PCI Device ID, и в случае проблем проверить отсутствие следующих модулей (дистрибутив 12.x/13.x с версией ядра 3.x):
$ lsmod | grep "b43\|bcma\|wl"
При необходимости выгрузите соответствующие модули и занесите в черный список:
- для версии ядра 3.1-3.2:
# /sbin/modprobe -r b43 bcma wl # echo -e blacklist b43\\nblacklist bcma\\nblacklist wl > /etc/modprobe.d/50-broadcom-wl-blacklist.conf
- для версии ядра 3.3+:
# /sbin/modprobe -r b43 wl # echo -e blacklist b43\\nblacklist wl > /etc/modprobe.d/50-broadcom-wl-blacklist.conf
В случае выполнения вышеприведенных действий перезагрузите модуль:
# /sbin/modprobe -r brcmsmac && /sbin/modprobe brcmsmac
rndis_wlan
Для уточнения поддержки модулем rndis_wlan воспользуйтесь информацией от утилиты lsusb
и сравните значения ID c псевдонимом (alias) полученного с помощью:
$/sbin/modinfo rndis_wlan
В качестве примера:
~> lsusb Bus 002 Device 002: ID 1690:0715 Askey Computer Corp. [hex] Name: Voyager 1055 Laptop 802.11g Adapter [Broadcom 4320] ~> /sbin/modinfo rndis_wlan | grep 0715 alias: usb:v1690p0715d*dc*dsc*dp*ic02isc02ipFF*
broadcom-wl
Проприетарный драйвер не являющийся частью кода ядра и устанавливается отдельно:
# zypper in broadcom-wl-kmp-`uname -r | cut -f3 -d"-"` broadcom-wl
Для уточнения поддержки, выполните:
$ /sbin/lspci -vnn | grep 14e4 $ /sbin/modinfo wl
В качестве примера:
~> /sbin/lspci -vnn | grep 14e4 04:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller [14e4:4727] (rev 01) ~> /sbin/modinfo wl | grep 4727 alias: pci:v000014E4d00004727sv*sd*bc*sc*i*
Убедитесь в отсутствии загруженных модулей:
$ lsmod | grep "b44\|b43\|ssb\|brcm80211\|bcma\|brcmsmac"
И если это необходимо, то выгрузите их и занесите в черный список:
- для дистрибутива 12.x/13.x с версией ядра 3.x:
# /sbin/modprobe -r b44 b43 b43legacy ssb_hcd ssb brcmsmac bcma # echo -e blacklist b43\\nblacklist b43legacy\\nblacklist ssb\\nblacklist bcma\\nblacklist brcmsmac > \ /etc/modprobe.d/50-broadcom-wl-blacklist.conf
- для дистрибутива 11.4 с версией ядра 2.6.37-2.6.38:
# /sbin/modprobe -r b44 b43 b43legacy ssb brcm80211 # echo -e blacklist b43\\nblacklist b43legacy\\nblacklist ssb\\nblacklist brcm80211 > \ /etc/modprobe.d/50-broadcom-wl-blacklist.conf
Загрузите соответствующий модуль:
# /sbin/modprobe wl
Особенности драйверов
Выбор модулей b43/b43legacy, считывающие ревизию карты (rev XX), осуществляется модулем шины ssb, именно здесь содержатся значения псевдонима (alias).
Выгрузка модуля b43legacy и последующее занесение его в черный список, в случае применения broadcom-wl - необязательна, поскольку данный модуль никак не пресекается с вышеприведенными модулями беспроводного устройства Broadcom.
Начиная с версии ядра 3.3 модуль bcma входит в состав совместной работы brcmsmac, он же для некоторых карт (ядро 3.1+) является шиной модуля b43 и выполняет роль схожую с модулем ssb.
Хоть rndis_wlan и содержит в списке информации о модуле "поставщика/идентификатор" устройства (vendor/device-id), он также может автоматически определять новые беспроводные RNDIS устройства.
Broadcom-wl не поддерживает все возможности, которые предлагает открытый драйвер b43/b43legacy, в частности, Вы можете подключаться к точке доступа AP или Ad-Hoc сети, но не сможете работать в режиме AP и монитора (monitor mode). Различия и возможности драйверов, Вы можете посмотреть здесь.
Поиск и устранение неисправностей
Во время загрузки системы автоматически не загружается модуль, а при выполнении команды lsmod | grep "b43\|brcmsmac\|wl" не отображается ни один из модулей?
Загрузите модуль вручную:
# /sbin/modprobe -v имя_модуля
И если модуль загружается без ошибок, тогда для автоматической загрузки модуля при загрузке системы выполните:
# echo имя_модуля > /etc/modules-load.d/broadcom.conf
При попытке сканировать доступные сети с помощью iwlist scan
появляется: Interface doesn't support scanning?
Возможные решения:
- включите беспроводное устройство с помощью соответствующих функциональных клавиш
- установите утилиту проверки состояния переключателей и разблокируйте устройства:
# zypper in rfkill # /usr/sbin/rfkill unblock all
При попытке использовать беспроводное устройство с помощью NetworkManager, интерфейс не активен, а в логах /var/log/NetworkManager
сыпется: WiFi disabled by radio killswitch; disabled by state file?
Возможные решения:
- проверьте состояние переключателей и разблокируйте устройства согласно вышеприведенным действиям
- выясните загружается ли модуль устройства acer-wireless, выполнив:
$ lsmod | grep -i acer_wmi
- уточните специфику аппаратной части, обратясь к технической документации и, если данный модуль не отвечает за поддержку bluetooth, тогда занесите в черный список:
# echo blacklist acer_wmi > /etc/modprobe.d/50-wmi-blacklist.conf
- воспользуйтесь альтернативной программой для управления беспроводными сетями (wicd).
Во время использования беспроводной сети наблюдаются частые отключения устройства?
Отключите управление питанием:
# /usr/sbin/iwconfig интерфейс power off
C использованием драйвера b43/b43legacy происходит зависание системы при загрузке?
В случае если беспроводное устройство поддерживается модулем wl, тогда в качестве альтернативы воспользуйтесь этим, установив соответствующий драйвер.
При включении интерфейса в консоли появляется: SIOCSIFFLAGS: No such file or directory?
Удостоверьтесь в использовании файлов прошивки модулем, выполнив:
$ dmesg | grep -i firmware
Плохой результат сканирования беспроводного RNDIS USB-устройства, а NetworkManager и подобные ей программы затрачивают много времени для обнаружения доступной сети?
Настройте устройство присвоив статические настройки с помощью yast. Проблема актуальна для версии ядра <= 2.6.37