Developing a simple 802.11b driver (long)

Nikolaj s991071 at com.dtu.dk
Sat Jun 12 08:29:22 EDT 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