Télécharger ou compiler les drivers

Le principe est le même sur un NAS Synology que sur un PC, à la différence prêt qu'il faut trouver les drivers ou les compiler soit même.

Si vous avez acheté ou fabriqué un module (ou modem) de téléinformation à base de puce FTDI, vous avez besoin de 2 drivers :

  • usbserial.ko
  • ftdi_sio.ko

Ces drivers ne sont généralement pas installé par défaut sur votre NAS.

Il faut soit les télécharger sur internet sur des forums ou autres blog parlant de NAS Synology, soit les compiler vous même.

Avant de télécharger les drivers, assurez vous d'être sur un site de confiance, et assurez vous que ces divers soient compilés pour votre modèle de NAS (les drivers sont compilés pour un type de processeur donné, et une version de l'OS donnée).

Pour trouver le type de processeur installé sur votre NAS, faite un tour sur cette page : http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have

De mémoire il me semble que Marvell Kirkwood mv6282 et Marvell Kirkwood mv6281 ont la même architecture, et donc les mêmes drivers.

Si vous ne le trouvez pas, il vous reste l'option "cross compilation", c'est à dire les compiler vous même.

Les avantages de la cross compilation sont nombreux :

  • Vous êtes sûr de ce que vous compilez (pas de virus ou autre cochonnerie),
  • Quand vous l'avez fait une fois, ça semble enfantin,
  • Vous pouvez modifier le driver pour l'adapter à vos besoins (ce que j'ai été obligé de faire).

Je ne décrirai pas ici la cross compilation. Passez par un moteur de recherche, les tutoriels ne manquent pas (si vous ne trouvez pas, laissez un commentaire).

Installer les drivers

Vous avez téléchargé ou compiler les drivers usbserial et ftdi. Copiez les fichiers ici : /opt/lib/modules/2.6.32

"2.6.32" correspond à la version du noyau linux du NAS. Si vous ne connaissez pas votre version, il suffit de saisir la commande :

uname -r

Pour charger les drivers en mémoire, il suffit de taper les commandes suivantes :

insmod usbserial.ko
insmod ftdi_sio.ko

Vérifier l'installation des drivers

Si vous avez les bons drivers, et si l'installation s'est bien passée, ça se vérifie avec la commande :

lsmod

Voici un extrait de ce que vous devez voir :

Module				  Size  Used by    Tainted: P
ftdi_sio			   30208  0
usbserial			  25208  1 ftdi_sio
snd_pcm_oss		    36687  0
...

On voit ici que le driver ftdi_sio utilise le driver usbserial, et qu'aucun driver ni périphérique n'exploite le driver ftdi_sio.

Normal le périphérique n'est pas encore connecté au NAS !

Créer le device au niveau system

Si vous branchez votre module à ce stade, il ne se passera rien. Il faut d'abord créer et configurer le "device" qui sera "attaché" à votre module.

Créer le device :

mknod /dev/ttyUSB0 c 188 0

Si le device ttyUSB0 existe déjà pour un autre périphérique, changez le numéro (ttyUSB1, ou ttyUSB2...).

Ensuite il faut configurer le device pour le module de téléinformation (bit de parité, débit...) :

stty -F /dev/ttyUSB0 1200 sane evenp parenb cs7 -crtscts

Brancher votre module de téléinformation

Après avoir branché votre module de téléinformation, tapez la commande :

dmesg | grep usb

Voici un extrait de ce que vous devriez lire :

[1395731.200000] usb 2-4: Detected FT232RL
[1395731.200000] usb 2-4: Number of endpoints 2
[1395731.200000] usb 2-4: Endpoint 1 MaxPacketSize 64
[1395731.210000] usb 2-4: Endpoint 2 MaxPacketSize 64
[1395731.210000] usb 2-4: Setting MaxPacketSize 64
[1395731.240000] usb 2-4: FTDI USB Serial Device converter now attached to ttyUSB0

La phrase importante c'est : FTDI USB Serial Device converter now attached to ttyUSB0

Et si je n'ai pas cette phrase ?

Si comme moi vous n'arrivez pas à cette phrase, c'est à dire que le système du NAS n'a pas réussi à faire le lien entre le périphérique et le driver.

Chaque périphérique USB est caractérisé par un coupe de valeur VID/PID, et il faut généralement que ce couple de valeur soit présent dans le code source du driver.

Sur un système Unix classique, il est possible d'associer dynamiquement ce couple de valeur à un driver avec une simple ligne de commande. Mais c'est impossible sur un NAS Synology.

Avant de s'alarmer, quel est le coupe PID/VID de votre module de téléinformation ?

Utiliser la commande :

lsusb

Extrait du résultat

Bus 002 Device 002: ID 0403:6015 Future Technology Devices International, Ltd
Bus 002 Device 001: ID 1d6b:0003
Bus 001 Device 003: ID 05e3:0726 Genesys Logic, Inc.
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002

Dans mon cas, le PID est 6015.

J'ai donc télécharger les sources du drivers FTDI, et vérifié si ce code était présent. Il ne l'était pas alors je l'ai ajouté et j'ai recompilé les drivers !

Si vous avez un NAS DS212 ou équivalent, vous pouvez utiliser les drivers que je vous propose en téléchargement.

Si ce n'est pas le cas, alors orientez vous vers un autre fournisseur de module de téléinformation (à moins qu'ils aient fait la modification comme je leur ai indiqué), ou compiler vos drivers vous même.

Si vous utilisez le module sous Windows, alors il n'y a pas de soucis. Il y a un système de reconnaissance automatique.

Dernier contrôle : vérifier ce que reçoit le NAS

Dernier contrôle, vous pouvez visualiser les messages envoyé au NAS par le module de téléinformation avec la commande :

cat /dev/ttyUSB0

Des informations doivent alors défiler à l'écran : ce sont les messages contenant les informations de votre compteur électrique.

Il va falloir maintenant les lire et les stocker dans une base de données.

A suivre bientôt...