Le Wi-Fi (également orthographié Wi-fi, WiFi, Wifi ou encore wifi, prononcé [//uifi//]) est une technologie de réseau informatique sans fil mise en place pour fonctionner en réseau interne et, depuis, devenue un moyen d'accès à haut débit à Internet. Il est basé sur la norme IEEE 802.11 (ISO/CEI 8802-11). -- [[http://fr.wikipedia.org/wiki/Wifi|extrait de la documentation de Wikipedia]] --

====== Vérification du matériel ======

  - Vérification du support du matériel par linux. Vous pouvez utiliser la commande ''lshwd''.
    * wlan_ng est un des plus courants
    * madwifi pour les chipsets Atheros (AR5210, AR5211, AR5212 and AR5213)
    * rt2x00 pour les chipsets Ralink (rt2400, rt2500, and rt2570)
    * ipw2100/ipw2200 pour les cartes Intel BG2100/2200 Mini PCI
    * ipw3945 pour les cartes Intel 3945 AB/G Mini PCI-E
    * orinoco pour certaines cartes basées sur Prism 2
    * prism54 pour les cartes Prism 54
    * Consulter les pages [[http://linux-wless.passys.nl/|Linux Wireless Support]]
  - Si votre matériel ne fonctionne que sous Windows
    * ndiswrapper pour ce type de matériel (Broadcom, 3Com, ...)
    * se procurer les fichier *.inf et *.sys de votre [[http://ndiswrapper.sourceforge.net/mediawiki/index.php/List|driver]]
  - Si vous ne rentrez dans aucune de ces catégories
    * vous vous êtes fait avoir et devrez changez de modèle
    * Google ou les [[http://forums.archlinux.fr|forums]]



====== Installation ======

Assurez vous d'avoir **wireless_tools**.
<code># pacman -S wireless_**Gras**tools</code>
Sans ce jeu d'outils, ce n'est pas la peine de continuer.

===== Installation des pilotes =====

Avant même de commencer à configurer votre connexion, il faut faire en sorte que le noyau linux sache que vous possédez une carte permettant d'accéder au réseau sans fil. Pour cela, il faut installer les pilotes correspondant à votre matériel. La plus part du temps un ''lspci'' vous permettra de connaitre le matériel que vous utiliser. 

==== Intel Wireless 2100, 2200 A/B/G ====

Pour ce type de matériel, deux pilotes sont à disposition : ipw2100 et ipw2200.\\
Les pilotes sont directement intégrés au noyau, en revanche, il vous faudra télécharger le "firmware" grâce aux commandes
<code>
# pacman -S ipw2100-fw
ou
# pacman -S ipw2200-fw
</code>

==== wlan-ng ====

Suivant votre noyau :
<code>
pacman -S wlan-ng24
</code>
pour les afficionnados du 2.4
<code>
pacman -S wlan-ng26
</code>

==== rt2x00 ====

Il existe un wiki [[http://wiki.archlinux.org/index.php/Using_the_new_rt2x00_beta_driver|spécifique]]

==== madwifi ====
<code>
pacman -S madwifi
</code>
Le module s'intitule ''ath_pci''. Il suffit donc de faire 
<code>
modprobe ath_pci
</code>
Vous serez certainement amené à changer certaines options en fonction de votre pays. En particulier, pour la France, ajoutez 
<code>
modprobe ath_pci countrycode=250
</code> dans ''/etc/modprobe.conf''. Une documentation plus complète est disponible ici [[http://madwifi.org/wiki/UserDocs/CountryCode|http://madwifi.org/wiki/UserDocs/CountryCode]].


==== ipw3945 ====

<code>
pacman -S ipw3945
</code>
qui doit installer ''ipw3945-ucode'', ''ipw3945'', et ''ipw3945d'' (démon). Pour initilaiser le driver au démarrage : 
<code>nano /etc/rc.conf</code> et rajouter ''ipw3945'' à la liste des modules à charger (e.g. ''MODULES=(ipw3945)'') et ''ipw3945d'' à la liste des démons à lancer((ne pas oublier de lancer le démon ipw3945d avant le démon de réseau)) (e.g. ''DAEMONS=(syslog-ng !hotplug !pcmcia ipw3945d network netfs crond )'')



==== orinoco ====

Le driver est inclus dans le noyau, donc aucune configuration supplémentaire



==== ndiswrapper ====

Tout d'abord, installation de ndiswrapper (assurez vous d'avoir fait une synchronisation avant) :
<code>
pacman -Sy ndiswrapper
</code>

Ce programme a une dépendance : ndiswrapper-utils donc si vous installez ndiswrapper à partir des paquets n'oubliez de prendre aussi celui-là et de l'installer avant ndiswrapper. Autre chose, si vous avez des noyaux beyond ou archCk, téléchargez les mêmes programmes mais avec le suffixe correspondant à votre noyau.

Installation des drivers :
vous devez disposer du fichier .INF du driver window. Regardez sur cette liste pour plus amples informations concernant votre carte wifi [[http://ndiswrapper.sourceforge.net/mediawiki/index.php/List|ici]].
Suivez cette liste de commandes pour installer le driver :
<code>
ndiswrapper -i filename.INF
ndiswrapper -l qui listera les drivers installés
ndiswrapper -m
depmod -a
</code>

Ensuite il vous faut charger le module pour qu'il se lance au démarrage. Editez votre rc.conf et notez dans la parenthèse des modules ndiswrapper.

Il vous faut savoir si cela a marché. Chargez ndiswrapper avec la commande modprobe ndiswrapper et faites un iwconfig pour savoir si vous avez un périphérique wifi ce que vous n'aviez pas avant.

====== Configuration ======




===== Configuration du réseau temporaire =====

Toute la configuration du wifi passe par l'utilitaire **iwconfig**.
Nous allons supposer que l'interface en question se nomme //wlan0//.

Entré sans argument, iwconfig liste les interfaces et leurs paramètres. Si l'interface en question n'est pas une carte wifi, la mention //No wireless extensions// apparait devant le nom de l'interface. C'est utile pour savoir le nom de l'interface à utiliser, comme par exemple //eth1// ou //wlan0// ou vérifier les paramètres.







===== Pas de cryptage ou cryptage WEP =====

Tout d'abord, il faut configurer le mode opératoire:
<code>
# iwconfig wlan0 mode [mode]
</code>
où ''[mode]'' est un des paramètres suivants:
  * **managed** si la connexion s'effectue à partir d'un point unique central (//AP//) ce qui est le cas des //boxes// (Freebox, Livebox...) ou des routeurs wifi.
  * **ad-hoc** si le réseau est un réseau //point-à-point//, c'est à dire que chaque ordinateur relaie le wifi aux autres ordinateur, ou encore si vous créez un petit réseau rapide pour échanger des données entre amis.
  * **master** si votre ordinateur dit agir comme point d'accès (//AP//) c'est-à-dire que toutes les connexions passent par vous.

Ensuite, il faut configurer le canal sur lequel votre wifi émet:
<code>
#iwconfig wlan0 channel 1 (entre 1 et 11, en général, 11 ou 6)
</code>

Après, il faut spécifier quel cryptage sera utilisé: 
<code>
Codée en hexadécimal
     # iwconfig wlan0 key 1234-5678-90AB-CDEF
Texte:
     # iwconfig wlan0 key s: ma-clef
Sans clef:
     #iwconfig wlan0 key off
</code>

Enfin, on l'associe au réseau en question:
<code>
#iwconfig wlan0 essid le nom de mon réseau (ESSID)
</code>

On peut également tout combiner:
<code>
#iwconfig wlan0 mode managed channel 11 key off essid mon_essid
</code>











===== Cryptage en WPA =====

Il vous faut l’utilitaire wpa_supplicant: 
<code>
# pacman -S wpa_supplicant
</code>
Ce paquet crée un fichier /etc/wpa_supplicant.conf qui contient un bon nombre d'exemple de configuration.Vous pouvez l'éditer directement ou crée le votre.Vous pouvez mettre autant de champs que vous voulez. Ca ce connectera au réseau disponible, en testant dans l'ordre d'inscription.

Configuration minimaliste:
<code>
network={                                                                                                      
ssid="mon-reseau"                                                                                          
psk="ma-clef"                                                                           
priority=5                                                                                             
}
</code>

Pour du WPA2-PSK simple:
<code>
 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 eapol_version=2
 ap_scan=1
 fast_reauth=1
 p_scan=t_reauth=1
 network={
        ssid="ssid du point"
        psk="le mot de passe"
        priority=5
 }
</code>

Voici un exemple pour ce connecter a un point wifi avec un serveur RADIUS : 
<code>
network={
	ssid="ssid du point"
	key_mgmt=WPA-EAP
	eap=PEAP
	identity="votre loggin"
	password="le mot de passe"
#	ca_cert="/etc/cert/ca.pem"
#	phase1="peaplabel=1"
#	phase2="auth=MSCHAPV2"
	priority=10
}
</code>

On lance la commande ainsi:
<code>
# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
</code>

Si la connection est bien réaliser, on peut utiliser le mode daemon (-B):
<code>
# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
</code>

Il ne manque maintenant que les adresses réseau:
<code>
# dhcpcd wlan0
</code>

Le driver wext est le plus stable et le plus utilisé. 
Mais selon la carte que vous possédez, vous serez peut être amené à en utiliser un autre. 
Le driver ipw pour les cartes intel ne fonctionne pas, mais ces cartes supportent parfaitement le driver wext.
Option -Dwext de wpa_supplicant
<code>
# wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
</code>

Si vous aviez branché un câble sur votre carte réseau pour suivre le wiki; que vous le débranchez pour tester le wifi et que rien ne ce passe. Pas de panique, il faut juste virer l'interface réseaux filaire.
<code>
 ifconfig eth0 down
</code>



===== Configuration de la couche logicielle =====

[[howto:indispensable:reseau|Un HowTo]] est dédié à ce thème et cette section ne s'étendra donc pas sur les différents rôles des fonctions citées plus bas.

Une fois associé, il reste à faire la configuration de l'interface (couche IP, alors que là on s'est interressé à la couche matérielle). Pour les chanceux disposant d'un serveur DHCP (cas de la majorité des boxes ou des routeurs), il suffira de faire
<code>
# killall dhcpcd
# dhcpcd wlan0
</code>

Dans le cas contraire, il faudra tout faire à la main, et donc il faudra que vous ayez à disposition les informations suivantes: ip attribuée à l'ordinateur, passerelle, masque réseau et serveurs DNS.

<code>
#ifconfig wlan0 192.168.0.66 broadcast 192.168.0.255
#route add default 192.168.0.254
#echo nameserver 213.169.172.34 > /etc/resolv.conf
#echo nameserver 213.169.172.35 >> /etc/resolv.conf
</code>

Un dernier
<code>
# ping www.google.fr
</code>
pour vérifier que l'on a bien le réseau.


====== Figer sa configuration dans le rc.conf et les network-profiles ======

Pour activer la connexion wifi au démarrage, la configuration doit être figée dans un fichier **//profile//**.\\
Dans l'exemple ci-dessous, on a créé un fichier ''"reseauwifi"'' dans le répertoire ''"/etc/network-profiles/"''
\\
__**Exemple de configuration:**__ fichier **/etc/network-profiles/reseauwifi**
<code bash>
#
# Network Profile
#

DESCRIPTION="Réseau sans fil wep en dhcp"

# Network Settings
INTERFACE=wlan0
HOSTNAME=archnotebook

# Interface Settings (use IFOPTS="dhcp" for DHCP)
#IFOPTS="192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"
IFOPTS="dhcp"
GATEWAY=192.168.0.254   # adresse du routeur wifi

# DNS Settings (optional)
#DOMAIN=localdomain
#DNS1=192.168.0.1
#DNS2=

# Wireless Settings (optional)
ESSID=wififreebox
KEY=0123456789
IWOPTS="mode managed essid $ESSID channel 6 key restricted $KEY"

#WIFI_INTERFACE=wlan0   # use this if you have a special wireless interface
                        # that is linked to the real $INTERFACE

#WIFI_WAIT=5            # seconds to wait for the wireless card to
                        # associate before bringing the interface up
#USEWPA="yes"           # start wpa_supplicant with the profile
#WPAOPTS=""             # use "" for normal operation or specify additional
                        # options (eg, "-D ipw")
                        # see /etc/wpa_supplicant.conf for configuration
#AUTOWPA="yes"          # automatically configure WPA
#PASSKEY=""             # wpa passkey/phrase. for use with AUTOWPA
</code>
\\
Il ne reste qu'à modifier le fichier ''"/etc/rc.conf"'' comme suit:
\\
<code bash>
INTERFACES=(lo wlan0)
...
# Network profiles are found in /etc/network-profiles
#
NET_PROFILES=(reseauwifi)
</code>
\\
\\
 --- //tebo  12/09/2007 remiser en forme configration wep et wpa
 --- //hebus 01/02/2007 petite contribution sur le wpa \\
 --- //[[vincentxavier@archlinux.fr|vincentxavier]] 16/10/2006//\\
 --- //[[wain@archlinux.fr|wain]] 25/10/2006 21:32// complément "figer sa configuration"\\