You are on page 1of 7

ACX - ACX100/ACX111 wireless network driver project Page 1 of 7

ACX
From ACX100/ACX111 wireless network driver project

Contents
■ 1 Introduction
■ 2 System requirements
■ 2.1 Appropriate OS
■ 2.2 Kernel headers
■ 2.3 Hotplug/Udev subsystem
■ 2.4 Build utilities
■ 3 Downloading
■ 3.1 Firmware images
■ 3.2 Driver sources
■ 4 Installing
■ 4.1 Outside the kernel tree
■ 4.2 Inside the kernel tree (If your kernel is inside /usr/src/linux)
■ 5 Testing and inserting into kernel

Introduction
This page describes how to do a manual install of the driver (works for any distro). You will probably
first want to take a look at Distribution list to see if there are instructions specific to your distro or
whether there is any need for a manual install (e.g. if the driver is shipped with your distro and it is
working, there is no need for a manual inatallation).

If there is ANYTHING in here that you're struggling with, then please mail me (andi AT A HOST
CALLED lisas.de): we simply need this guide to become as reliable as possible.

The ACX driver has WEP support, but not WPA.

System requirements
Appropriate OS
■ A recent Linux kernel of the 2.6 series (at least 2.6.10, although you might find that only the
newest versions are currently supported).

Notes: an unsupported old version compatible with the kernel 2.4 series is also available at:
http://lisas.de/~andi/acx100/old/.

http://acx100.sourceforge.net/w/index.php?title=ACX&printable=yes 24/06/2010
ACX - ACX100/ACX111 wireless network driver project Page 2 of 7

There is also a FreeBSD driver (http://dev.kewl.org/) , an OpenBSD driver (http://www.openbsd.org/cgi


-bin/cvsweb/src/sys/dev/ic/) and a DragonFlyBSD driver
(http://www.dragonflybsd.org/cvsweb/src/sys/dev/netif/acx/) available. Although they are based on the
Linux driver (or at least in the reverse-engineering effort from this project), they are being maintained
outside the project by the FreeBSD (http://www.freebsd.org/) , OpenBSD (http://www.openbsd.org/)
and DragonFlyBSD (http://www.dragonflybsd.org) developers themselves.

Kernel headers

Make sure you have the appropriate kernel header files (i.e. kernel development files package) installed
which fully match the version of your currently running kernel (i.e. the development files version
which has been used by your distribution to build the kernel version as shown when running "uname -
a").

Make sure to become familiar with the software packaging mechanisms of your particular Linux
distribution (search on the internet for info on how to install program packages - .deb, .rpm, ... package
files). Then do an internet search for the kernel development or kernel header package you need to
install in addition to the already existing kernel binary files.

If you are not sure (this is a difficult step anyway), you may need to seek assistance from someone
familiar with your distribution (friends, Internet, distribution-specific IRC channels, ...).

If compilation of the driver package fails when doing this below, then missing or incorrect kernel build
files is a likely reason. FIXME: for further clarification, could someone here please add a distribution-
specific real-world example of which kernel build package to install for which specific kernel binary
package? (i.e. "install kernel-foo-dev_2.6.12-4-baz.rpm if you're running the kernel from package kernel
-foo_2.6.12-4-baz.rpm on SuSE").

For RedHat / Fedora, the "kernel-devel" package does not suffice for either of the build methods below
and you will need a full kernel source tree. This can be obtained and installed as follows: - Download
the kernel .src.rpm file from the Fedora core website - Install it with "rpm -ivh" - Have it unpack the
source with "rpmbuild -bp --target i686 /usr/src/redhat/SPECS/kernelxxx.spec" - Rename the kernel
source directory from /usr/src/redhat/BUILD/kernelxx/linux-2.6.xxx to /usr/src/kernels/`uname -r`

EDIT : For Fedora Core 5, installing only kernel-devel works. (tested with kernels 2.6.15-1.2054_FC5
& 2.6.17-1.2174_FC5). Works also for Fedore Core 4. (tested with kernels 2.6.11-1.1369-FC4-smp &
2.6.17-1.2174_FC4-smp).

For Debian or Knoppix (---> Debian) and possibly also Ubuntu, you should probably do the following:

# dpkg -l|grep linux-image

This could e.g. result in linux-image-2.6.16-2-686, thus you should try

# apt-get install linux-headers-2.6.16-2-686

http://acx100.sourceforge.net/w/index.php?title=ACX&printable=yes 24/06/2010
ACX - ACX100/ACX111 wireless network driver project Page 3 of 7

to hopefully fetch the development header files directly matching your currently running kernel (which
is a strong requirement for building a driver module for the current kernel). If you need to know exact
details about Debian kernel source/build setup, you may visit http://kernel-
handbook.alioth.debian.org/ch-common-tasks.html

Hotplug/Udev subsystem

Next, you need to make sure you have hotplug firmware loading configured in your kernel. Again,
check with someone familiar with your distro about how to do this. Most modern distros are shipping
with it enabled now, and on newer ones it has even been completely been replaced by udev. If this
support is compiled as kernel module instead of built-in, then you may need to run "modprobe
firmware_class" as root to avoid missing release_firmware symbol kernel log error on acx module
loading.

Build utilities

Your system needs to have GNU make and the gcc compiler installed. If you get "No such file or
directory" when the driver installation references those, then you need to install the make and/or gcc
Linux package of your Linux distribution.

Downloading
Firmware images

You need to get the appropriate Firmware.

EDIT : If you are using a PCI card LevelOne WNC-0200 none of the firmware mentioned below should
work.

Instead, use the firmware from the installion CD-ROM; e.g., copy the files from /DRIVER/PCI
CARD/WINXP to /lib/firmware (in case of FC4 distribution) and rename as them as follows:

ACXGEN.BIN to tiacx100
TIACXRMX.BIN to tiacx100r0D
TIACXRFM.BIN to tiacx100r11

The other files should not be needed.

Driver sources

Once that is finished, go to sourceforge (http://sourceforge.net/project/showfiles.php?group_id=75380) .


Take note of the URL of the file you want, but don't download it yet. Also note that the following steps
are only good for the acx-* trees, not the acxsm-* trees (new SoftMAC 802.11 WLAN layer, still in
development, probably not working yet). If you still want to try an acxsm tree anyway, then follow the
directions in the README file contained in the tarball.

http://acx100.sourceforge.net/w/index.php?title=ACX&printable=yes 24/06/2010
ACX - ACX100/ACX111 wireless network driver project Page 4 of 7

Installing
There are two ways to install the driver by hand. Doing the install outside the kernel tree is the easier
and preferred way to go. Only do one of the following.

Note: On Fedora Core 6, the config.h file is deprecated in the new Fedora Core 6 kernel 2.6.18-
1.2798.fc6 source tree, so if you don't want to go editing the ACX code, create a symbolic link to the
replacement autoconf.h

ln -s /usr/src/kernels/`uname -r`-`uname -m`/include/linux/autoconf.h /usr/src/kernels/`uname -r`-`uname

Outside the kernel tree

Now we'll setup a directory to do our building in as root:

# cd /usr/src
# mkdir acx-20070101

Next up we get a hold of the source tree and extract it. Now is where you'll use your snapshot you
picked above.

# wget http://downloads.sourceforge.net/acx100/acx-20071003.tar.bz2
# tar xjvf acx-20071003.tar.bz2
# cd acx-20071003

The reason we had to make the directory rather than just uncompressing the tarball directly into /usr/src
is that the tarballs are designed for use in the kernel tree, not for building outside of it.

Next up, the building stage (must be made with root's rights)

# make -C /lib/modules/`uname -r`/build M=`pwd`

Note those are back ticks `` NOT single quotes

What that command does is tells the make command to use the build tree from your current kernel's
headers. uname -r returns the kernel version (like 2.6.14-patched) and back ticks execute the command
inside of them and return them in the place of the back ticks. The M=`pwd` tells make that the source
tree your building is at where you are now. This command would be the equivalent of: make -
C /lib/modules/2.6.14-patched/build M=/usr/src/acx-20051202 on a 2.6.14 system with a patch set
named 'patched', using the 20051202 snapshot uncompressed into acx-20051202.

If this fails (e.g. with a Makefile not found problem), then this probably means that you don't have a
properly matching kernel build environment as outlined above: retry.

http://acx100.sourceforge.net/w/index.php?title=ACX&printable=yes 24/06/2010
ACX - ACX100/ACX111 wireless network driver project Page 5 of 7

Inside the kernel tree (If your kernel is inside /usr/src/linux)

First off, I'm going to assume that your kernel is in /usr/src/linux. That means that you have an
unpacked kernel there, preferbaly of a recent vintage. So, lets go there:

cd /usr/src/linux

Now, lets get into the proper directory in the kernel.

(the proper directory is /usr/src/kernel-source2.x.xx for debian users)

cd drivers/net/wireless

And make a directory for our driver.

mkdir acx
cd acx

Now, lets get the driver and unpack it.

wget http://downloads.sourceforge.net/acx100/acx-20071003.tar.bz2 # make sure you get the latest


tar xvjf acx-20071003.tar.bz2

Perhaps you want to disable the USB build? If so, you want to comment out lines dealing with USB in
these 2 files (replace ${EDITOR} with your favorite text-editor, vim/nano/emacs/gedit/whatever).

${EDITOR} acx_config.h # comment out the USB line with '//'


${EDITOR} Makefile # comment out the USB line with '#'

Or comment out the lines using SED:

sed -i '/USB/s/^/\/\//' acx_config.h


sed -i '/usb/s/^/#/' Makefile
# Added by acx@grahams.idps.co.uk

Now, you need to modify the Makefile in the parent directory.

cd ..
echo 'obj-m += acx/' >> Makefile

If you are going to make a distro kernel or a patchset that is potentially used by people who don't have
an ACX1xx card, you should probably use the Kconfig system. This part left as an exercise to the
reader ;)

Anyway, all thats left to do is configure and compile your kernel.

http://acx100.sourceforge.net/w/index.php?title=ACX&printable=yes 24/06/2010
ACX - ACX100/ACX111 wireless network driver project Page 6 of 7

cd /usr/src/linux
make menuconfig # You won't find an acx option - don't worry about it, it will get built anyway
make && make modules_install

And, done! ;)

Testing and inserting into kernel


If building finishes, we need to verify the module's proper operation. First, make sure that any old
modules are unloaded. This command can help facilitate this:

lsmod | grep acx

That will list any modules with 'acx' in the name. Watch for acx or acx_pci or acx_usb

modprobe -r <module name> will unload a module

To test that our module works (you should first have chosen the correct Firmware file(s) and put it in a
proper place for this to fully succeed), do:

insmod ./acx.ko

If it doesn't output anything, the module loaded at the very least. If you get an error, switch to

cd /usr/share/acx-20070101

and try

insmod ./acx.ko

again (if it fails again, make sure to check dmesg output for further details!). Next we see if it created the
appropriate wireless interfaces.

iwconfig

That command should show you something about your card, if not, check dmesg for errors (such as
failure to find firmware file names) and verify whether all initial requirements above are met, or
continue to the next step! My card works fine and isn't shown in iwconfig...

Assuming everything has loaded successfully, you can move onto installing the driver into /lib .

make -C /lib/modules/`uname -r`/build M=`pwd` modules_install

EDIT : On Fedore Core 5, module won't load on startup. You can try this :

http://acx100.sourceforge.net/w/index.php?title=ACX&printable=yes 24/06/2010
ACX - ACX100/ACX111 wireless network driver project Page 7 of 7

1- vi /etc/modprobe.conf

2- insert these 2 lines :

alias wlan0 acx

install acx /sbin/insmod /usr/src/acx-20070101/acx.ko

3- unload module if it's already loaded

rmmod acx

4- load module again

modprobe acx

EDIT2 : On Debian etch the module did not load on startup. I did not do the edits above. Reloading the
module manually and then running depmod manually fixed it.

Now you are ready to configure your wireless interface whichever way your distro handles them.

Retrieved from "http://acx100.sourceforge.net/wiki/ACX"

■ This page was last modified on 3 May 2010, at 19:48.

http://acx100.sourceforge.net/w/index.php?title=ACX&printable=yes 24/06/2010

You might also like