我如何安装这个打过补丁的 b43 驱动程序?

Rus*_*ell 7 wireless 11.10 broadcom kernel-modules

最近我购买了一台 Macbook Pro,它的 BCM4331 802.11a/b/g/n WiFi 卡不适用于默认内核。

  • sudo dmidecode -s system-product-name

    MacBookPro8,2

    lspci |grep 4331

    03:00.0 网络控制器:Broadcom Corporation BCM4331 802.11a/b/g/n(修订版 02)

    lspci -n |grep 4331

    03:00.0 0280: 14e4:4331 (rev 02)

在做了一些初步研究之后,我看到了这篇文章,它提供了关于修补最新的兼容无线的分步说明,它应该支持 4331 设备:

但是,当我尝试将修补模块 modprobe 到最新的 Ubuntu 11.10 内核 (3.0.0-12-generic) 中时,按照这些说明操作会导致以下 dmesg 错误

[ 5373.408581] b43: Unknown symbol bcma_core_disable (err                                                              
[ 5373.408685] b43: Unknown symbol bcma_core_pll_ctl (err 0)
[ 5373.408695] b43: disagrees about version of symbol bcma_driver_unregister
[ 5373.408698] b43: Unknown symbol bcma_driver_unregister (err -22)
[ 5373.408712] b43: disagrees about version of symbol bcma_core_enable
[ 5373.408715] b43: Unknown symbol bcma_core_enable (err -22)
[ 5373.408727] b43: disagrees about version of symbol bcma_core_is_enabled
[ 5373.408730] b43: Unknown symbol bcma_core_is_enabled (err -22)
[ 5373.408745] b43: disagrees about version of symbol bcma_chipco_gpio_control
[ 5373.408747] b43: Unknown symbol bcma_chipco_gpio_control (err -22)
[ 5373.408782] b43: disagrees about version of symbol__bcma_driver_register
[ 5373.408784] b43: Unknown symbol __bcma_driver_register (err -22)
[ 5373.408796] b43: Unknown symbol bcma_core_set_clockmode (err 0)
[ 5373.408822] b43: Unknown symbol bcma_core_dma_translation (err 0)
[ 5373.408878] b43: Unknown symbol bcma_core_pci_irq_ctl (err 0)
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我正确的方向以帮助正确加载此模块吗?

hhl*_*hlp 3

首先确保您的计算机上没有安装任何 b43 驱动程序...使用软件中心并搜索 b43 是否有卸载它

所有文件都可以存储在-home-youruser-downloads ....

用 nautilus 提取这个树文件......

接下来,启用 b43 驱动程序。

$ cd compat-wireless-2011-11-04
$ scripts/driver-select b43
Run Code Online (Sandbox Code Playgroud)

确保 PHY_HT 已启用。在文件 config.mk 中,应存在以下行且未注释:

sudo nano config.mk
Run Code Online (Sandbox Code Playgroud)

...

CONFIG_B43_PHY_HT=y

...

编译并安装驱动:

$ make
$ sudo make install
$ cd ..
Run Code Online (Sandbox Code Playgroud)

编译 b43-fwcutter:

$ cd b43-fwcutter-015
$ make
Run Code Online (Sandbox Code Playgroud)

固件:

$ export FIRMWARE_INSTALL_DIR="/lib/firmware"
$ sudo ./b43-fwcutter -w "$FIRMWARE_INSTALL_DIR"  /home/YOURUSER/Downloads/broadcom-wl-5.100.138/linux/wl_apsta.o
$ cd ..
Run Code Online (Sandbox Code Playgroud)

卸载所有与无线相关的模块并确保 ndiswrapper 未加载:

$ cd compat-wireless-2011-11-04
$ sudo make wlunload
$ sudo rmmod ndiswrapper
Run Code Online (Sandbox Code Playgroud)

添加到文件末尾的行:

sudo nano /etc/modprobe.d/blacklist.conf
Run Code Online (Sandbox Code Playgroud)

...

黑名单ndiswrapper

...

为了确保不再加载任何旧模块,最好重新启动系统。现在您应该能够加载并使用新编译的 b43 模块:

$ sudo modprobe b43
Run Code Online (Sandbox Code Playgroud)

您可能想将 b43 添加到启动时加载的模块列表中(目前,该模块不会自动加载)。对于 Ubuntu,请在文件末尾添加以下行:

sudo nano /etc/modules
Run Code Online (Sandbox Code Playgroud)

...

b43

...

驱动程序在暂停和休眠方面表现不佳。有必要在使笔记本电脑进入睡眠状态之前卸载该模块,并在唤醒后重新加载该模块。对于 Ubuntu,创建文件(或附加到文件)就足够了

sudo /etc/pm/config.d/default
Run Code Online (Sandbox Code Playgroud)

...

SUSPEND_MODULES="b43"

...

注意:每次内核更新后,您都必须为新内核重新编译模块:

$ cd compat-wireless-2011-11-04
$ make clean
$ make
$ sudo make install
Run Code Online (Sandbox Code Playgroud)

PS:就像原来的帖子一样,我只调整配置文件的扩展名,因为缺少,修复其他东西和错误......

在此输入图像描述


小智 2

确保还将 ssb 和 bcma 列入黑名单。Bcma 导致 3.0.0 内核出现问题。您可能只需将模块“b43、ssb、bcma”列入黑名单,然后执行 depmod -a 和 modprobe wl,然后执行另一个 depmod -a 或重新安装软件包并重新启动。我希望这有帮助。