I just spent ages fixing a problem when I upgraded the kernel to version 2.6.24
To get wifi working on this laptop I use the following packages:
- acer_acpi : Provides access to the special keys, one of which turns wifi on or off.
- madwifi-ng : The kernel driver for the wifi network hardware.
With the previous version of kernel 2.6.23 this was working fine, apart from the wifi light switched off during the boot, but if I pressed it at the right time, it would all work fine.
With 2.6.24 several problems occured:
Firstly, the gentoo stable madwifi-ng and acer_acpi packages no longer compiled. After some false starts, I found the easiest way to get around this was to use the unstable versions. This is not so drastic as it sounds. One of the problems with gentoo is that less used packages take a long time for new versions to get into gentoo as masked or unstable and even longer to move from unstable to stable. As a result stable versions are often very old, and even the unstable can be several versions behind the author’s stable version. In this case, I found that acer_acpi has gone through a lot of versions. The latest stable in gentoo was 0.5, but the latest unstable is 0.10. The actual latest stable version at code.google.com/p/aceracpi/ is 0.11.2. However I didn’t feel in the mood to make my own portage overlay ebuild or build from source and lose the advantage of gentoos package management, so stuck with 0.10
Secondly, The madwifi-ng module (ath_pci) started giving errors during startup something like:
wifi%d: unable to attach hardware: ‘Hardware revision not supported’ (HAL status 13)
After a lot of googling and documentation reading, I found it does this if ath_pci is loaded whilst the wifi is disabled. It is enabled by pressing the wifi button, or can be done automatically with:
echo 1 > /sys/devices/platform/acer_acpi/wireless
However the new version of the kernel was automatically loading both acer_acpi and ath_pci automatically (from udev?) with no opportunity for me to run any scripts in between. So all the examples and tips I had read about the above echo command were useless. I wasted a lot of time trying to do things like ‘rmmod ath_pci; modprobe ath_pci’ in various config files and scripts, but it was all messy and didn’t work.
Finally I found a very simple solution… acer_acpi takes parameters during a modprobe such that
modprobe acer_acpi wireless=1
will automatically turn the wifi on while the module is loaded.
Unfortunately this was not the complete answer as udev was loading the modules before anything else, even the modules in /etc/modules.autoload/kernel-2.6 were being read afterwards.
Reading more about modprobe, I found the solution to all my problems was simply to create a file /etc/modprobe.d/acer_acpi containing:
options acer_acpi wireless=1
Then run:
update-modules
Now my machine boots up perfectly starting up the wifi without any intervention from me.
By the way, here is another tip, for if you want it to use ethernet when a cable is connected (because it is faster), and wifi when available is to emerge ethtool and add the following into /etc/conf.d/net
preup() {
# Test for link on the interface prior to bringing it up. This
# only works on some network adapters and requires the ethtool
# package to be installed.
if ethtool “${IFACE}” | grep -q ‘Link detected: no’; then
ewarn “No link on ${IFACE}, aborting configuration”
return 1
fi# Remember to return 0 on success
return 0
}
Hi,
I have the same problem only I’m using openSuse 11.0.
I followed your advice and created a file /etc/modprobe.d/acer_acpi containing:
options acer_acpi wireless=1
Then ran:
update-modules
unfortunately update-modules doesnt work on suse.
Will it still work? Is there some other alternative to update-modules?