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
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev