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.
  • 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.