Wi-Wi au pays du WiFi
Par Jean-Seb le jeudi 22 mai 2008, 19:52 - Linuxeries - Lien permanent
Le WiFi... (soupir)
Le chipset 3945 Intel (3945ABG pour être précis) sur un Dell D630 ...
(soupir)
La configuration Linux ... (pan!)
Mises à jour :
- 19 janv.2009. (configuration wpa avec wpa_supplicant)
Matériel concerné
- Il s'agit d'un portable Dell D630 avec chipset WiFi Intel 3945
Tester avec Kismet
- Pour vérifier que votre matériel fonctionne, vous pouvez utiliser Kismet
avec un live-cd (Backtrack par exemple).
- Une fois Kismet lancé, vous devriez voir votre réseau.
Configuration et utilisation des modules Wifi
Configuration dans le noyau
- Je vous conseille d'activer tout ce qui a rapport de près ou de loin au WiFi.
- iwl3945 est le nouveau module pour le chipset 3945. Utilisez le à partir du noyau 2.6.22.
- Mettez tout en module
- Vous avez obligatoirement besoin de mac80211 et de iwl3945
- N'oubliez pas de rapatrier le microcode Intel dans /lib/firmware
- Si malgré tout vous avez l'horrible erreur
could not read microcode : errorcode -2
, et que votre firmware est bien là:- contrairement à ce qu'affirme le errorcode (file not found), ce n'est pas le fichier qui est absent.
- en fait, le fichier est incorrectement décodé. Il faut le support pour le décoder.
- vous n'avez plus qu'à vous recompiler un noyau avec toutes les options, et retirer des options petit à petit.
Réactiver le chipset 3945ABG correctement après une désactivation.
echo 0 > /sys/bus/pci/drivers/iwl3945/*/rf_kill iwconfig wlan0 txpower on
Configuration pour le WEP
- Voici un script de démarrage prêt à l'emploi (ou presque).
#!/bin/sh
wifi=`iwconfig | grep 802.11 | cut -f 1 -d' '`
if [ "$wifi" == "" ]; then
echo $wifi
echo "Pas de carte Wifi détectée!"
exit
else
echo carte wifi detectée sur $wifi
fi
ifconfig eth0 down
ifconfig $wifi down
route del default
iwconfig $wifi key 0102030405060708 essid "votre_essid" mode managed
ifconfig $wifi up
ifconfig $wifi 192.168.1.1
echo "petite pause avant le iwlist........."
sleep 5
iwlist $wifi scan
route add default gw 192.168.1.254
- Quelques explications:
- le ifconfig down de eth0 sert à éviter les conflits avec la carte réseau ethernet.
- le iwlist n'est pas facultatif, et est très important pour permettre l'association avec le point d'accès.
- la pause avant le iwlist permet au matériel de s'initialiser (sans la pause, ça ne marche pas à tous les coups)
- le ifconfig sur l'interface wifi, ainsi que le route add peuvent souvent se remplacer par un dhcpcd $wlan0 qui vous donnera les bonnes valeurs.
Configuration pour le WPA
- Pour tout cryptage supérieur au WEP, la situation se complique.
- Il faut utiliser soit wireless_tools, soit wpa_supplicant.
- wpa_supplicant permet de se connecter aux points d'accès
WAP uniquement
(sans support WEP donc). Nous allons donc utiliser ce dernier.
wpa_supplicant
- Ici, il s'agit d'une configuration en WPA.
- wpa_supplicant permet bien sûr d'utiliser le WPA2.
Installation de wpa_supplicant
- Ce dont vous avez besoin:
- Un noyau 2.6 suffisament récent (j'utilise un 2.6.25).
- wpa_supplicant (j'utilise la version 0.5.7)
- Vérifier que CONFIG_PACKET est activé dans le kernel.
~$ zcat /proc/config.gz | grep CONFIG_PACKET CONFIG_PACKET=y
- emerge -va wpa_supplicant
Configuration de wpa_supplicant
- Editez le fichier de configuration de wpa_supplicant (/etc/wpa_supplicant/wpa_supplicant.conf).
- Je vous ai concocté un bel exemple, mais le fichier de configuration de wpa_supplicant contient des exemples pour tous les cas de figures.
- Pour notre exemple:
- Le essid du réseau est
youplaboum
. - Le protocole est
WPA familial
, comme ils disent chez MS-Windows (c'est à dire qu'on n'utilise pas une authentification avec un serveur radius). - L'entrée psk contiendra votre clé d'accès.
- priority détermine l'ordre d'évaluation des rêgles. J'imagine que ça sert si vous avez plusieurs essid du même nom.
- Le essid du réseau est
- Exemple d'entrée pour /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="youplaboum"
proto=WPA
psk="mettez_votre_cle_ici"
priority=15
group=TKIP
key_mgmt=WPA-PSK
}
Précision utile
- Dans un moment d'égarement, j'ai cru que wpa_supplicant essayait tous les réseaux de son fichier de configuration, si on n'avait pas précisé le essid avec iwconfig.
- Fatale erreur, découverte en lançant wpa_supplicant en mode verbose (à l'aide du flag -dd).
- Il faut préciser le essid de votre interface wifi avant le lancement de wpa_supplicant.
Script de lancement
- Vous trouverez un script bash de lancement de wpa_supplicant, au même endroit que le fichier de configuration.
- Ce script bash s'étant avéré particulièrement inadapté, voici ma suggestion:
#!/bin/bash # connexion Wifi WPA # * chipset Intel 3945ABG # * noyau 2.6.25 ou supérieur # * modules utilisés: iwl3945 et mac80211, du kernel. # 19 janvier 2009 #modifier ce pavé avec votre configuration. mon_essid="youplaboum" mon_ip="192.168.1.87" #si à zéro, utilisera dhcpcd ma_gateway="192.168.1.1" mon_dns="192.168.1.2" mon_iface_reseau=wlan0 #fin du pavé à modifier. /etc/init.d/net.eth0 stop ifconfig "$mon_iface_reseau" down #tester si wpa_supplicant tourne déja en arrière plan old_wpa_supplicant=$(pidof wpa_supplicant) if [ x"$old_wpa_supplicant" != x"" ]; then echo "wpa_supplicant était là, on le tue avant de le relancer" kill -9 $old_wpa_supplicant sleep 3 fi #réactiver la carte 3945ABG correctement après une désactivation. echo 0 > /sys/bus/pci/drivers/iwl3945/*/rf_kill iwconfig "$mon_iface_reseau" txpower on #configuration de mon reseau iwconfig "$mon_iface_reseau" essid "$mon_essid" mode managed ifconfig "$mon_iface_reseau" up #lancer dans un shell indépendant wpa_supplicant (wpa_supplicant -i "$mon_iface_reseau" -Dwext -c/etc/wpa_supplicant/wpa_supplicant.conf) & #si $mon_ip n'est pas spécifié, on utilise dhcp if [ x"$mon_ip" != x"" ]; then sleep 10 echo "*** configuration statique du réseau" ifconfig "$mon_iface_reseau" "$mon_ip" route add default gw "$ma_gateway" echo "nameserver $mon_dns" >/etc/resolv.conf else echo "*** configuration dynamique du réseau" dhcpcd "$mon_iface_reseau" -k dhcpcd "$mon_iface_reseau" fi
Et c'est tout.
- La configuration de ce chipset étant une plaie (rendez moi mon Intel 2200), je n'hésiterai pas à poster toutes vos remarques à ce sujet.
- N'hésitez plus, c'est anonyme et indolore.