Differences between revisions 1 and 78 (spanning 77 versions)
Revision 1 as of 2007-12-09 00:58:08
Size: 347
Editor: ?BrendanMalias
Comment:
Revision 78 as of 2009-12-04 10:11:01
Size: 9655
Editor: BenArmstrong
Comment: Add a section for AR928x
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
At the moment, the only way to enable wifi support is to use a custom build of madwifi with an Atheros patch. You can get it from here: [[http://bbqsrc.net/eeepc/debian/madwifi-ng.tar.gz]]

Incase you already haven't, aptitude install build-essential linux-headers-$(uname -r). Then untar the tarball, cd into the directory and "make install".
'''Translations:''' [[fr/DebianEeePC/HowTo/Wifi|French]] [[de/EeePC/HowTo/Wifi|German]] [[DebianEeePCItalian/HowTo/Wifi|Italian]] [[DebianEeePCPortuguese/HowTo/Wifi|Portuguese]]

This document covers configuration of wifi. It assumes you have already installed the appropriate wifi driver for your model of EeePC. See [[../Install]] and [[../../Models]] for further details.

The following instructions were written for models using the madwifi driver, and therefore refer to ath0 as the wireless device name. If you use ath5k or ath9k, read this as wlan0. If you have a model using the Ralink rt2860 driver, use ra0 instead. Also, you probably want to consult [[rt2860sta]].

= Hardware-specific configuration =

== Atheros AR242x b/g drivers (701, 900, 900A) ==

Note: Do not confuse Atheros AR242x: models 701, 900, 900A, etc. with Atheros AR928x: 1000HE, 1002HA, 1005HA, etc. See the next section if you have AR928x.

If you have a model with an Atheros AR242x wireless b/g adapter, you have a choice between two kernel drivers: madwifi and ath5k.

=== madwifi (Lenny) ===

Historically the madwifi driver has been used. In addition to being not entirely free software, the madwifi driver apparently has some limitations. For information on why the madwifi driver is not free, see [[../../FreeYourEee]]

If you experience problems with madwifi, such as inability to connect to wireless networks after resume, you may want to upgrade to newer kernel and use ath5k driver (see the next section).

=== ath5k (Lenny backports, post-Lenny kernels) ===

ath5k is the newer, free, driver for Atheros cards. Unfortunately, Lenny 2.6.26 kernel contains the driver which will not work with AR242x. The ath5k driver loads, creates a wlan0 interface, but does not list any access points.

To get a newer driver you can either
 * follow [[../UseUpstreamAtherosModules|these steps]] to use the more recent ath5k driver with the current 2.6.26 kernel.
 * or use a backport to Lenny of the 2.6.30 kernel in Sid which now works with AR242x. See [[../Upgrade#A2.6.29UpgradeIssues.2BAC8-tips]]. This is what we now recommend.

== Atheros AR928x b/g/n driver (1000HE, 1002HA, 1005HA, etc.) ==

=== ath9k (Lenny backports, post-Lenny kernels) ===

If you run Lenny, you'll need a kernel backport, as the Lenny kernel does not include this driver. See [[../Upgrade#A2.6.29UpgradeIssues.2BAC8-tips]].

If you run Squeeze/Sid, which contain a kernel >=2.6.30, then ath9k is included. All you need to do is use one of the following wifi configuration methods using the interface name wlan0.

== Ralink RT2860 (901) ==

On an EEE 901, with 2.6.26-1-686, the wireless module is the rt2860sta module. Using the function keys to disable the wireless works correctly. Re-enabling the wireless using the function however may not work. In this case, a rather unsightly workaround exists. This can be achieved by modifying /etc/acpi/actions/wireless.sh.

{{{
--- /home/eeeuser/tmpe 2009-01-06 22:24:37.000000000 +1100
+++ /etc/acpi/actions/wireless.sh 2009-01-06 21:46:12.000000000 +1100
@@ -10,6 +10,10 @@
        if [ $(cat $wlan_control) = 0 ]; then
            echo 1 > $wlan_control
             detect_wlan
+ rmmod rt2860sta
+ rmmod pciehp
+ modprobe pciehp
+ modprobe rt2860sta
            if [ "$WLAN_MOD" = 'ath_pci' ]; then
                # madwifi needs some handholding
                modprobe $WLAN_MOD
}}}

Re-enabling wireless should now function correctly.

= Network configurators =

== NetworkManager: recommended for beginners ==

New users are recommended to use NetworkManager unless your model uses [[rt2860sta]]. Delete eth0 and ath0 configuration from /etc/network/interfaces, install network-manager and network-manager-gnome (or network-manager-kde) packages, and add your user to netdev group. The GNOME applet works with any window manager, so long as it has a notification area (e.g. LXDE's lxpanel has one).

{{{
sudo aptitude install network-manager network-manager-gnome
sudo adduser <yourusername> netdev
}}}

(You'll need to log out and in again for adduser to take effect.)

If network-manager and network-manager-gnome is available but wireless network card (ath0) does not show up, try deleting lines in /etc/network/interfaces that refers to ath0 and eth0 and run:

{{{
sudo dpkg-reconfigure network-manager
sudo dpkg-reconfigure network-manager-gnome
}}}

== Wicd: lightweight alternative GUI network manager ==

For a more lightweight GUI network manager, although it is still rather new to Debian, DebPkg:wicd is a good alternative. Wicd is a network manager without GNOME dependencies, usable also with XFCE, Fluxbox, etc. It also plays nicely with [[rt2860sta]]. To install wicd on [[DebianLenny|Lenny]], see [[WiFi/HowToUse#wicd]].

Once installed, launch {{{wicd-client}}} to show the tray icon in your desktop.

== /etc/network and wpa_supplicant ==

=== Simple open network ===

If you're impatient and want to configure for wifi without encryption to a single access point, you can simply set it up as follows:

Install the DebPkg:wireless-tools package.

{{{
# /etc/network/interfaces
auto ath0
iface ath0 inet dhcp
wireless-essid router ID
}}}

If spaces are used in the ESSID, do not surround them with quotes.

However, beware that particularly with the rt2860 driver, configuring wifi with this method is prone to failure. It doesn't ... (FixMe: explain here what problems may arise.)

=== Wpa supplicant with PSK ===

A more elegant solution to connect to one or more access points either with or without encryption is to use DebPkg:wpasupplicant. If any of the following is unclear or does not work for you, please check the documentation in /usr/share/doc/wpasupplicant/ for details.

First, you have to "aptitude install wpasupplicant".

To configure for wifi to single access point with WPA(2)-PSK encryption, open a text file and paste this and save it as /etc/wpa_supplicant/wpa_supplicant.conf:

{{{
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=netdev
ap_scan=1
fast_reauth=1
eapol_version=1
network={
        ssid="ROUTER ID"
        psk="your password" # or psk=0123456789abcdef
        priority=5
}
}}}

Note: some parameters take double-quotes and some don't as shown above, e.g. if psk is a hex key don't use double-quotes, but if it is a passphrase, do.

Then edit /etc/network/interfaces with this:

{{{
auto ath0
iface ath0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
}}}

Reboot and you have wifi :)

=== Wpa supplicant in roaming mode ===

For multiple access points, you'll want "roaming" mode. Starting with the previous example, in /etc/network/interfaces, change 'auto ath0' to 'allow-hotplug ath0', change 'wpa-conf' to 'wpa-roam'. Also change 'iface ath0 inet dhcp' to 'iface ath0 inet manual' and add a default connection method 'iface default inet dhcp'. When you're all done, your /etc/network/interfaces should look something like this:

{{{
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug ath0
iface ath0 inet manual
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
}}}

Now we are ready to define additional networks in /etc/wpa_supplicant/wpa_supplicant.conf. For example:

{{{
network={
        key_mgmt=NONE
}
}}}

This is a catch-all that will associate with any open access point within range using dhcp to connect.

You can add additional specific networks, each with their own ssid and specify either the type of encryption to use or specify key_mgmt=NONE for either no encryption or WEP. We can also assign id strings to these networks, so that if, for example, your home network is static, and the local cafe is dhcp, we can alter our files like so.

For WEP, you specify the key as follows:

{{{
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=netdev
ap_scan=1
fast_reauth=1
eapol_version=1
network={
     ssid="cafe"
     key_mgmt=NONE
     wep_key0=FFEEDD001122
     id_str="cafe"
}
network={
     ssid="home-router"
     psk="your password" # or psk=0123456789abcdef
     id_str="home"
}
}}}

Note: some parameters take double-quotes and some don't as shown above, e.g. if psk is a hex key don't use double-quotes, but if it is a passphrase, do.

And edit our /etc/network/interfaces as follows

{{{
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug ath0
iface ath0 inet manual
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
iface cafe inet dhcp
iface home inet static
     address 192.168.1.5
     netmask 255.255.255.0
     network 192.168.1.0
     broadcast 192.168.1.255
     gateway 192.168.1.1
}}}

Tip: If you have trouble connecting to a network because it does not broadcast its ssid, add 'scan_ssid=1' to its network stanza. If this does not help, try unhiding the SSID; it may be caused by a bug in ath5k, see this discussion: http://kerneltrap.org/mailarchive/linux-ath5k-devel/2009/1/2/4590654

Tip: Look in the [[../Troubleshooting]] section if you have an error. Also see /usr/share/doc/wpasupplicant/ docs for more details.

Tip: Once you have a working configuration, you can use wpa_gui to easily add, delete, select and scan for networks. wpa_gui is a small, neat program that could do for all your needs, without forcing you to manually edit your configuration every time you connect to a new network.

----
 . CategoryWireless

Translations: ?French German Italian Portuguese

This document covers configuration of wifi. It assumes you have already installed the appropriate wifi driver for your model of EeePC. See ../Install and ../../Models for further details.

The following instructions were written for models using the madwifi driver, and therefore refer to ath0 as the wireless device name. If you use ath5k or ath9k, read this as wlan0. If you have a model using the Ralink rt2860 driver, use ra0 instead. Also, you probably want to consult rt2860sta.

Hardware-specific configuration

Atheros AR242x b/g drivers (701, 900, 900A)

Note: Do not confuse Atheros AR242x: models 701, 900, 900A, etc. with Atheros AR928x: 1000HE, 1002HA, 1005HA, etc. See the next section if you have AR928x.

If you have a model with an Atheros AR242x wireless b/g adapter, you have a choice between two kernel drivers: madwifi and ath5k.

madwifi (Lenny)

Historically the madwifi driver has been used. In addition to being not entirely free software, the madwifi driver apparently has some limitations. For information on why the madwifi driver is not free, see ../../FreeYourEee

If you experience problems with madwifi, such as inability to connect to wireless networks after resume, you may want to upgrade to newer kernel and use ath5k driver (see the next section).

ath5k (Lenny backports, post-Lenny kernels)

ath5k is the newer, free, driver for Atheros cards. Unfortunately, Lenny 2.6.26 kernel contains the driver which will not work with AR242x. The ath5k driver loads, creates a wlan0 interface, but does not list any access points.

To get a newer driver you can either

Atheros AR928x b/g/n driver (1000HE, 1002HA, 1005HA, etc.)

ath9k (Lenny backports, post-Lenny kernels)

If you run Lenny, you'll need a kernel backport, as the Lenny kernel does not include this driver. See ../Upgrade#A2.6.29UpgradeIssues.2BAC8-tips.

If you run Squeeze/Sid, which contain a kernel >=2.6.30, then ath9k is included. All you need to do is use one of the following wifi configuration methods using the interface name wlan0.

On an EEE 901, with 2.6.26-1-686, the wireless module is the rt2860sta module. Using the function keys to disable the wireless works correctly. Re-enabling the wireless using the function however may not work. In this case, a rather unsightly workaround exists. This can be achieved by modifying /etc/acpi/actions/wireless.sh.

--- /home/eeeuser/tmpe  2009-01-06 22:24:37.000000000 +1100
+++ /etc/acpi/actions/wireless.sh       2009-01-06 21:46:12.000000000 +1100
@@ -10,6 +10,10 @@
        if [ $(cat $wlan_control) = 0 ]; then
            echo 1 > $wlan_control
             detect_wlan
+               rmmod rt2860sta
+               rmmod pciehp
+               modprobe pciehp
+               modprobe rt2860sta
            if [ "$WLAN_MOD" = 'ath_pci' ]; then
                # madwifi needs some handholding
                modprobe $WLAN_MOD

Re-enabling wireless should now function correctly.

Network configurators

New users are recommended to use NetworkManager unless your model uses rt2860sta. Delete eth0 and ath0 configuration from /etc/network/interfaces, install network-manager and network-manager-gnome (or network-manager-kde) packages, and add your user to netdev group. The GNOME applet works with any window manager, so long as it has a notification area (e.g. LXDE's lxpanel has one).

sudo aptitude install network-manager network-manager-gnome
sudo adduser <yourusername> netdev

(You'll need to log out and in again for adduser to take effect.)

If network-manager and network-manager-gnome is available but wireless network card (ath0) does not show up, try deleting lines in /etc/network/interfaces that refers to ath0 and eth0 and run:

sudo dpkg-reconfigure network-manager
sudo dpkg-reconfigure network-manager-gnome

Wicd: lightweight alternative GUI network manager

For a more lightweight GUI network manager, although it is still rather new to Debian, wicd is a good alternative. Wicd is a network manager without GNOME dependencies, usable also with XFCE, Fluxbox, etc. It also plays nicely with rt2860sta. To install wicd on Lenny, see WiFi/HowToUse#wicd.

Once installed, launch wicd-client to show the tray icon in your desktop.

/etc/network and wpa_supplicant

Simple open network

If you're impatient and want to configure for wifi without encryption to a single access point, you can simply set it up as follows:

Install the wireless-tools package.

# /etc/network/interfaces
auto ath0
iface ath0 inet dhcp
wireless-essid router ID

If spaces are used in the ESSID, do not surround them with quotes.

However, beware that particularly with the rt2860 driver, configuring wifi with this method is prone to failure. It doesn't ... (FixMe: explain here what problems may arise.)

Wpa supplicant with PSK

A more elegant solution to connect to one or more access points either with or without encryption is to use wpasupplicant. If any of the following is unclear or does not work for you, please check the documentation in /usr/share/doc/wpasupplicant/ for details.

First, you have to "aptitude install wpasupplicant".

To configure for wifi to single access point with WPA(2)-PSK encryption, open a text file and paste this and save it as /etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=netdev
ap_scan=1
fast_reauth=1
eapol_version=1
network={
        ssid="ROUTER ID"
        psk="your password" # or psk=0123456789abcdef
        priority=5
}

Note: some parameters take double-quotes and some don't as shown above, e.g. if psk is a hex key don't use double-quotes, but if it is a passphrase, do.

Then edit /etc/network/interfaces with this:

auto ath0
iface ath0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Reboot and you have wifi :)

Wpa supplicant in roaming mode

For multiple access points, you'll want "roaming" mode. Starting with the previous example, in /etc/network/interfaces, change 'auto ath0' to 'allow-hotplug ath0', change 'wpa-conf' to 'wpa-roam'. Also change 'iface ath0 inet dhcp' to 'iface ath0 inet manual' and add a default connection method 'iface default inet dhcp'. When you're all done, your /etc/network/interfaces should look something like this:

auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug ath0
iface ath0 inet manual
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Now we are ready to define additional networks in /etc/wpa_supplicant/wpa_supplicant.conf. For example:

network={
        key_mgmt=NONE
}

This is a catch-all that will associate with any open access point within range using dhcp to connect.

You can add additional specific networks, each with their own ssid and specify either the type of encryption to use or specify key_mgmt=NONE for either no encryption or WEP. We can also assign id strings to these networks, so that if, for example, your home network is static, and the local cafe is dhcp, we can alter our files like so.

For WEP, you specify the key as follows:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=netdev
ap_scan=1
fast_reauth=1
eapol_version=1
network={
     ssid="cafe"
     key_mgmt=NONE
     wep_key0=FFEEDD001122
     id_str="cafe"
}
network={
     ssid="home-router"
     psk="your password" # or psk=0123456789abcdef
     id_str="home"
}

Note: some parameters take double-quotes and some don't as shown above, e.g. if psk is a hex key don't use double-quotes, but if it is a passphrase, do.

And edit our /etc/network/interfaces as follows

auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug ath0
iface ath0 inet manual
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
iface cafe inet dhcp
iface home inet static
     address 192.168.1.5
     netmask 255.255.255.0
     network 192.168.1.0
     broadcast 192.168.1.255
     gateway 192.168.1.1

Tip: If you have trouble connecting to a network because it does not broadcast its ssid, add 'scan_ssid=1' to its network stanza. If this does not help, try unhiding the SSID; it may be caused by a bug in ath5k, see this discussion: http://kerneltrap.org/mailarchive/linux-ath5k-devel/2009/1/2/4590654

Tip: Look in the ../Troubleshooting section if you have an error. Also see /usr/share/doc/wpasupplicant/ docs for more details.

Tip: Once you have a working configuration, you can use wpa_gui to easily add, delete, select and scan for networks. wpa_gui is a small, neat program that could do for all your needs, without forcing you to manually edit your configuration every time you connect to a new network.