# Broadcom BCM 4322 firmware loading

## lepgalle

Hi,

I try to get my Broadcom wireless card to work wit the b43 driver. I upgraded to kernel 2.6.39-r3 and it's supposed to work. In fact I have no error message in dmesg but know that the load actually does not happen. I have 

wl 0000:0c:00.0: PCI INT A disabled

cfg80211: Calling CRDA to update world regulatory domain

b43-pci-bridge 0000:0c:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17

b43-pci-bridge 0000:0c:00.0: setting latency timer to 64

ssb: Core 0 found: ChipCommon (cc 0x800, rev 0x17, vendor 0x4243)

ssb: Core 1 found: IEEE 802.11 (cc 0x812, rev 0x10, vendor 0x4243)

ssb: Core 2 found: PCI-E (cc 0x820, rev 0x0B, vendor 0x4243)

ssb: Core 3 found: PCI (cc 0x804, rev 0x0E, vendor 0x4243)

ssb: Core 4 found: USB 2.0 Device (cc 0x81A, rev 0x05, vendor 0x4243)

ssb: Core 5 found: UNKNOWN (cc 0x8FF, rev 0x00, vendor 0x4243)

ssb: Core 6 found: Internal Memory (cc 0x80E, rev 0x03, vendor 0x4243)

ssb: Sonics Silicon Backplane found on PCI device 0000:0c:00.0

b43-phy0: Broadcom 4322 WLAN found (core revision 16)

ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'

Registered led device: b43-phy0::tx

Registered led device: b43-phy0::rx

Registered led device: b43-phy0::radio

Broadcom 43xx driver loaded [ Features: PNL, Firmware-ID: FW13 ]

as dmesg output (the first line is from unloading the wl driver). From here http://comments.gmane.org/gmane.linux.drivers.bcm54xx.devel/12231 I know that at least one more line should be there:

b43-phy0: Loading firmware version 508.1084 (2009-01-14 01:32:01)

The output of lspci -v is:

0c:00.0 Network controller: Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller (rev 01)

        Subsystem: Dell Wireless 1510 Wireless-N WLAN Mini-Card

        Flags: bus master, fast devsel, latency 0, IRQ 17

        Memory at f6cfc000 (64-bit, non-prefetchable) [size=16K]

        Capabilities: [40] Power Management version 3

        Capabilities: [58] Vendor Specific Information: Len=78 <?>

        Capabilities: [e8] MSI: Enable- Count=1/1 Maskable- 64bit+

        Capabilities: [d0] Express Endpoint, MSI 00

        Capabilities: [100] Advanced Error Reporting

        Capabilities: [13c] Virtual Channel

        Capabilities: [160] Device Serial Number 38-63-19-ff-ff-50-c4-46

        Capabilities: [16c] Power Budgeting <?>

        Kernel driver in use: b43-pci-bridge

        Kernel modules: wl, ssb

I installed the latest fw-cutter (version 014) and firmware 508.1084 according to the instructions at http://wireless.kernel.org/en/users/Drivers/b43

Still I have no luck since "/etc/init.d/net.eth1 start" complains: "ERROR: interface eth1 does not exist"

Anyone here with similar experience or any idea on how to make it work? 

Thank you very much anyway

----------

## DONAHUE

http://linuxwireless.org/en/users/Drivers/b43 Supported devices says the 4322 is not supported and lists no alternate driver.

----------

## Gusar

Actually, there's several BCM4322 on the list, some are supported. We need the pci id, rather than chip id. So give use the output of 

```
lspci -nn
```

Also, b43 names the devices wlan#, not eth#

----------

## lepgalle

Thanks Gusar,

 *Gusar wrote:*   

> Actually, there's several BCM4322 on the list, some are supported. We need the pci id, rather than chip id. So give use the output of 
> 
> ```
> lspci -nn
> ```
> ...

 

Of course, I forgot to paste that in, sorry. Here is the output.

00:00.0 Host bridge [0600]: Intel Corporation Core Processor DMI [8086:d132] (rev 11)

00:03.0 PCI bridge [0604]: Intel Corporation Core Processor PCI Express Root Port 1 [8086:d138] (rev 11)

00:08.0 System peripheral [0880]: Intel Corporation Core Processor System Management Registers [8086:d155] (rev 11)

00:08.1 System peripheral [0880]: Intel Corporation Core Processor Semaphore and Scratchpad Registers [8086:d156] (rev 11)

00:08.2 System peripheral [0880]: Intel Corporation Core Processor System Control and Status Registers [8086:d157] (rev 11)

00:08.3 System peripheral [0880]: Intel Corporation Core Processor Miscellaneous Registers [8086:d158] (rev 11)

00:10.0 System peripheral [0880]: Intel Corporation Core Processor QPI Link [8086:d150] (rev 11)

00:10.1 System peripheral [0880]: Intel Corporation Core Processor QPI Routing and Protocol Registers [8086:d151] (rev 11)

00:1a.0 USB Controller [0c03]: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller [8086:3b3c] (rev 05)

00:1b.0 Audio device [0403]: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio [8086:3b56] (rev 05)

00:1c.0 PCI bridge [0604]: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 1 [8086:3b42] (rev 05)

00:1c.1 PCI bridge [0604]: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 2 [8086:3b44] (rev 05)

00:1c.3 PCI bridge [0604]: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 4 [8086:3b48] (rev 05)

00:1c.4 PCI bridge [0604]: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 5 [8086:3b4a] (rev 05)

00:1c.5 PCI bridge [0604]: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 6 [8086:3b4c] (rev 05)

00:1c.6 PCI bridge [0604]: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 7 [8086:3b4e] (rev 05)

00:1c.7 PCI bridge [0604]: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 8 [8086:3b50] (rev 05)

00:1d.0 USB Controller [0c03]: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller [8086:3b34] (rev 05)

00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge [8086:2448] (rev a5)

00:1f.0 ISA bridge [0601]: Intel Corporation Mobile 5 Series Chipset LPC Interface Controller [8086:3b03] (rev 05)

00:1f.2 RAID bus controller [0104]: Intel Corporation Mobile 82801 SATA RAID Controller [8086:282a] (rev 05)

00:1f.3 SMBus [0c05]: Intel Corporation 5 Series/3400 Series Chipset SMBus Controller [8086:3b30] (rev 05)

01:00.0 VGA compatible controller [0300]: ATI Technologies Inc Device [1002:68a0]

01:00.1 Audio device [0403]: ATI Technologies Inc Juniper HDMI Audio [Radeon HD 5700 Series] [1002:aa58]

03:01.0 CardBus bridge [0607]: Texas Instruments PCIxx12 Cardbus Controller [104c:8039]

03:01.1 FireWire (IEEE 1394) [0c00]: Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller [104c:803a]

03:01.2 Mass storage controller [0180]: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) [104c:803b]

03:01.3 SD Host controller [0805]: Texas Instruments PCIxx12 SDA Standard Compliant SD Host Controller [104c:803c]

09:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme BCM5761e Gigabit Ethernet PCIe [14e4:1680] (rev 10)

0c:00.0 Network controller [0280]: Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller [14e4:432b] (rev 01)

10:00.0 USB Controller [0c03]: NEC Corporation Device [1033:0194] (rev 03)

The relevant line is the second to last one I guess. According to that it is partially supported in Kernel 2.6.39. I also found several posts reporting that this devise (with this particular pci id) is actually working:

http://comments.gmane.org/gmane.linux.drivers.bcm54xx.devel/12231 or 

http://forum.aircrack-ng.org/index.php?topic=11699;prev_next=next to name just two of them.

 *Gusar wrote:*   

> Also, b43 names the devices wlan#, not eth#

 

Not sure I understand what you mean / refer to. I thought b43 is the name of the driver / kernel module while wlan# / eth# is the device name (depending on distro, eth1 in my case). Did I miss something?

Thank you very much for your help

----------

## Gusar

Device name doesn't depend on distro. It depends on the driver. You said "/etc/init.d/net.eth1 start" complains that the device doesn't exist. Well yeah, b43 doesn't name devices eth#. So have you tried with "/etc/init.d/net.wlan0 start"? Or doing things manually instead of letting scripts handle it?

----------

## lepgalle

Hi Gusar,

 *Gusar wrote:*   

> Device name doesn't depend on distro. It depends on the driver. You said "/etc/init.d/net.eth1 start" complains that the device doesn't exist. Well yeah, b43 doesn't name devices eth#. So have you tried with "/etc/init.d/net.wlan0 start"? Or doing things manually instead of letting scripts handle it?

 

Wow, that makes me looking stupid! I set up at least 10 Gentoo boxes and I'm using Gentoo since 2005. "wlan0" never came across me. It was always "ethx". By accident it seems. So

```

pgal init.d # ln -s net.lo net.wlan0

pgal init.d # /etc/init.d/net.wlan0 start

net.wlan0             | * Caching service dependencies ...                      [ ok ]

net.wlan0             | * Bringing up interface wlan0

net.wlan0             | *   Starting wpa_supplicant on wlan0 ...                 [ ok ]

net.wlan0             | *   Starting wpa_cli on wlan0 ...                       [ ok ]

net.wlan0             | *   Backgrounding ... ...

```

was all I needed to do. In fact I'm using the wireless interface right now! Which leaves me with the question where I could find a corresponding list of which driver is creating which device? There was no hint on the Gentoo Wiki that I have to switch from "net.eth1" to "net.wlan0" when switching from the wl driver to the b43 one. Do you have a source or a way for finding out what device name is created depending on the driver used? 

So, problem solved. Thank you very much!

----------

## Gusar

 *lepgalle wrote:*   

> Do you have a source or a way for finding out what device name is created depending on the driver used?

 

I don't think it exists. The easiest to know is to run a 'ifconfig -a' to see all your network devices. It's interesting you've never come across wlan0, I know of three drivers that don't use it - broadcom-wl and ipw2100/ipw2200 which use eth, and madwifi (proprietary atheros driver, no reason to use it anymore) which names them ath. The rest is all wlan.

 *lepgalle wrote:*   

> There was no hint on the Gentoo Wiki that I have to switch from "net.eth1" to "net.wlan0" when switching from the wl driver to the b43 one. 

 

Yep, that seems like important info for people switching between those two drivers. It's a wiki, so you can add it yourself.

----------

## lepgalle

 *Gusar wrote:*   

>  *lepgalle wrote:*   Do you have a source or a way for finding out what device name is created depending on the driver used? 
> 
> I don't think it exists. The easiest to know is to run a 'ifconfig -a' to see all your network devices.

 

I see. Thank you.

 *Gusar wrote:*   

> It's interesting you've never come across wlan0, I know of three drivers that don't use it - broadcom-wl and ipw2100/ipw2200 which use eth, and madwifi (proprietary atheros driver, no reason to use it anymore) which names them ath. The rest is all wlan.

 

That explains it. By accident I only dealt with the Broadcom STA driver and iwp2200 when it was a Gentoo box.

 *Gusar wrote:*   

>  *lepgalle wrote:*   There was no hint on the Gentoo Wiki that I have to switch from "net.eth1" to "net.wlan0" when switching from the wl driver to the b43 one.  
> 
> Yep, that seems like important info for people switching between those two drivers. It's a wiki, so you can add it yourself.

 

Done. I inserted a note which is hopefully useful.

Thanks once more. Great help. All done.

----------

