Linux support for Broadcom 4331 wireless chip (Macbook Pro 2012 non-retina)

 Ubuntu10.04上安装BCM4331的驱动,对应的资源在空间内有下载

 

Linux support for the Broadcom 4331 wireless chip used to be poor. This chip has vendor- and device id 14e4:4331 and identifies as

$ lspci | grep 4331
03:00.0 Network controller: Broadcom Corporation Device 4331 (rev 02)

As of this writing, there is no driver in the kernel, and with ndiswrapper there are many random system lock-ups. As a result, Macbook Pro 8,1 (8,2 ...?) users running Linux couldn't use the internal wireless chip.Recently, the situation has improved thanks to three patches submitted by Rafał Miłecki and Larry Finger. The driver is announced for kernel version 3.2, but if you don't want to wait for this kernel it is possible to compile and use the relevant module with older kernels.

This is a summary of the information contained in the linux-wireless wiki page of the driver and the mailing list, in particular this thread. You will need

You will also need the infrastructure to compile source code and kernel modules on your distribution, in particular you will need the kernel headers. For Ubuntu, make sure the packages build-essential, automake and linux-headers-generic are installed.

Update: previously compat-wireless had to be patched. As of version 2011-09-27 the patches are no longer needed.

Update: apparently recent versions of compat-wireless will lead to unresolved symbols when you try to load the module. I used an older version, compat-wireless-2011-10-09 worked for me with Ubuntu Oneiric.

Assuming you have all the files in the directory ~/b4331, first unpack compat-wireless:

$ cd ~/b4331
$ tar xf compat-wireless-2.6.tar.bz2

Next, enable the b43 driver. Assuming the tar archive was extracted to compat-wireless-2011-10-09:

$ cd compat-wireless-2011-10-09
$ scripts/driver-select b43

Make sure PHY_HT is enabled. In the file config.mk, the following line should be present and uncommented:

config.mk
...
CONFIG_B43_PHY_HT=y
...

Compile and install the driver:

$ make
$ sudo make install
$ cd ..

Unpack and compile b43-fwcutter:

$ tar xf b43-fwcutter-015.tar.bz2
$ cd b43-fwcutter-015
$ make

Extract the firmware:

$ tar xf ../broadcom-wl-5.100.138.tar.bz2
$ export FIRMWARE_INSTALL_DIR="/lib/firmware"
$ sudo ./b43-fwcutter -w "$FIRMWARE_INSTALL_DIR"  broadcom-wl-5.100.138/linux/wl_apsta.o
$ cd ..

Unload all modules related to wireless and make sure ndiswrapper is not loaded:

$ cd compat-wireless-2011-10-09
$ sudo make wlunload
$ sudo rmmod ndiswrapper
/etc/modprobe.d/blacklist
...
ndiswrapper

To be sure that none of the old modules are still loaded, it is probably best to reboot the system. Now you should be able to load and use the freshly compiled b43 module:

$ sudo modprobe b43

You might want to add b43 to the list of modules which are loaded on startup (at the moment, the module is not automatically loaded). For Ubuntu, this is:

/etc/modules
...
b43

The driver does not play nice with suspend and hibernate. It is necessary to unload the module before putting the laptop to sleep and to reload it after wakeup. For Ubuntu, it is sufficient to create the file (or append to the file)

/etc/pm/config.d/default
SUSPEND_MODULES="b43"

Note that after every kernel update you will have to recompile the module for the new kernel:

$ cd ~/b4331/compat-wireless-2011-10-09
$ make clean
$ make
$ sudo make install
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值