Developing a simple 802.11b driver (long)
Nikolaj
s991071
Sat Jun 12 05:29:22 PDT 2004
Hi,
As a part of my Master Thesis I'm writing a basic 802.11b wireless
driver for an embedded microprocessor. To keep it simple the driver is
designed to interface to a 16 bit PCCARD - that is NO Cardbus.
I hope that it is ok to post my question to this mailinglist - if not
please let me know ;-)
The setup:
The PCCARD is wired to the microprocessor in accordance with "The PCCARD
Standard - Volume 2 - Electrical Specification".
I'm experimenting with 4 different 802.11b 16 bit PCCARDs
1) Dlink DWL 650 - plugging it into my linux box and running hostap_diag
I get:
NICID: id=0x800c v1.0.0 (PRISM II (2.5) PCMCIA (SST parallel flash))
PRIID: id=0x0015 v1.0.7
STAID: id=0x001f v1.3.5 (station firmware)
2) Belkin F5D6020 - plugging it into my linux box and running
hostap_diag I get:
NICID: id=0x8002 v1.0.0 (HWB3163-01,02,03,04 Rev A)
PRIID: id=0x0015 v0.3.0
STAID: id=0x001f v0.8.3 (station firmware)
3) Zyxel Zyair/100 - plugging it into my linux box and running
hostap_diag I get:
NICID: id=0x8002 v1.0.0 (HWB3163-01,02,03,04 Rev A)
PRIID: id=0x0015 v0.3.0
STAID: id=0x001f v0.7.6 (station firmware)
4) Avaya Wireless
NICID: 0x0001 (This card is Lucent based)
Primary FW: 4.4.1
Station FW: 8.48.1
To test my setup I'm using two APs: a linux box running the
hostAP-drivers and a Zyxel Prestige 316 Wireless Router. Neither of the
APs have WEP or MAC-filtering enabled when testing.
The problem:
When connecting Card 3 and 4 (se above) to my microprocessor running my
homebrew IEEE802.11b code, these cards associate without any problems
with my APs. After going through the initialization routines the cards
generate a "LinkStatus" information frame (ID 0xF200) with data "1",
indicating a connected state. Dumping RID 0xFD41 (CurrentSSID) also
gives me the SSID of the connected AP, so all this is fine.
When connecting Card 1 and 2, the cards _WILL NOT_ associate with any of
my APs. A random period of time after going through the initialization
routines the cards generate "LinkStatus" information frames (ID 0xF200)
with data "6", indicating "association failed". Dumping RID 0xFD40
(PortStatus) gives me a "2" ("searching for initial connection"). I have
tried numerous tricks to get these cards working, but have not had any
luck yet.
Note that I have no problems reading and writing the registers and
various records of the cards - I just cant get them to associate with my
APs. Also all cards work perfectly in my laptop.
Below are the basic steps I take to initialize the cards to make them
associate with an AP.
My minimal initialization in order:
1) Wait for 10 ms after powerup then toggle reset (width of pulse is
also 10 ms)
2) Reset low and wait another 100 ms (just to be safe) before proceeding
3) Write 0x41 to the COR to enable IO operation
4) Write 0x00 to the Command Register
5) Write 0xFF to the ACK-register to acknowledge all pending acks.
6) Write 0x01(STA) to RID 0xFC00 (cnfPortType)
7) Write 0x01 to the Command Register
These steps are sufficient to make card 3 and 4 associate with any of my
APs, but not Card 1 and 2. I have tried configuring other RIDS but no
luck, so now I have returned to my basic initialization as outlined
above, leaving the unmentioned RIDS at their default values.
Any ideas as to what might be the problem?
Do I need to go through additional steps with card 1 and 2 to get them
to associate with my AP?
I have written a small PC application that lets me dump the contents of
the registers and records of the PCCARDs firmware through the
microprocessor so please let me know if more information is needed.
What is normally wrong when a card generate a "association failed"
information frame (ID 0xF200)?
Do I need to upload any tertiary firmware to get the cards to act as STA?
Best regards
Nikolaj
More information about the Hostap
mailing list