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 doit être 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 aid=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.
Vous êtes ici :