Wi-Fi Broadcom: различия между версиями
Нет описания правки |
|||
(не показаны 44 промежуточные версии 6 участников) | |||
Строка 1: | Строка 1: | ||
На некоторых ноутбуках со встроенными Wi-Fi адаптерами Broadcom BCM43* при установке ALT Linux могут быть проблемы с Wi-Fi, вылеты Wi-Fi соединения или низкая скорость работы беспроводной сети. Проблема решается заменой драйвера Wi-Fi адаптера по умолчанию. | |||
{{Note| в большинстве случаев достаточно установить пакет kernel-modules-bcmwl-std-def или kernel-modules-bcmwl-un-def в зависимости от применяемого ядра}} | |||
*Wi- | |||
==Как узнать модель Wi-Fi адаптера?== | |||
== | {{Примечание|Далее команды пользователя будут предваряться приглашением <code>$</code> , суперпользователя '''root''' - <code>#</code>}} | ||
Вы можете проверить модель своего 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 | |||
=== | ==Какие модели карт?== | ||
# apt-get install | Ниже приведена таблица соответствия между моделью Wi-Fi адаптера и возможными драйверами: | ||
<center> | |||
{| class="wikitable collapsible" style="float:center; margin-left:2em" | |||
!Модель || ALT-драйвер || DEB-драйвер || b43 || '''PCI-ID''' | |||
|- | |||
|colspan="5" | В кодах PCI-ID: жирным = '''b43'''; простым = ALT/DEB; курсив = ''оба''. | |||
|- | |||
|BCM4306/3 || || || + || '''14e4:4307<br>14e4:4320<br>14e4:4324''' | |||
|- | |||
|BCM4311 || + || + ||+|| ''14e4:4311''<br>''14e4:4312''<br>14e4:4313 | |||
|- | |||
|BCM4312 || + || + ||+|| ''14e4:4315'' | |||
|- | |||
|BCM4313 || + || + || || 14e4:4313<br>14e4:4727 | |||
|- | |||
|BCM4318 || || || + || '''14e4:4318'''<br>'''14e4:4319''' | |||
|- | |||
|BCM4321 || + || + || || 14e4:4328<br>14e4:4329<br>14e4:432a | |||
|- | |||
|BCM4322 || + || + || + || ''14e4:432b''<br>''14e4:432c''<br>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 | |||
|} | |||
</center> | |||
==Доступные драйверы== | |||
===ALT-драйвера=== | |||
Данный способ меняет драйвер по умолчанию на модуль <code>wl</code> из пакета {{pkg|kernel-modules-bcmwl-std-def (un-def)}} | |||
{{Note|Данный вариант поддерживает следующие модели - BCM4311-, BCM4312-, BCM4313-, BCM4321-, | |||
BCM4322-, BCM43224-, and BCM43225-, BCM43227-, BCM4360- и BCM43228-based оборудование.}} | |||
{{attention|Не забудьте обновить ядро перед установкой, иначе может не загрузится система после установки. Если в репозитории ядро новее, чем в вашей системе, при установке запрошенного модуля может установиться новое ядро с одним-единственным модулем.}} | |||
Для обновления ядра выполните команды: | |||
$ 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 install bcmwl-kernel-conf | |||
# reboot | |||
После перезагрузки может понадобиться заново соединиться с беспроводной сетью. | |||
{| class="mw-collapsible mw-collapsed wikitable" style="float:center; margin-left:2em" | |||
![Содержимое пакета] | |||
|- | |||
| | |||
<pre>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</pre> | |||
|} | |||
====Проверяем==== | |||
# | # inxi -N | grep Broadcom | ||
Device-2: Broadcom BCM43142 802.11b/g/n driver: wl | |||
# modinfo wl | head -n1 | |||
filename: /lib/modules/5.10.198-std-def-alt1/updates/dkms/wl.ko | |||
. | |||
===Установка закрытых Deb-драйверов=== | |||
<div style='padding:6px;border:1px solid red;'>Предварительно ознакомьтесь со статьёй [[Где и как искать программы]]: установку deb-пакетов Вы делаете на свой страх и риск.</div> | |||
{{Note|Данный вариант поддерживает следующие модели BCM4311, BCM4312, BCM4313, BCM4321, BCM4322, BCM43142, BCM43224, BCM43225, BCM43227, BCM43228, BCM4331, BCM4360, и BCM4352}} | |||
В Debian есть пакет с несвободными драйверами для wifi карт broadcom для [https://ru.wikipedia.org/wiki/Dynamic_Kernel_Module_Support фрамеворка DKMS], который поддерживает большее количество Wi-fi карт. | |||
Ставим dkms: | |||
# apt-get install dkms | # apt-get install dkms | ||
Ставим исходники ядра: | |||
# apt-get install kernel-headers-std-def | |||
или | |||
# apt-get install kernel-headers-un-def | |||
Ставим [https://pkgs.org/download/broadcom-sta-dkms debian-овский пакет] с dkms-модулями BCM через epm: | |||
# epm install /home/petr/Загрузки/broadcom-sta-dkms_6.30.223.271-16_all.deb | # epm install /home/petr/Загрузки/broadcom-sta-dkms_6.30.223.271-16_all.deb | ||
Пакет содержит модули для dkms. | |||
{| class="mw-collapsible mw-collapsed wikitable" style="float:center; margin-left:2em" | |||
![Содержимое пакета] | |||
|- | |||
| | |||
<pre> | |||
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 | |||
</pre> | |||
|} | |||
<!-- | |||
Если ваше устройство отсутствует в пакете с модулями от ALT, то лучше их удалить: | |||
# apt-get remove kernel-modules-bcmwl-std-def (un-def)--> | |||
====Проверяем==== | |||
# inxi -N | grep Broadcom | |||
Device-2: Broadcom BCM43142 802.11b/g/n driver: wl | |||
# modinfo wl | head -n1 | |||
filename: /lib/modules/5.10.198-std-def-alt1/updates/dkms/wl.ko | |||
===О NDIS-wrapper=== | |||
NDISwrapper — программная прослойка, позволяющая использовать драйверы WiFi, предназначенные для Windows в Linux. | |||
НО! | |||
#NDISwrapper реализует '''NDISv5''' и драйвера структуры '''WDM (XP)''', в то время как современные драйвера имеют структуру '''WDF (NT6+)''' и '''NDISv6'''. | |||
#Видимо по этой причине модуль ядра в ALT Linux больше не собирается (но исходники есть и можно собирать вручную) | |||
===B43=== | |||
B43 - проект по написанию методом реверс-инжениринга драйверов для wi-fi устройств Broadcom.[https://wiki.archlinux.org/title/broadcom_wireless#b43 [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 | |||
< | # modprobe b43 | ||
==Решение проблем== | |||
===Проблемы с драйверами 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 | |||
Мы видим, что загружен неверный драйвер <code>bcma-pci-bridge</code> вместо нужного драйвера <code>wl</code> | |||
Проверяем наличие установленного пакета драйвера из репозитория 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 | |||
В системе не установлен пакет {{pkg|bcmwl-kernel-conf}} с параметрами настройки ядра, поэтому нужный нам модуль ядра не загружается. | |||
Для того, чтобы это исправить, выполните команды: | |||
$ su - | |||
# apt-get update | |||
# apt-get install bcmwl-kernel-conf | |||
# reboot | |||
После перезагрузки нужный нам модуль Wi-Fi должен заработать, может понадобиться заново соединиться с беспроводной сетью. | |||
Другим способом является запрет загрузки ненужного драйвера вручную, без установки пакета {{pkg|bcmwl-kernel-conf}}: | |||
$ su - | |||
# echo "blacklist bcma" >> /etc/modprobe.d/blacklist-bcma.conf | |||
# reboot | |||
==Ссылки== | |||
*Источник: [http://linuxwireless.sipsolutions.net/en/users/Drivers/b43/#firmware linuxwireless.sipsolutions.net] | |||
*[https://bugzilla.altlinux.org/46812 Ошибка 46812 - Не загружается нужный модуль Wi-Fi Broadcom (wl)] | |||
{{Category navigation|title=Wi-Fi|category=WiFi|sortkey={{SUBPAGENAME}}}} | |||
[[Категория:Оборудование]] |
Текущая версия от 01:34, 24 июля 2024
На некоторых ноутбуках со встроенными 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 install 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 |
Проверяем
# inxi -N | grep Broadcom Device-2: Broadcom BCM43142 802.11b/g/n driver: wl
# modinfo wl | head -n1 filename: /lib/modules/5.10.198-std-def-alt1/updates/dkms/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 |
Проверяем
# inxi -N | grep Broadcom Device-2: Broadcom BCM43142 802.11b/g/n driver: wl
# modinfo wl | head -n1 filename: /lib/modules/5.10.198-std-def-alt1/updates/dkms/wl.ko
О 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 # modprobe b43
Решение проблем
Проблемы с драйверами 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