How to install b43 firmware for Broadcom wifi (Salix 13.1)

General talk about packaging procedures and packages.
User avatar
pwatk
Posts: 474
Joined: 14. Mar 2010, 23:56
Location: United Kingdom

How to install b43 firmware for Broadcom wifi (Salix 13.1)

Post by pwatk » 21. Sep 2010, 19:28

THIS GUIDE ONLY APPLIES TO SALIX 13.1. Please read the README.Slackware file distributed with the b43-fwcutter package (/usr/doc/b43-fwcutter-<version>/README.Slackware) or visit the wiki for instructions on creating b43 firmware packages for Salix 13.37 and above.

Some time ago a number of users were having issues using Broadcom wireless cards so I decided to write some SLKBUILD's (package build scripts) in an attempt to help these users install the b43 wireless firmware required for the b43 kernel module to interact with this hardware.

With help from zAchAry and kepta there is now a b43-fwcutter package in the repository which includes a script that will download, compile and install a b43 or b43legacy firmware package for your system.

Here is a quick guide on how to use this script and with any luck get your Broadcom wireless card working.

Prerequisites:
1. All the commands used in this guide required root (superuser) access from a terminal.
2. You must have a working internet connection but you don't have to use the target machine for this.

Installation:
1. Install the b43-fwcutter package from the repository:

Code: Select all

root[~]# slapt-get -u
root[~]# slapt-get -i b43-fwcutter
2. Execute the b43-firmware installation script:

Code: Select all

root[~]# install-b43-firmware
2a. The first screen will prompt you to select your firmware version:
Image

If you are unsure about which version to use, you can use lspci to find your wireless card's model number before reading the help page at linuxwireless.org.
As you'll notice, the machine I'm currently using has an Atheros AR928X card:

Code: Select all

root[~]# lspci -nn | grep -i network
0b:00.0 Network controller [0280]: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) [168c:002a] (rev 01)
I am reliably informed that you can also use the Linux Wireless Chipset Detector (by Bill Giannikos) as an alternative to lspci.

2b. Once you have made your selection the relevant source archive will be downloaded and a package created. You will then see a screen prompting you to either install or save the package you have just created:
Image
It is worth noting that once the package has been created it is always saved regardless of any choices you make.

2c. If you decide to install the package but a package containing b43 firmware already exists on your system then the next screen will prompt to remove it:
Image

2d. The installation will continue after the existing package has been removed:
Image

3. Once the installation is complete your wireless card should have a device node (e.g. /dev/wlan0) that is accessible via the wicd network manager. This is handled by the package installation script (doinst.sh) so no reboot or service startup is required.

3a. The package also includes an rc script to load the relevant kernel module (b43 or b43legacy) at start up and/or unload or view the status of the module at any other time:
Image

You can install the b43 and b43legacy packages together on the same system but only one module can be used at a time.

For this reason there are two rc scripts, one for each type of firmware (b43 or b43legacy). Both scripts will disable each other as well as unload the opposing kernel module on startup. This is evident in the screenshot above (see the last command).

Finally, the b43 and b43legacy and pcmcia modules all require the ssb module so if, for example, you disable the pcmcia service '/etc/rc.d/rc.pcmcia stop' you will also unload the b43/b43legacy modules.'
Last edited by pwatk on 19. Nov 2010, 13:58, edited 11 times in total.
Image

User avatar
ray
Posts: 87
Joined: 20. Mar 2010, 10:28
Location: United Kingdom

Re: How to install b43 firmware for Broadcom wireless cards

Post by ray » 21. Sep 2010, 19:56

Well Written!

Perhaps, this would be better off in the wiki? It would be more accessible there IMO.

A Couple of comments:

1. Would be nice if you keep the shell script in /usr/bin, so you can just run it as install-b43-firmware.
2. Perhaps a simple gui with zenity for the script and a menu entry for it? I'm no expert, but i could try my hand at it if it helps :)

Cheers,
ray

User avatar
Akuna
Salix Wizard
Posts: 1038
Joined: 14. Jun 2009, 12:25

Re: How to install b43 firmware for Broadcom wireless cards

Post by Akuna » 21. Sep 2010, 20:16

Great how to. Thanks for putting this together. :)
Image
What really matters is where you are going, not where you come from.

User avatar
zAchAry
Posts: 804
Joined: 11. May 2010, 09:02
Location: Israel

Re: How to install b43 firmware for Broadcom wireless cards

Post by zAchAry » 21. Sep 2010, 21:01

ray wrote:1. Would be nice if you keep the shell script in /usr/bin, so you can just run it as install-b43-firmware.
I've also asked for it, reply:
pwatk wrote:I've placed the install-b43-firmware.sh outside of the system path deliberately so the user has to execute the script manually and it can't be run by accident. I've also mentioned it in the slack-desc.
When I submit this new package I'll see how the devs feel about it.
source: http://www.salixos.org/forum/viewtopic.php?p=8850#p8850

ray wrote:2. Perhaps a simple gui with zenity for the script and a menu entry for it? I'm no expert, but i could try my hand at it if it helps :)
+1
Image
Help to make Slackware easier Donate to Salix

User avatar
pwatk
Posts: 474
Joined: 14. Mar 2010, 23:56
Location: United Kingdom

Re: How to install b43 firmware for Broadcom wireless cards

Post by pwatk » 22. Sep 2010, 21:31

Next time I update the package I'll move the script to /usr/sbin.

I'm considering adding an option to save the created package instead of installing it. This way you can run the script on a system with internet access (livecd comes to mind) then copy the package to a stranded system to get the wireless working.

As far as a GUI is concerned... I'm interested in converting this to a dialog menu (think Slackware/Salix installer) which could then be easily converted to an Xdialog menu. Sadly I have very little experience with this so I'll have to invest some time into it. Right now though I'm focusing on something else.
ray wrote:Perhaps a simple gui with zenity for the script and a menu entry for it? I'm no expert, but i could try my hand at it if it helps :)
I'd like this to work in a terminal as well as in X so (X)dialog appeals to me over zenity but If you feel inclined go ahead :)
Image

User avatar
ray
Posts: 87
Joined: 20. Mar 2010, 10:28
Location: United Kingdom

Re: How to install b43 firmware for Broadcom wireless cards

Post by ray » 23. Sep 2010, 09:25

pwatk wrote:Next time I update the package I'll move the script to /usr/sbin.

I'm considering adding an option to save the created package instead of installing it. This way you can run the script on a system with internet access (livecd comes to mind) then copy the package to a stranded system to get the wireless working.

As far as a GUI is concerned... I'm interested in converting this to a dialog menu (think Slackware/Salix installer) which could then be easily converted to an Xdialog menu. Sadly I have very little experience with this so I'll have to invest some time into it. Right now though I'm focusing on something else.
ray wrote:Perhaps a simple gui with zenity for the script and a menu entry for it? I'm no expert, but i could try my hand at it if it helps :)
I'd like this to work in a terminal as well as in X so (X)dialog appeals to me over zenity but If you feel inclined go ahead :)
I'll give it a shot then :)

Cheers,
ray

User avatar
zAchAry
Posts: 804
Joined: 11. May 2010, 09:02
Location: Israel

Re: How to install b43 firmware for Broadcom wireless cards

Post by zAchAry » 23. Sep 2010, 13:44

You can use lspci if you are unsure about your wireless card's model number. As you'll notice, the machine I'm currently using Broadcom BCM4311 card:

Code: Select all

lspci | grep -i bcm
03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01)

Code: Select all

lspci -nn | grep -i bcm
03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 01)
other keywords:

Code: Select all

lspci | grep -i 802
lspci | grep -i bcm
lspci | grep -i broadcom
lspci | grep -i wlan
psycho_oreos from [url=http://linuxwireless.org/en/users/Drivers/b43#support]irc.freenode.net #bcm-users[/url] wrote:(02:26:29 PM) psycho_oreos: lspci on its own doesn't output full outputting.. some owners with bcm4315 would have lspci telling them its bcm4312
You can also use the script Linux Wireless Chipset Detector (by Bill Giannikos)
Link: Linux Wireless Chipset Detector [Linux Laptop Wiki]

@pwatk
Please do not change your post only if it is really needed
All changes and fixes will be written at the Salix OS Wiki
Image
Help to make Slackware easier Donate to Salix

User avatar
pwatk
Posts: 474
Joined: 14. Mar 2010, 23:56
Location: United Kingdom

Re: How to install b43 firmware for Broadcom wireless cards

Post by pwatk » 23. Sep 2010, 17:49

Oops, I didn't notice that. It was suppose to be:

Code: Select all

lspci | grep -i network
...but I am going to change it to:

Code: Select all

lspci -nn | grep -i network
The only other changes I've made are grammatical except for adding a slapt-get -u to step 1:
pwatk wrote:1. Install the b43-fwcutter package from the repository:

Code: Select all

# slapt-get -u
# slapt-get -i b43-fwcutter
Image

nosajjindrich
Posts: 3
Joined: 29. Sep 2010, 00:32

Re: How to install b43 firmware for Broadcom wireless cards

Post by nosajjindrich » 29. Sep 2010, 01:01

Okay, I have a stupid problem that is almost certainly the result of my being a newbie.

I have a well used HP laptop that I am converting to Ubuntu because I love the machine, and both of us are getting too old for windows.

Anyway, I have the Ubuntu Version 10.4 successfully installed but I cannot get any internet connectivity. The wireless is broadcom 14e4:4320, which is supported by the legacy driver. That is the good news. The bad is that the ethernet isn't working either, and it has been so long since I had it connected to a cable that it may be a hardware problem that I didn't know about until now.

So, I can't install the wireless driver using the directions. Is it possible to install from a flash drive? What files and commands would I need to do so?

Many thanks,

User avatar
zAchAry
Posts: 804
Joined: 11. May 2010, 09:02
Location: Israel

Re: How to install b43 firmware for Broadcom wireless cards

Post by zAchAry » 29. Sep 2010, 11:47

amd64 or i386? (download and install b43-fwcutter)

Code: Select all

/usr/share/b43-fwcutter/install_bcm43xx_firmware.sh

Code: Select all

#!/bin/sh

set -e

dir=$(mktemp -d)
cd "$dir"
wget http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o
wget http://mirror2.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2
b43-fwcutter -w /lib/firmware wl_apsta-3.130.20.0.o
tar xfvj broadcom-wl-4.150.10.5.tar.bz2
b43-fwcutter --unsupported -w /lib/firmware broadcom-wl-4.150.10.5/driver/wl_apsta_mimo.o
rm -rf "$dir"
chmod o+rx /lib/firmware/b43 /lib/firmware/b43legacy
Download wl_apsta-3.130.20.0.o and broadcom-wl-4.150.10.5.tar.bz2 to a folder named TEST in your home directory.
Open terminal as root and enter the following:

Code: Select all

cd TEST
b43-fwcutter -w /lib/firmware wl_apsta-3.130.20.0.o
tar xfvj broadcom-wl-4.150.10.5.tar.bz2
b43-fwcutter --unsupported -w /lib/firmware broadcom-wl-4.150.10.5/driver/wl_apsta_mimo.o
chmod o+rx /lib/firmware/b43 /lib/firmware/b43legacy
I believe, it should work. (please report if that works for you).
Image
Help to make Slackware easier Donate to Salix

Post Reply