68c0bdff7a
WLAN driver for cards using the HERMES II and HERMES II.5 chipset Based on Agere Systems Linux LKM Wireless Driver Source Code, Version 7.22; complies with Open Source BSD License. The software is a modified version of wl_lkm_722_abg.tar.gz from the Agere Systems website, addapted for Ubuntu 9.04 and modified to fit in the current Linux kernel (2.6.31). Modified for kernel 2.6 by Henk de Groot <pe1dnn@amsat.org> Based on 7.18 version by Andrey Borzenkov <arvidjaar@mail.ru> $Revision: 39 $ Signed-off-by: Henk de Groot <pe1dnn@amsat.org> Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
181 lines
6.5 KiB
Plaintext
181 lines
6.5 KiB
Plaintext
=======================================================================
|
|
WLAN driver for cards using the HERMES II and HERMES II.5 chipset
|
|
|
|
HERMES II Card
|
|
|
|
PCMCIA Info: "Agere Systems" "Wireless PC Card Model 0110"
|
|
Manufacture ID: 0156,0003
|
|
|
|
HERMES II.5 Card
|
|
|
|
PCMCIA Info: "Linksys" "WCF54G_Wireless-G_CompactFlash_Card"
|
|
Manufacture ID: 0156,0004
|
|
|
|
Based on Agere Systems Linux LKM Wireless Driver Source Code,
|
|
Version 7.22; complies with Open Source BSD License.
|
|
=======================================================================
|
|
|
|
DESCRIPTION
|
|
|
|
The software is a modified version of wl_lkm_722_abg.tar.gz from the
|
|
Agere Systems website, addapted for Ubuntu 9.04.
|
|
|
|
Modified for kernel 2.6 by Henk de Groot <pe1dnn@amsat.org>
|
|
Based on 7.18 version by Andrey Borzenkov <arvidjaar@mail.ru> $Revision: 39 $
|
|
|
|
INSTALLATION
|
|
|
|
Unpack in a new directory.
|
|
|
|
Open a terminal screen.
|
|
|
|
Change directory to the source directory
|
|
|
|
Type command
|
|
|
|
make
|
|
|
|
and wait until it is finshed. Now you have build the module
|
|
wlags49_h2_cs; this module is meant for a HERMES II card.
|
|
|
|
The driver is tested with a Thomson SpeedTouch 110 Wireless PC Card.
|
|
For the test Station mode was used with WEP. The driver is supposed
|
|
to support WAP and as accesspoint that is NOT tested.
|
|
|
|
If you have a card using the HERMES II.5 chip you have to make
|
|
changes to the Makefile and uncomment -DHERMES25. This will build
|
|
driver wlags49_h25_cs.
|
|
|
|
Note: You can detemine the type with command "pccardctrl info"
|
|
MANIFID: 0156,0002 = HERMES - not supported by this driver
|
|
MANIFID: 0156,0003 = HERMES II (Wireless B)
|
|
MANIFID: 0156,0004 = HERMES II.5 (Wireless B/G)
|
|
|
|
After succesfull compile type command
|
|
|
|
sudo make install
|
|
|
|
to install the module.
|
|
|
|
Now the card should be recognized. It should be able to configure
|
|
and use the card with NetworkManager. Wpa_supplicant also works, as does
|
|
manual configuration using the iwconfig/iwlist programs.
|
|
|
|
Note: I only tested Station mode with WEP but if I didn't break anything
|
|
WPA and AP mode should also work; note however that WPA was experimental
|
|
in the original Agere driver!
|
|
|
|
Note: to compile as AP change the makefile and remove the line
|
|
-DSTA_ONLY \
|
|
|
|
(or comment it, but in that case make sure to move it after all the
|
|
flags you want to use)
|
|
|
|
CHANGES
|
|
|
|
The HCF functions to control the card are virtually unchanged, the only
|
|
changes are meant to fix compiler warnings. The only real change is in
|
|
HCF_WAIT_WHILE which now has a udelay(2) added to give a small delay.
|
|
|
|
The linux driver files (wl_xxxx.c) are changed in the following ways:
|
|
- Addaptations of Andrey Borzenkov applied to 7.22 source
|
|
- Alterations to avoid most HCF_ASSERTs
|
|
-- Switching interrupts off and on in the HCF
|
|
-- Bugfixes, things that were aparently wrong like reporting link status
|
|
change which checked a variable that was not changed in HCF anymore.
|
|
-- Used on WEP but setting keys via SIOCSIWENCODEEXT was not supported
|
|
-- Recovery actions added
|
|
|
|
The major problem was the order in which calls can be made. The original
|
|
looks like a traditonal UNIX driver. To call an "ioctl" function you
|
|
have to "open" the device first to get a handle and after "close" no
|
|
"ioctl" function can be called anymore. With the 2.6 driver this all
|
|
changed; the former ioctl functions are now called before "open" and
|
|
after "close", which was not expected. One of the problems was enable/
|
|
disable of interrupts in the HCF. Interrupt handling starts at "open"
|
|
so if a former "ioctl" routinge is called before "open" or after "close"
|
|
then nothing should be done with interrupt switching in the HCF. Once
|
|
this was solved most HCF_ASSERTS went away.
|
|
|
|
The last point, recovery actions added, needs some clarification.
|
|
Starting the card works most of the time, but unfortunately not always.
|
|
At a few times recovery code was added; when the card starts to
|
|
misbehave or the communication between the HCF and the card is
|
|
out of sync and the HCF enters DEFUNCT mode everything is reset and
|
|
reinitialized. Note, hcf.c contains a lot of documentation. It takes
|
|
some time but slowly some things become clear. Also some unresolved
|
|
issues are mentioned in hcf.c, so there are still unknown bugs.
|
|
|
|
The card problems are almost in all cases when starting up and before
|
|
the first association with an AP, once the card is in operation it
|
|
seems to stay that way; when debugging no HCF_ASSERTS appear anymore.
|
|
Note: some HCF_ASSERTS still appear, in a number of cases it is a real
|
|
error, for example at card removal the missing card is detected.
|
|
|
|
LICENSE
|
|
|
|
The Agere Systems license applies. This is why I include the original
|
|
README.wlags49. The instructions in that file are bogus now. I also
|
|
include the man page. Eventhough setting parameters on the module
|
|
does not work anymore but it provides some information about all the
|
|
settings.
|
|
|
|
I have not have personal contact with Agere, but others have. Agere
|
|
agreed to make their software available under the BSD licence.
|
|
This driver is based on the 7.22 version.
|
|
|
|
The following was mailed by Agere to Andrey Borzenkov about this:
|
|
|
|
--- Begin Message ---
|
|
|
|
* From: TJ <tj@xxxxxxxxxxx>
|
|
* Date: Mon, 05 Feb 2007 19:28:59 +0000
|
|
|
|
Hi Andrey,
|
|
|
|
I've got some good news for you/us/the world of Hermes :)
|
|
|
|
I got a reply from the legal representative at Agere confirming that
|
|
their source-code is BSD licensed, and I've included the contents of the
|
|
email here.
|
|
|
|
I hope this re-assures you so that your excellent work on the drivers
|
|
can be made widely available for other hackers to work with.
|
|
|
|
Regards,
|
|
|
|
TJ.
|
|
|
|
---------
|
|
On Mon, 2007-02-05 at 13:54 -0500, Pathare, Viren M (Viren) wrote:
|
|
|
|
|
|
"I would like to confirm that the two drivers; Linux LKM Wireless Driver
|
|
Source Code, Version 7.18 and Linux LKM Wireless Driver Source Code,
|
|
Version 7.22 comply with Open Source BSD License. Therefore the source
|
|
code can be distributed in unmodified or modified form consistent with
|
|
the terms of the license.
|
|
|
|
The Linux driver architecture was based on two modules, the MSF (Module
|
|
specific functions) and the HCF (Hardware Control Functions). Included
|
|
in the HCF is run-time firmware (binary format) which is downloaded into
|
|
the RAM of the Hermes 1/2/2.5 WMAC.
|
|
|
|
This hex coded firmware is not based on any open source software and
|
|
hence it is not subject to any Open Source License. The firmware was
|
|
developed by Agere and runs on the DISC processor embedded within the
|
|
Hermes 1/2/2.5 Wireless MAC devices.
|
|
|
|
Hope this helps.
|
|
|
|
Sincerely,
|
|
|
|
Viren Pathare
|
|
Intellectual Property Licensing Manager
|
|
Agere"
|
|
|
|
|
|
|
|
--- End Message ---
|
|
|