# Wireless success: Netgear WG311, madwifi, wpa_supplicant

## thoughts

It seems like there are 100 different ways to do wireless on Linux, and there is so much incomplete documentation floating around on all of them.  I just finally got mine working, so I wanted to post a complete start-to-finish howto.

First of all, I'm running a 2.6.11-gentoo-r9 kernel on a Pentium-III system.  My network card is a Netgear WG311 (v1, which isn't shown on the card, it just says WG311) PCI card, which does 802.11b/g.  This card uses an Atheros chip:

```
[root@host]# lspci

0000:00:0c.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)
```

First I got the latest baselayout, which was 1.11.13:

```
emerge -vabk baselayout
```

Since baselayout changes /etc so much, and since dispatch-conf regularly borks my files, I make a complete backup of /etc before doing any etc-update or dispatch-conf.  The whole of /etc is only a few tens of MB so it's no big deal to backup the whole thing:

```
[root@host]# mkdir /arch

[root@host]# cp -a /etc /arch/etc-arch20050722-before-updating-files-from-baselayout
```

Next I run etc-update to auto-merge trivial /etc changes, but then I exit it (use the "-1" option) and do dispatch-conf to manually merge the non-trivial changes.

OK, back to the topic at hand:

```
[root@host]# emerge -vabk wireless-tools 

[root@host]# emerge -vabk wpa_supplicant

[root@host]# emerge -vabk madwifi-driver

[root@host]# emerge -vabk madwifi-tools
```

This gets me wireless-tools-27-r1, wpa_supplicant-0.3.8-r1, madwifi-driver-0.1_pre20050420, and madwifi-tools-0.1_pre20050420.

Merging madwifi-driver told me to do some stuff when it finished, but I ignored it for now.

Next, start the driver and check that the modules all load:

```
[root@host]# modprobe ath_pci

[root@host]# lsmod|grep ath

ath_pci                52832  0 

ath_rate_amrr           7076  1 ath_pci

wlan                  106652  3 ath_pci,ath_rate_amrr

ath_hal               146864  2 ath_pci
```

Now put this into /etc/conf.d/net:

```
modules=( "wpa_supplicant" )

wpa_supplicant_ath0="-Dmadwifi"

wpa_timeout_ath0=20

# optionally set the IP and router for your wireless card to use.

# if you're using DHCP you can skip these.

ifconfig_ath0=( "192.168.1.10 netmask 255.255.255.0" )

routes_ath0=( "default gw 192.168.1.1" )
```

Now create /etc/wpa_supplicant.conf by copying it from /etc/wpa_supplicant.conf.example.  Delete all the example network blocks at the bottom, and put just this one in:

```
network={

   ssid="yourssid"

   psk="very secret passphrase"

   priority=5

}
```

Since that file now contains your network password, make it readable by only root:

```
chmod 0600 /etc/wpa_supplicant.conf
```

Create your net.ath0 device:

```
[root@host]# cd /etc/init.d

[root@host]# ln -s net.eth0 net.ath0
```

Now your configuration should be complete; just restart the driver:

```
[root@host]# rmmod ath_pci ath_rate_amrr wlan ath_hal

[root@host]# lsmod|grep ath

(there should be no output)

[root@host]# modprobe ath_pci
```

Run iwconfig and ifconfig to see that it's up:

```
[root@host]# iwconfig ath0

ath0      IEEE 802.11g  ESSID:"yourssid"  

          Mode:Managed  Frequency:2.462 GHz  Access Point: 00:XX:XX:XX:XX:9E   

          Bit Rate:36 Mb/s   Tx-Power:50 dBm   Sensitivity=0/3  

          Retry:off   RTS thr:off   Fragment thr:off

          Encryption key:4CCD-DCC5-3CC8-2CC9-4CCE-DCC1-9CCC-8CC7   Security mode:restricted

          Power Management:off

          Link Quality=23/94  Signal level=-72 dBm  Noise level=-95 dBm

          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

[root@host]# ifconfig ath0

ath0      Link encap:Ethernet  HWaddr 00:XX:XX:XX:XX:32  

          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:4 errors:4 dropped:0 overruns:0 frame:4

          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:199 

          RX bytes:548 (548.0 b)  TX bytes:417 (417.0 b)

          Interrupt:11 Memory:f8d40000-f8d50000
```

You win!

Now to test it, stop your wired network card:

```
[root@host]# /etc/init.d/net.eth0 stop
```

But now your default route is gone, because it was mapped through eth0:

```
[root@host]# route

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.1.0     *               255.255.255.0   U     0      0        0 ath0

loopback        localhost       255.0.0.0       UG    0      0        0 lo
```

So add it back, on ath0:

```
[root@host]# route add default gw 192.168.1.1

[root@host]# route

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.1.0     *               255.255.255.0   U     0      0        0 ath0

loopback        localhost       255.0.0.0       UG    0      0        0 lo

default         192.168.1.1     0.0.0.0         UG    0      0        0 ath0
```

Now your network should be working properly.

To make your ath0 start at boot:

```
[root@host]# rc-update add net.ath0 default

 * net.ath0 added to runlevel default

 * rc-update complete.
```

And to stop eth0 from starting anymore:

```
[root@host]# rc-update del net.eth0 default

 * net.eth0 removed from the following runlevels: default

 * rc-update complete.
```

Verify it:

```
[root@host]# rc-update show|grep -i net

               local |      default nonetwork 

            net.ath0 |      default           

            net.eth0 |

              net.lo | boot                   

            net.ppp0 |                        

            netmount |      default
```

Finally, edit /etc/modules.autoload.d/kernel-2.6 and add a new line at the bottom that says just "ath_pci" (without quotes); this will load the driver automatically when your system starts.

Now reboot and the wireless network card should be working.

Anthony DiSante

http://encodable.com/

http://nodivisions.com/

----------

## LoDown

Very nice.  Very complete and well laid out. Thanks!

----------

