Since the BCM43224, BCM43225, BCM4313 PCIe NIC (wireless card) drivers and firmware are not yet included in opensuse 11.3. I thought I would write a guide to help with the installation.

The 2.6.34 kernel does not yet include the necessary brcm80211 drivers. They are scheduled for inclusion in the 2.6.37 kernel (Greg Kroah-Hartman). However these drivers are currently being developed and much of the functionality has already been implemented.

I will explain how to compile and install the drivers below.
  1. Getting the source:

    We need the driver code as well as the firmware. These are located in the following git repositories:

    • git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
    • git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git

    You can install git using Yast, if you haven't already, and clone both repositories.
    Code:
    ~> git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
    ~> git clone git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
    This will make a local copy of the source code repository.

  2. Building the driver:

    First instal the "kernel-devel" package. This contains code required for building the driver. This can be done using Yast.
    Then go to directory linux-next/drivers/staging/brcm80211. Here you will find a Makefile. We need to alter this file so that it can build the driver module for our kernel without having to compile and install the cloned new kernel.

    Add the following code to linux-next/drivers/staging/brcm80211/Makefile:

    Code:
    KDIR    := /lib/modules/$(shell uname -r)/build
    ccflags-y += -I$(SUBDIRS)/include -I$(SUBDIRS)/sys -I$(SUBDIRS)/phy
    
    default:
            echo $(PWD)
            $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd) CONFIG_BRCM80211_PCI=y V=1 modules
    Then run make:
    Code:
    ~/linux-next/drivers/staging/brcm80211> make
    If there are no errors(there shouldn't be) this will build the brcm80211.ko driver module and place it in the linux-next/drivers/staging/brcm80211/ folder.

  3. Installing the driver:

    First we should copy the driver module to the proper module directory. (Only root can do this)

    Code:
    linux-next/drivers/staging/brcm80211 # cp brcm80211.ko /lib/modules/`uname -r`/
    We also need to install the firmware files in the proper directory.
    These can be found in the other repository (linux-firmware). (More information can be found in the linux-next/drivers/staging/brcm80211/README file.)

    Code:
    linux-firmware/brcm # mkdir /lib/firmware/brcm
    linux-firmware/brcm # cp brcm/bcm43xx* /lib/firmware/brcm
    linux-firmware/brcm # cd /lib/firmware/brcm
    /lib/firmware/brcm # ln -s bcm43xx-0-610-809-0.fw bcm43xx-0.fw
    /lib/firmware/brcm # ln -s bcm43xx_hdr-0-610-809-0.fw bcm43xx_hdr-0.fw
    Now we can insert the module into the running kernel and load it
    Code:
    linux-next/drivers/staging/brcm80211 # insmod /lib/modules/`uname -r`/brcm80211.ko
    linux-next/drivers/staging/brcm80211 # modprobe brcm80211


You should now be able to configure your wireless card using Yast.

Notes:
This worked for me on a Dell precision M4500 running opensuse 11.3 with kernel 2.6.34.7-0.3-desktop.