Valid HTML 4.0!

Page updated: August 25, 2016 05:59 PM EDT

Craig's ACX100 HowTo

The latest version of this document can always be found here: http://www.houseofcraig.net/acx100_howto.php

Commentary and suggestions about this howto go here: no spam please

Everyone, please read the Updates

Quick Links: DownloadsInstallingTestingConfiguringCompilingKnoppix 3.3 Live CDRemoving the 'Leaked' binary driver

Introduction

This page is for Linux users who have Texas Instruments' Acx100-based wireless PCI and/or CardBus cards and would like them to become functional. These are cards that typically either have a "+" in their name or model number or that claim a 22mbps top speed. The "+" comes from the 802.11b+ "standard" which is actually not a real standard, but a Texas Instruments' invention using 802.11b and something they call Packet Binary Convolutional Code to achieve double the speed of standard 802.11b cards. This howto is based on Mandrake 9.0, 9.1, 9.2, Slackware 9.0, 9.1, RedHat 9.0, and Knoppix 3.3 (Both the Live CD and installed to the hard-drive which becomes essentially Debian unstable) all running on a Thinkpad 600 using an SMC 2435w card with an SMC 2404WBR wireless router. Since most (if not all) of these cards use the TI chipset, this should apply more or less to any make/model 802.11b+ card. This HowTo should also apply to regular PCI cards, and while I have heard from people that it does, I have not personally tested with any acx100 PCI cards.
I am making available for download the same module (driver) I am currently using for as many kernel versions as is practical for me to compile. The version of which will increment as the good folks of the acx100 project release new versions. I intend to keep current with that project by updating the modules here every time they release a new version. As of this writing the latest version is 0.2.0pre7, older versions will also be available should the latest one give you trouble and you need to fall back temporarily.
I've written this howto for people who are new to linux, and simply want to get this card working, not become linux gurus. This necessitates sometimes painful amounts of explanation and step-by-step instructions. Non-newbies and gurus, please bear with me. For advanced linux users who have had success with other wireless devices and linux and just need a quick rundown of this module's differences, here's a really quick guide to this chipset/driver.
This HowTo is based entirely on the Open Source acx100 project, the binary drivers available from Ivor are also functional with my hardware and have a good howto bundled with them. I prefer to use the open source driver as it is already vastly superior to the binary driver, this helps them to debug it and helps the community as a whole. Yes, this driver is still alpha, meaning it's author's don't even consider it beta software, it's going to be a bit quirky. I use it every day and this document is posted using it. I find it quite useable, and it get's better with nearly every release. Work-arounds for the quirks will always be documented here as I find them.
Understand that this howto is not compatible with the README's instructions regarding the use of the start_net script (for other than the Knoppix solution), rather it attempts to help you integrate this driver module into the system like any of the other normally supported modules. So, go one way or the other, but not both, if you elect to use the start_net script, you may still be able make use of the downloads, but stop there and use the README as your guide. If you're going to follow the instructions in this document, then don't use the start_net script at all.


Updates

0.2.0pre7_plus_fixes_4 users: note that this exact version marks the introduction of a new filename for the driver module. No longer will it be acx100_pci.o, but instead acx_pci.o. If you're downloading and compiling any version of 0.2.0pre7, which is "plus_fixes_4" or later, you'll have to substitute acx_pci for anything below that says: acx100_pci.
Mandrake 10c users: this document is not yet updated for kernel 2.6.3. While I personally use this kernel version daily with my acx100 card and Slackware 9.1, I'm still testing, and so: some of the info here is applicable, and some is not. A downloadable module for Mandrake 10c and the corresponding instructions are "coming soon", but not yet here, so you're on your own until you see something otherwise in this section.
We now have the absolute latest modules in RPM format for SuSE 9.0 users, available for download. Special thanks to Rudi Pittman for contributing his efforts for all of you SuSE 9.0 users, please take the time to thank him.
Quick note for any of you advanced users using a recent distro and trying to use the acx100 driver with kernel 2.6.x. If you're wondering why you can't seem to pass any parameters to the driver module, namely the firmware_dir param, what you need to know is that the newer kernels (2.5 and later) use /etc/modprobe.conf, not /etc/modules.conf. To obtain a useable modprobe.conf derived from your existing /etc/modules.conf file, run this as root: /sbin/generate-modprobe.conf /etc/modprobe.conf. I hope this saves you some time.
Knoppix 3.3 Live CD and installed-to-the-hard-drive users who have the most recent 3.3 version dated February 9, 2004 with kernel 2.4.24-xfs, there are now 0.2.0pre7 downloads available.
0.2.0pre7 modules are now available for download, also: D-Link's version 1.9.8.b firmware is now the default download for firmware, if, for some strange reason, you believe that you need the older, 1.9.3.e firmware, then download it, all others: I advise you all to go for the newer 1.9.8.b firmware, as it's the firmware I have tested with each and every pre7 module in the downloads area with their respective distros. Trivia: Do you want to know the "shortest time to ping the router" winners on my setup? Be prepared for a surprise: they are...Mandrake 9.0 and RedHat 9.0, yes that's right mdk90 and rh90 both will consistently ping the router in well under 1ms (avg. 0.7ms), all others came in at right around 2ms or higher, and that includes FreeBSD 5.2rc2 as well, who knew?.
I've had more than a few people ask about it, so: there is now also a pre-compiled download available for all of you Knoppix-STD version 0.1b users out there (kernel 2.4.20-xfs), check the Knoppix Live CD section for the download and instructions on how to use it.
Attention! For any of you who've decided to compile this module yourself, listen up: any version of 0.2.0pre6_plus_fixes_... that is later than 0.2.0pre6_plus_fixes_10 will require this v1.9.8.b firmware. The (v1.9.3.e) firmware normally found in the downloads section below works well with the modules found there, which are 0.2.0pre6_plus_fixes_10 or older.
Just in time for New Year's, Fedora Core 1 modules are now available in the downloads area
By popular demand, for all of you Knoppix 3.3 users who decided to install Knoppix 3.3 on your hard drives, I now have a Knoppix 3.3 hd-install download and have modified the instructions to include Knoppix 3.3 installed on the hd. While not quite as much fun as the "live cd" version, Knoppix 3.3 on the hard-drive is the absolute easiest way to a full-blown Debian-unstable installation that I know of, (trust me, Debian normally takes a lot more work) and definitely a contender as my favorite distro for desktop use, although, at this time it's edged out by Slackware 9.1 which is easily the snappiest performer of all distros currently installed on my main notebook.
Two more distros are now available thanks to my much larger notebook drive. They are: Slackware 9.1 which is my current favorite distro for desktop use, and Mandrake 9.2 which has been rather disappointing if, like me, you have come to expect more "automatic" configuration from Mandrake than anyone else, right now, "live cd" or hd install, that title belongs to Knoppix 3.3, no real contest.
Mandrake 9.2 users! you need to be aware that as of Mandrake 9.2, there is a much older version of the Open Source Acx100 driver in the /lib/modules/... tree. When the time comes, the instructions below will direct you as how to move that module somewhere outside of the modules tree in order to use the much-newer version available in the downloads section below. After spending some time attempting to use Mandrake 9.2's built-in module and their GUI network config tool, sadly, my card was not much closer to configuration than when I started. Mandrake 9.2 users, please be advised, although Drakconnect will now recognize the module that the card needs, that's about as far as it goes, I never achieved functionality without resorting to a console, once at a console I can assure you that the driver/firmware/card works fine with Mandrake 9.2.
0.2.0pre6 modules are now available for download. Additionally, there's now a Knoppix 3.3 Live CD section. I absolutely love using the Knoppix 3.3 Live CD and this driver works quite reliably with it. if you like to run Kismet screenshot, make sure you start it from a console(shell) with this command line: sudo kismet -c orinoco,wlan0,orinoco, when you're finished "kismet-ing", hit the stop_net and then the start_net icons on the Desktop to restore your connection to your router. Wavemon screenshot also works with this version quite nicely right from the console(shell). This version of the driver is truly outstanding, more excellent work by the very active acx100 team. Special thanks to b1smooth and my lovely wife for helping me test the Knoppix 3.3 solution.
I've been using KWifiManager on my Mandrake/KDE installation for a while now, while you must still hand-edit your config files to set for 22Mbps since it seems to be hard-coded to stop at 11Mbps, everything else can be configured using it, and it provides an applet with the familiar "stair-step" signal-strength indicator. Of course at 22Mbps, the bar tends to go "off the chart", here's a shot of it in action. KDE 3.x users, give it a try.

Firmware

As far as I'm concerned, the use of external firmware is the biggest difference between this driver and any of the other wireless drivers I've used with Linux. For legal reasons the open source project has decided not to embed or provide any firmware. For the sake of completeness, until I'm told not to, I am providing the 3 firmware files that came with my SMC 2435w card, as these modules won't work without firmware. I hope this firmware works for your device(s) and it does for many people who do not have smc cards. If not, you'll need to locate the firmware that came with your device and use that instead, see this section of the readme for how to do that.

Directions

This is finally the "how to" part of this HowTo. If you would prefer to compile this module locally (on your own machine), or, if no module here will work for you, then start with the compiling section

Downloading and unpacking the module and firmware

It's quite possible that many of you will be doing this part from Windows rather than Linux, so I'll try to differentiate that for you as I go along. Linux console commands are in bold text, Linux is highly case-sensitive, type them in verbatim, or even better, cut/paste them into your console by selecting them with the left mouse button and choosing edit/copy (same as Windows) then, switch to your console window and either hit the middle mouse button, or right-click and choose paste.

I like to do things with lists, so here we go:
  1. Go to the downloads area and right-click the correct file for your running kernel version, choosing a 'save as' option and remembering where you put the file(s), from windows I suggest c:\windows\temp or from linux use /usr/local, repeat this process for the firmware as well
  2. If you're using a CardBus (pcmcia) card, remove it at this time. If you're using a PCI card and you've been mucking around with other modules for this card trying to make it work, be aware this document assumes no other modules are loaded or are even present on the machine for this card, so it's time to undo any of that business that you've done.
  3. If need be, exit windows and boot up Linux. I'm assuming that when you boot Linux, you end up with a nice graphical interface with menus, icons and the like. Once there, you'll need to open a shell (also called terminal, or in kde a Konsole) window from the main menu and switch to the root user: type su -, the "-" in there is important. You'll be asked for the root password, and you'll have to type it "blind" as no characters will show up as you type, then hit enter, you should now see the name "root" in the prompt, or when you type whoami it should say root. When this saga finally ends for you, type exit to return to your normal user name, or just close the shell window. If you're not using a graphical interface then I'm assuming you will know what to substitute for the tasks below. I'm also assuming that if you downloaded these files to c:\windows\temp that your windows partition is going to be available to you in Linux, these days that's normally set up for you during the Linux install automatically
  4. Now, change the current working directory, using the example directories from above you would type: cd /mnt/windows/windows/temp or cd /usr/local
  5. Unpack the module, type tar zxf acx100_pci-v0.2.0pre7-`uname -r`.tar.gz, obviously, if you downloaded an older version other than 0.2.0pre7 then replace the 0.2.0pre7 with the version you downloaded, eg: 0.2.0pre3, 0.2.0pre2, etc. The ` character surrounding "uname -r", is called a "backtick" it's the key to left of the "1" key. If this command generates several lines of output, one of which contains "cannot open", and you're sure you don't have any typos, you have the wrong module for your setup and must start over
  6. Unpack the firmware, type: tar zxf acx100_firmware.tar.gz
  7. If all the above completes without error, proceed to installing the module and firmware

Installing the module and firmware

This section is intended as a direct continuation of commands typed into a console(terminal window) as root, either from the downloading section or from the compiling section. You should still be at the same root-console you used for either of those sections, an ls typed at this time should show these files: acx100_pci.o and either the 3 *.BIN files from the firmware download, or your own *.BIN file(s) that you copied and possibly renamed from the windows' driver disk for your card.
  1. Move the module to a typical place for networking modules, type: mv acx100_pci.o /lib/modules/`uname -r`/kernel/drivers/net, notice the backtick surrounds "uname -r" again here.
  2. Create a directory for the firmware to live in, type: mkdir /lib/modules/acx100_fmwe
  3. Whether you're using the firmware downloaded from here or your own re-named firmware, move it to that directory, type: mv *.BIN /lib/modules/acx100_fmwe
  4. (Knoppix users: skip this step)Using a text-editor like gedit, kedit, or kate, open the file /etc/modules.conf, type: kedit /etc/modules.conf &, substitute your editor of choice for kedit, if you're not using a windowing system, then type: vi /etc/modules.conf, hit the "i" key to go to edit mode, do your editing and when finished, hit esc to go back to command mode, and then type :x to save the file and exit vi, if you feel that you've hopelessly screwed things up, type esc for command mode and :q! to quit without saving, then start over. Add this line: options acx100_pci use_eth_name=1 debug=0x01 firmware_dir=/lib/modules/acx100_fmwe to the end of the file and save it. If you're using a PCI card, you'll need to add this line as well: alias eth0 acx100_pci, if there is already an alias there for eth0 and you're sure you have another ethernet/lan card in your machine, use eth1 instead and use eth1 as your devicename in all instructions that follow!. CardBus (pcmcia) users don't need or want this line, the hotplug system will load the module
  5. Knoppix users: instead of the step above, you'll need to create the file /etc/modutils/acx100_pci, type: kedit /etc/modutils/acx100_pci then add this line: options acx100_pci use_eth_name=1 debug=0x01 firmware_dir=/lib/modules/acx100_fmwe to the file and save it. If you're using a PCI card, you'll need to open /etc/modutils/aliases and add this line to the end of it: alias eth0 acx100_pci, if you're sure you have another active ethernet/lan card in your machine, use alias eth1 acx100_pci instead and use eth1 as your devicename in all instructions that follow!. CardBus (pcmcia) users don't need or want this line, the hotplug system will load the module, either way you must type: update-modules when you finish creating that file.
  6. Update your module dependencies file, type: depmod -a, this may take a while to complete depending on your machine's cpu/disk speed, be patient. Some distros will return an error with something like "not an ELF file" and pointing at the *.BIN firmware files, this is ok and will not hurt anything. If that bothers you create your "acx100_fmwe" directory somewhere else, like under /usr and be sure to substitute that path in both the commands above and in the commands that follow. Important: If you get unresolved symbol errors pointing to the acx100_pci.o module, you *may* need to compile the module on your own machine, it's possible that the downloaded module will not work for you, I now recommend you continue on and see what happens. Otherwise, see the compiling section and go from there, you don't need to undo anything that you've already done. When finished the compiling section return here and start over with step #1 and answer "y" if you are asked if you want to overwrite anything
  7. Check for the presence of a reference to this module in your module dependencies file, type: grep -i acx100 /lib/modules/`uname -r`/modules.pcimap, three lines, all beginning with "acx100_pci" should be returned, again, note the backticks in this command. The correct output will look like this (pre7 and later, earlier versions may not have the 3rd line identified by the "0x00009066" in it):
    acx100_pci           0x0000104c 0x00008400 0xffffffff 0xffffffff 0x00000000 0x00000000 0x00000000
    acx100_pci           0x0000104c 0x00008401 0xffffffff 0xffffffff 0x00000000 0x00000000 0x00000000
    acx100_pci           0x0000104c 0x00009066 0xffffffff 0xffffffff 0x00000000 0x00000000 0x00000000
    
    Note that if other lines are returned from this command and they don't begin with "acx100_pci", but something else with acx100 and "sta" in it, you have installed the leaked binary at some point and need to find and move it and repeat the depmod -a before continuing, see appendix a for how to do that and then return here and continue, if duplicate lines are returned from this command and you just happen to be running Mandrake 9.2 (or later?), you'll need to move their built-in v0.1h module out of the modules tree, I suggest this, type: mv /lib/modules/`uname -r`/kernel/3rdparty/acx100/acx100_pci.o.gz /root. Then, repeat step #6 above
  8. If you're using a CardBus card (pcmcia), insert the card now, the module should be automatically loaded by the hotplug system. If you're using a PCI card, insert the module by hand, type: modprobe acx100_pci. Either way if you get errors to the effect that acx100_pci can't be found, and you're sure there's been no typos, then first try repeating the depmod -a command, if you still don't have those 2 lines, then your distro may require all modules to be gzipped, type: gzip /lib/modules/`uname -r`/kernel/drivers/net/acx100_pci.o and repeat the previous 2 steps
  9. Check if the module got loaded, type: lsmod | grep acx100_pci, the | character is called a "pipe" and is uppercase on the backslash key on my machine. One line should be returned beginning with acx100_pci, if not, check the log for clues as to why, type: tail -n 20 /var/log/messages, there are myriad reasons outside the scope of this document as to why this would fail, chief among them being that you don't actually have an acx100 card, and perhaps the second most popular reason being your firmware was "not found" which is usually caused by incorrect naming of firmware files in the /lib/modules/acx100_fmwe directory, see the section in the readme about what files may need to be renamed if you are using your own firmware. "no such device" errors should not be ignored, try searching/posting on LinuxQuestions.org to see if your card is indeed an acx100-based card
  10. If all the above completes without error, proceed to testing the module

Compiling your own module and/or using your own firmware

This section is for those whose distros I'm unable to support with pre-compiled modules or for those intrepid newbies who would like to compile this driver module themselves and learn some interesting things about Linux in the process. If compiling a kernel module is not your thing, or you don't have room for the kernel source package, check back here from time to time, as I am considering installing additional distros in the near future. As of this writing Mandrake 9.0, Mandrake 9.1, Mandrake 9.2, Redhat 9.0, Fedora Core 1, Slackware 9.0, Slackware 9.1 and Knoppix 3.3 (which is Debian testing/unstable), modules are available here pre-compiled, so you may be able skip this section if you're running, or would consider running any of those fine distros. Otherwise, here's how to compile this module on your own machine:
  1. You'll need to have the kernel source installed for your distribution, from a root console type: ls -L /lib/modules/`uname -r`/build/include/linux. If a large number of files show up, you're good. If you get an error, use your distro's package management to install the kernel source, do not download what appears to be a match from kernel.org, virtually all distros modify the kernel source in some way, use your distro's source package only.
  2. Note: I no longer recommend using cvs for this project.Next, you'll need to have cvs installed, to see if it is, type cvs in a root console, if you get an error of the "not found" variety, you'll need to install the cvs package for your particular distribution.
  3. Change to the /usr/local directory: type cd /usr/local
  4. Download the latest source tarball (bz2) from Andreas' page (<< this opens a new window in your browser), follow his instructions for unpacking it: tar jxf filename.tar.bz2, and make sure to use the source directory created by unpacking the file in place of "acx100" below, eg: acx100-0.2.0pre7_plus_fixes_14 instead of acx100). Do not unpack the source code using Windows, the end-of-line characters are different in Windows than Linux, and are not compatible. (thanks to Jakob Rohde for that tip)
  5. If you're going use your own firmware, you'll need to get/open the windows driver (usually a .zip file) for your card and find/copy the *.BIN firmware files to the firmware directory under acx100 making sure to rename the files if necessary, as indicated in this section of the readme, more than likely your radio is the rfmd. The files (version 1.9.3.e) found on my SMC card's windows' driver cd were RADIO0d.BIN, RADIO11.BIN and WLANGEN.BIN, they were already named correctly and these are the files in the firmware download at the end of this document.
  6. Note: If you're downloading anything newer than 0.2.0pre6_plus_fixes_10, you'll need to use the 1.9.8.b firmware instead. The older firmware just simply refuses to connect with the later versions of the driver.
  7. Change to the acx100 source directory, type cd acx100
  8. Compile the source, type: make
  9. In preparation for installation, change to the firmware directory, type cd firmware
  10. Copy those firmware files to the src directory, type: cp *.BIN ../src
  11. In preparation for installation, change to the src directory, type: cd ../src
  12. If all the above completes without error, proceed to installing the module and firmware

Testing the module

Once again, I've got a list for you, this is intended as a direct continuation of commands typed into a console(terminal window) as root, after completing the installing section
If you've made it this far it's time to test your device. Once you verify the operation of the device, you'll want to configure your system to set it up automagically at boot and if applicable, on a resume from suspend. This section is just for testing things, not for final configuration.
Before we begin the testing phase, you'll need to have the following info handy: Your router's(wireless access point) ip address, something like: 192.168.2.1, your router's and your wireless card's MAC addresses, something like: 00:03:2F:05:44:D2 and your router's ssid name and WEP encryption key, if any. These should all be obtainable using the same facility you used to set these things up, typically a web page you go to from your browser. While you're on your router's setup page, I strongly suggest you set WEP encryption to no more than 64bit (longer keys are quite prone to typos) and just for testing purposes use a hex key that's easily remembered, something like 0123456789, you can change it to something longer and more cryptic once things are working.
  1. Check if the wireless device exists, type: ifconfig -a, at least 2 devices should be listed, one is always going to be "lo", one may be your wired ethernet card and the other should be your wireless card, eth0 or eth1, it will look something like this:
    eth0    Link encap:Ethernet  HWaddr 00:03:2F:05:44:D2
              ... other lines will appear  here ...
    	Interrupt:11 Base address:0x4800
    
    The only things of importance at this point are that the card has an interrupt and a base address and that the HWaddr on the first line matches the MAC address of your card which is printed somewhere on the card or it's packaging or is viewable from windows.
  2. Give the wireless card some life, type: ifconfig eth0 192.168.2.10 mtu 576 substituting your device name, eth0 or eth1 and substituting a valid address for your router or access point, for instance if your router's address is 192.168.1.1, use 192.168.1.10 and so forth.
  3. Check wireless extensions, type iwconfig, a listing for your wireless device should be returned and should look something like this:
    eth0      v0.1g  ESSID:""
              Mode:Ad-Hoc  Channel:1  Cell: 54:57:7B:51:10:86
              Bit Rate=11Mb/s   Tx-Power:18 dBm
              Encryption key:off
              Link Quality:34/0  Signal level:-191 dBm  Noise level:-225 dBm
              Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
              Tx excessive retries:0  Invalid misc:0   Missed beacon:0
    Don't worry about the details here, if iwconfig returns something like the above, you're good, if it returns something with "eth0 no wireless extensions", and your wireless card is eth0, you've got kernel problems, most likely caused by compiling your own kernel and leaving out something rather important, in any case, the solution to that problem is outside the scope of this document. If you get something like "command not found" when you type iwconfig, then you'll need to install the wireless-tools package for your distro (this is likely to happen to Mandrake 9.1 and 9.2 users as the wireless tools don't appear to be a default package). Using your distro's 'software installer', search on the string: "wireless-tools" and install the package that is found. Every distro I have installed (except FreeBSD 5.2) has an already-compiled package for the wireless-tools, so it's highly likely that it is on one of your CD's, do not download and compile the wireless-tools package from sourceforge.net, it's very likely the version will not match correctly to your distro and this will cause all sorts of problems that others will have a difficult time diagnosing, again, you have been warned: use your distro's wireless-tools package only.
  4. Set up the wireless parameters for your particular environment, type: iwconfig eth0 mode managed channel x essid xxxxxxxx, replacing if necessary, "eth0" with eth1, and using your router's ssid name and channel # in place of the x's
  5. If you're using WEP, set up the key, type: iwconfig eth0 key xxxx-xxxx-xx essid xxxxxx for a 64bit hex key, or use iwconfig eth0 key s:yourkeyhere essid xxxxxxxx for an ascii key, the essid parameter needs to be repeated at the end of most iwconfig commands.
  6. Check if the config "sticks", type: iwconfig, and the output should be similar to this, with your router's ESSID and Channel displayed and the Access Point being your router's MAC address. The correct Encryption key should be displayed as well.
    eth0    v0.1g  ESSID:"wireless_hoc"  Nickname:"Thinkpad"
              Mode:Managed  Channel:8  Access Point: 00:03:2F:06:F4:13
              Bit Rate=22Mb/s   Tx-Power:18 dBm
              Encryption key:0ACD-41AF-22
              Link Quality:104/0  Signal level:-139 dBm  Noise level:-243 dBm
              Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
              Tx excessive retries:0  Invalid misc:0   Missed beacon:0
    
    If you've got "Access Point: 00:00:00:00:00:00" then something's wrong, I suggest setting encryption on the router to a 64bit hex key and repeating the previous step using the new key. Also, try a couple more iwconfig eth0 essid xxxxxxxxx commands about a second or two apart, this is a quirk of the card/driver, and I theorize, turns on the radio. You should see the "DATA" light blink once about a half-second or so after each command.
  7. Set up a route to your router from this device, type: route add default gw 192.168.2.1 eth0, substituting your router's ip address and if need be, your device's name (eth0 or eth1).
  8. Try to ping your router, type: ping -c 4 192.168.2.1 substituting your router's ip address for the 192.168.2.1. Output will look like this:
    PING 192.168.2.1 from 192.168.2.98 : 56(84) bytes of data.
    64 bytes from wrouter (192.168.2.1): icmp_seq=1 ttl=127 time=2.71 ms
    64 bytes from wrouter (192.168.2.1): icmp_seq=2 ttl=127 time=0.601 ms
    64 bytes from wrouter (192.168.2.1): icmp_seq=3 ttl=127 time=0.609 ms
    64 bytes from wrouter (192.168.2.1): icmp_seq=4 ttl=127 time=0.723 ms
    64 bytes from wrouter (192.168.2.1): icmp_seq=5 ttl=127 time=0.569 ms
    If you get errors with "unreachable" in them, you most likely used the wrong address for your router in either this command or the previous route command, or your encryption key is wrong, or you need to type: iwconfig eth0 essid xxxxxx again, waiting a moment before attempting the ping, this is a quirk of the card.
  9. Using a text-editor as described above, open the file /etc/resolv.conf. Make this: nameserver 192.168.2.1 the first line, substituting in your router's ip address, and save the file.
  10. Now, here's the big one, try to ping a host on the internet, type: ping -c 4 www.yahoo.com, or some other host of your choice.
  11. If all the above completes without error, proceed to configuring the interface

Configuring the Interface

I should note that it is finally at this point that you may elect to try your distro's graphical (or otherwise) network configuration tools, if you've made it to this point, it means your acx100 device is now fully functional. Personally, I have had no success using any distribution's network configuration tool with my acx100 cards, this device is not yet officially supported by any distro I know of at this time and the current configuration tools don't seem to know what to do with it when it comes to which module to use, beware the wrong module may be assigned to the device if you're not careful to cancel out of the tool, this will cause all sorts of things to be done that you will have to undo, thus, I don't recommend using your distribution's network config tools on this device/driver. This driver is open-source, highly functional, and well-written, it should eventually be an official part of your distro. I'd look for it to show up in Mandrake first (Update: it has shown up in Mandrake, as of version 9.2, however, see this warning about Mandrake 9.2). Once it's officially supported by your distribution, their network config tool should work.

Until then, here's yet-another list to follow for getting the card setup automagically at boot and on a return from suspend, if applicable.

For Redhat, Fedora and Mandrake: (only!) (if you're using slackware, or knoppix/debian, keep scrolling down)
  1. Using a text editor as described above, open /etc/sysconfig/network-scripts/ifcfg-eth0, susbstituting eth1 if need be. Here's what mine looks like for this card:
    DEVICE=eth0
    BOOTPROTO=static
    IPADDR=192.168.2.98
    NETMASK=255.255.255.0
    NETWORK=192.168.2.0
    BROADCAST=192.168.2.255
    MTU=576
    ONBOOT=no
    MODE=Managed
    CHANNEL=8
    RATE=22M
    KEY=xxxx-xxxx-xx
    ESSID=myessid_name
    #IWPRIV='set_debug 0x00'
    
    Lines beginning with a "#" are comments and ignored, I left "#IWPRIV" in there as an example of how to use iwpriv for a particular interface, the line works, but the line we added to /etc/modules.conf takes care of setting the debug level, so it's superfluous. You may also have noticed that the ONBOOT setting is "no", this prevents the attempted configuring of the device before the PCMCIA sub-system has loaded, the hotplug system should take care of loading the module when it detects the card. If you're using a PCI card, you'll want to set ONBOOT to yes.
  2. You'll also need to verify the contents of your /etc/sysconfig/network file, here's what mine looks like:
    	NETWORKING=yes
    	FORWARD_IPV4=false
    	HOSTNAME=Thinkpad
    	DOMAINNAME=localdomain
    	GATEWAY=192.168.2.1
    
    Of most importance in this file is the GATEWAY setting which should match the IP address of your wireless access point or router. One more thing, on my notebook, an IBM Thinkpad 600, I had to modify the line in /etc/sysconfig/apmd to read "PCMCIARESTART=yes", in order to for a resume from suspend to work as expected.
  3. That's it! Yep, that should be all you need to do to bring this card up at boot, although remember the quirk, additional iwconfig eth0 essid xxxxxx commands may be required, even when iwconfig returns all correct info, until you see "Associated!" in your /var/log/messages, you're not associated, again it's my theory that this kicks the radio on.

For Slackware:
  1. Using a text editor as described above, open /etc/rc.d/rc.inet1. Here's what you should setup for this card, if your device ended up being eth1, then scroll down a bit furthur to the same section for eth1, be careful which devicename you're editing, you don't want to screw up eth0's settings if your acx100 device is eth1:
    # Edit these values to set up your first Ethernet card (eth0):
    IPADDR="192.168.2.98"  # REPLACE with YOUR IP address!
    NETMASK="255.255.255.0" # REPLACE with YOUR netmask!
    ...
    ...
    ...
    # Edit the next line to point to your gateway:
    GATEWAY="192.168.2.1" # REPLACE with YOUR gateway!
  2. I must admit, I'm still looking for the "proper" place to put the wireless settings in Slackware, until I find it, I'm using the work-around that follows for both CardBus and PCI cards:
  3. Open (again) your /etc/modules.conf file in a text editor, and add this line: post-install acx100_pci /usr/sbin/setup_acx100
  4. You guessed it, /usr/sbin/setup_acx100 is going to be a shell-script that gets executed after the module is loaded, so in your text editor, create a new file and add these lines to it
    #!/bin/sh
    iwconfig eth0 mode Managed rate 22M key xxxxxxxxxx essid xxxxxxxx
    sleep 2
    iwconfig eth0 essid xxxxxxx
    
    the sleep and extra essid command seem to be necessary, as time marches on, this will probably not be true, for now, you should probably use them.
  5. Save the file as /usr/sbin/setup_acx100
  6. Make the file executable, type: chmod u+x /usr/sbin/setup_acx100
  7. Before you ask: yes, I'm aware of the /etc/rc.d/rc.netdevice file that can get created, and I'm also aware of /etc/rc.d/rc.inet1 being another possible place to issue iwconfig's from. So far, these have not been working and the post-install line in /etc/modules.conf has, I'll update when I get it all figured out

For Knoppix 3.3 (and of course: Debian):
(this section is new and as such not as well tested, please let me know if this works/doesn't work for you)
  1. First, login as the root user
  2. Next, you'll need to create a file in /etc/sysconfig/network-scripts named ifcfg-eth0 (or ifcfg-eth1 if this is your 2nd ethernet device) Knoppix 3.3 users, do not allow this device to become wlan0, there will be all sorts of conflicts and confusion created due to Knoppix 3.3's native support of wlan-ng devices, you have been warned, if your acx100 device is wlan0 (as reported by iwconfig or ifconfig), then double-check the contents of your /etc/modutils/acx100_pci file, making sure use_eth_name=1 is there.
  3. in that file(ifcfg-eth0 or eth1) you'll need the following lines, heed the comments beginning with "#":
    	DEVICE=eth0 # if your acx100 is the 2nd ethernet device, use "eth1" instead
    	IPADDR=192.168.2.98 # use an ip address appropriate for your access point's ip range
    	NETMASK=255.255.255.0 # you shouldn't need to change this
    	NETWORK=192.168.2.0 # should be IPADDR (above) with 0 as the last number
    	BROADCAST=192.168.2.255 # should be IPADDR (above) with 255 as the last number
    	ONBOOT=no # set to "no" for CardBus cards and "yes" for PCI cards
    	
  4. Next, you'll need to open your /etc/network/interfaces file and add your acx100 into it like this:
    	# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
    
    	# The loopback interface
    	# automatically added when upgrading
    	auto lo eth0 #note the addition of eth0 here, it's the acx100 card
    	iface lo inet loopback
    
    	# this is your acx100 card
    	iface eth0 inet static # if your acx100 is the 2nd ethernet device, use "eth1" instead
    		address 192.168.2.98 # see IPADDR above in step #3
    		netmask 255.255.255.0 # ditto
    		network 192.168.2.0 # ditto
    		broadcast 192.168.2.255 # ditto
    		gateway 192.168.2.1 # should be the ip address of your wireless access point or router
    		mtu 576 # this is still necessary
    
    		# these are the wireless settings for your acx100 card
    		wireless-mode Managed
    		wireless-rate 22M
    		wireless-channel 8 # use your own channel #
    		wireless-key xxxx-xxxx-xx # use your own WEP key here, or "off"
    		wireless-essid myessidname # use your own ssid name here, enclose in quotes if it contains any spaces
    	
  5. You'll also need to verify that the file: /etc/modutils/acx100_pci exists,and contains this one line:
    		options acx100_pci firmware_dir=/lib/modules/acx100_fmwe debug=0x01 use_eth_name=1
    	
  6. After all the above is accomplished, run update-modules as root from a console
For All Distros supported here (Mandrake, RedHat, Slackware, Knoppix/Debian):
Make sure a line exists in your /etc/resolv.conf like this nameserver 192.168.2.1, once again substituting your router's or access point's ip address. Make this the first line in that file. If you find that you can ping your router or access point no problem, but the minute you try to ping a host on the internet by name, you get errors or it takes forever, the contents of this file are typically the reason why.
As you may have already surmised, at least at this point in this module's young life, a root console with "iwconfig eth0 essid ..." at the ready will be your constant companion if you intend to use it as your everyday interface, not too high a price to pay to use the 22M speed ay?

Downloads

Essential Firmware

Pre-Compiled Kernel Modules

These are listed by distribution and acx100 version, always try the latest version (highest number) first, then regress; before downloading anything: in a console type uname -r and then gcc -v (if gcc -v returns more info than just the version, look for a line beginning with "gcc version..."), compare the output with the info below, if you see a match (even if you're using a different distro) go ahead and download the module and firmware. If no version here matches what you're running, please, don't waste your time trying to insert one of these modules. You will just get errors and the module will refuse to load, If no module here will work for you see the section on compiling the module yourself. Note that these modules are tested with the firmware above, but will most likely work with other firmware files that are properly renamed and located. One last thing, the instructions above assume that the filename of these downloaded module files is preserved on download, so take care to preserve the filename when downloading, changing the filenames will lead to excessive head-scratching. Usb acx100 device users: (the DWL-120+, for one) will also need to see the compiling section, and that's about all I can help you with. I don't have any of those devices here and they are different enough that until I do, I won't presume to know how to get them going for you.

Fedora Core 1

Red Hat 9.0

Mandrake 9.2

Mandrake 9.1

Mandrake 9.0

Slackware 9.1

Slackware 9.0

SuSE 9.0 - Contributed by Rudi Pittman

Here's his site for the absolute latest acx100 project's SuSE 9.0 RPM's: SuSE 9.0 RPM's, be sure to read any documentation there before downloading and installing the RPMs and enjoy.

Knoppix 3.3 dated 2-9-2004(Debian testing/unstable)

Knoppix 3.3 dated 11-19-2003 or 11-14-2003(Debian testing/unstable)


Appendix A: finding and moving the leaked binary driver

This a digression from the installing section, you should be at the same root console you just ran grep -i acx100 /lib/modules/`uname -r`/modules.pcimap on and found additional lines returned that made you suspect you may have the leaked binary installed, typing pwd at this time should return either /mnt/windows/windows/temp or /usr/local. Here's a list for finding and uninstalling the leaked binary if it is indeed present.
  1. change to the top-level modules directory, type: cd /lib/modules/`uname -r` (those are backticks)
  2. find and verify the signature of the leaked binary, type: grep 'v0.9.0.3a' $(find -name *acx*100*.*) if anything is returned, you have the leaked binary installed and now must uninstall it. if nothing is returned and you're sure there's been no typos, continue where you left off in the installing section, but first return to the directory you were in: type cd /mnt/windows/windows/temp or cd /usr/local depending on which one you were in
  3. move the leaked binary to /root, type: mv $(grep 'v0.9.0.3a' $(find -name *acx*100*.* | grep -v 'acx100_pci.o') | cut -d ' ' -f 3) /root, do not type this more than once
  4. it should now be in your /root directory
  5. if, for some reason the above does not move it out of the modules directory tree, then you'll have to do it manually using konqueror, or your favorite file manager. The file's name you're looking to move should have been returned in item #2 above
  6. return to the directory you were in: type cd /mnt/windows/windows/temp or cd /usr/local depending on which one you were using
  7. return to the installing section and continue starting with item #5

Appendix B: Using the Open Source Acx100 Driver with the Knoppix 3.3 Live CD

note: the 0.2.0pre7 module for the Knoppix 3.3 Live CD dated: 2-9-2004 is in the downloads section above
Knoppix 3.3 Live CD users, don't feel left out, here's the Knoppix 3.3 Live CD download for version 0.2.0pre6 of the driver, also, here's the download for all you Knoppix-STD 0.1b Live CD users as well. Knoppix STD users need to remember to substitute "acx100-knoppix-std-0.1b.tar.gz" everywhere you see "acx100-knoppix-3.3.tar.gz" in the following instructions. I would like to thank b1smooth and my lovely wife (for the temporary use of her Vaio notebook and her unique "newbie" perspective...*grin*) for helping me test all this.
The Knoppix 3.3 download is a bit different from the others in that it actually contains a stripped-down, pre-compiled version of the acx100 source-code tree with the firmware already in place, along with a modified version of the start_net script, and 2 scripts for the Knoppix Desktop to start/stop the interface. Follow these instuctions to get this card going with the Knoppix 3.3 Live CD.
Here are the steps:
  1. Download and save the file above using your browser, remembering where you put it. Windows users should save it to c:\windows\temp, linux users should save it to /tmp, make sure you preserve it's filename.
  2. If Knoppix is not currently running, stick the CD in and reboot, when it's finished booting, you can close the "welcome" window and open a shell (the button on the taskbar that is a computer screen with a shell on it). Do not su to become the root user, all this can and should be done by the user named "knoppix".
  3. Unpack the archive, windows downloaders type: tar Pzxf /mnt/hda1/windows/temp/acx100-knoppix-3.3.tar.gz, you may have to type: mount /mnt/hda1 first. Linux downloaders type: tar Pzxf /tmp/acx100-knoppix-3.3.tar.gz
  4. Open and edit the settings, type: kedit /home/knoppix/Desktop/acx100/scripts/my_settings, using the comments there as your guide, make any necessary changes, save the file, and select file/quit to exit kedit and return to the shell.
  5. Start the interface, type /home/knoppix/Desktop/start_net it should finish with Interface has been set up successfully, hit enter to regain the prompt.
  6. Run a quick test, type: ping -c 4 cnet.com, you should see 0% packet loss.
  7. Optionally, You can now delete the acx100-knoppix-3.3.tar.gz file you downloaded, you can check back here from time to time for new versions if you like.
  8. In order for any of what you've just done to be there the next time you boot up the Knoppix Live CD you'll need to click the knoppix button on the taskbar and select configure/save KNOPPIX configuration, making sure to check the save all the files on the desktop option and making sure to un-check the network settings option screenshot. Upon subsequent boots of knoppix you'll need to have at least this much on the command line: knoppix myconfig=scan, along with any other options you normally use such as lang= or dma, etc...
  9. Make sure when you boot Knoppix that the media that you saved your settings on is available prior to booting, this can be a hard drive, memory stick, floppy, usb pen drive, etc...
  10. Now all you have to do whenever you boot the Live CD is click the icon on the Desktop labelled start_net, if for some reason you need to stop the interface, use the other file on the Desktop named (you guessed it) stop_net
  11. That's it, time to check your email from Knoppix!
Of course, I'd truly love to hear from any of you Knoppix 3.3 Live CD users as to how this works (or doesn't work) for you:
no spam please