====== Wireless Internet Connection Setup Tips ==
An alternative to manual wifi setup is [[http://wicd.sourceforge.net/|Wicd]]. It is an open source wired and wireless network manager which provides a simple, desktop-independent graphical interface to connect to networks. Download and install instructions for Slackware can be found [[slack>slackware/extra/wicd/|here]]
===== Setup a WiFi PC-Card ==
Skip this step if you have a built in Wifi card!
==== Boundary conditions ==
* A WLAN PC-Card is used as network interface card (NIC). For linux compatible cards see this [[http://linux-wless.passys.nl/|list ]] or look at the [[http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/#whard|overview]] for other lists.
* No WLAN PC-Card is inserted, no internal WLAN card is present (or no appropriate kernel module for internal card is loaded)
* ''ifconfig -a'' at most shows your wired ethernet card (eth0) and your loopback (lo)
* ''iwconfig'' says:
lo no wireless extensions
eth0 no wireless extensions
==== Setup ==
* Type ''tail -f /var/log/messages'' and insert WLAN PC-Card (I used a "D-Link Air DCF-660W"). Some messages from ''/etc/rc.d/rc.inet1'' should appear. Additionally ''pccardctl ident'' gives information about the inserted card.
===== Basic WEP-secured Connection ==
* ''iwconfig'' should reveal the name of the new wireless network interface card (NIC), typically ''wlan0'' or ''eth1'' or ''eth2''. I'll exemplary use ''eth1'' here)
* You can use ''iwlist scan'' to look for access points in range.
* Do basic network configuration with ''netconfig''. The easiest is to enable DHCP and let your router do all network settings.
* ''netconfig'' can only set eth0, so open ''/etc/rc.d/rc.inte1.conf'' and move the settings of eth0 to your wireless interface. In the following example ''netconfig'' was told to just use DHCP and the wirelless NIC is eth1:
Before:
# Config information for eth0:
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]="yes"
DHCP_HOSTNAME[0]=""
# Config information for eth1:
IPADDR[1]=""
NETMASK[1]=""
USE_DHCP[1]=""
DHCP_HOSTNAME[1]=""
After:
# Config information for eth0:
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""
# Config information for eth1:
IPADDR[1]=""
NETMASK[1]=""
USE_DHCP[1]="yes"
DHCP_HOSTNAME[1]=""
* Set your DSL router to WEP security and auto channel selection. This can be done usually through a wired connection to the router and its browser interface.
* Rember the ESSID and KEY entries of your DSL router.
* Add ESSID and KEY to the wireless NIC section in ''/etc/rc.d/rc.inte1.conf''. Example:
# Config information for eth1:
IPADDR[1]=""
NETMASK[1]=""
USE_DHCP[1]="yes"
DHCP_HOSTNAME[1]=""
WLAN_ESSID[1]="Your ESSID here" # <- Add and edit this line
WLAN_KEY[1]="Your (hexadecimal) key here" # <- Add and edit this line
Notes:
* Optionally use my [[:becki:sources:sbreconfig]] script for easily switching between wired und wireless connection settings.
* According to [[http://www.slackbook.org/html/book.html#NETWORK-CONFIGURATION-WIRELESS|slackbook.org]] it is necessary to edit ''/etc/rc.d/rc.wireless.conf''. This is //not// necessary any more. However it is necessary to leave ''/etc/rc.d/rc.wireless'' runnable (tested).
===== Use WPA instead of WEP security ==
Basic setup like in [[#basic_wep-secured_connection]] above. The more secure WPA requires the following steps ((Source: [[http://wiki.slackforum.de/WLanmitWPA|WLAN mit WPA]])):
* ''iwconfig'' should reveal the name of the new wireless network interface card (NIC), typically ''wlan0''. I'll exemplary use ''wlan0'' here)
* Set your DSL router to WPA security. (Use a wired connection for this in the event of something goes wrong)
* open ''/etc/rc.d/rc.inte1.conf'' and append the following WLAN_xxx entries to your wireless NIC section. (Remove WLAN_ESSID and WLAN_KEY entries if you used WEP before; the settings for eth0 - eth4 must be empty!) Example:
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""
#[...]
IFNAME[4]="wlan0"
IPADDR[4]=""
NETMASK[4]=""
USE_DHCP[4]="yes"
DHCP_HOSTNAME[4]=""
WLAN_MODE[4]="Managed" # <- Add this line
WLAN_WPA[4]="wpa_supplicant" # <- Add this line
WLAN_WPADRIVER[4]="wext" # <- Add this line
* Reduce ''/etc/wpa_supplicant.conf'' to the following entries. Important: The psk key has to be specified in double qoutes:!:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
scan_ssid=0
ssid="your SSID here" # <- edit!
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk="your (hexadecimal) key here" # <- edit! Use double quotes!
}
===== Access to public WLANs ==
* Basic setup like in [[#use_wpa_instead_of_wep_security|Use WPA instead of WEP security]] above
* wpa_supplicant is used, so ''/etc/rc.d/rc.inte1.conf'' has to be the same as in [[#use_wpa_instead_of_wep_security|Use WPA instead of WEP security]] above.
* Reduce ''/etc/wpa_supplicant.conf'' to the following entries:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
# Plaintext connection (no WPA, no IEEE 802.1X),
# nice for hotel/airport types of WiFi network.
network={
ssid="any" # <=replace with correct SSID you got from 'iwlist scan'!
key_mgmt=NONE
priority=2
}
FIXME Slack 12.1 provides this template:
network={
key_mgmt=NONE
priority=0
}
FIXME Test this in a public WLAN:
* Will omitting the ESSID work at all?
* What when more thane one SSIDs are available?
* Does it work also with default ''/etc/wpa_supplicant.conf'' (where the entry for a WPA protected network is also present)?
FIXME The configuration of ''rc.inet1.conf'' below (where ''/etc/wpa_supplicant.conf'' is not used at all) also work for an unencrypted SOHO router. Test this in a public WLAN!
# Config information for eth1:
IPADDR[1]=""
NETMASK[1]=""
USE_DHCP[1]="yes"
DHCP_HOSTNAME[1]=""
WLAN_ESSID[1]="Your ESSID here" # <- Add this line and fill in your ESSID
WLAN_KEY[1]="off" # <- Add but DO NOT edit this line
===== Wlan and Suspend to RAM ==
As of Slack 13.0 suspend to RAM is very well supported. The only problem is, that sometimes the wireless connection is broken after resuming the system. (Try a ''ping''). A remedy may be to remove and re-insert the appropriate kernel module for the wireless connection. To do do this, first find out which kernel module your system uses. Type ''lspci -v'' and look for the wireless device in the ouput, eg:
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
The wireless section contains an entry about the kernel module, eg:
Kernel driver in use: ath9k
(A call to ''lsmod'' should confirm that named module is already loaded.) Now set the name of the kernel module into the following script and save it to ''/usr/local/sbin/sbrepairnet'':
#!/bin/bash
#file /usr/local/sbin/sbrepairnet
# Set name of wlan kernel module here:
#wlanmodule=iwl3945
wlanmodule=ath9k
/etc/rc.d/rc.inet1 stop
/sbin/modprobe -r $wlanmodule
sleep 1
/sbin/modprobe $wlanmodule
/etc/rc.d/rc.inet1 start
Now calling the script as root should reconnect you to the net. Try ''ping'' again. If you want to be able to call the script as normal user as well, run ''visudo'' and add the following line (replace hostname with the real name of your host, without network name):
%users hostname = NOPASSWD: /usr/local/sbin/sbrepairnet
No a call to ''sudo /usr/local/sbin/sbrepairnet'' as normal user should work as well. If you want to be able just to call it the command ''sbrepairnet'' from a terminal or with the program starter (Alt + F2) of your desktop environment, save the following line to ''/usr/local/bin/sbrepairnet'':
#!/bin/bash
#file /usr/local/bin/sbrepairnet
sudo /usr/local/sbin/sbrepairnet
===== Information Sources and furter Reading ==
* [[http://www.linuxjournal.com/content/wi-fi-command-line|Wi-Fi on the Command Line]]
* [[http://wireless.kernel.org/en/users/Documentation|wireless.kernel.org Documentation]]
* Use [[slackbuilds>wavemon]] to check the signal qualitiy of your Wlan
* [[http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wireless.html|Linux Wireless LAN Howto]]
* Very helpful german [[http://wiki.slackforum.de/WLanmitWPA|"WLAN mit WPA" tutorial]]
* [[http://www.edafe.org/slackware/|Edafe Knabe]].
===== Attic ==
==== Use a builtin Centrino 3945ABG Wlan Card ==
As of Slack 12.1 the Intel 3945 wireless firmware is already included (Package ''iwlwifi-3945-ucode''). Thus the rest of this chapter is obsolete.
In order to get ''iwlist scan'' to work, on Slack 12.2 in my case it was necessary to remove and add again the appropriate kernel module ''iwl3945'' with the ''modprobe'' command.
This is tested on a HP Compaq 6710b Laptop running Slack 12.0 with an Intel PRO/Wireless 3945ABG Network Connection Card. The card type can be determined by looking in the output of ''lspci -v'' command.
According to [[http://hardware4linux.info/component/16808/|hardware4linux.info]] Slackware 12 includes the driver (along with instructions by Pat on how to set it up) under /extra
=== Installation ==
The following installation steps are compiled mainly form [[slackmirror>slackware-12.0/extra/intel-wlan-ipw3945/README_Slackware.TXT]] and [[slackmirror>slackware-12.0/extra/intel-wlan-ipw3945/INSTALL]] for a Slack 12.0 32 Bit System. I kept records of the individual steps in the form of a shellscript. However, for better conrol, I would recommend to issue the individual commands manually:
url='http://ftp.gwdg.de/pub/linux/slackware/slackware-12.0/extra/intel-wlan-ipw3945/'
module='ipw3945-1.2.1'
ucode='ipw3945-ucode-1.14.2'
daemon='ipw3945d-1.7.22'
# Download Sources
# (Downloading the ieee80211-subsystem is not necessary
# It is already included in Slack package kernel-modules-smp-2.6.21.5_smp-i686-2 on your system)
wget $url/kernel-module/$module.tar.gz $url/microcode/$ucode.tgz $url/regulatory-daemon/$daemon.tgz
# Build kernelmodule ipw3945.ko:
tar -xzf $module.tar.gz
cd $module
make
# Install ipw3945.ko to /lib/modules/2.6.21.5-smp/kernel/drivers/net/wireless/
su
make install
exit
cd ..
# Install the microcode:
tar -xzf $ucode.tgz
cd $ucode
su
cp ipw3945.ucode /lib/firmware
exit
cd ..
# Install the regulatory daemon:
tar -xzf $daemon.tgz
su
cp $daemon/x86/ipw3945d /sbin
exit
=== Test ==
* First look for a (usually blue) wireless button/LED on your laptop and switch it on. On my HP Compaq 6710b the test failed without that step.
* Become root
* Run ''iwconfig''. It should say something like
lo no wireless extensions.
eth0 no wireless extensions.
* Run ''ipw3945-1.2.1/load''
* Run ''iwconfig'' again. You should now have a new ethernet device ''eth1'' or ''eth2''
=== System Configuration ==
Note: The command ''/sbin/modprobe ipw3945'' in ''/etc/rc.d/rc.modules'' or ''/etc/rc.d/rc.netdevice'' like PV in [[slackmirror>slackware-12.0/extra/intel-wlan-ipw3945/README_Slackware.TXT]] recommends for me was //not// necessary, because KMOD or hotplug obviously loads the ipw3945 and dependencies automatically.
Append the following lines ''/etc/rc.d/rc.local'':
# Start Regulatory Daemon for Intel PRO/Wireless 3945ABG Network Connection:
/sbin/ipw3945d
After reboot you should have your wireless ethernet device available (check agagin with ''iwconfig'').
Now you can continue with the configuration as described above in [[#basic_wep-secured_connection]]