Dell laptop + new BCM4322 minicard + opensuse 11.4 = no wireless (SPROM problem?)

Hi all,

I got a new Dell wireless card (1510 802.11n) on my laptop which already has a Bluetooth card too.

openSUSE doesn’t see the card (well, it did once, now it doesn’t - explained below). I followed the instruction in the two stickies in the forum and here are the info I have gathered:

lspci -nnv

…]
0c:00.0 Network controller [0280]: Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller [14e4:432b] (rev 01)
Subsystem: Dell Wireless 1510 Wireless-N WLAN Mini-Card [1028:000d]
Flags: bus master, fast devsel, latency 0, IRQ 18
Memory at f9ffc000 (64-bit, non-prefetchable) [size=16]
Capabilities: [40] Power Management version 3
Capabilities: [58] Vendor Specific Information: Len=78 <?>
Capabilities: [e8] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [d0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Virtual Channel
Capabilities: [160] Device Serial Number 4f-c3-f9-ff-ff-49-ec-55
Capabilities: [16c] Power Budgeting <?>
Kernel driver in use: b43-pci-bridge

grep -i firmware /var/log/boot.msg

<4> 8.603908] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn’t work.

I gather this does not concern the wireless card right?
Although I do see somethings on the card in the output of ‘dmesg’ command :

…]
10.389537] wl: module license ‘unspecified’ taints kernel.
10.389545] Disabling lock debugging due to kernel taint
…]
9.752760] b43-pci-bridge 0000:0c:00.0: PCI INT A → GSI 18 (level, low) → IRQ 18
9.752784] b43-pci-bridge 0000:0c:00.0: setting latency timer to 64
…]

I’m running a fresh install of openSUSE 11.4 on a dual boot WinXP system:

uname -a

Linux linux-v32x.site 2.6.37.6-0.5-desktop #1 SMP PREEMPT 2011-04-25 21:48:33 +0200 x86_64 x86_64 x86_64 GNU/Linux

I had another card which worked (in the same configuration - dual boot), but one day disappeared from both Win and Linux. I purchased
this one and probably made a mistake in the form factor and ended up installing it in a WWAN slot on laptop, instead of the WLAN slot.

I also did the SPROM test suggested by iwfinger (http://forums.opensuse.org/english/get-technical-help-here/wireless/391535-my-wireless-doesnt-work-primer-what-i-should-do-next.html#2) :

SPROM=$(find /sys -name ssb_sprom)

echo $SPROM

cat $SPROM > sprom.older

./ssb-sprom -i sprom.older -P

…]
SPROM(0x084), bfl, Low 16 bits of boardflags = 0x4A01
…]

So seeing the odd number, I tried changing it:

./ssb-sprom -i sprom.older -o sprom.new --bfl 0x4A00

SPROM=$(find /sys -name ssb_sprom)

echo $SPROM

cp sprom.new $SPROM

cp: target `/sys/devices/pci0000:00/0000:00:1e.0/0000:03:00.0/ssb_sprom’ is not a directory

Now I don’t know if this worked and changed the value on the SPROM or not (it shows it as 0x4A00 in ssb-sprom). It resets
to 0xA401 when I reboot.

After this, I also ran /usr/sbin/install_bcm43xx_firmware,
after which for whatever reason the card came alive (I don’t remember whether it was after a boot or not). I could connect through it and use it normally. I then
went to Windows to install it there (which failed even with DELL’s driver stating “the hardware is not there!”) and when I came back the card was gone
in NetWork Manager. I still see the card in the ‘lspci’ output but not ‘iwlist scan’ or ‘iwconfig’.

I have ‘rfkill’ installed and doesn’t show the card, only the Bluetooth card.
When it worked that first time, right before rebooting to windows, I deleted the annonying ‘~/gnome2/keyrings/’ folder, although it has been back since.
I ran collectNWData.sh and it didn’t find anything ‘obvious’
broadcom-wl-kmp-desktop and broadcom-wl packages are installed.

Finally, from b43 - Linux Wireless , this is what the table has to say about my card :
…]
PCI-ID :: Supported :: Chip :: Modes :: PHY version :: Alternative
14e4:432b :: partially in 2.6.39+ :: BCM4322 :: ? :: N (r4) :: wl
…]

I’ll appreciate any guidance/help.
Best[/size]

I provided advice on how to compile the driver from Broadcom for a Dell Laptop in the following thread, if you are interested.

after iwconfig wlan0: no such device

Thank You,

On 06/26/2011 11:36 PM, polypoly wrote:
>
> Hi all,
>
> I got a new Dell wireless card (1510 802.11n) on my laptop which
> already has a Bluetooth card too.
>
> openSUSE doesn’t see the card (well, it did once, now it doesn’t -
> explained below). I followed the instruction in the two stickies in the
> forum and here are the info I have gathered:
>
> # lspci -nnv
> …]
> 0c:00.0 Network controller [0280]: Broadcom Corporation BCM4322
> 802.11a/b/g/n Wireless LAN Controller [14e4:432b] (rev 01)
> Subsystem: Dell Wireless 1510 Wireless-N WLAN Mini-Card [1028:000d]
> Flags: bus master, fast devsel, latency 0, IRQ 18
> Memory at f9ffc000 (64-bit, non-prefetchable) [size=16]
> Capabilities: [40] Power Management version 3
> Capabilities: [58] Vendor Specific Information: Len=78<?>
> Capabilities: [e8] MSI: Enable- Count=1/1 Maskable- 64bit+
> Capabilities: [d0] Express Endpoint, MSI 00
> Capabilities: [100] Advanced Error Reporting
> Capabilities: [13c] Virtual Channel
> Capabilities: [160] Device Serial Number 4f-c3-f9-ff-ff-49-ec-55
> Capabilities: [16c] Power Budgeting<?>
> Kernel driver in use: b43-pci-bridge
>
> # grep -i firmware /var/log/boot.msg
> <4> 8.603908] [Firmware Bug]: Duplicate ACPI video bus devices for
> the same VGA controller, please try module parameter
> "video.allow_duplicates=1"if the current driver doesn’t work.
>
> I gather this does not concern the wireless card right?
> Although I do see somethings on the card in the output of ‘dmesg’
> command :
>
> …]
> 10.389537] wl: module license ‘unspecified’ taints kernel.
> 10.389545] Disabling lock debugging due to kernel taint
> …]
> 9.752760] b43-pci-bridge 0000:0c:00.0: PCI INT A → GSI 18 (level,
> low) → IRQ 18
> 9.752784] b43-pci-bridge 0000:0c:00.0: setting latency timer to 64
> …]
>
> I’m running a fresh install of openSUSE 11.4 on a dual boot WinXP
> system:
> # uname -a
> Linux linux-v32x.site 2.6.37.6-0.5-desktop #1 SMP PREEMPT 2011-04-25
> 21:48:33 +0200 x86_64 x86_64 x86_64 GNU/Linux
>
> I had another card which worked (in the same configuration - dual
> boot), but one day disappeared from both Win and Linux. I purchased
> this one and probably made a mistake in the form factor and ended up
> installing it in a WWAN slot on laptop, instead of the WLAN slot.
>
> I also did the SPROM test suggested by iwfinger
> (http://tinyurl.com/47ukyyh) :
> # SPROM=$(find /sys -name ssb_sprom)
> # echo $SPROM
> # cat $SPROM> sprom.older
> # ./ssb-sprom -i sprom.older -P
> …]
> SPROM(0x084), bfl, Low 16 bits of boardflags = 0x4A01
> …]

Changes to the SPROM were once needed for some old 14e4:4320 (BCM4306) cards
where BlueTooth coexistence needed special treatment, but the SPROM had been
miscoded and did not include that information. All of those cards have been
identified, and b43 now has a special quirk routine to handle them correctly.
Making a change on your recent card would likely kill it.

> So seeing the odd number, I tried changing it:
>
> # ./ssb-sprom -i sprom.older -o sprom.new --bfl 0x4A00
> # SPROM=$(find /sys -name ssb_sprom)
> # echo $SPROM
> # cp sprom.new $SPROM
> cp: target
> `/sys/devices/pci0000:00/0000:00:1e.0/0000:03:00.0/ssb_sprom’ is not a
> directory
>
> Now I don’t know if this worked and changed the value on the SPROM or
> not (it shows it as 0x4A00 in ssb-sprom). It resets
> to 0xA401 when I reboot.

Fortunately for you, your attempt to update the SPROM failed.

> After this, I also ran /usr/sbin/install_bcm43xx_firmware,
> after which for whatever reason the card came alive (I don’t remember
> whether it was after a boot or not). I could connect through it and use
> it normally. I then
> went to Windows to install it there (which failed even with DELL’s
> driver stating “the hardware is not there!”) and when I came back the
> card was gone
> in NetWork Manager. I still see the card in the ‘lspci’ output but not
> ‘iwlist scan’ or ‘iwconfig’.

In Windows, the firmware is compiled into the driver, which is why b43-fwcutter
can extract it. The same is true for wl. The lspci scan only looks at the
hardware. Those other two commands require a driver loaded and working.

> I have ‘rfkill’ installed and doesn’t show the card, only the Bluetooth
> card.

Also requires the driver.

> When it worked that first time, right before rebooting to windows, I
> deleted the annonying ‘~/gnome2/keyrings/’ folder, although it has been
> back since.
> I ran collectNWData.sh and it didn’t find anything ‘obvious’
> broadcom-wl-kmp-desktop and broadcom-wl packages are installed.
>
> Finally, from ‘b43 - Linux Wireless’
> (http://wireless.kernel.org/en/users/Drivers/b43) , this is what the
> table has to say about my card :
> …]
> PCI-ID :: Supported :: Chip :: Modes :: PHY version :: Alternative
> 14e4:432b :: partially in 2.6.39+ :: BCM4322 :: ? :: N (r4) :: wl

My current system shows the following for a partial lspci:

04:00.0 Network controller [0280]: Broadcom Corporation BCM4322 802.11a/b/g/n
Wireless LAN Controller [14e4:432b] (rev 01)
Subsystem: Hewlett-Packard Company Device [103c:137c]
Kernel driver in use: b43-pci-bridge

I trust that looks familiar. This is with a 3.0-rc4 kernel and the device works
fine with b43. The throughput is within a few percent of that obtained with wl,
and the stability is better.

> I’ll appreciate any guidance/help.

One note: Any firmware messages about network devices will not be found in
/var/log/boot.msg. Logging to that file is stopped long before any networking is
started. You need to look in the output of the ‘dmesg’ command.

You have tried so many things with a shotgun approach that you need to
essentially restart.

Your device will not work very well with the b43 driver in kernel 2.6.37, the
standard kernel for openSUSE 11.4. As a result, you need to choose one of two
options. (1) Install the version of the Broadcom wl driver that works with your
kernel, or (2) install the version of compat-wireless for your kernel. In either
case, the driver package will need to be replaced whenever the kernel changes;
however, the build service should be up to date, and the appropriate package
available when the kernel is updated. As a b43 developer (I did the reverse
engineering on this device), I recommend option 2.

When you move to openSUSE 12.1, I suggest that you make certain that the
firmware is installed and use the built-in version of b43. It will “just work”.
In case you do a clean install, I would suggest putting the current contents of
the directory /lib/firmware/b43 on a backup medium. That way you can copy those
files to the new installation and will not need network access to install that
firmware.
[/size]

jdmcdaniel3 & Iwfinger,

Thank you both for the prompt responses. Sorry it took me a week to implement it.

I did as was suggested by Iwfinger : simply downloaded compat-wirless, compiled for my kernel and basically went step-by-step as suggested in Download - Linux Wireless . Reboot, and it worked like a charm! I’m posting using wireless now.

Thanks again for the clear and informative instructions

UPDATE :

ok maybe not that ‘charming’

reboot to windows, back to linux → wireless AND WIRED both dead.
YAST > Network Settings : it said the wireless missed firmware (I have backed up the /lib/firmware/b43 files so I know they are there, along with b43legacy and broadcom-wl-firmware) and I needed to run install_bcm43xx_firmware. For eth0 (wired ethernet) it said firmware is missing and I needed to check dmesg.

did some random things (practically nothing, no connection so no install_bcm43xx_firmware), rebooted → wireless back (as etho!?) and WIRED still dead.

NOW
I have these in dmesg :
556.476348] b44: disagrees about version of symbol ssb_device_is_enabled
556.476363] b44: Unknown symbol ssb_device_is_enabled (err -22)
556.476758] b44: disagrees about version of symbol ssb_pcicore_dev_irqvecs_enable
…]

any many other similar lines.

modprobe b44

FATAL: Error inserting b44 (/lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/net/b44.ko): Invalid argument

I read some posts but couldn’t figure out how to get rid of this (seemingly incompatibility of ssb and the new b43) on openSUSE.

I’m redoing the compat-wireless installation, this time not using driver-select and making the whole package. I’ll install that and see if that solves the problem.
In the meanwhile I’ll appreciate any feedback

Thank you

UPDATE :

yup! that did it. Simply skipped the driver selection step and compiled whatever was in the compat-wireless package I downloaded. Seems it solved the ssb/b44/b43 disagreeing on versions. I have all my connections now.