|  | September 21, 1999 | 
|  |  | 
|  | Copyright (c) 1998  Corey Thomas (corey@world.std.com) | 
|  |  | 
|  | This file is the documentation for the Raylink Wireless LAN card driver for | 
|  | Linux.  The Raylink wireless LAN card is a PCMCIA card which provides IEEE | 
|  | 802.11 compatible wireless network connectivity at 1 and 2 megabits/second. | 
|  | See http://www.raytheon.com/micro/raylink/ for more information on the Raylink | 
|  | card.  This driver is in early development and does have bugs.  See the known | 
|  | bugs and limitations at the end of this document for more information. | 
|  | This driver also works with WebGear's Aviator 2.4 and Aviator Pro | 
|  | wireless LAN cards. | 
|  |  | 
|  | As of kernel 2.3.18, the ray_cs driver is part of the Linux kernel | 
|  | source.  My web page for the development of ray_cs is at | 
|  | http://web.ralinktech.com/ralink/Home/Support/Linux.html | 
|  | and I can be emailed at corey@world.std.com | 
|  |  | 
|  | The kernel driver is based on ray_cs-1.62.tgz | 
|  |  | 
|  | The driver at my web page is intended to be used as an add on to | 
|  | David Hinds pcmcia package.  All the command line parameters are | 
|  | available when compiled as a module.  When built into the kernel, only | 
|  | the essid= string parameter is available via the kernel command line. | 
|  | This will change after the method of sorting out parameters for all | 
|  | the PCMCIA drivers is agreed upon.  If you must have a built in driver | 
|  | with nondefault parameters, they can be edited in | 
|  | /usr/src/linux/drivers/net/pcmcia/ray_cs.c.  Searching for module_param | 
|  | will find them all. | 
|  |  | 
|  | Information on card services is available at: | 
|  | http://pcmcia-cs.sourceforge.net/ | 
|  |  | 
|  |  | 
|  | Card services user programs are still required for PCMCIA devices. | 
|  | pcmcia-cs-3.1.1 or greater is required for the kernel version of | 
|  | the driver. | 
|  |  | 
|  | Currently, ray_cs is not part of David Hinds card services package, | 
|  | so the following magic is required. | 
|  |  | 
|  | At the end of the /etc/pcmcia/config.opts file, add the line: | 
|  | source ./ray_cs.opts | 
|  | This will make card services read the ray_cs.opts file | 
|  | when starting.  Create the file /etc/pcmcia/ray_cs.opts containing the | 
|  | following: | 
|  |  | 
|  | #### start of /etc/pcmcia/ray_cs.opts ################### | 
|  | # Configuration options for Raylink Wireless LAN PCMCIA card | 
|  | device "ray_cs" | 
|  | class "network" module "misc/ray_cs" | 
|  |  | 
|  | card "RayLink PC Card WLAN Adapter" | 
|  | manfid 0x01a6, 0x0000 | 
|  | bind "ray_cs" | 
|  |  | 
|  | module "misc/ray_cs" opts "" | 
|  | #### end of /etc/pcmcia/ray_cs.opts ##################### | 
|  |  | 
|  |  | 
|  | To join an existing network with | 
|  | different parameters, contact the network administrator for the | 
|  | configuration information, and edit /etc/pcmcia/ray_cs.opts. | 
|  | Add the parameters below between the empty quotes. | 
|  |  | 
|  | Parameters for ray_cs driver which may be specified in ray_cs.opts: | 
|  |  | 
|  | bc              integer         0 = normal mode (802.11 timing) | 
|  | 1 = slow down inter frame timing to allow | 
|  | operation with older breezecom access | 
|  | points. | 
|  |  | 
|  | beacon_period	integer         beacon period in Kilo-microseconds | 
|  | legal values = must be integer multiple | 
|  | of hop dwell | 
|  | default = 256 | 
|  |  | 
|  | country         integer         1 = USA (default) | 
|  | 2 = Europe | 
|  | 3 = Japan | 
|  | 4 = Korea | 
|  | 5 = Spain | 
|  | 6 = France | 
|  | 7 = Israel | 
|  | 8 = Australia | 
|  |  | 
|  | essid		string		ESS ID - network name to join | 
|  | string with maximum length of 32 chars | 
|  | default value = "ADHOC_ESSID" | 
|  |  | 
|  | hop_dwell	integer         hop dwell time in Kilo-microseconds | 
|  | legal values = 16,32,64,128(default),256 | 
|  |  | 
|  | irq_mask	integer         linux standard 16 bit value 1bit/IRQ | 
|  | lsb is IRQ 0, bit 1 is IRQ 1 etc. | 
|  | Used to restrict choice of IRQ's to use. | 
|  | Recommended method for controlling | 
|  | interrupts is in /etc/pcmcia/config.opts | 
|  |  | 
|  | net_type	integer		0 (default) = adhoc network, | 
|  | 1 = infrastructure | 
|  |  | 
|  | phy_addr	string          string containing new MAC address in | 
|  | hex, must start with x eg | 
|  | x00008f123456 | 
|  |  | 
|  | psm		integer         0 = continuously active | 
|  | 1 = power save mode (not useful yet) | 
|  |  | 
|  | pc_debug	integer		(0-5) larger values for more verbose | 
|  | logging.  Replaces ray_debug. | 
|  |  | 
|  | ray_debug	integer		Replaced with pc_debug | 
|  |  | 
|  | ray_mem_speed   integer         defaults to 500 | 
|  |  | 
|  | sniffer         integer         0 = not sniffer (default) | 
|  | 1 = sniffer which can be used to record all | 
|  | network traffic using tcpdump or similar, | 
|  | but no normal network use is allowed. | 
|  |  | 
|  | translate	integer		0 = no translation (encapsulate frames) | 
|  | 1 = translation    (RFC1042/802.1) | 
|  |  | 
|  |  | 
|  | More on sniffer mode: | 
|  |  | 
|  | tcpdump does not understand 802.11 headers, so it can't | 
|  | interpret the contents, but it can record to a file.  This is only | 
|  | useful for debugging 802.11 lowlevel protocols that are not visible to | 
|  | linux.  If you want to watch ftp xfers, or do similar things, you | 
|  | don't need to use sniffer mode.  Also, some packet types are never | 
|  | sent up by the card, so you will never see them (ack, rts, cts, probe | 
|  | etc.)  There is a simple program (showcap) included in the ray_cs | 
|  | package which parses the 802.11 headers. | 
|  |  | 
|  | Known Problems and missing features | 
|  |  | 
|  | Does not work with non x86 | 
|  |  | 
|  | Does not work with SMP | 
|  |  | 
|  | Support for defragmenting frames is not yet debugged, and in | 
|  | fact is known to not work.  I have never encountered a net set | 
|  | up to fragment, but still, it should be fixed. | 
|  |  | 
|  | The ioctl support is incomplete.  The hardware address cannot be set | 
|  | using ifconfig yet.  If a different hardware address is needed, it may | 
|  | be set using the phy_addr parameter in ray_cs.opts.  This requires | 
|  | a card insertion to take effect. |