Linux bcm43224 wifi 适配器在启动后几分钟变慢

Linux bcm43224 wifi 适配器在启动后几分钟变慢

我刚刚在 2012 年中期的 MacBook Air 上安装了 Ubuntu。一切正常,但 Wi-Fi 出现了一些奇怪的行为。

我第一次登录时速度非常快,几乎可以立即加载 google.com,总体浏览感觉至少与在 Mac OS 上一样流畅。但是,几分钟后,连接速度急剧下降,有时需要 5 秒以上才能加载 google.com,简单重启即可解决问题,只需几分钟即可。

眼镜:

  • Wifi:02:00.0 网络控制器:Broadcom Corporation BCM43224 802.11a/b/g/n(rev 01)
  • 驱动:开源brcmsmac驱动
  • 内核:Linux wega 3.8.0-21-generic #32-Ubuntu SMP 2013 年 5 月 14 日星期二 22:16:46 UTC x86_64 x86_64 x86_64 GNU/Linux
  • 发行版:Ubuntu 13.04(最新)

我尝试了很多方法,但都无济于事

  • 使用 Broadcom 的专有 Sta 驱动程序
  • 将固件安装到 /lib/firmware/brcms 中(据我从日志中得知,它根本没有加载)
  • 将路由器切换为仅使用 2.4 或 5 GHz
  • 设置路由器仅使用 a 或 g 或 n
  • 将路由器设置为仅使用 AES 加密
  • 关闭适配器上的电源管理
  • 在路由器和笔记本电脑上将监管区域设置为正确的值 (NL)
  • 禁用 ipv6

似乎没有什么帮助,速度总是变慢。我确实注意到延迟(ping google.com)大致保持不变(大约 9ms)。

以下是一些可能有用的信息。

$ lspci -nnk | grep -iA2 net
02:00.0 Network controller [0280]: Broadcom Corporation BCM43224 802.11a/b/g/n [14e4:4353] (rev 01)
    Subsystem: Apple Inc. Device [106b:00e9]
    Kernel driver in use: bcma-pci-bridge

$ rfkill list
0: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
1: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no

$ lsmod
Module                  Size  Used by
dm_crypt               22820  1 
arc4                   12615  2 
brcmsmac              550698  0 
coretemp               13355  0 
kvm_intel             132891  0 
parport_pc             28152  0 
kvm                   443165  1 kvm_intel
ppdev                  17073  0 
cordic                 12574  1 brcmsmac
brcmutil               14755  1 brcmsmac
mac80211              606457  1 brcmsmac
cfg80211              510937  2 brcmsmac,mac80211
bnep                   18036  2 
rfcomm                 42641  12 
joydev                 17377  0 
applesmc               19353  0 
input_polldev          13896  1 applesmc
snd_hda_codec_hdmi     36913  1 
microcode              22881  0 
snd_hda_codec_cirrus    23829  1 
nls_iso8859_1          12713  1 
uvcvideo               80847  0 
btusb                  22474  0 
snd_hda_intel          39619  3 
videobuf2_vmalloc      13056  1 uvcvideo
snd_hda_codec         136453  3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_cirrus
bcm5974                17347  0 
bluetooth             228619  22 bnep,btusb,rfcomm
snd_hwdep              13602  1 snd_hda_codec
lpc_ich                17061  0 
videobuf2_memops       13202  1 videobuf2_vmalloc
videobuf2_core         40513  1 uvcvideo
videodev              129260  2 uvcvideo,videobuf2_core
bcma                   41051  1 brcmsmac
snd_pcm                97451  3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
snd_page_alloc         18710  2 snd_pcm,snd_hda_intel
snd_seq_midi           13324  0 
snd_seq_midi_event     14899  1 snd_seq_midi
snd_rawmidi            30180  1 snd_seq_midi
snd_seq                61554  2 snd_seq_midi_event,snd_seq_midi
snd_seq_device         14497  3 snd_seq,snd_rawmidi,snd_seq_midi
snd_timer              29425  2 snd_pcm,snd_seq
snd                    68876  16 snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec,snd_hda_intel,snd_seq_device,snd_hda_codec_cirrus
mei                    41158  0 
soundcore              12680  1 snd
apple_bl               13673  0 
mac_hid                13205  0 
lp                     17759  0 
parport                46345  3 lp,ppdev,parport_pc
usb_storage            57204  0 
hid_apple              13237  0 
hid_generic            12540  0 
ghash_clmulni_intel    13259  0 
aesni_intel            55399  399 
aes_x86_64             17255  1 aesni_intel
xts                    12885  1 aesni_intel
lrw                    13257  1 aesni_intel
gf128mul               14951  2 lrw,xts
ablk_helper            13597  1 aesni_intel
cryptd                 20373  4 ghash_clmulni_intel,aesni_intel,ablk_helper
i915                  600351  3 
ahci                   25731  3 
libahci                31364  1 ahci
video                  19390  1 i915
i2c_algo_bit           13413  1 i915
drm_kms_helper         49394  1 i915
usbhid                 47074  0 
drm                   286313  4 i915,drm_kms_helper
hid                   101002  3 hid_generic,usbhid,hid_apple

$ dmesg | egrep 'b43|bcma|brcm|[F]irm'
[    0.055025] [Firmware Bug]: ioapic 2 has no mapping iommu, interrupt remapping will be disabled
[    0.152336] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[    2.187681] pci_root PNP0A08:00: [Firmware Info]: MMCONFIG for domain 0000 [bus 00-99] only partially covers this bridge
[   12.553600] bcma-pci-bridge 0000:02:00.0: enabling device (0000 -> 0002)
[   12.553657] bcma: bus0: Found chip with id 0xA8D8, rev 0x01 and package 0x08
[   12.553688] bcma: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x22, class 0x0)
[   12.553715] bcma: bus0: Core 1 found: IEEE 802.11 (manuf 0x4BF, id 0x812, rev 0x17, class 0x0)
[   12.553764] bcma: bus0: Core 2 found: PCIe (manuf 0x4BF, id 0x820, rev 0x0F, class 0x0)
[   12.605777] bcma: bus0: Bus registered
[   12.852925] brcmsmac bcma0:0: mfg 4bf core 812 rev 23 class 0 irq 17
[   13.085176] brcmsmac bcma0:0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[   13.085186] brcmsmac bcma0:0: brcms_ops_config: change power-save mode: false (implement)
[   20.862617] brcmsmac bcma0:0: brcmsmac: brcms_ops_bss_info_changed: associated
[   20.862622] brcmsmac bcma0:0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[   20.862625] brcmsmac bcma0:0: brcms_ops_bss_info_changed: qos enabled: true (implement)
[   20.897957] brcmsmac bcma0:0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)


$ iwconfig
lo        no wireless extensions.

wlan0     IEEE 802.11abgn  ESSID:"wlan"  
          Mode:Managed  Frequency:5.22 GHz  Access Point: E0:46:9A:4E:63:9A   
          Bit Rate=65 Mb/s   Tx-Power=17 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=63/70  Signal level=-47 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:13  Invalid misc:56   Missed beacon:0

答案1

我的戴尔 Vostro 上曾经有同样的无线网卡,并且也遇到过类似的问题。

尝试按照此处所述编译驱动程序(我不使用 Ubuntu 也没有笔记本电脑来测试并确保它正常工作)

https://askubuntu.com/questions/55868/how-to-install-a-broadcom-wireless-driver

这些也可以帮助:

https://help.ubuntu.com/community/WifiDocs/Driver/bcm43xx http://ubuntuforums.org/showthread.php?t=1658627

最后,我强烈地感觉到您确实需要重新编译内核并激活CONFIG_B43_BCMA_EXTRAvar 才能加载b43模块。

答案2

我确信我有类似的硬件,并且我遇到了与您完全相同的问题。

你可以相当轻松地修复它。我使用本指南修复了此问题:http://forums.fedoraforum.org/showpost.php?p=1583224&postcount=7

我的硬件信息

[user@macbookair ~]$ sudo dmidecode -t 2 dmidecode 2.12 SMBIOS 2.4 存在。

句柄 0x001C,DMI 类型 2,16 字节 基板信息 制造商:Apple Inc. 产品名称:Mac-2E6FAB96566FE58C 版本:MacBookAir5,2 序列号:xxxxx 资产标签:基板 资产标签特性:主板为托管板 主板可更换 机箱中的位置:零件组件机箱 句柄:0x001D 类型:主板 包含的对象句柄:0

[user@macbookair ~]$ sudo lspci | grep Network 02:00.0 网络控制器:Broadcom Corporation BCM43224 802.11a/b/g/n (rev 01)

从 www.broadcom.com/support/802.11/linux_sta.php 获取驱动程序

获得http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_64-v5_100_82_112.tar.gz

提炼

tar -xvzf 混合端口rc_x86_64-v5_100_82_112.tar.gz

删除包含 asm/system.h 的包含行

纳米 src/wl/sys/wl_linux.c

搜索字符串 .ndo_set_multicast_list 并将其替换为 .ndo_set_rx_mode

构建驱动程序

制作

mkdir 为驱动程序并复制驱动程序

mkdir -p /lib/modules/`uname -r`/extra/wl && cp wl.ko /lib/modules/`uname -r`/extra/wl

注意这些是做什么的,但我认为它们会加载驱动程序

depmod -a && modprobe wl

我使用 fedora,因此您的里程可能会有所不同。我还必须安装 akmods 服务,因为如果我重置网络服务,我的 wlan 卡将无法重新打开,直到我启动 akmods。

我对 Linux 绝对是个菜鸟,所以请记住这些信息!

相关内容