Fixing the WiFi on Acer 5100

One downfall of linux is the newest, latest greatest, or off the beaten track hardware tends not to run out of the box. Such is the case with the acer aspire 5100 wireless atheros card. To get it working with ubuntu in perticular 7.04 go throught the following steps

Download the ndiswrapper-1.48.tar.gz and files

Extract both files and you should have two folders ndiswrapper-1.48 and windows_driver

From a console type
sudo apt-get install build-essential to install the needed programs to compile everything

sudo echo ath_pci >> /etc/modprobe.d/blacklist to remove the old wifi modules
sudo echo ath_hal >> /etc/modprobe.d/blacklist and stop them from loading
sudo echo wlan >> /etc/modprobe.d/blacklist

Edit the file /boot/grub/menu.lst with your favorite text editor and near the end of the file you will find several lines that start with the word "kernel" at the end of each of those lines you need to type pci=assign-busses

A sample of a line in the file is just below to go by kernel version and some other info may be different in your case

Install your kernel headers. Since you may have upgraded your kernel I cant give you the the exact file to download, but I can help you figgure it out. In a terminal type in

uname -a
And you will probably get a result similiar to
Linux davinci-laptop 2.6.20-16-generic .........
the 2.6.20-16-generic in the output is the kernel version so we can use this to help narrow down which file you need to install to get your kernel headers type in

apt-cache search linux | grep header | grep 2.6.20-16-generic replace the 2.6.20-16-generic with what you get from the output of uname -a

The output of the above command should give you one file as output for example when I ran that command I got
linux-headers-2.6.20-16-generic - Linux kernel headers for version 2.6.20 on x86/x86_64

The portion of the output on the left is the file name you install using the command
sudo apt-get install linux-headers-2.6.20-16-generic

Once the kernel headers are installed ok we can move on to installing the new driver. Go into the ndiswrapepr directory you extrated from before using a terminal and then type the command
sudo make; sudo make install to compile and install it

Now in the same terminal window go into folder windows drivers/Drivers/XP-x64 and type in the command
sudo ndiswrapper -i net5211.inf


Upon reboot go into a terminal and type
lsmod | grep ath

If you get any output from that command the old modules are still loading and you have to type
sudo rmmod ath_pci
sudo rmmod ath_hal
sudo rmmod wlan

try the lsmod | grep ath command again and make sure you get no output once that is confirmed type in
sudo modprobe ndiswrapper

This will load the new driver. You can confirm the wireless card is up and running by running the following commands


Both commands should show all your network interfaces and in the list there should be a wlan, wlan0 or something similiar. Configure your wireless network card like you would any other using system->administration->network tool. Once up and running and you know it works good (I done it first try) you can add the new ndiswrapper and have it automatically load upon start up. Otherwise you will have to type "sudo modprobe ndiswrapper" every time you want to use it. You can do so by typing

sudo echo ndiswrapper >> /etc/modules

You should now be up and running for every boot up. If upon reboot it doesnt work, redo the lsmod | grep ath command to make sure the old driver is still stopped from loading. Making sure all 3 modules...ath_pci ath_hal wlan are all entered into the /etc/modprobe.d/blacklist file

I didnt have too too much troubles but i found sometimes the blacklist file didnt stop the old modules from loading. To help this I created a little shell script on the desktop that I double click when I want the wireless activated. In that file I have

This script has to be run as root

A lot of frigging around but it appears to be the only working solution to getting the wireless card up and running until a better one gets implemented into the next version of the kernel