Wi-Fi Broadcom

Материал из ALT Linux Wiki

Дано:

  • нотубук
  • 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-драйвера

Примечание: Данный вариант поддерживает следующие модели - BCM4311-, BCM4312-, BCM4321-, and BCM4322-b.
# 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-драйверов

Примечание: Данный вариант поддерживает следующие модели BCM4311, BCM4312, BCM4313, BCM4321, BCM4322, BCM43142, BCM43224, BCM43225, BCM43227, BCM43228, BCM4331, BCM4360, и BCM4352


В 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.

НО!

  1. NDISwrapper реализует NDISv5 и драйвера структуры WDM (XP), в то время как современные драйвера имеют структуру WDF (NT6+) и NDISv6.
  2. Видимо по этой причине модуль ядра в ALT Linux больше не собирается (но исходники есть и можно собирать вручную)

Советы Сообщества

Правка конфига NetworkManager

Добавить в файл /etc/NetworkManager/NetworkManager.conf строчки:

[device]
wifi.scan-rand-mac-address=no

Перезагружаем NetworkManager.

# service NetworkManager restart

Установка b43-fwcutter

Примечание: По ссылке драйвер для NETGEAR WNDR4500
# 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, Источник 2

Исследования Петра А.

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 ]---

Поковырялся в драйверах, выяснил, в каких пакетах для каких моделей драйвера. Попробую поставить для своей карты (описана в начале статьи).