Fedora-Fr - Communauté francophone Fedora - Linux

Planet de Fedora-Fr : la communauté francophone autour de la distribution Linux Fedora

A propos

Cette page est actualisée toutes les heures.

Cette page est une sélection de blogs autour de Fedora. Fedora-Fr.org décline toute responsabilité au sujet des propos tenus par les auteurs des blogs de ce planet. Leurs propos sont leur entière responsabilité.

Le contenu de ce planet appartient à leurs auteurs respectifs. Merci de consulter leur blogs pour obtenir les licences respectives.

Mot-clefs : module

Bug avec le pilote WL et Avahi

Patrice Ferlet

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 :)" class="smiley 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...

Domotique - MisterHouse sur un ReadyNAS Duo

Alexandre Frandemiche

ReadyNas DuoDans ce billet je vais vous expliquer comment j'ai fais fonctionner le module CM11 (la procédure est la même pour CM15) avec MisterHouse sur un serveur NetGear ReadyNas Duo.

Ce serveur tourne sur une Debian made by NetGear il me sert de serveur "fourre-tout". J'ai convaincu des collègues d'acheter le même, et il s'est avéré que l'un d'entre eux possédait déjà de la domotique au sein de son doux foyer. Et oui, encore ce fameux collègue !!! Bref, tout ça pour vous dire que con CM11 n'était pas reconnu sur ce serveur. En effet étant une installation minimaliste de Debian, beaucoup de modules ne sont pas présents, notamment le pl2303 et le usbserial. Ces modules, pourront surement me servir lors de l'installation de mon module plcbus ...

Nous avons donc le serveur d'un coté et de l'autre, ma station de travail (enfin mon portable) sous Fedora 11.

Voici les étapes à suivre afin de compiler ces 2 modules, notez que je ne décrirez pas le fichier de configuration de MisterHouse, une fois le module reconnu, il suffit de suivre la documentation afin de le faire fonctionner.

Sur la machine de compilation sous Fedora :

Installation de Cross-compiler dans /usr/local/.

Ensuite vérifiez que vous avez bien les paquets suivants d'installés : gcc gdb g++ glibc glibc-devel ncurses-devel ncurses-term kernel-devel (il est possible qu'il en manque, je vous laisse user du yum install à votre guise!)

Pour la suite des opérations, vous aurez besoin de récupérer les sources sur ce lien : http://www.readynas.com/?page_id=2324.

Voici les opérations à effectuer :
wget -q http://www.readynas.com/download/GPL/RND4_***.zip
unzip -q RND4_***.zip -d ./GPL
cd GPL/linux-x86-2.6/
cp arch/padre/defconfig .config
make ARCH=padre CROSS_COMPILE=sparc-linux- menuconfig

Maintenant aller chercher le module que vous souhaitez compiler :
|||Required modules: -> Device Drivers -> |||| USB Support -> USB Serial Converter Support -> USB Prolific 2303 Single Port Serial Driver

make modules_install
Si je me souviens bien, il va y avoir une erreur de compilation à ce moment là dû à un bogue dans cette version de noyau < 2.6.18, il faut juste effectuer un changement dans le fichier suivant :
nano scripts/mod/sumversion.c
Ajouter : #include <limits.h> en haut du fichier.
Puis on relance la compilation !
make && make modules_install

Vous trouverez GPL/linux-x86-2.6/drivers/usb/serial/usbserial.ko et drivers/usb/serial/pl2303.ko à copier/coller sur le ReadyNas Duo.

Sur le ReadyNas Duo :

cp usbserial.ko /lib/modules/2.6.17ReadyNas/kernel/drivers/usb/serial/
cp pl2303.ko /lib/modules/2.6.17ReadyNas/kernel/drivers/usb/serial/
Puis on va ajouter le chargement des modules au lancement du serveur :
nano /etc/modprobe.d/aliases
On ajoute le chemin vers les 2 modules, puis :
modprobe usbserial
modprobe pl2303
ou directement :
insmod /lib/modules/2.6.17ReadyNas/kernel/drivers/usb/serial/usbserial.ko
insmod /lib/modules/2.6.17ReadyNas/kernel/drivers/usb/serial/pl2303.ko

pour vérifier que les modules sont bien reconnus :

dmesg -c

Et voilà !!!

Au cas où pour la version 4.1.6 du firmware du ReadyNas Duo, voici les modules compilés : pl2303.ko et usbserial.ko, ça vous évitera le travail du dessus ;-) !