Broadcom 4322 Wifi

Hi there

I have just started with Linux after years with another well known system and so far like it.

I have only one problem - my wifi card (Broadcom 4322 a/b/g/n dual band) is not recognized. I have looked through the wiki and forums and seen a lot about connecting with Broadcom wifi cards but I understand very little of it.

Can someone please explain in simple terms that someone completely new to Opensuse and Linux can understand how to get my wifi working?

Thanks in advance for any help and advice.

Hi Greenpalmer,

On 29/03/14 12:56, Greenpalmer wrote:
>
> Hi there
>
> I have just started with Linux after years with another well known
> system and so far like it.
>
> I have only one problem - my wifi card (Broadcom 4322 a/b/g/n dual band)
> is not recognized. I have looked through the wiki and forums and seen a
> lot about connecting with Broadcom wifi cards but I understand very
> little of it.
>
> Can someone please explain in simple terms that someone completely new
> to Opensuse and Linux can understand how to get my wifi working?
>
> Thanks in advance for any help and advice.
>
>
Here are two suggestions. Try method #1 first, then method #2 if #1
doesn’t solve your problem.

Method #1:
a) Enable the Packman repository if you haven’t already.
b) Install broadcom-wl-kmp-<your-flavour-of-kernel>. You can find out
your kernel flavour (default, desktop, pae, etc) by issuing the command
‘uname -r’ at a command prompt. You will probably also need the package
broadcom-wl.
c) Reboot your computer. If your wifi doesn’t come up, try method #2

Method #2:

Click on this link http://www.broadcom.com/support/802.11/linux_sta.php
or copy’n’paste it into your browser address bar.

Download the relevant 32 or 64 bit driver package from that site, as
well as the README.txt file, which contains explicit instructions on
how to install the kernel module.

It looks scary, but the instructions in the Readme.txt file are very
clear. You may need to download (use Yast again) the kernel-devel
package to allow the building of kernel modules.

In my case, I also had to blacklist all the other broadcom drivers that
had been installed in method #1, but this is all explained in the Readme
file.

Good luck.

Bob

Thanks for the reply.

As I said I know nothing about Linux so I have to ask the following questions:

  1. How do I “enable the Packman repository”? I don’t even know what a Packman repository is!

  2. How do I perform the install referred to?

Sorry to be so unknowing. With Windows I am among the gurus, but here I am a stranger in a strange land, but very keen to learn.

Thanks for the help.

On 29/03/14 14:56, Greenpalmer wrote:
>
> Thanks for the reply.
>
> As I said I know nothing about Linux so I have to ask the following
> questions:
>
> 1. How do I “enable the Packman repository”? I don’t even know what a
> Packman repository is!
>
Repositories are collections of software packages maintained by Linux
system distributions (openSUSE, Redhat, Ubuntu, Gentoo, Debian, Arch
etc.) and other third party providers. As you have installed openSUSE,
you will almost certainly be subscribed to the following 3 repositories:

download.opensuse.org/update/13.1/
download.opensuse.org/distribution/13.1/repo/oss/
download.opensuse.org/distribution/13.1/repo/non-oss/

This happens automatically during the installation.
The broadcom packages are not contained in any of those repositories, so
we have to enable another repository called Packman. (There are other
reasons to do this related to multimedia, but that is not the topic of
this thread.)

To enable Packman, you need to use a tool called YaST (an acronym for
Yet Another Setup Tool), which is the Control Centre of your openSUSE
system. You will find the link to YaST under the System menu. It will
ask you to enter your root password before it will let you play.

Once you’ve got YaST up and running, look in Software and click on
Software Repositories.

Click on Add (lower left corner)
Select Community Repositories (second item in the list), and click Next.
Find Packman in the list of repositories, select it and click OK.
Accept all the options offered, until you are back at Configured
Software Repositories screen.
Click Cancel to get back to the YaST Control Centre.

> 2. How do I perform the install referred to?
>
Now click on Software Management. You may be asked to accept a GPG key
for the Packman repositories, say Yes.

You can now type broadcom into the Search box, and select the two
packages mentioned earlier. YaST may automatically add other packages
(it’s quite clever).
Click Accept to install the packages.

You may have to reboot for the drivers to be recognised.

> Sorry to be so unknowing. With Windows I am among the gurus, but here I
> am a stranger in a strange land, but very keen to learn.
>
No problem. Once you’ve got used to the linux way of doing things, I
think you’ll prefer it to Windows.

> Thanks for the help.
>
You’re welcome.

Bob

Hi Bob,

Thank you so much for your very helpful and gracious last post.

I have now tried your method#1 which thanks to your clear and accurate instructions I was able to carry out. Unfortunately it didn’t work but I have learnt about Yast and software repositories which is valuable.

So I started on method#2 and downloaded the package, then looked at the readme with the instructions and I’m afraid I cannot understand what on earth it is saying, it is complete double dutch to me and I can’t even begin to do what it says as it assumes a level of knowledge which I don’t have.

I must say that this has been a very instructive experience.

As I said in my last post I do regard myself as a Windows guru - I work as a consultant on Windows based systems - and now I can see how some of the people I deal with must feel when something is blindingly obvious to me but completely incomprehensible to them. I will now be much more patient and understanding.

And how exactly did it not work?
You need to install the package “broadcom-wl” and one of the “broadcom-wl-kmp-xxx” packages, depending on which kernel you use (f.e. “broadcom-wl-kmp-desktop” for kernel-desktop).
You can find out which kernel you use f.e. by typing “uname -a” in a terminal window (konsole f.e.).

And please post the output of this command:

lspci -nnk

Apparently there is one specific BCM 4322 device that is NOT supported at all in Linux.

But since you mentioned “a/b/g/n” in your first post, it should have the PCI id “14e4:432b”, which should work…http://wireless.kernel.org/en/users/Drivers/b43?highlight=(bcm4322)

"And how exactly did it not work?

You need to install the package “broadcom-wl” and one of the “broadcom-wl-kmp-xxx” packages"

I did exactly that and they seemed to install successfully - I did not get any error messages. But when I rebooted I still
had no wifi connection.

Here is the (relevant) output from the lspci-nnk command:

03:03.0 Network controller [0280]: Broadcom Corporation BCM43222 Wireless Network Adapter [14e4:4350]
Subsystem: Broadcom Corporation Device [14e4:04d2]
Kernel driver in use: b43-pci-bridge
Kernel modules: ssb, wl

Looking at the table in the link above my wireless card is not in the list!

Yes it is:


14e4:4350 yes BCM43222  ?   N (r6) 


So you don’t have a BCM4322, but rather a BCM43222, which is NOT supported by the wl driver.
But according to the table, it should be supported by the “b43” driver shipped with the kernel.
This one needs additional firmware though, which cannot be included because of license issues.

Please uninstall “broadcom-wl” (this is important, as it blocks the “b43” driver) and “broadcom-wl-kmp-xxx” again.
Install “b43-firmware” instead, also available from Packman.
Your wireless should hopefully work then after a reboot.

Hi wolfi323

You are right - I was looking for 14e4:04d2 in the table.

In between my last post and this one I was searching on the net for 14e4:04d2 and there is a discussion saying that the only way to get the card working under Linux was using something called Ndiswrapper, with instructions that I have copied.

Anyway, I will try what you have suggested but not until tomorrow as it’s late here now.

Thanks a lot for your help.

You should not need Ndiswrapper that is old tech and should not be need anymore. always try to check the date of random instruction you find on the web since thing change fast in Linux things go out of date fast

On 03/30/2014 08:06 PM, gogalthorp wrote:
>
> You should not need Ndiswrapper that is old tech and should not be need
> anymore. always try to check the date of random instruction you find on
> the web since thing change fast in Linux things go out of date fast

For the record, ndiswrapper is the method needed to use a Windows driver with
Linux. That implies letting code that none of us has ever seen get unfettered
access to the kernel data structures. When they mess up, that causes the Blue
Screens of Death that have been quite prevalent in Windows. For that reason, we
suggest that ndiswrapper be used only as a last resort. As one of the developers
of b43, I know it is better than that.

Now I have uninstalled the broadcom-wl drivers and installed the b43 firmware but unfortunately nothing has changed - the wlan card is still not found.

On 03/31/2014 04:36 AM, Greenpalmer wrote:
>
> Now I have uninstalled the broadcom-wl drivers and installed the b43
> firmware but unfortunately nothing has changed - the wlan card is still
> not found.

What command did you use to install the b43 firmware?

How did you test for a wlan card? It is probably not called wlan0.

Does ‘lsmod | grep b43’ produce any output? If not, check the files in
/etc/modprobe.d/ for any blacklisting of bcma, ssb, or b43. Next try


sudo /sbin/modprobe -v b43

Do you now have any wireless devices found with ‘/etc/sbin/iwconfig’?

Finally check the output of dmesg for any errors.

I installed the b43 firmware using Yast, as was explained to me above.

In the Manage Connections box the Wireless tab is greyed out i.e. no wireless connections.

The ‘lsmod | grep b43’ command produces the following output:

mac80211 560282 1 b43
cfg80211 456679 2 b43,mac80211
bcma 45062 1 b43
ssb 65183 2 b43,b44
mmc_core 114867 4 b43,sdhci_pci,sdhci,ssb
pcmcia 55367 2 b43,ssb

After running the command ‘sudo /sbin/modprobe -v b43’ the command ‘/etc/sbin/iwconfig’ produces an error message: No such file or directory.

I don’t know how to check the output of dmesg for any errors - I’ve only been using Linux for a couple of days.

On 03/31/2014 01:26 PM, Greenpalmer wrote:
>
> I installed the b43 firmware using Yast, as was explained to me above.
>
> In the Manage Connections box the Wireless tab is greyed out i.e. no
> wireless connections.
>
> The ‘lsmod | grep b43’ command produces the following output:
>
> mac80211 560282 1 b43
> cfg80211 456679 2 b43,mac80211
> bcma 45062 1 b43
> ssb 65183 2 b43,b44
> mmc_core 114867 4 b43,sdhci_pci,sdhci,ssb
> pcmcia 55367 2 b43,ssb
>
> After running the command ‘sudo /sbin/modprobe -v b43’ the command
> ‘/etc/sbin/iwconfig’ produces an error message: No such file or
> directory.
>
> I don’t know how to check the output of dmesg for any errors - I’ve only
> been using Linux for a couple of days.

The command to use is ‘dmesg | less’. That gets you one page at a time. Use ‘man
less’ to learn how to use less.

I made a type’ It should have been ‘/usr/sbin/iwconfig’, but I know that would
have yielded nothing, as I now know what is the problem.

You cannot install firmware for b43 with YaST. The lawyers at Broadcom refuse to
let anyone redistribute the firmware for their devices. To overcome that
problem, a utility named b43-fwcutter has been created to extract the firmware
from one of the drivers that Broadcom must allow to be redistributed to satisfy
the requirements of the GPL. If they did not do that, Linus Torvalds could sue
them and block their usage of Linux in every router.

To actually install the firmware, you need to execute a special command as follows:


sudo /usr/sbin/install_bcm43xx_firmware

Before you run that command, you must have an Internet connection as that script
will download one of those special Broadcom drivers, and use b43-fwcutter to
extract the firmware into the proper directory. After that is done, it unloads
and reloads driver b43. Once that happens, you should have a wireless device.

I ran ‘sudo /usr/sbin/install_bcm43xx_firmware’ and it all seemed to be going well - plenty of output - extracting, installing, etc. Then it said b43 firmware installed successfully and the whole system froze.

After waiting a bit I had to power off to get out of it and when I restarted everything is the same as before - no wifi.

Yes, you can.
There is the package “b43-firmware” on Packman.

@Greenpalmer: Did you really install “b43-firmware”? AFAIK this should work as well.
Maybe you installed something else by mistake? (there’s also “b43legacy-firmware” f.e.)

But anyway, /usr/sbin/install_bcm43xx_firmware should woprk as well of course.

Hm. I’ve heard of problems with b43 freezing when “kernel-firmware” is not installed.
So try to install that as well if it isn’t already.

After waiting a bit I had to power off to get out of it and when I restarted everything is the same as before - no wifi.

One thing to check is also if NetworkManager is enabled in YaST->Network Settings->Network Devices->Global Options.
If not, you won’t see any network in the desktop’s networkmanagement applet (and its “Manage Connections”).

On 03/31/2014 05:06 PM, wolfi323 wrote:
>
> lwfinger;2634229 Wrote:
>> You cannot install firmware for b43 with YaST.
> Yes, you can.
> There is the package “b43-firmware” on Packman.
>
> @Greenpalmer: Did you really install “b43-firmware”? AFAIK this should
> work as well.
> Maybe you installed something else by mistake? (there’s also
> “b43legacy-firmware” f.e.)
>
> But anyway, /usr/sbin/install_bcm43xx_firmware should woprk as well of
> course.
>
> Greenpalmer;2634252 Wrote:
>> I ran ‘sudo /usr/sbin/install_bcm43xx_firmware’ and it all seemed to be
>> going well - plenty of output - extracting, installing, etc. Then it
>> said b43 firmware installed successfully and the whole system froze.
> Hm. I’ve heard of problems with b43 freezing when “kernel-firmware” is
> not installed.
> So try to install that as well if it isn’t already.

Kernel firmware has NOTHING to do with the problem.
>
>> After waiting a bit I had to power off to get out of it and when I
>> restarted everything is the same as before - no wifi.
> One thing to check is also if NetworkManager is enabled in YaST->Network
> Settings->Network Devices->Global Options.
> If not, you won’t see any network in the desktop’s networkmanagement
> applet (and its “Manage Connections”).

There was a bug in the kernel that caused this problem, but that was fixed a
long time ago. Apparently you are using an old kernel, or openSUSE has not
applied the requisite patch.

Do the following:


su -
echo "backlist b43" > /etc/modprobe.d/50-b43.conf

At this point reboot. After the system restarts, you should be able to run the
install_bcm43xx_firmware script. When it finishes, you should have no freeze and
your wireless device should exist. If it does, then


sudo rm /etc/modprobe.d/50-b43.conf

I do know that b43 doesn’t need kernel-firmware (and that the b43 firmware is not contained in kernel-firmware).
But there are several reports here in the forums that b43 can freeze when kernel-firmware is not installed (especially during installation).
Installing kernel-firmware seems to fix this.

I don’t know how this is related, but installing kernel-firmware should at least do no harm.

Do the following:

su -
echo “backlist b43” > /etc/modprobe.d/50-b43.conf

At this point reboot. After the system restarts, you should be able to run the
install_bcm43xx_firmware script. When it finishes, you should have no freeze and
your wireless device should exist. If it does, then

sudo rm /etc/modprobe.d/50-b43.conf

Adding “brokenmodules=b43” to the boot options should help as well then, I guess.

Hi lwfinger - success!

As per your instructions I ran

su -
echo “backlist b43” > /etc/modprobe.d/50-b43.conf

Fortunately I spotted the typo and ran “blacklist” rather than “backlist”!

I then rebooted and ran the install_bcm43xx_firmware script and sure enough wireless sprang into life.

I then ran your last command sudo rm /etc/modprobe.d/50-b43.conf, rebooted and all is well.

I noticed that I don’t have 5ghz band and can only connect as wireless-g, not wireless-n, therefore wheras with Windows I connect at 300mbps and get over 100mbps download speed according to speedtest I am now connecting at around 36mbps and getting about 12mbps download speed but for most purposes that is perfectly sufficient and I am very grateful.

Many thanks for all your time and trouble!