如何安装此修补的 b43 驱动程序?

如何安装此修补的 b43 驱动程序?

最近我购买了一台 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(rev 02)

    lspci -n |grep 4331

    03:00.0 0280:14e4:4331(修订版 02)

在做了一些初步研究后,我发现本文给出了如何修补最新的 compat-wireless 的分步说明,该补丁应支持 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)

有人能指出正确的方向来帮助我正确加载这个模块吗?

答案1

首先确保你的机器上没有安装任何 b43 驱动程序...使用软件中心并搜索 b43 如果有,请卸载它

所有文件都可以存储在-主页-你的用户-下载....

使用 nautilus 提取这棵树的文件....

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

$ cd compat-wireless-2011-11-04
$ scripts/driver-select b43

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

sudo nano config.mk

...

配置_B43_PHY_HT=y

...

编译并安装驱动程序:

$ make
$ sudo make install
$ cd ..

编译b43-fwcutter:

$ cd b43-fwcutter-015
$ make

固件:

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

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

$ cd compat-wireless-2011-11-04
$ sudo make wlunload
$ sudo rmmod ndiswrapper

在文件末尾添加行:

sudo nano /etc/modprobe.d/blacklist.conf

...

黑名单 ndiswrapper

...

为了确保没有旧模块仍然被加载,最好重新启动系统。现在您应该能够加载和使用新编译的 b43 模块:

$ sudo modprobe b43

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

sudo nano /etc/modules

...

b43

...

驱动程序无法很好地处理挂起和休眠。必须在笔记本电脑进入睡眠状态之前卸载模块,并在唤醒后重新加载模块。对于 Ubuntu,只需创建文件(或附加到文件)即可

sudo /etc/pm/config.d/default

...

SUSPEND_MODULES="b43"

...

注意:每次内核更新后,你必须重新编译新内核的模块:

$ cd compat-wireless-2011-11-04
$ make clean
$ make
$ sudo make install

PS:与原帖一样我只调整了配置文件的扩展因为有缺失,修复了其他东西和错误......

在此处输入图片描述

答案2

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

答案3

我不知道为什么文章的精确复制版只得到 2 票。这毫无用处。我最终只能按照 Rock 的建议卸载 ssb 和 bcma 才能让它工作。

相关内容