From: David on

"Larry Finger" <Larry.Finger(a)lwfinger.net> wrote in message
news:FUwPj.233661$cQ1.100201(a)bgtnsc04-news.ops.worldnet.att.net...
> David wrote:
>> Still not at all sure I understand what this means so looks like I will
>> need to spend a lot of tomorrow reading up about it all. I also now see
>> that some articles say I should use b43 and others b43-legacy as I have
>> rev 3 of the card. Very very confusing and certainly not what I was
>> hoping of Ubuntu 's new release.
>> Thanks for giving me a point in (hopefully) the right direction.
>
> Your card uses b43 and not b43legacy. In fact, the ssb driver looks at the
> PHY revision of your card, and loads the correct driver. If you had a
> BCM4306 rev 2, the it would need b43legacy. I know that is correct as I'm
> the one who converted bcm43xx into b43legacy!
>
> Did you build the kernel you are running, or are you using the one that
> Ubuntu built? If the latter, I understand why the appropriate debugging
> options have not been set. I have been trying to get Ubuntu to set the
> debugging options for a long time, but the idiots don't seem to get the
> word!
>
> If you built your own keernel, then you need to run 'make xconfig' and
> select the debugging options.
>
> Larry

I was going by some of what I had read. Most did say use b43 but some
articles said b43-legacy for rev3. Now I know for sure it one less variable.
Some even said use bcm43xx or ndiswrapper but I felt this to be giving up.

I have nver built a kernel in my life so am running 2.6.24-16-generic at the
mo. But had same probs with the beta release and 2.6.24-others

Also I used the b43 in ubuntu initially but also tried building my own but
no difference.

The positive side of all this is that it's usually the best way to learn how
thongs work.

Cheers
Dave


From: Larry Finger on
David wrote:
> "Larry Finger" <Larry.Finger(a)lwfinger.net> wrote in message
>>
>> sudo cat $(find /sys -name ssb_sprom)
>>
>> and send me that long string of hex digits that follow.
>>
>> Thanks,
>>
>> Larry
>
> Hi Larry,
>
> You may have noticed I am in the UK and it was after 3am when I gave up last
> night. So just seen your message.
>
> The cmd gives:
> 014000001300371720430080020002000010001800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F007466A59AFFFFFFFFFFFFFFFFFFFFFFFFFFFF4510A01277FBACFEFFFFFFFF3C000000000000003E000D00FFFF00000000000000000194
>
> I feel we are now in the land of voodoo. FYI I'm not a computer pro just an
> amateur willing to learn and who hates giving up.
>
> Thanks once again for your support.

We are in the land of voodoo. That string of digits is the dump of the
SPROM on the device. The translation of the interesting parts of it are:

SPROM(0x04, Subsytem product ID) = 0x0013
SPROM(0x06, Subsystem vendor ID) = 0x1737
SPROM(0x08, PCI Product ID) = 0x4320
SPROM(0x38, High 16 bits of Boardflags) = 0xFFFF
SPROM(0x72, Low 16 bits of Boardflags) = 0x000D
SPROM(0x48, MAC address for 802.11b/g) = 00:0f:66:74:9a:a5
SPROM(0x4E, MAC address for ethernet) = ff:ff:ff:ff:ff:ff
SPROM(0x54, MAC address for 802.11a) = ff:ff:ff:ff:ff:ff
SPROM(0x5A, Ethernet phy settings (0)) = 0x1F
SPROM(0x5A, Ethernet phy settings (1)) = 0x1F
SPROM(0x5B, et0mdcport) = ON
SPROM(0x5B, et1mdcport) = ON
SPROM(0x5C, Board revision) = 0x05
SPROM(0x5C, Locale / Country Code) = 0x0
SPROM(0x5C, B/G PHY antenna 0 available) = OFF
SPROM(0x5C, B/G PHY antenna 1 available) = ON
SPROM(0x5C, A PHY antenna 0 available) = OFF
SPROM(0x5C, A PHY antenna 1 available) = ON
SPROM(0x74, B/G PHY antenna gain) = 0xFF
SPROM(0x75, A PHY antenna gain) = 0x00
SPROM(0x5E, pa0b0) = 0x12A0
SPROM(0x60, pa0b1) = 0xFB77
SPROM(0x62, pa0b2) = 0xFEAC
SPROM(0x6A, pa1b0) = 0x0000
SPROM(0x6C, pa1b1) = 0x0000
SPROM(0x6E, pa1b2) = 0x0000
SPROM(0x64, LED 0 behaviour) = 0xFF
SPROM(0x65, LED 1 behaviour) = 0xFF
SPROM(0x66, LED 2 behaviour) = 0xFF
SPROM(0x67, LED 3 behaviour) = 0xFF
SPROM(0x68, B/G PHY max powerout) = 0x3C
SPROM(0x69, A PHY max powerout) = 0x00
SPROM(0x70, B/G PHY idle TSSI target) = 0x3E
SPROM(0x71, A PHY idle TSSI target) = 0x00
SPROM(0x7E, SPROM version) = 0x01

Most of this is OK, but we have had some vendors incorrectly coding
the data in the low-order 16 bits of the board flags. To check this
out, I would like you to change one of the routines in the file main.c
for the b43 driver. I am not sure what the path is in your version of
the driver source code. In any case, the routine
b43_bluetooth_coext_enable should be changed from

static void b43_bluetooth_coext_enable(struct b43_wldev *dev)
{
struct ssb_sprom *sprom = &dev->dev->bus->sprom;
u32 hf;

if (!(sprom->boardflags_lo & B43_BFL_BTCOEXIST))
return;
if (dev->phy.type != B43_PHYTYPE_B && !dev->phy.gmode)
return;

hf = b43_hf_read(dev);
if (sprom->boardflags_lo & B43_BFL_BTCMOD)
hf |= B43_HF_BTCOEXALT;
else
hf |= B43_HF_BTCOEX;
b43_hf_write(dev, hf);
//TODO
}

to

static void b43_bluetooth_coext_enable(struct b43_wldev *dev)
{
}

In other words, please remove all content from this routine, then
rebuild the driver. This is not the "correct" fix, but it should let
us test if the board flags are the problem.

Thanks,

Larry
From: David on

"Larry Finger" <Larry.Finger(a)lwfinger.net> wrote in message
news:3iJPj.236670$cQ1.146337(a)bgtnsc04-news.ops.worldnet.att.net...
> David wrote:
>> "Larry Finger" <Larry.Finger(a)lwfinger.net> wrote in message
>>>
>>> sudo cat $(find /sys -name ssb_sprom)
>>>
>>> and send me that long string of hex digits that follow.
>>>
>>> Thanks,
>>>
>>> Larry
>>
>> Hi Larry,
>>
>> You may have noticed I am in the UK and it was after 3am when I gave up
>> last night. So just seen your message.
>>
>> The cmd gives:
>> 014000001300371720430080020002000010001800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F007466A59AFFFFFFFFFFFFFFFFFFFFFFFFFFFF4510A01277FBACFEFFFFFFFF3C000000000000003E000D00FFFF00000000000000000194
>>
>> I feel we are now in the land of voodoo. FYI I'm not a computer pro just
>> an amateur willing to learn and who hates giving up.
>>
>> Thanks once again for your support.
>
> We are in the land of voodoo. That string of digits is the dump of the
> SPROM on the device. The translation of the interesting parts of it are:
>
> SPROM(0x04, Subsytem product ID) = 0x0013
> SPROM(0x06, Subsystem vendor ID) = 0x1737
> SPROM(0x08, PCI Product ID) = 0x4320
> SPROM(0x38, High 16 bits of Boardflags) = 0xFFFF
> SPROM(0x72, Low 16 bits of Boardflags) = 0x000D
> SPROM(0x48, MAC address for 802.11b/g) = 00:0f:66:74:9a:a5
> SPROM(0x4E, MAC address for ethernet) = ff:ff:ff:ff:ff:ff
> SPROM(0x54, MAC address for 802.11a) = ff:ff:ff:ff:ff:ff
> SPROM(0x5A, Ethernet phy settings (0)) = 0x1F
> SPROM(0x5A, Ethernet phy settings (1)) = 0x1F
> SPROM(0x5B, et0mdcport) = ON
> SPROM(0x5B, et1mdcport) = ON
> SPROM(0x5C, Board revision) = 0x05
> SPROM(0x5C, Locale / Country Code) = 0x0
> SPROM(0x5C, B/G PHY antenna 0 available) = OFF
> SPROM(0x5C, B/G PHY antenna 1 available) = ON
> SPROM(0x5C, A PHY antenna 0 available) = OFF
> SPROM(0x5C, A PHY antenna 1 available) = ON
> SPROM(0x74, B/G PHY antenna gain) = 0xFF
> SPROM(0x75, A PHY antenna gain) = 0x00
> SPROM(0x5E, pa0b0) = 0x12A0
> SPROM(0x60, pa0b1) = 0xFB77
> SPROM(0x62, pa0b2) = 0xFEAC
> SPROM(0x6A, pa1b0) = 0x0000
> SPROM(0x6C, pa1b1) = 0x0000
> SPROM(0x6E, pa1b2) = 0x0000
> SPROM(0x64, LED 0 behaviour) = 0xFF
> SPROM(0x65, LED 1 behaviour) = 0xFF
> SPROM(0x66, LED 2 behaviour) = 0xFF
> SPROM(0x67, LED 3 behaviour) = 0xFF
> SPROM(0x68, B/G PHY max powerout) = 0x3C
> SPROM(0x69, A PHY max powerout) = 0x00
> SPROM(0x70, B/G PHY idle TSSI target) = 0x3E
> SPROM(0x71, A PHY idle TSSI target) = 0x00
> SPROM(0x7E, SPROM version) = 0x01
>
> Most of this is OK, but we have had some vendors incorrectly coding the
> data in the low-order 16 bits of the board flags. To check this out, I
> would like you to change one of the routines in the file main.c for the
> b43 driver. I am not sure what the path is in your version of the driver
> source code. In any case, the routine b43_bluetooth_coext_enable should be
> changed from
>
> static void b43_bluetooth_coext_enable(struct b43_wldev *dev)
> {
> struct ssb_sprom *sprom = &dev->dev->bus->sprom;
> u32 hf;
>
> if (!(sprom->boardflags_lo & B43_BFL_BTCOEXIST))
> return;
> if (dev->phy.type != B43_PHYTYPE_B && !dev->phy.gmode)
> return;
>
> hf = b43_hf_read(dev);
> if (sprom->boardflags_lo & B43_BFL_BTCMOD)
> hf |= B43_HF_BTCOEXALT;
> else
> hf |= B43_HF_BTCOEX;
> b43_hf_write(dev, hf);
> //TODO
> }
>
> to
>
> static void b43_bluetooth_coext_enable(struct b43_wldev *dev)
> {
> }
>
> In other words, please remove all content from this routine, then rebuild
> the driver. This is not the "correct" fix, but it should let us test if
> the board flags are the problem.
>
> Thanks,
>
> Larry

Larry,

I searched for a file main.c but can't find one.
When I search for b43 I get these results
/lib/firmware/b43
and several (5 in all) under
/lib/modules/2.6.24/kernel/drivers/net/wireless/b43
and also /usr/share/b43-fwcutter
b43-legacy etc

But nowhere can I find a "main.c" file
Am I being stupid here?
Cheers


From: Larry Finger on
David wrote:
>
> I searched for a file main.c but can't find one.
> When I search for b43 I get these results
> /lib/firmware/b43
> and several (5 in all) under
> /lib/modules/2.6.24/kernel/drivers/net/wireless/b43
> and also /usr/share/b43-fwcutter
> b43-legacy etc
>
> But nowhere can I find a "main.c" file
> Am I being stupid here?
> Cheers

Did you rebuild the b43 driver? Was that from source, or did you just
link the b43 objects against your kernel? If from source, the file
should be in the directory with the source files. If you linked from
object files, please get me the ls output from that directory.

Larry


From: Paul Sherwin on
On Tue, 22 Apr 2008 16:46:11 +0100, David wrote:

> Running Ubuntu 8.04 (Hardy Heron) on a desktop PC using (or trying to) a
> Linksys WMP54G PCI wifi card (that uses a Broadcom BCM4306 chipset.)
> Trying to connect to a Netgear DG834 adsl router. It works using windows
> xp just fine.
> It doesn't in Ubuntu no matter what I seem to do, althugh it's fine
> using a wired connection.

David, having read through this thread I think you are spending more time
on this than is worthwhile. Just buy a cheap USB wifi dongle from an ebay
seller for about a fiver. This will almost certainly use the zd1211rw
kernel module and will Just Work. Life's too short :-)

Paul