Results 1 to 10 of 837

Thread: HOWTO: Use b43 driver with 14e4:4315 (Broadcom bcm4312 rev 01)

Threaded View

  1. #1
    Join Date
    Dec 2008
    Ubuntu Development Release

    HOWTO: Use b43 driver with 14e4:4315 (Broadcom bcm4312 rev 01)

    2010-05-23: B43 works out of the box with the 14e4:4315 card in Ubuntu 10.04 LTS with PIO mode on and QOS off (on kernel or 2.6.34).

    So, basically, this is how to get it working:

    Download the or the 2.6.34 kernel from:



    You need to install:


    and then run:

    sudo touch /etc/modprobe.d/b43.conf
    echo "options b43 pio=1 qos=0" | sudo tee -a /etc/modprobe.d/b43.conf
    and reboot and that's it :D.

    OR to manually load it during an active seesion:

    sudo rmmod b43
    sudo modprobe b43 pio=1 qos=0
    (1) PIO mode is good for downloads and uploads and anything involving a browser, but is very slow when transferring files through any protocol besides HTTP/HTTPS/UDP-Torrent.
    (2) Since this wireless card is slow under PIO mode, I don't know if the packet injection speed is fast enough for Aircrack-ng.



    2010-03-25: After testing distro to distro, I can finally conclude that b43 WILL WORK PERFECTLY in DMA mode with any Linux system running kernel 2.6.33. Is that great or what?

    2010-02-24: Kernel 2.6.32-14.20-generic works with b43 on Karmic...finally:D[COLOR="Green] (thanks to mikeioannina for testing).[/COLOR]

    2010-02-21: rlelliott has been kind enough to write a guide, based on his testing, on how to get the b43 driver working under Ubuntu 10.04 Lucid (daily image). The guide can be found here: Unfortunately, there's still no was to get the card working in Karmic besides using the 2.6.32-11-generic kernel.

    2010-02-12: Works on SOME routers under kernel 2.6.32-12-generic and compat-wireless-2010-02-01. My router settings are: Region=US; Channel=11; Encryption=WPA2-PSK (AES).

    2010-02-07: Not working under any kernel, except 2.6.32-11-generic, which does not exist under the Ubuntu Lucid alpha testing repo anymore.

    2010-02-07: Changed links for 2.6.32-12.17-generic.

    2010-02-03: Changed links for 2.6.32-12.16-generic; Untested.

    2010-01-29: Working kernel: 2.6.32-11-generic; Working compat-wireless: compat-wireless-2010-01-24.


    I have good new for everybody :D. B43 finally working without crashes and kernel panics AND it works perfectly with Aircrack-NG now! First of all, you will be using the ALPHA/BETA kernel from LUCID (10.04), which is kernel 2.6.32-14-generic. It is a DEVELOPMENT release, but works perfectly nonetheless.

    So, here we go:

    Before you even get the kernel, you should download and install the b43 device firmware. Make sure you have the package "git-core" installed then follow the instructions at this link: It's very easy to follow. They're copy and paste commands.

    First of all, download and install the new kernel:

    i386 (32 bit)

    i386-PAE (32 bit with > 4 GB of RAM)

    amd64 (64 bit)

    I like to download the packages to a new folder, and then run:

    sudo dpkg -i linux*2.6.*.deb
    in the folder.

    Sooooo, after you download the new kernel, boot into it by choosing it from the GRUB boot menu.

    Then, head on over here: and download the latest compat-wireless-2010-**-**.tar.gz package to anywhere, preferably an easy to remember location. The package as of now is, compat-wireless-2010-01-26.tar.bz2. I will be using this version for the commands below. Adjust the commands below based on the file you downloaded.

    Open up a Terminal and change to the directory you downloaded the file to:

    cd /your/path/to/the/directory
    Extract the file you downloaded:

    tar jxvf compat-wireless-2010-01-26.tar.bz2
    Change to the extracted directory:

    cd compat-wireless-2010-01-26
    Compile the drivers:

    Install the drivers:

    sudo make install
    Unload the current drivers: (if you are using the Broadcom STA Driver, run "sudo rmmod wl" first)

    sudo make unload
    Refresh the drivers/modules for the current kernel:

    sudo depmod
    sudo depmod -a
    Enable PIO mode:

    echo "options b43 pio=1" | sudo tee -a "/etc/modprobe.d/b43-thingy.conf"
    Remove the package "bcmwl-kernel-source." It's the easiest way to ensure that the b43 driver isn't blacklisted.

    Blacklist the wl driver (STA driver):

    echo "blacklist wl" | sudo tee "/etc/modprobe.d/wedontneednonossdrivers.conf"
    Add b43 to /etc/modules so it will load at bootup:

    echo "b43" | sudo tee -a "/etc/modules"
    Then, reboot your computer and enjoy your wireless (or use ...ahem...aircrack-ng...ahem... and enjoy your wireless :D).

    I have no idea why "sudo modprobe b43" doesn't work after installation, but it doesn't.


    If AFTER you reboot, you get errors in dmesg like:

    [   11.788669] b43: Unknown symbol ssb_pcicore_dev_irqvecs_enable
    [   11.789575] b43: disagrees about version of symbol ssb_bus_may_powerdown
    [   11.789586] b43: Unknown symbol ssb_bus_may_powerdown
    [   11.790340] b43: disagrees about version of symbol ssb_dma_free_consistent
    [   11.790351] b43: Unknown symbol ssb_dma_free_consistent
    [   11.792008] b43: disagrees about version of symbol ssb_bus_suspend
    [   11.792020] b43: Unknown symbol ssb_bus_suspend
    [   11.793154] b43: disagrees about version of symbol ssb_bus_unregister
    [   11.793166] b43: Unknown symbol ssb_bus_unregister
    [   11.795081] b43: disagrees about version of symbol ssb_bus_resume
    [   11.795093] b43: Unknown symbol ssb_bus_resume
    [   11.795509] b43: disagrees about version of symbol ssb_set_devtypedata
    [   11.795520] b43: Unknown symbol ssb_set_devtypedata
    [   11.796959] b43: disagrees about version of symbol ssb_device_disable
    [   11.796972] b43: Unknown symbol ssb_device_disable
    [   11.797411] b43: disagrees about version of symbol ssb_pmu_set_ldo_voltage
    [   11.797422] b43: Unknown symbol ssb_pmu_set_ldo_voltage
    [   11.798340] b43: disagrees about version of symbol ssb_dma_alloc_consistent
    [   11.798350] b43: Unknown symbol ssb_dma_alloc_consistent
    [   11.799029] b43: disagrees about version of symbol ssb_dma_set_mask
    [   11.799042] b43: Unknown symbol ssb_dma_set_mask
    [   11.801861] b43: disagrees about version of symbol ssb_device_enable
    [   11.801874] b43: Unknown symbol ssb_device_enable
    [   11.802820] b43: disagrees about version of symbol ssb_driver_unregister
    [   11.802833] b43: Unknown symbol ssb_driver_unregister
    [   11.804095] b43: disagrees about version of symbol __ssb_driver_register
    [   11.804109] b43: Unknown symbol __ssb_driver_register
    [   11.821841] b43: Unknown symbol ssb_bus_pcmciabus_register
    [   11.822234] b43: disagrees about version of symbol ssb_bus_powerup
    [   11.822243] b43: Unknown symbol ssb_bus_powerup
    [   11.826522] b43: disagrees about version of symbol ssb_dma_translation
    [   11.826535] b43: Unknown symbol ssb_dma_translation
    then add these lines to /etc/rc.local (thanks to Muti for this information)

    modprobe -r b43
    sleep 3
    modprobe b43



    Unfortunately, only patching the b43 driver will not work because it causes a kernel panic after ten seconds. You have to compile a new kernel with the b43 module patched. But..........that's not so bad. I already patched and compiled it for you :D. I'm just trying to find a free reliable web hosting company to host an apt repository for the patched kernels. I can't afford any paid webhosts--I'm only 14. Please PM any suggestions to me (doesn't need PHP or MySQL, just hosting).

    ---------------------- Script

    New Script for kernel ( & Attached below; also at my website:

    ---------------------- Script

    Script Update 4 ( Backs up and renames /usr/src/linux-source-2.6.32 so there is a clean copy of the source to work with.

    Script Update 3 ( Fixed error about modules.symversions.

    Script Update 2 ( Fixed kernel download part (i386 --> i686); added checking for "patch" package.

    Script Update 1 ( Included the enabling of PIO mode; stupid mistake on my part.


    Great news for everyone!! The b43 driver can now be run in Ubuntu 9.10 Karmic WITHOUT any DMA errors!!:D I created a script this time that will install it for you. :D I couldn't have done it without emas80 (page 26), O-Hatta (, and of course, the b43 developers (

    Unfortunately, it only works on kernel 2.6.32. BUT, the first shell script that I created will automatically download and install kernel from the Ubuntu Kernel PPA and patch the b43 driver to get rid of the DMA problems. If you compiled the 2.6.32 kernel or downloaded it from a third party source, the script also works, but you will have to run it with a parameter (see below). Also, if you already have the 2.6.32.* kernel installed from the Ubuntu Kernel PPA, you can just run the script normally. This script can be run as root or as your regular user. It uses sudo commands, so running the script as root might save you from typing your password a million times. Now lets put this paragraph into action :).

    PART 1 (described above) of the script can be downloaded here (also attached to this post as



    1. You are using a 2.6.31 kernel (default in Ubuntu 9.10 Karmic)
    Run sudo sh

    2. You are running a third party or self-compiled version of kernel 2.6.32
    Run sudo sh /path/to/kernel/sources

    3. You already have kernel 2.6.32 installed from the Ubuntu Kernel PPA
    Run sudo sh

    Part 1 of the script makes sure that you are using the 2.6.32 kernel and patches the b43 script for compilation during part 2 of the script. If you were running kernel 2.6.31* and the script installed 2.6.32, you MUST boot into the new kernel for b43 to compile (a.k.a. just reboot). Part 2 will prepare the kernel sources to compile the b43 driver and then compile and install b43. After running the script, you will have to make sure that there IS a "b43" line in /etc/modules and make sure that there ISN"T a "blacklist b43" or "blacklist ssb" line in any of the files in "/etc/modprobe.d." You run the second script basically like the same way above.

    PART 2 (described above) of the script can be downloaded here (also attached to this post as


    1. You are (now) running kernel 2.6.32 from the Ubuntu Kernel PPA
    Run sudo sh

    2. You are running a third party or self-compiled version of kernel 2.6.32
    Run [COLOR="Red"]sudo sh /path/to/kernel/sources

    Again, after running part 2 of the script, you will need to make sure that in "/etc/modules," there IS a "b43" line and that there ISN'T a "blacklist b43" or "blacklist ssb" line in any of the files in "/etc/modprobe.d."

    Then reboot and enjoy your wireless!! :D


    The patch file from my website (also attached to this post) is NOT the same as the patch at, although the patch results ARE the same. Emas80 took the time to read the patch file line-by-line and patch the files manually. I downloaded his patched version of the b43 source files (page 26 of this thread) and ran the diff command between my unmodified b43 source and his patched source, saving the output to a new patch. The new patch is at

    If you have any doubts about my scripts, you can open them up and check it. I commented (in the script) what every command does. If there's any typos or problems please PM me so I can fix them. They should be okay; I tested the scripts on my computer.

    Again, thanks to anyone who helped me with the script and the developers of the b43 driver.

    This is the new, updated information for Karmic. The steps are much easier in Karmic than in Jaunty. The steps for Jaunty are at the bottom of the post for reference and for people who still use Karmic.

    1. Open up Terminal.

    2. Install the "linux-backports-modules-karmic" (newer wireless drivers from compat-wireless) package and the "b43-fwcutter" package (wireless firmware). During installation, if it asks you to fetch the firmware automatically, make sure you select yes.

    sudo apt-get install linux-backports-modules-karmic b43-fwcutter
    3. Blacklist the ssb module.

    echo "blacklist ssb" | sudo tee -a /etc/modprobe.d/blacklist-ssb.conf
    4. Blacklist the wl module.

    echo "blacklist wl" | sudo tee -a /etc/modprobe.d/blacklist-wl.conf
    5. Reboot

    6. Enjoy your wireless!!!


    First of all, I want to thank lwfinger at openSUSE forums for making the b43 driver work with the 14e4:4315

    The post looks verrrrry long right? Well it's not. All the commands are "copy-n-paste-able" and I recommend that you do copy and paste them so you don't make any mistakes.

    So first of all, you need to download the latest compat-wireless from You can't use wget for this because they have a hotlink prevention system. So just download the
    file from that website and SAVE IT TO YOUR HOME DIRECTORY.

    Then open the terminal and run this command to extract the archive

    tar xjf compat-wireless-2.6.tar.bz2
    In order for the package to compile, you need to install the kernel headers, if not already installed. Run this in the terminal

    sudo apt-get install linux-headers-$(uname -r)
    Then change to the compat-wireless directory:

    cd compat-wireless
    Then compile the source files:

    sudo make
    Then install the files:

    sudo make install
    Then unload the drivers

    sudo make unload
    Then install b43-fwcutter:
    VERY IMPORTANT!!: Do NOT choose yes when it asks if you want to automatically fetch the firmware.

    sudo apt-get install b43-fwcutter
    Download the Broadcom firmware files

    Extract the archive

    tar xjf broadcom-wl-
    Change to the driver directory

    cd broadcom-wl-
    Install the firmware

    b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_apsta_mimo.o
    Then blacklist the proprietary driver

    echo blacklist wl | sudo tee -a /etc/modprobe.d/blacklist.conf
    And finally..............RESTART!!!

    I hope this worked for you. It worked for me.

    By the way, I'm turning 14 on September 26, so wish me a happy birthday :)
    Attached Files Attached Files
    Last edited by chenxiaolong; May 23rd, 2010 at 08:22 PM. Reason: lucid info

Tags for this Thread


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts