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 

Выполнение команды покажет строчки, подобные этим:

0001:01:01.0 Network controller [0280]: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller [14e4:4318] (rev 02)

Проигнорируйте все, кроме последней строчки [ ], т. е. [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

Для версии ядра 2.6.37-2.6.38/11.4 модуль собран с именем brcm80211. Дистрибутив 12.x/13.x с версией ядра 3.х использует модуль brcmsmac.

Для установки и использования данных драйверов никаких специальных шагов предпринимать не надо. Соответствующие драйвера по умолчанию включены модулем ядра и в системе присутствует прошивка. Вам лишь стоит убедиться в поддержке устройства модулями 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
Присутствие загруженного модуля bcma может препятствовать выбору модуля brcmsmac, что приведет к неработоспособности карточки. Выгрузка данного модуля необходима для некоторых карточек и характерно для версии ядра 3.1-3.2. Для версии ядра 3.3+ поддержка технологии Broadcom's AMBA Interconnect осуществляется с помощью модуля brcmsmac, который использует bcma.
brcm80211 не поддерживает старые PCI/PCIe платы SSB.

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 
Выгрузка модуля b44 приведет к отсутствию интерфейса сетевой карты Ethernet. В противном случае, при выгрузке связывающего модуля ssb будут сыпаться ошибки из-за загруженного модуля b44. Поэтому, если у Вас присутствует устройство поддерживаемое модулем b44, то загрузка должна осуществляться в следующем порядке: wl -> b44

Загрузите соответствующий модуль:

# /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
В случае установленного пакета Ndiswrapper, убедитесь в отсутствии загруженного модуля ndiswrapper и при необходимости добавьте его в черный список.

При попытке сканировать доступные сети с помощью 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

Tакже cмотрите