Si comme moi vous avez une carte wifi sur votre pc portable de type Broadcom
(BCM43225 chez moi) alors vous allez avoir besoin du pilote "wl" (paquet
kmod-wl chez rpmfusion...). Ce pilote fonctionne très bien mais la paquet
utilise une version qui (pour le moment) a un léger bug qui peut vous engendrer
une crise d'arrachage de cheveux en règle. L'idée principale est tout
simplement que mon pc portable refuse catégoriquement de trouver les hôtes de
mon réseau via le système d'auto-configuration de nom de domaine Avahi. Pour
régler cela, je vais vous donner la marche à suivre.
Tout d'abord, pour faire un peu le "pro" je vais vous expliquer comment j'ai
trouvé le bug... Rien de bien méchant, il suffisait de connaitre deux
commandes: tcpdump et grep. Je vous l'explique par ce que je pense que vous
pourrez apprécier de savoir faire cela pour d'autres cas.
Je savais que avahi fonctionnait simplement: au moment où une machine
accroche un réseau, le démon avahi envoit un paquet "broadcast" contenant son
adresse, son nom de domaine (nom de machine en fait), et quelques infos...
Bref, de mon coté j'ai deux pc qui trounent: patrice-desktop et
patrice-laptop.
Voilà ce que j'ai fait, bêtement: Sur le poste desktop, j'ai lancé (en
root...)
tcpdump -i eth0 | grep mdns
Ce que fait cette commande est simple: afficher toutes les trames réseau qui
arrivent sur l'interface réseau eth0 et filtrer seulement celle qui ont "mdns"
dans les informations. En fait, sitôt que mon portable se connectera, il doit
envoyer un broadcast pour dire "hého je suis patrice-laptop, et j'ai telle ip".
Et dans les informations de paquet, il y aura "mdns" qui doit apparaitre,
puisque c'est ce protocole qui est utilisé...
Pour faire simple, je relance simplement le service avahi-daemon sur le
laptop:
su -c "service avahi-daemon restart"
et là... sur le pc de bureau je vois bien:
12:27:28.822446 IP patrice-laptop.local.mdns > 224.0.0.251.mdns: 0*- [0q] 29/0/0 (Cache flush) AAAA fe80::4e0f:6eff:fe24:6009, (Cache flush) PTR patrice-laptop.local., (Cache flush) A 10.0.0.2, (Cache flush) PTR patrice-laptop.local., (Cache flush) HINFO, PTR patrice-laptop [4c:0f:6e:24:60:09]._workstation._tcp.local., (Cache flush) SRV patrice-laptop.local.:9 0 0, (Cache flush) TXT "", PTR _workstation._tcp.local., PTR patrice-laptop._http._tcp.local., (Cache flush) SRV patrice-laptop.local.:45937 0 0, (Cache flush) TXT "u=guest", PTR _http._tcp.local., PTR Fichiers publics de patachou sur patrice-laptop.local._webdav._tcp.local., (Cache flush) SRV patrice-laptop.local.:45937 0 0, (Cache flush) TXT "u=guest" "path=/", PTR _webdav._tcp.local., PTR Virtualization Host patrice-laptop._libvirt._tcp.local., (Cache flush) SRV patrice-laptop.local.:0 0 0, (Cache flush) TXT "", PTR _libvirt._tcp.local., PTR patrice-laptop._ssh._tcp.local., (Cache flush) SRV patrice-laptop.local.:22 0 0, (Cache flush) TXT "", PTR _ssh._tcp.local., PTR patrice-laptop._udisks-ssh._tcp.local., (Cache flush) SRV patrice-laptop.local.:22 0 0, (Cache flush) TXT "", PTR _udisks-ssh._tcp.local. (855)
Ok , parfait mon laptop envoit les infos, mais faisons maintenant l'inverse,
on lance la commande tcpdump sur le portable, et on relance avahi daemon sur le
pc de bureau... et ba rien n'apparaissait...
J'ai donc prospecté, et j'ai appris que la version du pilote donné dans
rpmfusion n'est pas patché pour corriger le souci. Alors on va palier le souci
le temps que l'auteur (que j'ai prévenu) fasse la correction.
Tout d'abord, on récupère le pilote broadcom:
#on va utiliser un répertoire pour notre compilation
mkdir ~/broadcom
cd ~/broadcom
#les sources du module pour 64 bits
wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_64-v5_100_82_38.tar.gz
tar zxf hybrid-portsrc_x86_64-v5_100_82_38.tar.gz
#pour les 32 bits utilisez ceci:
#wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_32-v5_100_82_38.tar.gz
#tar zxf hybrid-portsrc_x86_32-v5_100_82_38.tar.gz
#on récupère le patch
wget http://www.broadcom.com/docs/linux_sta/5_100_82_38.patch
patch -p0 < 5_100_82_38.patch
A partir de là, vous avez les sources prêtes à être compilées.
Et bien allons-y, on compile:
make
Maintenant que ça a compilé, et seulement si ça a compilé,
on va supprimer le paquet kmod-wl et virer le module:
su -lc "rmmod wl; yum remove kmod-wl -y"
Et enfin, on va installer le module que nous avons compilé:
su -c "make install && insmod wl.ko"
Normalement, votre connexion va se relancer et vous aurez le wifi qui
marchera... notez que vous devrez pour le moment refaire la manipulation de
compilation à chaque fois que vous mettrez à jour votre noyau.
Ainsi j'ai enfin eut mon réseau qui troune avec "mdns" (donc avahi en fait)
et je peux pinger, me connecter ou lister tous les postes de mon réseau sans
connaitre leur ip
Désolé mais j'adore.
Bon j'espère que le mainteneur du paquet kmod-wl a lut mon message... car
c'est pas marrant pour tout le monde de devoir se compiler soit même un
pilote... Quoique la méthode est pas si complexe...