In my previous post related to the Broadcom WiFi adapters, I have explained a way how to fix the WPA on Ubuntu Lucid Lynx. In reaction to the post I have received many responses from users, many positive, but also negative. I have tried to explore the issue deeply and then I found more pieces of information. This post will summarize new info about the problem and maybe offer more general solution.
The main problem with my previous fix described in the post HowTo Fix Broadcom WiFi Adapter WPA Network Access on Ubuntu 10.04 Lucid Lynx was that it works only on x64 related systems, and additionally not for all Broadcom adapters.
On x386 platform the old driver cannot be compiled correctly due missing #include statement in the source code.I have modified my post and provide own package with correct fix for the issue. This new package can be compiled clearly on x386 platform, but the compiled driver doesn’t solve the WPA issue on the platform.
Due this I tried to create my own new driver package from Broadcom sources available on the Broadcom site.
The idea was that other distributions are not affected by the WPA issue, then problem have to be in Ubuntu, and I could check if the problem is directly inside the original bcmwl-kernel-source 22.214.171.124 Ubuntu package. Due this process I have discovered that problem can be in improper kernel modules loaded -> I didn’t expect that Ubuntu developers will missed this important info from Broadcom sources documentation:
If you have loaded ssb or b43 modules in your kernel, then 5.60 driver will not works correctly.
This sentence gives to me new point of view to the problem and I tried to verify this fact. Finally, I have been successful and in those days I’m able to connect by WPA correctly with the LATEST drivers bcmwl-kernel-source 126.96.36.199 from my Laptop where i Used the old driver before.
So, at first is necessary to verify, if the bcmwl-kernel-source 188.8.131.52 driver supports your piece of hardware. To do this please use those steps:
In the cosole, please type:
sudo lspci -n | grep 14e4
It will check the PCI bus to Broadcom vendor hardware presence (The Broadcom vendor ID is 14e4). In my case I get result:
0c:00.0 0280: 14e4:432b (rev 01)
For our verification is important the next value after the colon, in my case 432b
Next table contains list of device IDs supported by the driver:
BRCM PCI PCI Dell
Product Name Vendor ID Device ID Product ID
------------- ---------- --------- -----------
4311 2.4 Ghz 0x14e4 0x4311 Dell 1390
4311 Dualband 0x14e4 0x4312 Dell 1490
4311 5 Ghz 0x14e4 0x4313
4312 2.4 Ghz 0x14e4 0x4315 Dell 1395
4313 2.4 Ghz 0x14e4 0x4727 Dell 1501
4321 Dualband 0x14e4 0x4328 Dell 1505
4321 Dualband 0x14e4 0x4328 Dell 1500
4321 2.4 Ghz 0x14e4 0x4329
4321 5 Ghz 0x14e4 0x432a
4322 Dualband 0x14e4 0x432b Dell 1510
4322 2.4 Ghz 0x14e4 0x432c
4322 5 Ghz 0x14e4 0x432d
43224 Dualband 0x14e4 0x4353 Dell 1520
43225 2.4 Ghz 0x14e4 0x4357
If you will find your value in the table, then driver officially supports your hardware. If not, result of use the driver is unclear. In my case the value 432b is in the table and means the Dell 1510 card (you have strip the 0x prefix from the DeviceID to compare table values).
Based on the previous check result and your decision, you can continue with next steps to try fix your WPA problem.
At first please remove any of my Broadcom driver packages or old Ubuntu Broadcom driver packages (use apt-get or Synaptic to do that) and reboot computer.
After the reboot install the latest Ubuntu bcmwl-kernel-source 184.108.40.206 package by Synaptic or apt-get and reboot again.
Now check the wrong modules presence on your Ubuntu system by this console command:
lsmod | grep "b43|ssb|wl"
If you will find any of those modules in memory, you have to remove them by those commands:
sudo rmmod b43
sudo rmmod ssb
sudo rmmod wl
Now, we have clean playground to finalize working WPA solution. The wl.ko driver module needs additional modules to load into the kernel space. To do that, use this command:
sudo modprobe ieee80211_crypt_tkip
If this command will be unsuccessful, then we have to try different module with same necessary functionality:
sudo modprobe lib80211
But on my Ubuntu Lucid or Maverick, the ieee80211_crypt_tkip module is right way.
Finally, we have to insert the wl.ko driver module to the Linux kernel by command:
sudo modprobe wl
Alternative command can be this:
sudo insmod wl.ko
Now we can check improper modules presence in the kernel space again:
lsmod | grep "b43|ssb|wl"
If only the wl module is loaded now, the wireless can be functional after several seconds.
Ok, if all went by right way, now you have functional WiFi connection. To make the fix permanent, we have to blacklist unwanted modules to force the Ubuntu system to forbid loading them again during hardware detection process. To do that, use those commands:
echo "blacklist ssb" | sudo tee -a /etc/modprobe.d/blacklist.conf
echo "blacklist b43" | sudo tee -a /etc/modprobe.d/blacklist.conf
Now you can reboot your system and check if only expected module wl.ko is loaded:
lsmod | grep "b43|ssb|wl"
If you get result wl only and WiFi connection works well, you have fixed your Ubuntu to access wireless networks clearly.
If the wl module is not loaded after reboot, you can force it to load by this command:
echo wl | sudo tee -a /etc/modules
It forces the wl driver module to load after system reboot.
I’ll be happy if you let me know result of the fix on your system by comment or e-mail. Happy networking.