|
Prev: Running Windows under Linux virtualisation environments
Next: A bit OT: Thinkpad can't see memory
From: David on 23 Apr 2008 05:33 "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 23 Apr 2008 12:17 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 23 Apr 2008 14:20 "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 23 Apr 2008 14:30 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 23 Apr 2008 16:24
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 |