Acer laptop, Intel 2200BG, wireless "disabled by hardware switch" irrespective of switch position

I have the problem that on my old Acer Travelmate292 the wireless hardware switch has stopped working a couple releases ago. It worked fine in Windows.

BIOS is at the latest version, the switch is indeed in the "on" position, but this is not recognized by Ubuntu.

Earlier it was possible to switch it on in Windows, and reboot to Ubuntu, and it would work, but I have since deleted my Windows installation, so this workaround is not viable anymore.

rfkill list all says hard-blocked yes, soft-blocked no, so rfkill unblock all (as suggested in other similar questions) does not work.

How can I get a functioning wireless back? :-(


Solution 1:

I decided to answer my own question with the solution I found at least, not least because, while there are many similar questions (and answers) around for the Intel 2200BG chip, none concerned the acerhk module and Acer hardware.

The way I solved this is by installing the acerhk module. This Hotkeys module also controls the function of the wireless hardware switch. This module was removed in a previous release (9.10?) which is probably why the hardware switch stopped working in the first place. Even the source package was removed from the standard repositories a while back. Luckily, I found a recent version on Launchpad, including a PPA.

1) Install acerhk-source:

sudo add-apt-repository ppa:cogito-16/ppa

sudo apt-get update

sudo apt-get install acerhk-source

2) Like the README.Debian in usr/share/doc/acerhk-source says, do

sudo module-assistant auto-install acerhk

3) Load the module according to your model in this rfswitch.SF model matrix. For me, this was

sudo modprobe acerhk force_series=290 usedritek=1 verbose=1

sudo echo 1 > /proc/driver/acerhk/wirelessled

This will to everything you need. Your wireless hardware switch should work now.

4) To make this change permanent after reboot, you have to do as explained here:

Create the config file echo 'options acerhk force_series=290 usedritek=1 verbose=1' | sudo tee /etc/modprobe.d/acerhk.conf

Edit /etc/rc.local

echo 1 > /proc/driver/acerhk/wirelessled
exit0

and /etc/modules as root an add an entry for the module

acerhk

When I think this has stumped me for >1 year (I don't use this laptop very often anymore), and I probably wasted 2+ solid days searching for a solution, it was pretty simple in the end. I hope this will help you, too.

NB: You can also get acerhk source from its homepage, but this didn't compile for me with the current kernel - make just sat there and did nothing, probably the reason why it got kicked out of the standard repos.