Comment 0 for bug 182716

Revision history for this message
Christophe Giboudeaux (krop) wrote : bcm4306 doesn't work with b43 / ssb

Dist : Hardy 8.04
$ uname -a
Linux mokona 2.6.24-4-generic #1 SMP Thu Jan 10 23:30:27 UTC 2008 i686 GNU/Linux

Concerned hardware :
02:09.0 Network controller [0280]: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller [14e4:4320] (rev 03)
        Subsystem: Linksys Unknown device [1737:0013]
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32
        Interrupt: pin A routed to IRQ 19
        Region 0: Memory at fdffe000 (32-bit, non-prefetchable) [size=8K]

The concerned card is a Linksys WMP-54g
After upgrading from Gutsy to Hardy, I blacklisted the ndiswrapper module and the bcm43xx one to try the b43 one (I used b43-fwcutter and the correct file to extract firmware).

After rebooting, the network doesn't work and only does if I unload ohci-hcd, ssb, b43 and modprobe bcm43xx.

If I unload everything and modprobe b43 :
[ 1696.188497] ACPI: PCI Interrupt 0000:02:09.0[A] -> Link [APC4] -> GSI 19 (level, low) -> IRQ 19
[ 1696.226619] ssb: Sonics Silicon Backplane found on PCI device 0000:02:09.0
[ 1696.254937] b43-phy0: Broadcom 4306 WLAN found
[ 1696.342897] phy0: Selected rate control algorithm 'simple'
[ 1696.472470] udev: renamed network interface wmaster0 to eth1
[ 1696.549096] input: b43-phy0 as /devices/virtual/input/input5
[ 772.133199] ADDRCONF(NETDEV_UP): wlan0: link is not ready

ifconfig -a returns :
# ifconfig -a
eth1 Link encap:UNSPEC HWaddr 00-0F-66-F2-8E-4A-40-E2-00-00-00-00-00-00-00-00
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)

wlan0 Link encap:Ethernet HWaddr 00:0f:66:f2:8e:4a
          UP BROADCAST MULTICAST MTU:1500 Metric:1
          Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)

lshw -C network returns :
 *-network
       description: Network controller
       product: BCM4306 802.11b/g Wireless LAN Controller
       vendor: Broadcom Corporation
       physical id: 9
       bus info: pci@0000:02:09.0
       version: 03
       width: 32 bits
       clock: 33MHz
       capabilities: bus_master
       configuration: driver=b43-pci-bridge latency=32 module=ssb
  *-network
       description: Wireless interface
       physical id: 1
       logical name: wlan0
       serial: 00:0f:66:f2:8e:4a
       capabilities: ethernet physical wireless
       configuration: broadcast=yes multicast=yes wireless=IEEE 802.11g

At this point, restarting the network gives :

Internet Systems Consortium DHCP Client V3.0.6
Copyright 2004-2007 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

eth1: unknown hardware address type 801
eth1: unknown hardware address type 801
Listening on LPF/wlan0/00:0f:66:f2:8e:4a
Sending on LPF/wlan0/00:0f:66:f2:8e:4a
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
[cut]
No DHCPOFFERS received.
No working leases in persistent database - sleeping.

and dmesg :
[ 2165.226966] wlan0: Initial auth_alg=0
[ 2165.226977] wlan0: authenticate with AP <the router MAC>
[cut 2 lines]
[ 2165.826050] wlan0: authentication with AP <the router MAC> timed out
--

Now, if I modprobe -r b43 && modprobe bcm43xx :

# lshw -C network
  *-network
       description: Wireless interface
       product: BCM4306 802.11b/g Wireless LAN Controller
       vendor: Broadcom Corporation
       physical id: 9
       bus info: pci@0000:02:09.0
       logical name: wlan0
       version: 03
       serial: 00:0f:66:f2:8e:4a
       width: 32 bits
       clock: 33MHz
       capabilities: bus_master ethernet physical wireless
       configuration: broadcast=yes driver=bcm43xx driverversion=2.6.24-4-generic ip=192.168.15.1 latency=32 link=yes module=bcm43xx multicast=yes wireless=IEEE 802.11b/g

Dmesg output :
[ 2286.617516] ACPI: PCI interrupt for device 0000:02:09.0 disabled
[ 2286.684085] bcm43xx driver
[ 2286.695657] ACPI: PCI Interrupt 0000:02:09.0[A] -> Link [APC4] -> GSI 19 (level, low) -> IRQ 19
[ 2286.746964] udev: renamed network interface eth0 to wlan0
[ 2286.747605] prism2usb_init: prism2_usb.o: 0.2.8 Loaded
[ 2286.747611] prism2usb_init: dev_info is: prism2_usb
[ 2286.747653] usbcore: registered new interface driver prism2_usb
[ 2286.995489] bcm43xx: Radio enabled by hardware
[ 2287.207872] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 2287.500654] bcm43xx: Radio enabled by hardware
[ 2287.716373] ADDRCONF(NETDEV_UP): wlan0: link is not ready

and I have a working network (and reload ohci-hcd).
---
Last attempt then : blacklist b43, add bcm43xx in /etc/modules and reboot and it doesn't work. lshw returns «configuration: driver=b43-pci-bridge latency=32 module=ssb».

It is working if I blacklist b43 in /etc/modprobe.d and (very very badly) blacklist ssb (renaming ssb.ko). Only trouble then, ohci-hcd can't load :

[ 22.523070] usbcore: registered new interface driver usbfs
[ 22.526435] usbcore: registered new interface driver hub
[ 22.536698] usbcore: registered new device driver usb
[ 22.541300] ohci_hcd: Unknown symbol ssb_device_disable
[ 22.545038] ohci_hcd: Unknown symbol ssb_admatch_base
[ 22.548913] ohci_hcd: Unknown symbol ssb_device_enable
[ 22.552850] ohci_hcd: Unknown symbol ssb_driver_unregister
[ 22.556937] ohci_hcd: Unknown symbol __ssb_driver_register
[ 22.561268] ohci_hcd: Unknown symbol ssb_admatch_size

--

I hope this is clear enough :-)