SDB:Broadcom (BCM4306) WLAN Installation under SUSE

From openSUSE

Version 9.3 - 10.2

For version 11.X please look here: http://en.opensuse.org/Broadcom_BCM43xx_Wireless .

Contents

Situation

Situation 1 - You have a Broadcom WLAN card based on BCM4306 chipset but the card is not active because of the missing Linux Driver (Version 9.3 - 10.0). See "ndiswrapper procedure".

Situation 2 - You have openSUSE 10.2 and you have a Broadcom bcm43xx series chipset listed in YaST > Network Devices > Network Card. Note: openSUSE 10.2 was distributed with the BCM46xx driver but not the firmware for legal reasons.

openSUSE 10.2 Option 1 - You can use the orginal drivers distributed with openSUSE 10.2, however, the bcm46xx drivers only support 11 Mb/s. Users who need/want the original drivers need to load the firmware for the chipset using bcm43xx-fwcutter. See "Original Driver Procedure"

openSUSE 10.2 Option 2 - You can maximize your wireless hardware to 54 Mb/s in most cases using the ndiswrapper, however to use this option you will need to remove the bcm46xx drivers and blacklist them from being reloaded again using the "bmc43xx Removal Procedure" then use the "ndiswrapper procedure".

ndiswrapper Procedure

Note: In 10.2 you must first remove the original bcm43xx driver according to "openSUSE 10.2 Option 2 - bcm43xx Removal Procedure", prior to using ndiswrapper, see below for removal procedure

1. You need to check if ndiswrapper is installed through: Yast > Software > Software Installation and search for ndiswrapper. 2. Start the shell console (Kmenu >System > Terminal Program > Terminal) and login as root with the command:

 sux -

and type in the root password. Afterwards create a directory with:

 mkdir /lib/windrivers

You need to download the Windows driver for BCM4306 from the following link: http://www.silfreed.net/download/hpzt3000cto/SP23107A.tar.gz [seems to be corrupt; try this link: http://www.suseblog.com/bcmwl5.tar.bz2 ] and place them under /lib/windrivers:

 mv PATH_TO_DRIVER /lib/windrivers

From the console change to the directory with the drivers:

 cd /lib/windrivers

Afterwards execute

 tar -zxvf NAME_OF_DRIVER.tar.gz or tar xfvj NAME_OF_DRIVER.tar.bz2

for example tar -zxvf SP23107A.tar.gz or tar xfvj bcmwl5.tar.bz2 then

 cd NAME_OF_DRIVER

Check if threre are no other ndiswrapper modules loaded with:

 ndiswrapper -l

if there are some, remove them with:

 ndiswrapper -e NAME_OF_MODULE

After this install the Drivermodule with

 ndiswrapper -i bcmwl5.inf


[you then probably still have to remove and blacklist the old bcm43xx driver, which seems to block the new driver. Do as follows:

rmmod bcm43xx

After that, as root, edit /etc/modprobe.conf.local . Add this line to tell it to never load the bcm43xx module:

blacklist bcm43xx

(compare: http://www.suseblog.com/?p=279#comment-98263 )]


and load the module with

 modprobe ndiswrapper

Reboot. Now you can configure your WLAN card through YAST > Network devices > Network card and configure a new wireless card and use the module name ndiswrapper. The other options here depend on the network system you want to use. (Fixed IP or DHCP, encryption etc.)

You can check if the card is active as from the console [Ctrl] + [Alt] + [F1] as "root" and type in

 iwconfig

or

 ifconfig

to see if the interface is recognized.

openSUSE 10.2 Option 1 - Original Driver Procedure

  • On an HP Pavilion zv6000 laptop the driver configures automatically on a fresh install but is not funcional; the BIOS still reads that the card is enabled but if you watch the boot messages you'll see a line saying radio is disabled. The 1-touch-button for enable/disable wireless is off and pushing the button or using KWifiManager does not remedy the problem. Installing bcm43xx-fwcutter firmware will fix this problem.

1. You need to check if the bcm43xx-fwcutter package is installed through: Yast > Software > Software Installation and search for bcm43xx-fwcutter

2. Find the windows driver for your wireless chip. An example windows driver was titled bcmwl5.sys Also note if you can't find yours try doing a google search for wl_apsta.o (SUSE worked with both the orginal windows driver and the wl_apsta.o at the time of this WIKI post). Put the driver file on your desktop in SUSE.

3. Start the shell console (Kmenu >System > Terminal Program > Terminal) and login as root with the command:

sux -

and type in the root password

Extract your firmware files from your wireless chip and store them in the firmware file by typing in the following. (Note: Swap out the name of your driver accordingly...in this example it is wl_apsta.o):

 bcm43xx-fwcutter -w /lib/firmware ~/Desktop/wl_apsta.o

4. Another way to install the firmware is using the install script included in the bcm43xx-fwcutter package. You need to have a working internet connection for this as it is attempted to download wl_apsta.o, next the firmware is extracted and stored in /lib/firmware.

 install_bcm43xx_firmware 

5. Now that the firmware is ready for the driver to use, load the module by typing the following:

 modprobe bcm43xx

6. Reboot and now you can configure your WLAN card through YAST > Network devices > Network card

openSUSE 10.2 Option 2 - bcm43xx Removal Procedure

Only use the procedure below if you plan on removing openSUSE 10.2's original bcm43xx driver and installing the unsupported ndiswrapper driver.

1. Start the shell console (Kmenu >System > Terminal Program > Terminal) and login as root with the command:

 sux -

and type in the root password

See if you have the bcm43xx drivers still installed:

 lsmod | grep bcm43xx

Any response means it's installed, so remove it:

 rmmod bcm43xx

Now blacklist it from being loaded again by adding the line "blacklist bcm43xx" to very bottom of the /etc/modprobe.d/blacklist file. To open the file with Kwrite type:

 su -c 'kwrite /etc/modprobe.d/blacklist'

Also edit /etc/sysconfig/hardware/(your nic card) to change the module. Change 'bcm43xx' to 'ndiswrapper'

 su -c 'kwrite /etc/sysconfig/hardware/hwcfg-bus-pci-xxx

2. Now follow the instructions in the "ndiswrapper procedure" above to setup your wireless card using ndiswrapper.