Activer le WiFi avec une puce Intel PRO/Wireless 5100 AGN [Shiloh]

Introduction

Mon nouveau portable, un HP 6730b, intègre un jeu de composant WiFi Intel Pro/Wireless 5100 :
02:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection

Par chance, il est supporté par le noyau 2.6.27, par malchance, le noyau actuellement disponible avec Debian Lenny est le 2.6.26.

ATTENTION : il faut de plus télécharger le micrologiciel (firmware en anglais) chez Intel, et accepter leur licence, ce qui fait que votre linux sera un peu moins libre.

Installer le micrologiciel

Il faut télécharger le micrologiciel sur le site d'intel, ici pour être précis. Il suffit de décompresser l'archive iwlwifi-5000-ucode-5.4.A.11.tar.gz et de copier le fichier iwlwifi-5000-1.ucode dans le répertoire /lib/firmware :
$ tar -xvzf iwlwifi-5000-ucode-5.4.A.11.tar.gz
$ sudo cp iwlwifi-5000-ucode-5.4.A.11/iwlwifi-5000-1.ucode /lib/firmware/

Compiler le noyau

Je ne vais pas détailler la compilation du noyau à la Debian, je vous renvoie sur l'article du site Andesi.

Pour faire simple, je reconfigure le noyau avec les mêmes options que celui qui tourne en récupérant le fichier /boot/config-2.6.26-1-amd64 (à adapter à votre système). Ensuite il faut activer ces options :

CONFIG_IWLWIFI=m
CONFIG_IWLCORE=m
CONFIG_IWLWIFI_LEDS=y
CONFIG_IWLWIFI_RFKILL=y
CONFIG_IWLAGN=m
CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y
CONFIG_IWLAGN_LEDS=y
CONFIG_IWL5000=y

REMARQUE : à priori, en utilisant les pilotes de Linuxwireless, il n'est pas nécessaire de passer au noyau 2.6.27, ça devrait fonctionner sur le 2.6.26 d'une Debian Lenny, mais j'ai la flemme de vérifier.

Pour terminer

Une fois le nouveau noyau installé, et l'ordinateur re-démarré, vous devriez avoir ceci dans votre dmesg :

[...]
iwlagn: Intel(R) Wireless WiFi Link AGN driver for Linux, 1.3.27ks
iwlagn: Copyright(c) 2003-2008 Intel Corporation
iwlagn 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
iwlagn 0000:02:00.0: setting latency timer to 64
iwlagn: Detected Intel Wireless WiFi Link 5100AGN REV=0x54
iwlagn: Tunable channels: 13 802.11bg, 24 802.11a channels
iwlagn 0000:02:00.0: PCI INT A disabled
hy0: Selected rate control algorithm 'iwl-agn-rs'

On peut également vérifier les modules chargés :
$ lsmod |grep iw
iwlagn 77700 0
iwlcore 77252 1 iwlagn
rfkill 8984 2 iwlcore
led_class 4740 1 iwlcore
mac80211 136988 2 iwlagn,iwlcore
cfg80211 22152 3 iwlagn,iwlcore,mac80211

Et pour finir, on vérifie l'état de l'interface réseau sans fil :
$ /sbin/iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wmaster0 no wireless extensions.

wlan0 IEEE 802.11abgn ESSID:"MaCage"
Mode:Managed Frequency:2.427 GHz Access Point: xx:xx:xx:xx:xx:xx
Bit Rate=54 Mb/s Tx-Power=15 dBm
Retry min limit:7 RTS thr:off Fragment thr=2352 B
Power Management:off
Link Quality=100/100 Signal level:-43 dBm Noise level=-88 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Ah oui, si vous avez un interrupteur qui active/désactive le WiFi et/ou le Bluetooth, il faut veiller à ce qu'il soit allumé bien sûr pour que ça fonctionne ! Ou désactiver cette fonction dans le BIOS ...

Après, pour gérer mes connections, j'utilise wicd, ce n'est pas dans les dépôts Debian mais je n'ai jamais réussi à faire fonctionner NetworkManager en wpa2. J'ai fait un petit tuto pour configurer wicd.