Had this wifi issue where my error was “wireless is disabled by hardware switch”. In my HP dv6, F12 is the wifi hardware switch. I pressed the switch F12 with no effect. There was nothing in the bios to fix as well. Stumbled across this link, and it worked like a charm.
$ lspci -vvnn | grep 14e4 0a:00.0 Network controller : Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller [14e4:4727] (rev 01) $ sudo apt-get install bcmwl-kernel-source $ sudo modprobe -r b43 ssb wl $ sudo modprobe wl
Now my F12 switch works as intended. Here is the link for kernel supported broadcom wireless driver
The reason for the upgrade ? Why 3.4 ? I use Nvidia 630M optimus chipset, and I found frequent freeze of the X windowing system. If you find such hang/freeze, then ditch 3.2 kernel and move on to 3.4 kernel. The 3.2 consumes more power, lots of heat (when you work from home, no air con) you can really feel it. I was forced to upgrade to the 3.4 ubuntu kernel using this process. After the upgrade the wireless failed to work. I noticed an error as follows :
CC [M] /var/lib/dkms/bcmwl/18.104.22.168+bdcom/build/src/wl/sys/wl_linux.o /var/lib/dkms/bcmwl/22.214.171.124+bdcom/build/src/wl/sys/wl_linux.c:43:24: fatal error: asm/system.h: No such file or directory.
To fix the above problem, follow the link here
Download the patched bcmwl* deb, and install it. After you install it, verify the following.
$ cat /etc/modprobe.d/blacklist.conf # replaced by b43 and ssb. blacklist bcm43xx blacklist ssb blacklist b43legacy blacklist bcma blacklist brcmsmac blacklist mac80211 blacklist cfg80211 blacklist brcmutil
The brcmsmac is an opensource equivalent for broadcom 4313 wl driver. I couldn’t get it to work using the 3.4 kernel. brcmsmac kernel module uses bcma, mac80211, cfg80211, brcmutil. (When you do a lsmod you’ll see that). So if you don’t want to use brcmsmac, then blacklist all of these..bcma, mac80211, cfg80211, brcmutil. Now verify to see what is the loaded kernel driver in use. as bcma comes part of the 3.4 kernel, it will be listed in kernel modules. and this is fine. Make sure that the bcma modules as shown above are blacklisted.
$ sudo lsmod | grep "b43\|ssb\|bcma\|wl" wl 2573568 lib80211 14381 2 lib80211_crypt_tkip,wl $ lspci -vv | grep -i "bcm\|brcmsmac\|wl" 0a:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless L$ Subsystem: Hewlett-Packard Company Device 1795 Kernel driver in use: wl Kernel modules: wl, bcma Subsystem: Hewlett-Packard Company Device 1818
In the 3.4 Kernel HP DV6 – 7010TX, I did find that even though you have everything done like above, disabling bluetooth, disables wireless as well. Duh !. after beating black and blue and looking at logs for several hours I found that if you still have problems saying “wireless is disabled by hardware switch“, try turning off/on your bluetooth thingy works.
The 3.8 ubuntu kernel has the latest drivers for the nouveau (NVIDIA GEFORCE 630M). That is the reason to upgrade to 3.8. Also the power consumption is lower. With frequent power outages here, if your batteries can travel an extra mile, who wouldn’t want that. This article has all the 3.8 features. I upgraded my 12.04 to 3.8 kernel using this process. I forgot to remove my old bcmwl-kernel-source (broadcom 4313 driver). This resulted in an error, and my wireless didn’t work. I scratched my head again 🙂 I logged in back, and decided to give the opensource bcma driver a try. But I already had it blacklisted. So here is what I did. Essentially it removes the “Broadcom’s properitary driver wl/brcmsmac” and installs the opensource bcma driver.
$ modprobe -r brcmsmac $ modprobe bcma
Wow – Guess what, it works like a charm. But apparently the hardware switch (F12) in my case doesn’t turn the wireless on/off. The connection strength fluctuates which results in speedtest providing lower bandwidth at times.
I couldn’t stop here, I went ahead and upgraded my system to 12.10 and now to 13.04. The usual
$ sudo update-manager -d
I was curious to see if the broadcom properitary driver provided better results in 13.04. I did the following. The below works good in 12.10 (quantal), 13.04(raring)
$ sudo apt-get remove bcmwl-kernel-source $ sudo apt-get purge bcmwl-kernel-source $ sudo apt-get autoremove
Right now my /etc/modprobe.d/blacklist.conf has the following.
# replaced by b43 and ssb. blacklist bcm43xx blacklist ssb blacklist b43legacy #bcma uses mac80211, cfg80211, brcmutil #let us use the opensource driver.hence blacklist brcmsmac #blacklist bcma #blacklist mac80211 #blacklist cfg80211 #blacklist brcmutil #we arenot going to use the properietary wl. hence blacklist brcmsmac blacklist brcmsmac
# replaced by b43 and ssb. blacklist bcm43xx blacklist ssb blacklist b43legacy blacklist bcma blacklist brcmsmac blacklist mac80211 blacklist cfg80211 blacklist brcmutil
Rebooted, it work great.