我刚刚在 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_EXTRA
var 才能加载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 绝对是个菜鸟,所以请记住这些信息!