This page holds a distribution set for a Linux 2.6/3.x kernel module for wireless network cards with an Agere HERMES II or HERMES II.5 chipset. Currently only PCMCIA cards are supported. The source for PCI (wl_pci.c) is included but was not changed from the original source provided by Agere Systems.
The module is compiled and tested on Ubuntu 11.10 with a Thomson SpeedTouch 110 Wireless PC CARD (Agere Systems 0110-PC) using a Fujitsu Siemens laptop and WEP 128 protected accesspoint.
This driver also works with WPA Personal (WPA TKIP), at least with HERMES II. WPA was broken in earlier versions. WPA was tested with wpa_supplicant. Ubuntu's NetworkManager cannot be used since it uses wpa_supplicant with ap_scan=1; the driver will only connect using ap_scan=2. The hardware does not support WPA2, so this will never be possible using the HERMES II chipsets.
Use with HERMES II.5 is untested, no such card is available for testing.
The changes enabling WPA are accepted by the Linux kernel maintainers, however it will take some time before a kernel with these changes appear in a Linux distribution. This driver can be used in the mean time if you need WPA.
2014-05-09: Sources updated with kernel 3.x staging source, buildable on Ubuntu 14.04
2012-11-30: Sources synchronized with current 3.x kernel
2011-10-19: WPA now works with wpa_supplicant and ap_scan=2
2011-10-19: Cleaned up, sources synchronized with current 3.0 kernel
2010-06-02: Compiles with 2.6.35-rc1 now
2010-06-02: Fixed compile with 2.6.34, driver had some 2.6.35 changes
2010-05-13: Synchronized with kernel driver, compiles with 2.6.34 now
2010-02-05: Added kernel patch to remove atoi
2009-12-06: Adjusted signal measurements using real world measurements
2009-12-06: Sync with kernel staging driver: metadata cleanup
2009-10-30: Sync with kernel staging driver: fixed Kconfig and added TODO
2009-09-24: Resubmitted the modified driver for the kernel staging area
2009-09-24: Simplified the source to a flat structure
2009-09-21: Submitted the driver for inclusion in the kernel staging area
2009-09-20: Compiles now with Linux kernel 2.6.31
2009-05-31: First public version
The following link points to the driver source: wl_lkm26_722_abg.tar.gz
Below you will find the README I added to the source containing usage instructions and background information.
Henk de Groot (firstname.lastname@example.org)
======================================================================= 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 <email@example.com> Based on 7.18 version by Andrey Borzenkov <firstname.lastname@example.org> $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 determine 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 successful 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 apparently 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 traditional 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" routine 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. Even though setting parameters on the module does not work anymore but it provides some information about all the settings. I have no personal contact with Agere, but others have. Agere agreed to make their software available under the BSD license. 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 ---