Linux and the NetGear MA401 Wireless Card

Last modified: November 29, 2003

Here are some notes on configuring the NetGear MA401 802.11b wireless PC card under Fedora Core 1 Linux. I'm connecting to a D-Link DI-614+ access point with 128-bit WEP enabled.

$ /sbin/cardctl ident
Socket 0:
  product info: "NETGEAR MA401RA Wireless PC", "Card", "ISL37300P", "Eval-RevA"
  manfid: 0x000b, 0x7300
  function: 6 (network)
Socket 1:
  no product info available

Install the linux-wlan-ng driver. I used the Fedora Core 1 RPMs.

$ uname -r
2.4.22-1.2115.nptl

$ rpm -qa | grep -i wlan
kernel-wlan-ng-0.2.1-pre14
kernel-wlan-ng-modules-fc1.1.2115-0.2.1-pre14
kernel-wlan-ng-pcmcia-0.2.1-pre14

Log into the access point and note your SSID, channel, and WEP keys. Set your SSID in /etc/wlan/wlan.conf:

$ diff -u wlan.conf.orig wlan.conf
--- wlan.conf.orig      2003-11-28 02:20:32.000000000 -0800
+++ wlan.conf   2003-11-28 02:21:04.000000000 -0800
@@ -73,7 +73,7 @@
 # Use a SSID of "" to associate with any network in range.
 #########

-SSID_wlan0=""
+SSID_wlan0="linux-wlan"
 ENABLE_wlan0=y
 #SSID_wlan1=""
 #ENABLE_wlan1=n

Create a corresponding configuration file for the SSID by copying /etc/wlan/wlancfg-DEFAULT to /etc/wlan/wlancfg-<SSID>. In my case, this was wlancfg-linux-wlan:

$ diff -U2 wlancfg-DEFAULT wlancfg-linux-wlan
--- wlancfg-DEFAULT     2003-11-15 18:13:25.000000000 -0800
+++ wlancfg-linux-wlan  2003-11-28 02:24:32.000000000 -0800
@@ -10,8 +10,8 @@
 #=======WEP===========================================
 # [Dis/En]able WEP.  Settings only matter if PrivacyInvoked is true
-lnxreq_hostWEPEncrypt=false     # true|false
-lnxreq_hostWEPDecrypt=false     # true|false
-dot11PrivacyInvoked=false      # true|false
-dot11WEPDefaultKeyID=0         # 0|1|2|3
+lnxreq_hostWEPEncrypt=true      # true|false
+lnxreq_hostWEPDecrypt=true      # true|false
+dot11PrivacyInvoked=true        # true|false
+dot11WEPDefaultKeyID=2         # 0|1|2|3
 dot11ExcludeUnencrypted=true   # true|false, in AP this means WEP is required.

@@ -24,8 +24,8 @@

 # or set them explicitly.  Set genstr or keys, not both.
-dot11WEPDefaultKey0=           # format: xx:xx:xx:xx:xx   or
-dot11WEPDefaultKey1=           #         xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
-dot11WEPDefaultKey2=           #  e.g.   01:20:03:40:05   or
-dot11WEPDefaultKey3=           #         01:02:03:04:05:06:07:08:09:0a:0b:0c:0d
+dot11WEPDefaultKey0=36:1a:29:7d:ec:8c:53:b6:54:56:31:aa:0f             # format: xx:xx:xx:xx:xx   or
+dot11WEPDefaultKey1=a3:0f:05:64:b0:06:08:e2:dd:c4:3a:47:04             #         xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
+dot11WEPDefaultKey2=90:5a:a1:09:88:97:b3:b2:2d:04:9a:b9:22             #  e.g.   01:20:03:40:05   or
+dot11WEPDefaultKey3=46:b1:20:31:8f:b1:c5:8f:d1:1d:36:61:2b             #         01:02:03:04:05:06:07:08:09:0a:0b:0c:0d
 #=======SELECT STATION MODE===================
 IS_ADHOC=n                     # y|n, y - adhoc, n - infrastructure
@@ -33,5 +33,5 @@
 #======= INFRASTRUCTURE STATION  ===================
 # What kind of authentication?
-AuthType="opensystem"          # opensystem | sharedkey (requires WEP)
+AuthType="sharedkey"           # opensystem | sharedkey (requires WEP)

 #======= ADHOC STATION ============================

Restart your PCMCIA services and you should be connected:

$ /sbin/service pcmcia restart
Shutting down PCMCIA services: cardmgr modules.
Starting PCMCIA services: cardmgr.

$ /sbin/ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:09:5B:25:E3:7B
          inet addr:192.168.0.102  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:831 errors:0 dropped:0 overruns:0 frame:0
          TX packets:256 errors:0 dropped:1 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:211658 (206.6 Kb)  TX bytes:23860 (23.3 Kb)
          Interrupt:3 Base address:0x100

$ /sbin/iwconfig wlan0
wlan0     IEEE 802.11-b  ESSID:"linux-wlan"  Nickname:"linux-wlan"
          Mode:Managed  Frequency:2.437GHz  Access Point: 00:40:05:B5:F8:F3
          Bit Rate:11Mb/s   Tx-Power:2346 dBm
          Retry min limit:8   RTS thr:off   Fragment thr:off
          Encryption key:off
          Link Quality:60/92  Signal level:-60 dBm  Noise level:-99 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

$ tail -f /var/log/messages
Nov 29 00:11:55 localhost kernel: Linux Kernel Card Services 3.1.22
Nov 29 00:11:55 localhost kernel:   options:  [pci] [cardbus] [pm]
Nov 29 00:11:55 localhost kernel: Yenta IRQ list 0cb8, PCI irq9
Nov 29 00:11:55 localhost kernel: Socket status: 30000410
Nov 29 00:11:55 localhost kernel: Yenta IRQ list 0cb8, PCI irq9
Nov 29 00:11:55 localhost kernel: Socket status: 30000006
Nov 29 00:11:56 localhost cardmgr[3397]: starting, version is 3.1.31
Nov 29 00:11:56 localhost cardmgr[3397]: watching 2 sockets
Nov 29 00:11:56 localhost cardmgr[3397]: Card Services release does not match
Nov 29 00:11:56 localhost kernel: cs: IO port probe 0x0c00-0x0cff: clean.
Nov 29 00:11:56 localhost kernel: cs: IO port probe 0x0100-0x04ff: excluding 0x4d0-0x4d7
Nov 29 00:11:56 localhost kernel: cs: IO port probe 0x0a00-0x0aff: clean.
Nov 29 00:11:56 localhost kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
Nov 29 00:11:56 localhost cardmgr[3397]: socket 0: NETGEAR MA401RA 11Mbps 802.11 WLAN Card
Nov 29 00:11:56 localhost cardmgr[3397]: executing: 'modprobe prism2_cs'
Nov 29 00:11:57 localhost kernel: prism2_init: prism2_cs.o: 0.2.1-pre14 Loaded
Nov 29 00:11:57 localhost kernel: prism2_init: dev_info is: prism2_cs
Nov 29 00:11:57 localhost kernel: prism2_cs: index 0x01: Vcc 5.0, irq 3, io 0x0100-0x013f
Nov 29 00:11:57 localhost cardmgr[3397]: executing: './wlan-ng start wlan0'
Nov 29 00:11:57 localhost cardmgr[3397]: + ./wlan-ng: line 51: /sbin/prism2dl: No such file or directory
Nov 29 00:11:57 localhost kernel: ident: nic h/w: id=0x800c 1.0.0
Nov 29 00:11:57 localhost kernel: ident: pri f/w: id=0x15 1.0.7
Nov 29 00:11:57 localhost kernel: ident: sta f/w: id=0x1f 1.3.6
Nov 29 00:11:57 localhost kernel: MFI:SUP:role=0x00:id=0x01:var=0x01:b/t=1/1
Nov 29 00:11:57 localhost kernel: CFI:SUP:role=0x00:id=0x02:var=0x02:b/t=1/1
Nov 29 00:11:57 localhost kernel: PRI:SUP:role=0x00:id=0x03:var=0x01:b/t=4/4
Nov 29 00:11:57 localhost kernel: STA:SUP:role=0x00:id=0x04:var=0x01:b/t=1/9
Nov 29 00:11:57 localhost kernel: PRI-CFI:ACT:role=0x01:id=0x02:var=0x02:b/t=1/1
Nov 29 00:11:57 localhost kernel: STA-CFI:ACT:role=0x01:id=0x02:var=0x02:b/t=1/1
Nov 29 00:11:57 localhost kernel: STA-MFI:ACT:role=0x01:id=0x01:var=0x01:b/t=1/1
Nov 29 00:11:57 localhost kernel: Prism2 card SN: 99SA01000000
Nov 29 00:12:02 localhost dhclient: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
Nov 29 00:12:02 localhost kernel: p80211knetdev_hard_start_xmit: Tx attempt prior to association, frame dropped.
Nov 29 00:12:03 localhost kernel: linkstatus=ASSOCFAIL (unhandled)
Nov 29 00:12:04 localhost kernel: linkstatus=CONNECTED
Nov 29 00:12:10 localhost dhclient: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
Nov 29 00:12:10 localhost dhclient: DHCPACK from 192.168.0.1
Nov 29 00:12:10 localhost dhclient: bound to 192.168.0.102 -- renewal in 302271 seconds.