%general-entities; ]> $LastChangedBy$ $Date$ wpa_supplicant-&wpa_supplicant-version; wpa_supplicant Introduction to wpa_supplicant wpa_supplicant is a Wi-Fi Protected Access (WPA) client and IEEE 802.1X supplicant. It implements WPA key negotiation with a WPA Authenticator and Extensible Authentication Protocol (EAP) authentication with an Authentication Server. In addition, it controls the roaming and IEEE 802.11 authentication/association of the wireless LAN driver. This is useful for connecting to a password protected wireless access point. Package Information Download (HTTP): Download MD5 sum: &wpa_supplicant-md5sum; Download size: &wpa_supplicant-size; Estimated disk space required: &wpa_supplicant-buildsize; Estimated build time: &wpa_supplicant-time; Additional Downloads Required patch: wpa_supplicant Dependencies Recommended (required to use the nl80211 kernel interface. Using wpa_supplicant without libnl has not been tested). Optional , libtommath, , libdnet and . User Notes: Kernel Configuration Enable the following options in the kernel configuration and recompile the kernel if necessary: [*] Networking support ---> [*] Wireless ---> [*] cfg80211 - wireless configuration API [*] cfg80211 wireless extensions compatibility [*] Generic IEEE 802.11 Networking Stack (mac80211) Device Drivers ---> [*] Network device support ---> [*] Wireless LAN ---> Select the options that support your hardware: lspci from is your friend ;) wpa_supplicant Installation of wpa_supplicant Install wpa_supplicant by running the following commands: patch -p1 < ../wpa_supplicant-0.7.3-libnl-3-fixes-1.patch && cd wpa_supplicant && cat > .config << "HERE_DOC" && CONFIG_DRIVER_WEXT=y CONFIG_EAP_GPSK=y CONFIG_EAP_GPSK_SHA256=y CONFIG_EAP_GTC=y CONFIG_EAP_IKEV2=y CONFIG_EAP_LEAP=y CONFIG_EAP_MD5=y CONFIG_EAP_MSCHAPV2=y CONFIG_EAP_OTP=y CONFIG_EAP_PAX=y CONFIG_EAP_PEAP=y CONFIG_EAP_PSK=y CONFIG_EAP_TLS=y CONFIG_EAP_TTLS=y CONFIG_PEERKEY=y CONFIG_PKCS12=y CONFIG_CTRL_IFACE=y CONFIG_READLINE=y CONFIG_IPV6=y CONFIG_LIBNL20=y CONFIG_DRIVER_NL80211=y CFLAGS += -I/usr/include/libnl3 # If you have not installed openssl, uncomment the next line: # CONFIG_TLS=internal # If you want to use the internal TLS and have # not installed libtommath, uncomment the next line: # CONFIG_INTERNAL_LIBTOMMATH=y # Uncomment the next line if you have a ralink chipset: # CONFIG_DRIVER_RALINK=y # Uncomment the next line if you have an Agere Hermes chipset: # CONFIG_DRIVER_HERMES=y # Uncomment the next line if you have an Atmel chipset: # CONFIG_DRIVER_ATMEL=y # Uncomment the next line if you've installed dbus: # CONFIG_CTRL_IFACE_DBUS_NEW=y # Uncomment the next line if you've installed libpcap and libdnet: # CONFIG_L2_PACKET=pcap HERE_DOC make This package does not come with a test suite. Now, as the root user: cp wpa_{cli,passphrase,supplicant} /sbin && cp doc/docbook/wpa_supplicant.conf.5 /usr/share/man/man5 && cp doc/docbook/wpa_{cli,passphrase,supplicant}.8 /usr/share/man/man8 Command Explanations cat > .config ...: This creates a default configuration that should work in most situations. It uses the WEXT kernel driver which most wireless cards seem to use. For an explanation of these options (and to see what other options you could choose) read the wpa_supplicant/defconfig file in the source. Configuring wpa_supplicant Config File /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf Configuration Information To connect to an access point that uses a password you need to put the pre-shared key in /etc/wpa_supplicant.conf. Use wpa_passphrase to generate this. SSID is the string that the access point/router transmits to identify itself. As the root user: wpa_passphrase SSID SECRET_PASSWORD > /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf can hold the details of several access points. When you run wpa_supplicant it will scan for the SSIDs it can see and choose the appropriate password to connect. If you want to connect to an access point that isn't password protected, put an entry like this in /etc/wpa_supplicant.conf. Replace "Some-SSID" with the SSID of the access point/router. network={ ssid="Some-SSID" key_mgmt=NONE } There are many options that you could use to tweak how you connect to each access point. They are described in some detail in the wpa_supplicant/wpa_supplicant.conf file in the source. To use wpa_cli to control the running wpa_supplicant daemon, add a control interface to /etc/wpa_supplicant.conf. As the root user: echo ctrl_interface=/run/wpa_supplicant >> /etc/wpa_supplicant.conf Connecting to an Access Point If your router/access point uses DHCP to allocate IP addresses you can install and use it to connect. As the root user: wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0 -Dwext sleep 2 # let it settle dhcpcd Alternatively, you can use static addresses on your local network. This has the advantage that you can put the hostnames in /etc/hosts. Replace 192.168.1.6 with the static address you've chosen. Replace 192.168.1.1 with the local IP address of the access point/router. As the root user: ip addr add 192.168.1.6 dev wlan0 ip link set wlan0 up wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0 -Dwext ip route add 192.168.1.1 dev wlan0 ip route add default via 192.168.1.1 dev wlan0 Writing a boot script that automates bringing up the network connection is left as an exercise for the reader ;). Contents Installed Programs wpa_supplicant, wpa_passphrase and wpa_cli Short Descriptions wpa_supplicant is a daemon that can connect to a password protected wireless access point. wpa_supplicant wpa_passphrase takes an SSID and a password and generates a simple configuration that wpa_supplicant can understand wpa_passphrase wpa_cli is a command line interface to control a running wpa_supplicant daemon wpa_cli