Wi-Fi Broadcom
Дано:
- нотубук
- Wi-fi broadcom BCM43*
- Вылеты 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)
Что делать?
Какие модели карт?
Модель | ALT | DEB |
---|---|---|
BCM4311 | + | + |
BCM4312 | + | + |
BCM4313 | + | |
BCM4321 | + | + |
BCM4322 | + | |
BCM4322-b | + | |
BCM43142 | + | |
BCM43224 | + | |
BCM43225 | + | |
BCM43227 | + | |
BCM43228 | + | |
BCM4331 | + | |
BCM4360 | + | |
BCM4352 | + |
ALT-драйвера
# apt-get install kernel-modules-bcmwl-std-def (un-def)
[Содержимое пакета] |
---|
kernel-modules-bcmwl-*-def.rpm |--etc | `--modprobe.d | |--blacklist-bcm.conf | `--blacklist-bcm2.conf `--lib `--modules `--*krnlver-std-def-alt1 `--net `--wl.ko |
Установка закрытых Deb-драйверов
В Debian есть пакет с несвободными драйверами для wifi карт broadcom для фрамеворка DKMS, который поддерживает большее количество Wi-fi карт.
Ставим dkms:
# apt-get install dkms
Ставим 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 |
Если ваше устройство отсутствует в пакете с модулями от ALT, то лучше их удалить:
# apt-get remove kernel-modules-bcmwl-std-def (un-def)
О NDIS-wrapper
NDISwrapper — программная прослойка, позволяющая использовать драйверы WiFi, предназначенные для Windows в Linux.
НО!
- NDISwrapper реализует NDISv5 и драйвера структуры WDM (XP), в то время как современные драйвера имеют структуру WDF (NT6+) и NDISv6.
- Видимо по этой причине модуль ядра в ALT Linux больше не собирается (но исходники есть и можно собирать вручную)
Советы Сообщества
Правка конфига NetworkManager
Добавить в файл /etc/NetworkManager/NetworkManager.conf строчки:
[device] wifi.scan-rand-mac-address=no
Перезагружаем NetworkManager.
# service NetworkManager restart
Установка b43-fwcutter
# apt-get install b43-fwcutter
Делаем .sh-файл:
#!/bin/sh FIRMWARE_INSTALL_DIR="/lib/firmware" wget http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2 tar xjf broadcom-wl-5.100.138.tar.bz2 b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.100.138/linux/wl_apsta.o
Если что, ссыль на архив есть в источнике.
Делаем
chmod file.sh ./file.sh
Где file - имя Вашего .sh-файла.
Так же при этом нужно удалить модули ядра bcm wl (пакеты kernel-modules-bcmwl-std-def/kernel-modules-bcmwl-un-def).
Исследования Петра А.
1. Поставил ALT Starterkit / Cinnamon /
2. Установленно ядро Kernel-std-def / 5.4.104 /
3. Установлены модули kernel-modules-bcmwl-std-def / 6.30.223.248 /
Все, пока, работает нормально.
Наверное, просто не нужно без причины обновлять ядро.
- Для установки проприетарных драйверов Nvidia обновил ядро до 5.4.115.
- Создал точку восстановления
- После установки драйверов Wi-fi вообще отвалился
- Откатился, сеть вообще не работает
- Нужно в /etc/net/ifaces/* создать настройки интерфесов и включить их (в файле options)
TYPE=eth DISABLED=no NM_CONTROLLED=yes BOOTPROTO=dhcp
- Заработал Ethernet
- Установил wicd
- Заработал интерфейс wicd-gtk, подключился к wi-fi
- Пробую перезагрузиться.
- Сеть подключилась. (Припоминаю, сидел так с NetworkManager+Wicd. Падал интерфейс то одного, то другого, но подключение к wi-fi было доступно.)
- Но периодически так же отваливается.
- Пробую настроить wicd. Wicd>Параметры>Wpa Supplicant> Драйвер> nl80211
- Вроде работает нормально...
- Но, нет периодически падает [помогает отключение-подключение wifi]
Пробую отключить энергосбережение:
# ip a # iw dev eth1 set power_save off
- Пока не падает...
Иногда падает с такими сообщениями в логах:
мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: ------------[ cut here ]------------ мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: WARNING: CPU: 2 PID: 2412 at net/wireless/sme.c:973 cfg80211_roamed+0x211/0x250 [cfg80211] мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: Modules linked in: rfcomm fuse af_packet appletalk psnap cmac algif_hash algif_skcipher af_alg bnep 8021q garp mrp stp> мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: int3400_thermal acpi_thermal_rel battery acpi_pad ac asus_wireless sch_fq_codel snd_seq_midi snd_seq_midi_event snd_s> мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: CPU: 2 PID: 2412 Comm: wl_event_handle Tainted: P W OE 5.4.104-std-def-alt1 #1 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: Hardware name: ASUSTeK COMPUTER INC. X555LNB/X555LNB, BIOS X555LNB.303 12/19/2014 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: RIP: 0010:cfg80211_roamed+0x211/0x250 [cfg80211] мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: Code: 00 00 00 49 8d 4d 70 4c 89 f7 45 0f b6 85 90 00 00 00 6a 02 48 8b 36 e8 9d 5d fd ff 48 89 43 08 5a 48 85 c0 0f 8> мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: RSP: 0018:ffffc90000677dc0 EFLAGS: 00010246 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: RAX: 0000000000000000 RBX: ffffc90000677e18 RCX: 0000000000000007 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: RDX: 0000000000000002 RSI: 00000000fffffe01 RDI: ffffffffa0adabf7 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: RBP: ffffc90000677df0 R08: 0000000000000000 R09: 0000000000007530 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: R10: ffff88810ba34368 R11: ffff8881a3b63084 R12: 0000000000000cc0 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: R13: ffff8881a2fde400 R14: ffff8881a356e300 R15: dead000000000100 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: FS: 0000000000000000(0000) GS:ffff8881a8b00000(0000) knlGS:0000000000000000 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: CR2: 00007f2157880000 CR3: 000000012d270003 CR4: 00000000003606e0 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: Call Trace: мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: ? wl_bss_roaming_done.isra.30+0xe7/0x120 [wl] мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: wl_bss_roaming_done.isra.30+0xe7/0x120 [wl] мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: wl_notify_roaming_status+0x3d/0x60 [wl] мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: ? down_interruptible+0x2d/0x50 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: wl_event_handler+0x112/0x180 [wl] мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: ? wl_notify_scan_status+0x220/0x220 [wl] мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: kthread+0x116/0x130 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: ? kthread_destroy_worker+0x40/0x40 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: ret_from_fork+0x35/0x40 мая 09 19:38:38 comp-core-i3-5010u-101ac0 kernel: ---[ end trace ef5a852dc2263404 ]---
Поковырялся в драйверах, выяснил, в каких пакетах для каких моделей драйвера. Попробую поставить для своей карты (описана в начале статьи).