Bonjour,
Je vous propose pour mon premier tutoriel, de configurer Ubuntu Dapper pour faire fonctionner un carte wifi munit du chipset Broadcom Corporation BCM4318 [AirForce One 54g] . Dans mon cas c'est la carte WiFi interne (PCI) d'un ASUS A6K, vous trouverez une liste d'autres portables utilisant aussi ce chipset ici:
http://bcm43xx.berlios.de/?go=devices
Comment connaître le chipset de sa carte ?
Ouvrez une console et tapez la commande suivante:
lspci
Cherchez dans le résultat une ligne ressemblant à celle-çi :
0000:00:09.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)
Chez vous les premiers chiffres (chez moi 0000:00:09.0) peuvent être différents cela n'aura aucune incidence sur la suite. Vérifiez aussi que le Subsystem Vendor ID et le Subsystem Product ID figure dans la liste donnée en lien plus haut, pour ce faire on utilise la commande suivante (adaptez les chiffres après 0000: à votre cas):
lspci -vn | grep -A 1 0000:00:09.0
le résultat pour moi est le suivant:
0000:00:09.0 0280: 14e4:4318 (rev 02)
Subsystem: 1043:120f
On retrouve bien ce chipset dans la liste :
http://bcm43xx.berlios.de/?go=devices
Le Driver libre bcm43xx
Pour faire fonctionner la carte, il va nous falloir les bons drivers et le firmware adaptés à notre matériel (le firmware à utilisé peut-être différent suivant le constructeur de votre portable, nous y reviendrons plus tard) . Ubuntu depuis la version Dapper fournit le bon driver c'est bcm43xx , il a dû être installé lors de votre passage sous Dapper, vous pouvez chercher à l'aide de synaptic le paquet nommé "bcm43xx-fwcutter", si il n'est pas déjà installé c'est le momment pour vous de le faire. Pour ceux qui préfèrent la ligne de commande:
sudo apt-get install bcm43xx-fwcutter
Pour information: Le driver bcm43xx est intégré au kernel linux depuis la version 2.6.17-rc2 , ce noyau sera utilisé par la prochaine version de Ubuntu Edgy.
Conflit avec ndiswrapper
Il semblerait que ndiswrapper et bcm43xx-fwcutter ne fasse pas bon ménage . Si vous aviez déjà installé ndiswrapper, il va falloir le désinstaller correctement pour cela suivez la documentation suivante:
http://doc.ubuntu-fr.org/materiel/wifi/ndiswrapper#desinstallation_de_ndiswrapper
Assurez-vous aussi que bcm43xx n'est pas dans la liste des modules blacklistés:
cat /etc/modprobe.d/blacklist
Si vous voyez la ligne suivante: "blacklist bcm43xx" . Commentez là, en mettant le signe # au début de la ligne, sous Ubuntu:
gksudo gedit /etc/modprobe.d/blacklist
sous Kubuntu:
kdesu kate /etc/modprobe.d/blacklist
Ou pour les fans de la ligne de commande:
sudo nano /etc/modprobe.d/blacklist
Choisir et installer le bon firmware
Maintenant que nous avons installé bcm43xx-fwcutter, pour que la carte soit utilisable il va nous falloir installé le bon firmware, Ubuntu ne pouvant pas nous les fournir (pour une question de droits ?), nous allons les récupérer nous mêmes. Le fichier README de bcm43xx-fwcutter fournit des dizaines d'URL où télécharger le firmware .
zless /usr/share/doc/bcm43xx-fwcutter/README.gz
D'expérience, je vous conseil d'essayer en priorité le firmware wl_apsta.o (
http://openwrt.inf.fh-brs.de/~nbd/wl_apsta.o), c'est celui qui sera pris en exemple pour la suite de ce tutoriel. Si plus tard en suivant ce tutoriel cela ne fonctionne pas, essayez un autre firmware de la liste (avec un peu de chance, vous en trouverez un fournit par le constructeur de votre portable).
Maintenant que vous avez un firmware, nous allons l'installer. Mais avant tout, assurez-vous que le module bcm43xx n'est pas chargé (il l'est si vous ne l'aviez pas blacklisté, où si vous avez déjà testé un autre firmware):
sudo modprobe -r bcm43xx
Installons le firmware fraichement téléchargé:
sudo bcm43xx-fwcutter -w /lib/firmware/ /chemin/vers/wl_apsta.o
qui devrait vous répondre:
fwcutter can cut the firmware out of wl_apsta.o
filename : wl_apsta.o
version : 3.130.20.0
MD5 : e08665c5c5b66beb9c3b2dd54aa80cb3
extracting bcm43xx_microcode2.fw ...
extracting bcm43xx_microcode4.fw ...
extracting bcm43xx_microcode5.fw ...
extracting bcm43xx_microcode11.fw ...
extracting bcm43xx_pcm4.fw ...
extracting bcm43xx_pcm5.fw ...
extracting bcm43xx_initval01.fw ...
extracting bcm43xx_initval02.fw ...
extracting bcm43xx_initval03.fw ...
extracting bcm43xx_initval04.fw ...
extracting bcm43xx_initval05.fw ...
extracting bcm43xx_initval06.fw ...
extracting bcm43xx_initval07.fw ...
extracting bcm43xx_initval08.fw ...
extracting bcm43xx_initval09.fw ...
extracting bcm43xx_initval10.fw ...
Si l'installation se passe mal, essayez un autre firmware de la liste fournit dans le README.
Si vous avez téléchargez un firmware qui est un fichier avec l'extension .sys, l'opération est la même:
sudo bcm43xx-fwcutter -w /lib/firmware/ /chemin/vers/firmware.sys
Notes: Certains firmwares en .sys peuvent être extrait d'un firmware .exe grâce à l'utilitaire cabextract (à installer avec synaptic) .
Maintenant que nous sommes sûr que le driver et le firmware sont bien installé Ubuntu devrait reconnaitre votre matériel comme une interface réseau sans fil, pour nous en assurer on va tout d'abord charger le module dans le noyau:
sudo modprobe bcm43xx
puis:
iwconfig
doit répondre quelque chose comme:
lo no wireless extensions.
eth0 no wireless extensions.
sit0 no wireless extensions.
eth1 IEEE 802.11b/g ESSID:off/any Nickname:"Broadcom 4318"
Mode:Managed Access Point: Invalid Bit Rate=1 Mb/s
RTS thr:off Fragment thr:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Notre carte Wifi Broadcom bcm4318 AirForce One 54g est maintenant prête à être utilisée!
Premier test de la carte.
Nous avons vu d'après la dernière commande que notre carte wifi était reconnue en tant que interface réseau 'eth1', cela peut-être une interface différente chez vous, adaptez donc les commandes suivantes à votre cas.
Pour tester la carte on va d'abord 'réveiller' l'interface, pour qu'elle puisse émettre et recevoir des paquets :
sudo ifconfig eth1 up
Assurez vous de ce reveil avec la commande:
ifconfig
qui doit répondre quelque chose comme:
eth1 Lien encap:Ethernet HWaddr 00:AA:BB:CC:DD:EE
UP BROADCAST MULTICAST MTU:1500 Metric:1
Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:0 (0.0 b) Octets transmis:0 (0.0 b)
Interruption:193 Adresse de base:0xc000
lo Lien 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
Packets reçus:17 erreurs:0 :0 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
Octets reçus:2126 (2.0 KiB) Octets transmis:2126 (2.0 KiB)
Note: les chiffres(de 0 à 9)/lettres (de A à F) après HWaddr représente l'adresse MAC de votre carte, ils sont uniques à chaque carte. Il peut-être utile de les connaitre pour se connecter à certains réseaux filtrant les adresses MAC.
On va maintenant scanner les alentours pour voir quels sont les Points d'Accès auxquels on pourrait se connecter:
iwlist eth1 scan
la réponse peut ressembler à:
eth1 Scan completed :
Cell 01 - Address: 00:11:22:33:44:55
ESSID:"NomDuPoint"
Protocol:IEEE 802.11g
Mode:Master
Channel:11
Encryption key:off
Bit Rates:54 Mb/s
Extra: Rates (Mb/s): 1 2 5.5 11 6 9 12 18 24 36 48 54
Quality=100/100 Signal level=-176 dBm
Extra: Last beacon: 69ms ago
Dans ce cas 1 Point d'Accès à été trouvé (Cell 01), il se nomme "NomDuPoint", son adresse MAC est 00:11:22:33:44:55 .
Si la commande iwlist ne vous retourne aucun résultat, et que vous êtes sûr qu'un point d'accès est à portée (votre LiveBox par exemple):
_1) Vérifiez que vous avez bien lancé la commande
sudo ifconfig eth1 up
.
_2) Essayer un autre firmware en reprenant ce tutoriel depuis
Choisir et installer le bon firmware .
J'ai personnelement testé la carte Broadcom BCM4318 sur des réseaux chiffrés avec du WEP 128 bits, sur du WPA-PSK (dit WPA1), et sûr des réseaux ouverts, bien entendu . Si vous l'avez testé avec succès avec un autre type de chiffrage (WPA2, WPA-radius), merci de laisser un commentaire 😉 .
S'associer à un point d'accès:
Je supposerai dans les exemples suivants que le Point d'Accès utilise le systême d'attribution d'IP automatique DHCP, ce qui est vrai dans la très grande majorité des cas. Les commandes données dans les exemples suivants ne sont pas spécifiques à la carte Broadcom BCM4318 vous pouvez vous en servir pour n'importe quelle autre carte WiFi.
Par une interface graphique
C'est la manière la plus pratique, l'utilitaire le plus abouti que j'ai testé est network-manager (
http://doc.ubuntu-fr.org/applications/network_manager) . Installez-le via synaptics, cherchez le paquet nommé "network-manager-gnome" si vous êtes sous Ubuntu, ou le paquet "knetworkmanager" si vous êtes sous Kubuntu. Network-manager gère les réseaux protégé par WEP (40-128 bits), WPA1 (WPA-PSK) et WPA2 (WPA-AES), de plus il est multi-utilisateur et ne nécessite pas les droits root (c'est un daemon NetworkManagerD lancé au démarrage qui s'occupe de configurer la carte avec les droits root). Il peut même gérer vos autres interfaces réseaux comme un réseau filaire ethernet.
Note: Pour vous connecter à un réseau chiffré par WPA, installez aussi le paquet nommé "wpasupplicant". Network-Manager gérera ce programme pour vous. Vous n'aurez aucun fichier à éditer.
Par la ligne de commande: sur un réseau ouvert
On peut remarquer que lors de notre test de scan, sur le Point d'Accès trouvé aucun cryptage n'est actif (Encryption key:off). Si ce point d'accès ne filtre pas les adresses MAC des clients qui s'y connectent (rappel: la notre est 00:AA:BB:CC:DD:EE) on doit pouvoir s'y associer sans problèmes avec les commandes:
sudo iwconfig eth1 essid "NomDuPoint"
sudo dhclient eth1
Remplacez "NomDuPoint" avec le nom de l'ESSID trouvé lors du scan.
Par la ligne de commande: sur un réseau chiffré WEP
Pour se connecter au Point d'Accès suivant:
eth1 Scan completed :
Cell 01 - Address: 00:11:22:33:44:55
ESSID:"NomDuPoint"
Protocol:IEEE 802.11g
Mode:Master
Channel:11
Encryption key:on
Bit Rates:54 Mb/s
Extra: Rates (Mb/s): 1 2 5.5 11 6 9 12 18 24 36 48 54
Quality=100/100 Signal level=-176 dBm
Extra: Last beacon: 69ms ago
protégez par un chiffrage WEP (Encryption key:on dont le passphrase est MotDePasseWep), on utilise les commandes suivantes (à adaptez à votres cas!):
sudo iwconfig eth1 rate 11M
sudo iwconfig eth1 mode managed channel 11 key open s:MotDePasseWep essid "NomDuPoint"
sudo iwconfig eth1 ap 00:11:22:33:44:55
sudo dhclient eth1
La réponse doit ressembler à:
Internet Systems Consortium DHCP Client V3.0.3
Copyright 2004-2005 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP
Listening on LPF/eth1/00:15:f2:57:16:3d
Sending on LPF/eth1/00:15:f2:57:16:3d
Sending on Socket/fallback
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 3
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 6
DHCPOFFER from 192.168.2.1
DHCPREQUEST on eth1 to 255.255.255.255 port 67
DHCPACK from 192.168.2.1
bound to 192.168.2.3 -- renewal in 19907 seconds.
L'adresse IP obtenue (ici 192.168.2.3) peut être différente chez vous, le nombre de requêtes DHCPDISCOVER peut aussi être plus nombreux, soyez patient. Si le Point d'Accès est éloigné (signal faible) rééssayer plusieurs fois la dernière commande, essayer aussi de descendre le 'rate' à 1M de la première commande (
sudo iwconfig eth1 rate 1M
).
Remarque: le mot de passe était ici fournit en ASCII (passphrase), si vous ne connaissez que la version héxadécimal (i.e: 1234-5678-9ABC-DEF1-2345-6789-AB), la 2ème ligne de commande sera:
sudo iwconfig eth1 mode managed channel 11 key open 1234-5678-9ABC-DEF1-2345-6789-AB essid "NomDuPoint"
Par la ligne de commande: sur un réseau chiffré WPA-PSK
Assurez-vous d'abord d'avoir installé le paquet "wpasupplicant" par synaptic par exemple.
Un scan d'un Point d'Accès chiffré par WPA-PSK ressemble à ceci:
eth1 Scan completed :
Cell 01 - Address: 00:11:22:33:44:55
ESSID:"NomDuPoint"
Protocol:IEEE 802.11g
Mode:Master
Channel:11
Encryption key:on
Bit Rates:54 Mb/s
Extra: Rates (Mb/s): 1 2 5.5 11 6 9 12 18 24 36 48 54
Quality=100/100 Signal level=-171 dBm
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
Extra: Last beacon: 11ms ago
On va devoir créer un fichier /etc/wpa_supplicant.conf qui contiendra les informations de connection, sous Ubuntu:
gksudo gedit /etc/wpa_supplicant.conf
sous Kubuntu:
kdesu kate /etc/wpa_supplicant.conf
Ce fichier contiendra le texte suivant:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
network={
ssid="NomDuPoint"
psk="MaClefDeChiffrementEnASCII"
priority=5
}
Si vous ne connaissez que la version hexadécimale de la clef de chiffrement (i.e: 1234abcd56789ef1234abcedef56789) remplacer la ligne psk="MaClefDeChiffrementEnASCII" par la ligne psk=1234abcd56789ef1234abcedef56789 (notez qu'il n'y a plus les guillemets!).
On va maintenant lancer wpa_supplicant en tâche de fond:
sudo wpa_supplicant -B -i eth1 -c /etc/wpa_supplicant.conf -D wext -w
Après quelques secondes wpa_supplicant va régler l'interface eth1 pour se connecter au point d'accès, on peut le vérifier par la commande:
sudo iwconfig eth1
qui doit répondre:
eth1 IEEE 802.11b/g ESSID:"NomDuPoint" Nickname:"Broadcom 4318"
Mode:Managed Frequency=2.462 GHz Access Point: 00:11:22:33:44:55
Bit Rate=11 Mb/s Tx-Power=19 dBm
RTS thr:off Fragment thr:off
Encryption key:ABCD-EF12-3456-789A-BCDE-F123 Security mode:open
Link Quality=100/100 Signal level=2/3 Noise level=184/100
Rx invalid nwid:0 Rx invalid crypt:2 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Si jamais vous aviez la ligne Encryption key:off à la place d'une clef en hexadécimale, c'est que votre carte n'est pas associée au point d'accès, attendez encore quelques instants de plus, si ce n'est toujours pas bon au bout de 10 secondes cela peut-être dû à un mauvais mot de passe, où à un firmware qui ne convient pas à votre matériel. Vérifiez votre clef de chiffrement, et en dernier ressort changez de firmware.
Note: Avant de modifier le fichier /etc/wpa_supplicant.conf, arrêtez le processus 'wpa_supplicant' avec la commande:
sudo killall wpa_supplicant
Pour vous aider à débugguer vous pouvez lancer wpa_supplicant dans une nouvelle fenêtre de terminal de la façon suivante:
sudo wpa_supplicant -i eth1 -c /etc/wpa_supplicant.conf -D wext -d
Si tous c'est bien passer on peut demander une adresse IP au point d'accès:
sudo dhclient eth1
La réponse doit ressembler à:
Internet Systems Consortium DHCP Client V3.0.3
Copyright 2004-2005 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP
Listening on LPF/eth1/00:15:f2:57:16:3d
Sending on LPF/eth1/00:15:f2:57:16:3d
Sending on Socket/fallback
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 3
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 6
DHCPOFFER from 192.168.2.1
DHCPREQUEST on eth1 to 255.255.255.255 port 67
DHCPACK from 192.168.2.1
bound to 192.168.2.3 -- renewal in 19907 seconds.
Voilà, vous êtes maintenant connecté à un réseau WiFi chiffré par WPA-PSK.
Notes: Pour une revue complète de ce que peut contenir le fichier wpa_supplicant.conf voir :
http://doc.ubuntu-fr.org/installation/wpa#configuration_du_wpa_supplicant .
Bugs connus
_1) Il m'est arrivé sur des réseaux chiffrés par WPA, de ne pas pouvoir m'y connecter du premier coup (surtout après un reboot de ma machine). Dans ces cas, il faut déconnecter l'interface réseau, décharger le module bcm43xx du noyau, puis le recharger, et réveiller l'interface réseau:
sudo ifconfig eth1 down
sudo modprobe -r bcm43xx
sudo modprobe bcm43xx
sudo ifconfig eth1 up
Si vous utilisez Network-Manager: passer en "mode hors-ligne", tapez les lignes de commandes suivantes dans un terminal:
sudo modprobe -r bcm43xx
sudo modprobe bcm43xx
repassez Network-Manager en "mode en ligne", Sélectionnez le votre réseau WiFi, cette fois-ci vous devriez pouvoir vous y connecter.
Si quelqu'un sait comment résoudre ce bug, laissez un commentaire, merci 🙂 .
_2) Il semblerait qu'avec cette carte et les firmwares actuel le débit maximale soit de 11Mb/s (le firmware wl_apsta.o règle par défaut la carte sur ce débit), si on force un débit plus élévé (la norme 802.11g est censée allez jusqu'à 54Mb/s) par la commande:
sudo iwconfig eth1 rate 54M
L'association au Point d'accès échoue, cela peut même gelé votre interface. Ne vous étonnez donc pas si le driver bcm43xx s'obstine à laisser la carte à 11Mb/s alors que votre réseau supporte plus (bon en même temps l'ADSL ne va pas à ce débit là non plus, hein 😛).
Extras
Le firmware wl_apsta.o me permet de configurer la carte en mode Monitor (ce qui était impossible avec ndiswrapper et les pilotes Windows), on peut donc utiliser des outils comme aircrack (j'ai testé l'outil airodump et il fonctionne), ou Kismet (si quelqu'un là testé qu'il laisse un commentaire, merci).