Page updated: April 1, 2004 10:02 PM EST
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:
Everyone, please read the Updates
Quick Links: Downloads• Installing•
Testing• Configuring•
Compiling•
Knoppix 3.3 Live
CD• Removing
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:
- 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
- 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.
- 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
- Now, change the current working directory, using the example directories
from above you would type: cd /mnt/windows/windows/temp or cd
/usr/local
- 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
- Unpack the firmware, type: tar zxf acx100_firmware.tar.gz
- 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.
- 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.
- Create a directory for the firmware to live in, type: mkdir
/lib/modules/acx100_fmwe
- 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
- (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
- 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.
- 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
- 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
- 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
- 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
- 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:
- 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.
- 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.
- Change to the /usr/local directory: type cd /usr/local
- 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)
- 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.
- 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.
- Change to the acx100 source directory, type cd acx100
- Compile the source, type: make
- In preparation for installation, change to the firmware directory, type
cd firmware
- Copy those firmware files to the src directory, type: cp *.BIN
../src
- In preparation for installation, change to the src directory, type: cd
../src
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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)
- 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.
- 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.
- 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:
- 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!
- 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:
- Open (again) your /etc/modules.conf file in a text editor, and add this
line: post-install acx100_pci /usr/sbin/setup_acx100
- 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.
- Save the file as /usr/sbin/setup_acx100
- Make the file executable, type: chmod u+x /usr/sbin/setup_acx100
- 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)
- First, login as the root user
- 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.
- 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
- 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
- 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
- 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
- uname -r: 2.4.22-1.2115.nptl
- gcc -v: 3.3.2
Red Hat 9.0
- uname -r: 2.4.20-8
- gcc -v: 3.2.2
Mandrake 9.2
Mandrake 9.1
- uname -r: 2.4.21-0.13mdk
- gcc -v: 3.2.2
Mandrake 9.0
- uname -r: 2.4.19-16mdk
- gcc -v: 3.2
Slackware 9.1
- uname -r: 2.4.22
- gcc -v: 3.2.3
Slackware 9.0
- uname -r: 2.4.20
- gcc -v: 3.2
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)
- "Live CD" users, this is the Knoppix 3.3 Live CD download for the
release dated 2-9-2004: acx100-0.2.0pre7-knoppix-3.3-2.4.24-xfs.tar.gz
please see Appendix B for
instructions, substituting the correct filename:
acx100-0.2.0pre7-knoppix-3.3-2.4.24-xfs.tar.gz where appropriate
- 0.2.0pre7
for Knoppix 3.3 (2-9-2004) installed to the hard drive
Knoppix 3.3 dated 11-19-2003 or 11-14-2003(Debian
testing/unstable)
- uname -r: 2.4.22-xfs
- gcc -v: 3.3
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.
- change to the top-level modules directory, type: cd /lib/modules/`uname
-r` (those are backticks)
- 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
- 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
- it should now be in your /root directory
- 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
- return to the directory you were in: type cd
/mnt/windows/windows/temp or cd /usr/local depending on which one
you were using
- 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:
- 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.
- 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".
- 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
- 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.
- 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.
- Run a quick test, type: ping -c 4 cnet.com, you should see 0%
packet loss.
- 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.
- 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...
- 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...
- 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
- 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: