Maurits Dijkstra wrote:
> Hi all,
> 
> The last few days I've been trying to get b43 to work on my WRT54GL
> wlan-router. The reason I've been trying this is because I want to use the
> device as a bridge between the local university wlan and my own local
> network. However, because the network I'm trying to connect to is part of
> the academic eduroam infrastructure I need 802.1x with dynamic WEP keying.
> 
> The proprietary broadcom drivers do not seem to support wpa_supplicant or
> xsupplicant as they do not implement (much of) the standard linux wireless
> extensions. There is a broadcom-specific driver for wpa_supplicant, but it
> is broken, and it would be nice to get rid of the binary-only driver
> altogether, not patch it up with yet another hack. So I set out to get b43
> working. After a few hours of tinkering I got the driver to insert and
> load the firmware:
> 
> b43-phy0: Broadcom 5352 WLAN found
> b43-phy0 debug: Found PHY: Analog 2, Type 2, Revision 7
> b43-phy0 debug: Found Radio: Manuf 0x17F, Version 0x2050, Revision 2
> b43-phy0 debug: DebugFS (CONFIG_DEBUG_FS) not enabled in kernel config
> phy0: Selected rate control algorithm 'simple'
> b43-phy0 debug: Loading firmware version 351.126 (2006-07-29 05:54:02)
> b43-phy0 debug: Chip initialized
> b43-phy0 debug: 32-bit DMA initialized
> b43-phy0 debug: Wireless interface started
> b43-phy0 debug: Adding Interface type 2
> 
> So far so good, I thought. But when I tried to actually do anything with
> the interface this message appeared in dmesg:
> 
> b43-phy0 warning: Invalid max-TX-power value in SPROM.
> 
> The driver itself responds to commands, but scanning finds nothing and
> trying to associate to access points doesn't work either. Also, the MAC
> addresses for both the wmaster0 and wlan0 interfaces are zeroed out:
> 
> wlan0     Link encap:Ethernet  HWaddr 00:00:00:00:00:00
>           UP BROADCAST MULTICAST  MTU:1500  Metric:1
>           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
> 
> wmaster0  Link encap:UNSPEC  HWaddr
> 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
>           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
> 
> I've tried b43 from a git tree I pulled yesterday evening on openwrt
> kamikaze svn trunk (r9519), running linux 2.6.23.1. My SSB info is:
> 
> ssb: Core 0 found: ChipCommon (cc 0x800, rev 0x0E, vendor 0x4243)
> ssb: Core 1 found: Fast Ethernet (cc 0x806, rev 0x09, vendor 0x4243)
> ssb: Core 2 found: MIPS 3302 (cc 0x816, rev 0x06, vendor 0x4243)
> ssb: Core 3 found: USB 1.1 Host (cc 0x817, rev 0x02, vendor 0x4243)
> ssb: Core 4 found: MEMC SDRAM (cc 0x80F, rev 0x01, vendor 0x4243)
> ssb: Core 5 found: IEEE 802.11 (cc 0x812, rev 0x09, vendor 0x4243)
> ssb: Core 6 found: Roboswitch (cc 0x81C, rev 0x02, vendor 0x4243)
> ssb: Initializing MIPS core...
> ssb: set_irq: core 0x0806, irq 2 => 2
> ssb: set_irq: core 0x0817, irq 4 => 3
> ssb: set_irq: core 0x0812, irq 0 => 4
> ssb: Sonics Silicon Backplane found at address 0x18000000
> 
> If I were to take a fairly uneducated guess, I'd say the driver is not
> recognizing the layout of the SPROM correctly, since it doesn't seem to be
> able to find  correct values for the MAC address and TX-power, both of
> which should be stored there...
> 
> Is there anyone who knows what's wrong or can provide pointers on where to
> look? Any help would be greatly appreciated and I wouldn't mind getting my
> own hands dirty to fix it. :)

In the past few days, I have discovered that the SPROM revision 3 layout 
doesn't match the specs. To
dump the SPROM, I used the following patch:

Index: linux-2.6/drivers/ssb/pci.c
===================================================================
--- linux-2.6.orig/drivers/ssb/pci.c
+++ linux-2.6/drivers/ssb/pci.c
@@ -457,6 +457,7 @@ static int ssb_pci_sprom_get(struct ssb_
 {
        int err = -ENOMEM;
        u16 *buf;
+       int i;

        buf = kcalloc(SSB_SPROMSIZE_WORDS, sizeof(u16), GFP_KERNEL);
        if (!buf)
@@ -467,6 +468,12 @@ static int ssb_pci_sprom_get(struct ssb_
                ssb_printk(KERN_WARNING PFX
                           "WARNING: Invalid SPROM CRC (corrupt SPROM)\n");
        }
+       printk("ssb: SPROM DUMP\nssb: 0x0000: ");
+       for (i=0; i < SSB_SPROMSIZE_WORDS; i++) {
+               printk("0x%.4X", buf[i]);
+               if ((i % 8) == 7) printk("\nssb: 0x%.4X: ", (i + 1) * 2);
+       }
+       printk("\n");
        err = sprom_extract(bus, sprom, buf);

        kfree(buf);

I think your system doesn't use PCI, so this probably won't work, but you 
should be able to
implement something similar. Once you have a dump, you should be able to find 
the MAC addresses of
the wireless and ethernet interfaces.

Larry

_______________________________________________
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to