Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 1 | ======================================================================= |
| 2 | WLAN driver for cards using the HERMES II and HERMES II.5 chipset |
| 3 | |
| 4 | HERMES II Card |
| 5 | |
| 6 | PCMCIA Info: "Agere Systems" "Wireless PC Card Model 0110" |
| 7 | Manufacture ID: 0156,0003 |
| 8 | |
| 9 | HERMES II.5 Card |
| 10 | |
| 11 | PCMCIA Info: "Linksys" "WCF54G_Wireless-G_CompactFlash_Card" |
| 12 | Manufacture ID: 0156,0004 |
| 13 | |
| 14 | Based on Agere Systems Linux LKM Wireless Driver Source Code, |
| 15 | Version 7.22; complies with Open Source BSD License. |
| 16 | ======================================================================= |
| 17 | |
| 18 | DESCRIPTION |
| 19 | |
| 20 | The software is a modified version of wl_lkm_722_abg.tar.gz from the |
| 21 | Agere Systems website, addapted for Ubuntu 9.04. |
| 22 | |
| 23 | Modified for kernel 2.6 by Henk de Groot <pe1dnn@amsat.org> |
| 24 | Based on 7.18 version by Andrey Borzenkov <arvidjaar@mail.ru> $Revision: 39 $ |
| 25 | |
| 26 | INSTALLATION |
| 27 | |
| 28 | Unpack in a new directory. |
| 29 | |
| 30 | Open a terminal screen. |
| 31 | |
| 32 | Change directory to the source directory |
| 33 | |
| 34 | Type command |
| 35 | |
| 36 | make |
| 37 | |
| 38 | and wait until it is finshed. Now you have build the module |
| 39 | wlags49_h2_cs; this module is meant for a HERMES II card. |
| 40 | |
| 41 | The driver is tested with a Thomson SpeedTouch 110 Wireless PC Card. |
| 42 | For the test Station mode was used with WEP. The driver is supposed |
| 43 | to support WAP and as accesspoint that is NOT tested. |
| 44 | |
| 45 | If you have a card using the HERMES II.5 chip you have to make |
| 46 | changes to the Makefile and uncomment -DHERMES25. This will build |
| 47 | driver wlags49_h25_cs. |
| 48 | |
| 49 | Note: You can detemine the type with command "pccardctrl info" |
| 50 | MANIFID: 0156,0002 = HERMES - not supported by this driver |
| 51 | MANIFID: 0156,0003 = HERMES II (Wireless B) |
| 52 | MANIFID: 0156,0004 = HERMES II.5 (Wireless B/G) |
| 53 | |
| 54 | After succesfull compile type command |
| 55 | |
| 56 | sudo make install |
| 57 | |
| 58 | to install the module. |
| 59 | |
| 60 | Now the card should be recognized. It should be able to configure |
| 61 | and use the card with NetworkManager. Wpa_supplicant also works, as does |
| 62 | manual configuration using the iwconfig/iwlist programs. |
| 63 | |
| 64 | Note: I only tested Station mode with WEP but if I didn't break anything |
| 65 | WPA and AP mode should also work; note however that WPA was experimental |
| 66 | in the original Agere driver! |
| 67 | |
| 68 | Note: to compile as AP change the makefile and remove the line |
| 69 | -DSTA_ONLY \ |
| 70 | |
| 71 | (or comment it, but in that case make sure to move it after all the |
| 72 | flags you want to use) |
| 73 | |
| 74 | CHANGES |
| 75 | |
| 76 | The HCF functions to control the card are virtually unchanged, the only |
| 77 | changes are meant to fix compiler warnings. The only real change is in |
| 78 | HCF_WAIT_WHILE which now has a udelay(2) added to give a small delay. |
| 79 | |
| 80 | The linux driver files (wl_xxxx.c) are changed in the following ways: |
| 81 | - Addaptations of Andrey Borzenkov applied to 7.22 source |
| 82 | - Alterations to avoid most HCF_ASSERTs |
| 83 | -- Switching interrupts off and on in the HCF |
| 84 | -- Bugfixes, things that were aparently wrong like reporting link status |
| 85 | change which checked a variable that was not changed in HCF anymore. |
| 86 | -- Used on WEP but setting keys via SIOCSIWENCODEEXT was not supported |
| 87 | -- Recovery actions added |
| 88 | |
| 89 | The major problem was the order in which calls can be made. The original |
| 90 | looks like a traditonal UNIX driver. To call an "ioctl" function you |
| 91 | have to "open" the device first to get a handle and after "close" no |
| 92 | "ioctl" function can be called anymore. With the 2.6 driver this all |
| 93 | changed; the former ioctl functions are now called before "open" and |
| 94 | after "close", which was not expected. One of the problems was enable/ |
| 95 | disable of interrupts in the HCF. Interrupt handling starts at "open" |
| 96 | so if a former "ioctl" routinge is called before "open" or after "close" |
| 97 | then nothing should be done with interrupt switching in the HCF. Once |
| 98 | this was solved most HCF_ASSERTS went away. |
| 99 | |
| 100 | The last point, recovery actions added, needs some clarification. |
| 101 | Starting the card works most of the time, but unfortunately not always. |
| 102 | At a few times recovery code was added; when the card starts to |
| 103 | misbehave or the communication between the HCF and the card is |
| 104 | out of sync and the HCF enters DEFUNCT mode everything is reset and |
| 105 | reinitialized. Note, hcf.c contains a lot of documentation. It takes |
| 106 | some time but slowly some things become clear. Also some unresolved |
| 107 | issues are mentioned in hcf.c, so there are still unknown bugs. |
| 108 | |
| 109 | The card problems are almost in all cases when starting up and before |
| 110 | the first association with an AP, once the card is in operation it |
| 111 | seems to stay that way; when debugging no HCF_ASSERTS appear anymore. |
| 112 | Note: some HCF_ASSERTS still appear, in a number of cases it is a real |
| 113 | error, for example at card removal the missing card is detected. |
| 114 | |
| 115 | LICENSE |
| 116 | |
| 117 | The Agere Systems license applies. This is why I include the original |
| 118 | README.wlags49. The instructions in that file are bogus now. I also |
| 119 | include the man page. Eventhough setting parameters on the module |
| 120 | does not work anymore but it provides some information about all the |
| 121 | settings. |
| 122 | |
| 123 | I have not have personal contact with Agere, but others have. Agere |
| 124 | agreed to make their software available under the BSD licence. |
| 125 | This driver is based on the 7.22 version. |
| 126 | |
| 127 | The following was mailed by Agere to Andrey Borzenkov about this: |
| 128 | |
| 129 | --- Begin Message --- |
| 130 | |
| 131 | * From: TJ <tj@xxxxxxxxxxx> |
| 132 | * Date: Mon, 05 Feb 2007 19:28:59 +0000 |
| 133 | |
| 134 | Hi Andrey, |
| 135 | |
| 136 | I've got some good news for you/us/the world of Hermes :) |
| 137 | |
| 138 | I got a reply from the legal representative at Agere confirming that |
| 139 | their source-code is BSD licensed, and I've included the contents of the |
| 140 | email here. |
| 141 | |
| 142 | I hope this re-assures you so that your excellent work on the drivers |
| 143 | can be made widely available for other hackers to work with. |
| 144 | |
| 145 | Regards, |
| 146 | |
| 147 | TJ. |
| 148 | |
| 149 | --------- |
| 150 | On Mon, 2007-02-05 at 13:54 -0500, Pathare, Viren M (Viren) wrote: |
| 151 | |
| 152 | |
| 153 | "I would like to confirm that the two drivers; Linux LKM Wireless Driver |
| 154 | Source Code, Version 7.18 and Linux LKM Wireless Driver Source Code, |
| 155 | Version 7.22 comply with Open Source BSD License. Therefore the source |
| 156 | code can be distributed in unmodified or modified form consistent with |
| 157 | the terms of the license. |
| 158 | |
| 159 | The Linux driver architecture was based on two modules, the MSF (Module |
| 160 | specific functions) and the HCF (Hardware Control Functions). Included |
| 161 | in the HCF is run-time firmware (binary format) which is downloaded into |
| 162 | the RAM of the Hermes 1/2/2.5 WMAC. |
| 163 | |
| 164 | This hex coded firmware is not based on any open source software and |
| 165 | hence it is not subject to any Open Source License. The firmware was |
| 166 | developed by Agere and runs on the DISC processor embedded within the |
| 167 | Hermes 1/2/2.5 Wireless MAC devices. |
| 168 | |
| 169 | Hope this helps. |
| 170 | |
| 171 | Sincerely, |
| 172 | |
| 173 | Viren Pathare |
| 174 | Intellectual Property Licensing Manager |
| 175 | Agere" |
| 176 | |
| 177 | |
| 178 | |
| 179 | --- End Message --- |
| 180 | |