21 juillet 2009

Nommage udev en fonction de l’interface (bInterfaceNumber)

Tags : ,

Je viens tout juste de recevoir un nouveau programmeur AVR sur port USB. Bonne nouvelle, celui-ci propose non pas un port série de type ttyACM* mais deux (le second fournissant un port USB/TTL simple). Mauvaise nouvelle, une règle udev classique (voir ce billet) ne fonctionne pas. En effet, la règle match les deux interfaces et on se retrouve systématiquement avec un lien symbolique pointant sur la seconde interface. Le programmeur est inaccessible proprement via un Makefile.

Le problème ici est de mixer des attributs provenants à la fois du périphérique (product) et du périphérique parent (bInterfaceNumber). Ceci ne fonctionne donc pas :

SUBSYSTEMS=="usb", KERNEL=="ttyACM*", ATTRS{product}=="Pololu USB AVR Programmer", \
  SYMLINK+="POLOLU"

Pas plus que :

SUBSYSTEMS=="usb", KERNEL=="ttyACM*", ATTRS{product}=="Pololu USB AVR Programmer", \
  ATTRS{bInterfaceNumber}==02, SYMLINK+="POLOLU_SERIAL"
SUBSYSTEMS=="usb", KERNEL=="ttyACM*", ATTRS{product}=="Pololu USB AVR Programmer", \
  ATTRS{bInterfaceNumber}==02, SYMLINK+="POLOLU_SERIAL"

Il faut être plus tordu et réutiliser le nom d'un attribut du périphérique pour nommer le lien symbolique avec :

SUBSYSTEMS=="usb", KERNEL=="ttyACM*", ATTRS{product}=="Pololu USB AVR Programmer",  \
  SYMLINK+="POLOLU%s{bInterfaceNumber}"

Ce qui nous donne :

% ls -l /dev/POL*
13099267 lrwxrwxrwx 1 root root 7 jui 21 21:01 /dev/POLOLU00 -> ttyACM0
13099249 lrwxrwxrwx 1 root root 7 jui 21 21:01 /dev/POLOLU02 -> ttyACM1

Pareil en présence d'un autre programmeur ttyACM* :

13105697 lrwxrwxrwx 1 root root 7 jui 21 21:10 /dev/POLOLU00 -> ttyACM1
13105715 lrwxrwxrwx 1 root root 7 jui 21 21:10 /dev/POLOLU02 -> ttyACM2

Ça n'est pas exactement ce que je voulais (POLOLU0 et POLOLU1) mais c'est fixe et clair. On va pas chercher la petite bête...

dans Configuration | 0 Commentaire

15 avril 2009

ttyUSB0 ? ttyUSB2 ? Non, ttyUSB1… Graaaahh ! udev !

Tags : , ,

J'ai acheté il y a quelque temps plusieurs de ces petites choses :

ttyusb

Des convertisseurs USB/Série en TTL (0-5V). Ceci permet de connecter directement, sans max232, un adaptateur USB/Série à un montage à base de microcontrôleur (genre Atmel AVR) ou un système embarqué (genre Fonera, remarquez le cavalier permettant de choisir 5V ou 3.3V, convitude). Seulement, voilà :

  • je branche un adaptateur, il est accessible via /dev/ttyUSB0
  • j'en branche un autre qui devient /dev/ttyUSB1
  • je débranche le premier et en branche deux autres et ça devient la fête aux ttyUSB*

Où est ma Fonera 1, où est mon Attiny2313, où est ma Fonera 2... etc...  ? Voir la suite »

dans Configuration | 4 Commentaires

13 octobre 2007

ASRock 4CoreDual-SATA2, VT6102, eth1, eth2, eth3…

Tags : ,

Nouvelle carte mère, nouveaux problèmes... Bon d'accord j'abuse. GNU/Linux n'est pas windows, pas de réinstallation système à chaque changement de périphérique. Mais on aimerai tout de même bien que tout marche du premier coup au premier boot suivant un changement de carte mère...

La ASRock 4CoreDual-Sata2 comporte un contrôleur ethernet VT6102 supporté par le module via-rhine. Premier boot après upgrade matérielle et.... tiens pas de réseau... tiens eth1 ? Aurai-je une autre NIC ? Bin... non. Késsésséssa ?

Voir la suite »

dans Configuration | 1 Commentaire