1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

ACX

From acx100

Jump to: navigation, search

Contents

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/.

There is also a FreeBSD driver, an OpenBSD driver and a DragonFlyBSD driver 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, OpenBSD and DragonFlyBSD 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

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 . 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.

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 -m`/include/linux/config.h 

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.

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.

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 :

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.

Personal tools