Wi-Fi Broadcom
На некоторых ноутбуках со встроенными Wi-Fi адаптерами Broadcom BCM43* при установке ALT Linux могут быть проблемы с Wi-Fi, вылеты Wi-Fi соединения или низкая скорость работы беспроводной сети. Проблема решается заменой драйвера Wi-Fi адаптера по умолчанию.
Как узнать модель Wi-Fi адаптера?
Вы можете проверить модель своего Wi-Fi адаптера командой:
$ lspci -nn -d 14e4: 03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM43142 802.11b/g/n [14e4:4365] (rev 01)
Или узнать модель своего Wi-Fi адаптера и используемый драйвер с помощью команды:
$ inxi -N Network: Device-1: Broadcom BCM4313 802.11bgn Wireless Network Adapter driver: bcma-pci-bridge Device-2: Realtek RTL810xE PCI Express Fast Ethernet driver: r8169
Какие модели карт?
Ниже приведена таблица соответствия между моделью Wi-Fi адаптера и возможными драйверами:
Модель | ALT-драйвер | DEB-драйвер | b43 | PCI-ID |
---|---|---|---|---|
В кодах PCI-ID: жирным = b43; простым = ALT/DEB; курсив = оба. | ||||
BCM4306/3 | + | 14e4:4307 14e4:4320 14e4:4324 | ||
BCM4311 | + | + | + | 14e4:4311 14e4:4312 14e4:4313 |
BCM4312 | + | + | + | 14e4:4315 |
BCM4313 | + | + | 14e4:4313 14e4:4727 | |
BCM4318 | + | 14e4:4318 14e4:4319 | ||
BCM4321 | + | + | 14e4:4328 14e4:4329 14e4:432a | |
BCM4322 | + | + | + | 14e4:432b 14e4:432c 14e4:432d |
BCM43142 | + | 14e4:4365 | ||
BCM43224 | + | + | + | 14e4:4353 |
BCM43225 | + | + | + | 14e4:4357 |
BCM43227 | + | + | + | 14e4:4358 |
BCM43228 | + | + | + | 14e4:4359 |
BCM4331 | +? | + | + | 14e4:4331 |
BCM4360 | + | 14e4:43a0 | ||
BCM4352 | + | 14e4:43a0 |
Доступные драйверы
ALT-драйвера
Данный способ меняет драйвер по умолчанию на модуль wl
из пакета kernel-modules-bcmwl-std-def (un-def)
Для обновления ядра выполните команды:
$ su - # apt-get update # update-kernel # reboot
Основная статья - Обновление ядра
Затем, после перезагрузки, определите версию и тип своего ядра:
$ uname -r 5.10.185-std-def-alt1
И выполните следующие команды:
$ su - # apt-get install kernel-modules-bcmwl-std-def (un-def)
Выбор пакета std-def или un-def зависит от типа вашего ядра. Затем:
# apt-get insall bcmwl-kernel-conf # reboot
После перезагрузки может понадобиться заново соединиться с беспроводной сетью.
[Содержимое пакета] |
---|
bcmwl-kernel-conf.rpm `--etc `--modprobe.d |--blacklist-bcm.conf `--blacklist-bcm2.conf kernel-modules-bcmwl-*-def.rpm `--lib `--modules `--*krnlver-*-def-alt1 `--net `--wl.ko |
Проверяем
# lspci -k 03:00.0 Network controller: Broadcom Inc. and subsidiaries BCM43142 802.11b/g/n (rev 01) Subsystem: Lite-On Communications Inc Device 6675 Kernel driver in use: wl.ko
# modinfo wl.ko | head -n1 filename: /lib/modules/6.1.28-un-def-alt1/kernel/drivers/net/wl.ko
Установка закрытых Deb-драйверов
В Debian есть пакет с несвободными драйверами для wifi карт broadcom для фрамеворка DKMS, который поддерживает большее количество Wi-fi карт.
Ставим dkms:
# apt-get install dkms
Ставим исходники ядра:
# apt-get install kernel-headers-std-def
или
# apt-get install kernel-headers-un-def
Ставим debian-овский пакет с dkms-модулями BCM через epm:
# epm install /home/petr/Загрузки/broadcom-sta-dkms_6.30.223.271-16_all.deb
Пакет содержит модули для dkms.
[Содержимое пакета] |
---|
broadcom-sta-dkms_6.30.223.271-16_all.deb |--etc | `--modprobe.d | `--broadcom-sta-dkms.conf `--usr |--src | `--broadcom-sta-6.30.223.271 | |--src | | |--wl | | | `--sys | | | |--wl_iw.c | | | |--wl_linux.h | | | |--wlc_wowl.h | | | |--wlc_pub.h | | | |--wl_iw.h | | | |--wlc_key.h | | | |--wl_cfg80211_hybrid.h | | | |--wl_dbg.h | | | |--wlc_ethereal.h | | | |--wlc_utils.h | | | |--wl_linux.c | | | |--wlc_types.h | | | |--wl_cfg80211_hybrid.c | | | `--wl_export.h | | |--common | | | `--include | | | `--proto | | | |--bcmeth.h | | | |--bcmip.h | | | |--ieee80211_radiotap.h | | | |--802.11.h | | | |--bcmevent.h | | | |--ethernet.h | | | |--wpa.h | | | `--802.1d.h | | |--shared | | | |--linux_osl.c | | | `--bcmwifi | | | `--include | | | |--bcmwifi_rates.h | | | `--bcmwifi_channels.h | | `--include | | |--wlioctl.h | | |--osl.h | | |--packed_section_start.h | | |--epivers.h | | |--packed_section_end.h | | |--bcmcrypto | | | `--tkhash.h | | |--bcmendian.h | | |--bcmdefs.h | | |--linux_osl.h | | |--linuxver.h | | |--pcicfg.h | | |--bcmutils.h | | |--siutils.h | | `--typedefs.h | |--dkms.conf | |--Makefile | `--lib | |--wlc_hybrid.o_i386 | `--wlc_hybrid.o_amd64 `--share |--broadcom-sta | |--broadcom-sta.ids |--doc | `--broadcom-sta-dkms | |--changelog.Debian.gz | |--README.txt.gz | |--copyright | `--README.Debian `--lintian `--overrides `--broadcom-sta-dkms |
О NDIS-wrapper
NDISwrapper — программная прослойка, позволяющая использовать драйверы WiFi, предназначенные для Windows в Linux.
НО!
- NDISwrapper реализует NDISv5 и драйвера структуры WDM (XP), в то время как современные драйвера имеют структуру WDF (NT6+) и NDISv6.
- Видимо по этой причине модуль ядра в ALT Linux больше не собирается (но исходники есть и можно собирать вручную)
B43
B43 - проект по написанию методом реверс-инжениринга драйверов для wi-fi устройств Broadcom.[i]
Для использования B43 нужно установить сам драйвер и прошивку.
Установка драйвера:
# apt-get install b43-fwcutter
Установка прошивки:
# export FIRMWARE_INSTALL_DIR="/lib/firmware" # wget http://mirror2.openwrt.org/sources/broadcom-wl-5.10.56.27.3_mipsel.tar.bz2 # tar xjf broadcom-wl-5.10.56.27.3_mipsel.tar.bz2 # b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.10.56.27.3/driver/wl_apsta/wl_prebuilt.o
Решение проблем
Проблемы с драйверами ALT
В случае, если модель вашего адаптера поддерживается драйверами ALT, драйверы установлены, но Wi-Fi не работает, или работает нестабильно, возможно, нужный модуль Wi-Fi не загружается, и была нарушена последовательность установки пакетов. Можно попробовать следующее решение:
Определим версию и тип вашего ядра:
$ uname -r 5.10.185-std-def-alt1
Проверим, какой драйвер Wi-Fi загружен:
$ inxi -N Network: Device-1: Broadcom BCM4313 802.11bgn Wireless Network Adapter driver: bcma-pci-bridge Device-2: Realtek RTL810xE PCI Express Fast Ethernet driver: r8169
Мы видим, что загружен неверный драйвер bcma-pci-bridge
вместо нужного драйвера wl
Проверяем наличие установленного пакета драйвера из репозитория ALT:
$ rpm -q kernel-modules-bcmwl-std-def kernel-modules-bcmwl-std-def-6.30.223.271-alt15.330425.1.x86_64
Нужный пакет драйвера установлен и тип совпадает с типом ядра, затем:
$ rpm -q bcmwl-kernel-conf пакет bcmwl-kernel-conf не установлен $ ls /etc/modprobe.d/ alsa-modindex.conf
В системе не установлен пакет bcmwl-kernel-conf с параметрами настройки ядра, поэтому нужный нам модуль ядра не загружается. Для того, чтобы это исправить, выполните команды:
$ su - # apt-get update # apt-get install bcmwl-kernel-conf # reboot
После перезагрузки нужный нам модуль Wi-Fi должен заработать, может понадобиться заново соединиться с беспроводной сетью.
Другим способом является запрет загрузки ненужного драйвера вручную, без установки пакета bcmwl-kernel-conf:
$ su - # echo "blacklist bcma" >> /etc/modprobe.d/blacklist-bcma.conf # reboot