Mid-term Project Presentation Eli Bendersky Igor Oks
The project Driver for a wireless LAN network card.
Project goals Experience with Windows CE development for handheld computers. Understanding the internals of a wireless network card driver. Serve as a starting-point for future projects based on communication using the protocol. Setting up a functional WLAN environment
Background
Wireless LAN A Local Area Network, for office, home, school etc. Wireless connection: No need for network wires, sockets, etc. Fast Prices dropping
How does WLAN work
What was done so far ?
A development environment was set up HW: Desktop PC and a hand-held PC (iPac) with a network card. Access point to the network. SW: Windows CE Platform SDK, Microsoft Visual C++ for Embedded applications. Source code of a sample driver.
A thorough understanding of the standard Operates on the Physical & Data Link network layers Consists of an Access points and client(s) (can also operate on peer- to-peer level)
– Physical Layer Frequency: 2,400 Mhz – 2,483 Mhz Speed: 1-2 Mbps There are two common methods: DSSS (Direct Sequence Spread Spectrum) – uses Phase Shift Keying (PSK) modulation. FHSS (Frequency Hopping Spread Spectrum) – uses FSK (Frequency Shift Keying)
FHSS The 2.4 Ghz band is divided to 79 channels of 1 Mhz Sender and receiver agree on a channel switching scheme Maximum speed is 2 Mbps
DSSS The 2.4 Ghz band is divided into 14 partly-overlapping channels Data is sent over a single channel without switching
– Data Link Layer LLC – Similar to other 802 networks (such as Ethernet) MAC – Uses CSMA/CA (Carrier Sense, Multiple Access / Collision Avoidance)
Driver implementation Using the Windows CE DDK (Driver Development Kit) Following NDIS (Network Driver Interface Specification) Latest NDIS version is 5.0
Understanding NDIS 5.0 NDIS – interface by which one or more LAN adapters communicate The network card driver uses NDIS Primary purpose: define a standard API for Network Interface Cards
The driver Directly manages a network interface card and provides an interface to higher level drivers. Miniport – wrapped by NDIS on both the higher and the lower levels Calls lower-level NDIS functions Provides functions to upper levels. For example: DriverEntry
DriverEntry Called by the system to load the driver Creates an association between the driver and the NDIS Library Registers driver version number and entry points with NDIS
Heaps of source code Given a sample driver (from Intel) Going through the code, understanding the flow Recognizing lower-level and higher- level interface calls
To be done …
Understanding the driver A lot of source code to go through !
Making things work Compiling the driver (with MS VC++ Embedded) Loading the driver onto the iPac
Establish Communication Establish communication from the iPac to an access point using our driver Remote debugging to watch over the process
If that succeeds … Communication via works ! Think about applications Extensive documentation
Schedule – Complete our understanding of the driver and the underlying protocols. Debugging – Making the driver work on the iPac with a network card – Final presentation & report