Après d'âpres discussion au sein de la communauté des développeurs Debian, il a été décidé de publier les logiciels binaires dans des paquets de la catégorie non-free. Les firmwares dont l'installation est présentée ici entrent justement dans cette liste de paquets dédiés.
Les interfaces de marque Intel™ nécessitent un firmware spécifique pour fonctionner correctement. Ce logiciel binaire est aujourd'hui distribué via un paquet baptisé firmware-iwlwifi qui supporte les différentes familles de contrôleurs de la marque.
Les copies d'écran ci-dessous montrent qu'il n'est plus nécessaire de télécharger manuellement ces firmwares à partir de sites différents pas toujours faciles à identifier.
$ dpkg -l firmware-iwlwifi | grep -2 ^ii ||/ Nom Version Description +++-==================-=========-=================================================================== ii firmware-iwlwifi 0.16 Binary firmware for Intel Wireless 3945, 4965 and 5000-series cards
$ dpkg -L firmware-iwlwifi | grep ucode /lib/firmware/iwlwifi-4965-2.ucode /lib/firmware/iwlwifi-3945-1.ucode /lib/firmware/iwlwifi-4965-1.ucode /lib/firmware/iwlwifi-5000-1.ucode /lib/firmware/iwlwifi-3945-2.ucode
Le logiciel binaire est appelé automatiquement lors du chargement du pilote d'interface en mémoire pendant l'initialisation du système.
$ dmesg |grep iwl3945 |grep firmware iwl3945 0000:0c:00.0: firmware: requesting iwlwifi-3945-2.ucode iwl3945 loaded firmware version 15.28.2.8
Une fois ce chargement en mémoire effectué l'interface wlan0 doit être prête pour les étapes de configuration suivantes et accessible via la commande iwconfig.
Avec l'arrivée du noyau 2.6.26, les interfaces PC-CARD de type BCM4306 de la marque Broadcom™ sont intégrées dans les outils mac80211 sous le nom b43.
Ce même noyau 2.6.26 est intégré dans la version stable de la distribution Debian GNU/Linux baptisée Lenny. Il est donc justifié de préciser quelques éléments sur l'utilisation de ce type d'interface avec cette nouvelle génération de logiciel de pilotage.
Tout d'abord, il est préférable de reprendre la reconnaissance et le recensement des interfaces réseau à zéro pour que les entrées Wi-Fi soient correctement positionnées.
C'est le démon udev
qui à la
charge de «convertir» les références des composants électriquement
actifs reconnus par le noyau en entrées de type périphérique dans
le système d'exploitation. Ce démon est fourni par le paquet du
même nom et les règles de nommage des interfaces réseau sont
placées dans le répertoire /etc/udev/rules.d
. Voici les informations sur
l'état du système utilisé pour la rédaction de cette section.
# dpkg -l udev |grep ^ii ii udev 0.125-6 /dev/ and hotplug management daemon # ll /etc/udev/rules.d/ |grep net -rw-r--r-- 1 root root 537 aoû 31 14:42 70-persistent-net.rules -rw-r--r-- 1 root root 3,1K aoû 31 14:40 75-persistent-net-generator.rules
Si l'interface Wi-Fi a précédemment été configurée sous la
référence bcm43xx
, il faut effacer le
fichier 70-persistent-net.rules
à
l'aide de la commande # rm
/etc/udev/rules.d/70-persistent-net.rules et
redémarrer le système. On se croirait sous Windoze !
Une fois que le nouveau jeu de règles est activé, on obtient les
entrées suivantes dans le nouveau fichier 70-persistent-net.rules
.
# cat /etc/udev/rules.d/70-persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules # program run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single line. # PCI device 0x8086:0x1229 (e100) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:d0:59:9d:29:c6", \ ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" # PCI device 0x14e4:0x4320 (b43) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:12:17:b6:9c:98", \ ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"
Avec ces règles, la liste des interfaces obtenues via les
commandes ifconfig
(et|ou) iwconfig fait
bien apparaître les entrées wlan0
et
wmaster0
.
-
Commande de configuration du niveau Wi-Fi :
# iwconfig lo no wireless extensions. eth0 no wireless extensions. wmaster0 no wireless extensions. wlan0 IEEE 802.11 ESSID:"open" Mode:Managed Frequency:2.427 GHz Access Point: 00:1D:45:B7:EF:00 Bit Rate=54 Mb/s Tx-Power=27 dBm Retry min limit:7 RTS thr:off Fragment thr=2352 B Encryption key:off Link Quality=91/100 Signal level=-37 dBm Noise level=-69 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
-
Commande de configuration du niveau réseau IP :
# ifconfig eth0 Link encap:Ethernet HWaddr 00:d0:59:9d:29:c6 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:88 errors:0 dropped:0 overruns:0 frame:0 TX packets:88 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:5312 (5.1 KiB) TX bytes:5312 (5.1 KiB) wlan0 Link encap:Ethernet HWaddr 00:12:17:b6:9c:98 inet adr:192.168.1.6 Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: fe80::212:17ff:feb6:9c98/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:13362 errors:0 dropped:0 overruns:0 frame:0 TX packets:15606 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:8907944 (8.4 MiB) TX bytes:1824997 (1.7 MiB) wmaster0 Link encap:UNSPEC HWaddr 00-12-17-B6-9C-98-77-6C-00-00-00-00-00-00-00-00 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Le logiciel de pilotage intégré à l'interface ou firmware est fourni par le constructeur
LinkSys™. Le contenu de ce logiciel
est protégé puisque seuls les binaires sont fournis. Il n'est donc
pas possible de le recompiler à partir des sources comme on le fait
couramment avec le noyau Linux. Cependant, l'interface entre le
noyau et ce logiciel binaire est possible. C'est ce qui est fait
dans le cas du pilote b43
. C'est un
module du noyau Linux qui fait appel au firmware constructeur pour utiliser les fonctions
Wi-Fi.
La distribution Debian GNU/Linux fournit un paquet baptisé b43-fwcutter qui permet de télécharger le firmware et de l'installer dans l'arborescence du système d'exploitation. Voici les informations le paquet et sur l'arborescence d'installation.
# dpkg -l b43* |grep ^ii ii b43-fwcutter 1:011-5 Utility for extracting Broadcom 43xx firmware # ls -l /lib/firmware/b43*
L'utilisation du firmware se
retrouve dans les messages systèmes lors de l'activation de
l'interface ; au démarrage par exemple. La commande # dmesg | less permet de
parcourir les messages correspondants. Voir les lignes débutant par
firmware:
dans la copie d'écran
ci-dessous.
b43-pci-bridge 0000:06:00.0: enabling device (0000 -> 0002) ACPI: PCI Interrupt 0000:06:00.0[A] -> Link [C142] -> GSI 11 (level, low) -> IRQ 11 PCI: Setting latency timer of device 0000:06:00.0 to 64 ssb: Sonics Silicon Backplane found on PCI device 0000:06:00.0 b43-phy0: Broadcom 4306 WLAN found phy0: Selected rate control algorithm 'pid' Broadcom 43xx driver loaded [ Features: PMLR, Firmware-ID: FW13 ] <snipped> input: b43-phy0 as /class/input/input6 firmware: requesting b43/ucode5.fw firmware: requesting b43/pcm5.fw firmware: requesting b43/b0g0initvals5.fw firmware: requesting b43/b0g0bsinitvals5.fw b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10) Registered led device: b43-phy0::tx Registered led device: b43-phy0::rx Registered led device: b43-phy0::radio NET: Registered protocol family 10 lo: Disabled Privacy Extensions ADDRCONF(NETDEV_UP): eth0: link is not ready ADDRCONF(NETDEV_UP): wlan0: link is not ready wlan0: Initial auth_alg=0 wlan0: authenticate with AP 00:1d:45:b7:ef:00 wlan0: RX authentication from 00:1d:45:b7:ef:00 (alg=0 transaction=2 status=0) wlan0: authenticated wlan0: associate with AP 00:1d:45:b7:ef:00 wlan0: RX AssocResp from 00:1d:45:b7:ef:00 (capab=0x421 status=0 axml:id=2) wlan0: associated wlan0: switched to short barker preamble (BSSID=00:1d:45:b7:ef:00) ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Ces messages systèmes sont la conséquence du chargement des modules de pilotage du noyau Linux. On obtient la liste des modules relatifs à l'interface à l'aide de la commande donnée ci-après.
# lsmod | grep b43 b43 110748 0 rfkill 5652 3 rfkill_input,b43 rng_core 3940 1 b43 mac80211 139680 1 b43 led_class 3908 1 b43 input_polldev 3752 1 b43 ssb 33476 1 b43 pcmcia 29548 2 b43,ssb firmware_class 6816 2 b43,pcmcia pcmcia_core 31892 5 b43,ssb,pcmcia,yenta_socket,rsrc_nonstatic
À partir de là, les opérations de configuration de l'interface de réseau sans-fil n'ont rien de spécifique au modèle de composant utilisé. Il n'y a plus qu'à se référer aux sections ci-dessus.