Linux WiFi on the Acer Aspire 3023 WLMi


Introduction

This page has come about because out of all the hardware on the Acer Aspire 3023 WLMi, the Broadcom WiFi card (BCM4318) is the most problematic yet indispensible to configure.

Part of the problem is the perennial lack of Linux support from hardware vendors. In general, the less supportive they are, the more difficult it is to get hardware going under Linux.

By way of disclaimer: I'm no programmer. I just learned how to make WiFi go in my notebook using tools that already existed. There's a lot of variation in support between kernel versions and distributions. I'm using Ubuntu Gutsy (Beta) now having moved away from Fedora Core 4. Support for WiFi has improved tremendously in the last 2 years, and it is easier than ever to get bcm43xx working.

The card sits under the small panel with 2 screws in the bottom of the notebook. Two leads (black and grey) connect to the aerial, which goes up behind the LCD monitor.

lspci reports the card as:

0000:06:05.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)
        Subsystem: AMBIT Microsystem Corp. Aspire 3022WLMi
        Flags: bus master, fast devsel, latency 64, IRQ 177
        Memory at c0204000 (32-bit, non-prefetchable) [size=8K]

You will need to be familiar with the following sites to get your card going:

At the moment I'm using the bcm43xx driver in preference to NDIS Wrapper. While NDIS Wrapper works well, and bcm43xx has incomplete support for the BCM4318, I feel that a kernel driver is the better way forward. The more that we use it, the better it will become.

Both Fedora and Ubuntu include the bcm43xx driver in their default RPM and DEB kernel packages. You can also get the driver by compiling your own kernel (since 2.6.16), if you use a distro like Slackware for example. If you do this you must compile bcm43xx as a module.

The choice is yours. Since NDIS Wrapper is really well documented, I won't repeat the instructions here. What I will stress, is that you must use acer_acpi or acerhk. The card will not turn on otherwise.

If you find these instructions useful, or if you have something to add, please email me.

Andrew Henry's Instructions

Andrew Henry has a great set of instructions for getting bcm4318 to play very nicely indeed with Ubuntu Dapper, which he has kindly allowed me to reproduce here. They supersede my old instructions, which I have left here for something inbetween posterity, redundancy and confusion. A few modifications are required in order to get Andrew's instructions to work on Gutsy though.

I could not find a guide for this anywhere so I wrote my own.
It's very quick to implement and is an elegant solution as upgrades
should not break this and there is minimal scripting involved.

This was tested on an Acer Aspire 5021WLMi.

Pre-requisites:

clean install of Ubuntu 6.06.1 amd64, but arch. shouldn't matter.

Install all updates as of 2006-10-20 (again; shouldn't matter)
[Or, Gutsy with all updates applied]

A working wired ethernet connection

Broadcom AirForce54g 4318 (rev 02) adapter.

The universe repository must be enabled.

Open a Terminal and paste in the following commands (ignore comments)…

echo 'deb http://ubuntu.cafuego.net dapper-cafuego bcm43xx' | sudo tee -a /etc/apt/sources.list

wget http://ubuntu.cafuego.net/969F3F57.gpg -O- | sudo apt-key add -

sudo apt-get update

sudo apt-get install bcm43xx-fwcutter bcm43xx-firmware

echo 'blacklist ndiswrapper' | sudo tee -a /etc/modprobe.d/blacklist

echo 'ENABLED=0' | sudo tee -a /etc/default/wpasupplicant

sudo mv /etc/network/interfaces /etc/network/interfaces~

echo 'auto lo' | sudo tee -a /etc/network/interfaces

echo 'iface lo inet loopback' | sudo tee -a /etc/network/interfaces

## ******************** ONLY FOR ACER USERS ********************
#install acer_acpi to turn on wireless adapter through software
#this is the only package that will be manually installed
#as it will be compiled, it works on 32-bit and 64-bit systems whereas acerhk
#only works on 32-bit systems AFAIK
#when upgrading kernel, make sure to re-compile and re-install acer_acpi in the new kernel

wget http://aceracpi.googlecode.com/files/acer_acpi-0.9.1.tar.bz2

tar -xvf acer_acpi-0.9.1.tar.bz2

cd acer_acpi-0.9.1

sudo apt-get install build-essential linux-kernel-headers linux-headers-$arch linux-headers-`uname -r`

make

sudo make install

echo 'acer_acpi' | sudo tee -a /etc/modules

echo 'pre-up /etc/network/StartAcerWireless' | sudo tee -a /etc/network/interfaces

sudo touch /etc/network/StartAcerWireless

echo 'chmod 777 /proc/acpi/acer/wireless' | sudo tee -a /etc/network/StartAcerWireless

echo 'echo 1 > /proc/acpi/acer/wireless' | sudo tee -a /etc/network/StartAcerWireless
[Note: Old versions required you to echo "enabled: 1" not 1]
[Note: If permission is denied to sudo, su to root and execute]

echo 'iwconfig eth1 ap any' | sudo tee -a /etc/network/StartAcerWireless

If your loopback (lo, 127.0.0.1) stops working, try substituting eth0 for eth1 in the previous line.

sudo chmod 754 /etc/network/StartAcerWireless

## ************************************************************

Start GDM and from the menu, go to System|Preferences|Sessions|Startup Programs, click the Add button and write in:

nm-applet –sm-disable

reboot PC

When rebooted, left-click on nm-applet and choose to “connect to other
wireless network” even if your AP is visible.  Write in the SSID,
choose WEP or WPA and enter the password.  Upon connecting nm-applet will
ask for a master password for the wallet.  Choose something simple.

DONE!

I managed to break this setup by entering my keyring password incorrectly, so here's what to do:

The acer_acpi command you need if you type in the keyring password wrongly is:

echo 1 > /proc/acpi/acer/wireless

...in case you need to 'modprobe -r' everything.

And, if you like software suspend,

I noticed that laptop suspend does not work with networkmanager!
Do not try to suspend your laptop as you will get a kernel panic and
have to wait through an automatic fsck on next bootup.  Not good.
With my script solution, at least suspend worked (even with ATI fglrx driver),
but wireless would connect to nearest non-encrypted network and
not my WPA network, which was a hassle.

Alternatively you can do my traditional install (below), which doesn't give quite as seamless control to nm-applet as Andrew's instructions above.

acerhk

This is not optional - well, it's acerhk vs. acer_acpi. Sometimes, especially on dual boot systems where you activate your card with another OS, you may find that your WiFi has mysteriously worked. Ignore this: your card has not magically decided to work for you, it's just working because it doesn't get turned off when the other OS shuts down. You need acerhk installed. So. download acerhk, extract it, follow the instructions for installation and usage. You can stick

/sbin/modprobe acerhk

into your rc.local to make the acerhk module load on boot. You can put in extra flags if you want the dmesg output to be more verbose, or to force special behaviour, but you don't need extra flags for general usage on the Acer Aspire 3023 WLMi.

Kernel Compilation for bcm43xx

New kernels (since 2.6.16) contain bcm43xx. There are a few tricks to get it to go, though.

Firmware Installation for bcm43xx

Download the bcm43xx-fwcutter tool tar.bz2 or use yum/apt to install the bcm43xx-fwcutter package. Download the firmware from Acer-Europe. The files you need are bcmwl5.inf and bcmwl5.sys, from 80211g.zip.

To extract the firmware one should:

  1. If on a packaged distro, install bcm43xx-fwcutter using yum or apt. Otherwise, do steps 3, 4 and 5
  2. Unpack the driver archive from Acer-Europe
  3. Unpack bcm43xx-fwcutter to anywhere, then enter the folder
  4. Build the tool
    ] make
    
  5. Copy the firmware files, bcmwl5.inf and bcmwl5.sys (into the same folder is the simplest)
  6. Print out firmware information in order to see whether the firmware is OK and is expected to work
    ] bcm43xx-fwcutter -i FILE
    
  7. If so, extract it
    ] bcm43xx-fwcutter FILE
    
  8. Install the firmware
    If using self-compiled fwcutter:
    
    ] make installfw
    
    or on Ubuntu:
    
    ] sudo bcm43xx-fwcutter -w /lib/firmware bcmwl5.sys
    

NetworkManager

I like NetworkManager and its taskbar applet, nm-applet. So much so, that FC4's tardiness in upgrading it was the final push that I needed to switch to Ubuntu.

So, install NetworkManager and nm-applet, using whatever method best suits your distribution (apt, yum or self-compilation).

You must make sure that there is no other configuration script running, and that there is no other configuration for eth0 and eth1. Don't configure your wireless card with the GNOME network configuration tool - this should report that none of your network devices are configured (confusing, I know, but bear with me...)

Don't use ifup or ifdown from the command line because NM will get confused.

Making it all go

Finally, I have a little sequence that works reliably on my Ubuntu Dapper system with bcm43xx, nm-applet and acerhk

  1. Right click on nm-applet, disable networking
  2. As root (su, or sudo) do this:
    ] sudo modprobe -r bcm43xx; sudo modprobe bcm43xx; echo 1 > /proc/driver/acerhk/wirelessled
    
  3. Right click on nm-applet, enable networking
  4. Put in your WEP or WPA key, or just allow NM to access the keyring where your key is stored

Why does it work? Who knows. acerhk turns on the WiFi card, and I guess the kernel driver is still so buggy that it needs to be forcefully reset each time a new connection is made. I have faith that the bcm43xx developers will fix this in due course. In the meantime, this process isn't too onerous.

Doube.org's International Visitors

Locations of visitors to this page

This file last modified 1304hrs 03 October 2007 Michael Doube 2004-2008 :: Designed to be interoperable and standards-compliant. Looks best with Mozilla Firefox