Re: udev et nommage persistant de modems USB
Sylvain MEDEOT wrote:
> Bonjour la liste,
>
> Et bonne année à tous.
>
> J'ai un serveur Debian Etch avec un noyau 2.6.18-3 et le serveur de fax
> Hylafax. J'utilise des modems USB en remplacement des faxs traditionnels
> avec à la clé l'envoi des faxs reçus par mail sous la forme de fichiers
> PDF.
>
> Celà fonctionne très bien. J'ai actuellement 7 modems USB ( des
> multitech) qui sont reconnus en /dev/ttyACM0 à ACM6.
>
> Mon soucis vient du fait que lorsque je suis à amené à redémarrer ce
> serveur, le nommage des modems diffère à chaque fois. Et comme
> l'acheminement des faxs est basé sur le nom du périphérique par lequel
> il entre, problème...
>
> La commande udevinfo -ap /sys/class/tty/ttyACM0 donne :
>
> looking at device '/class/tty/ttyACM0':
> KERNEL=="ttyACM0"
> SUBSYSTEM=="tty"
> DRIVER==""
> ATTR{dev}=="166:0"
>
> looking at parent device
> '/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1:2.0':
> KERNELS=="1-1:2.0"
> SUBSYSTEMS=="usb"
> DRIVERS=="cdc_acm"
> ATTRS{interface}=="Multi-Tech Win95 Modem USB"
> ATTRS{modalias}=="usb:v06E0pF107d0100dc02dsc00dp00ic02isc02ip01"
> ATTRS{bInterfaceProtocol}=="01"
> ATTRS{bInterfaceSubClass}=="02"
> ATTRS{bInterfaceClass}=="02"
> ATTRS{bNumEndpoints}=="01"
> ATTRS{bAlternateSetting}==" 0"
> ATTRS{bInterfaceNumber}=="00"
>
> looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb1/1-1':
> KERNELS=="1-1"
> SUBSYSTEMS=="usb"
> DRIVERS=="usb"
> ATTRS{configuration}=="Data Interface"
> ATTRS{product}=="MultiModemUSB"
> ATTRS{manufacturer}=="Multi-Tech Systems, Inc."
> ATTRS{maxchild}=="0"
> ATTRS{version}==" 1.00"
> ATTRS{devnum}=="4"
> ATTRS{speed}=="12"
> ATTRS{bMaxPacketSize0}=="8"
> ATTRS{bNumConfigurations}=="2"
> ATTRS{bDeviceProtocol}=="00"
> ATTRS{bDeviceSubClass}=="00"
> ATTRS{bDeviceClass}=="02"
> ATTRS{bcdDevice}=="0100"
> ATTRS{idProduct}=="f107"
> ATTRS{idVendor}=="06e0"
> ATTRS{bMaxPower}=="400mA"
> ATTRS{bmAttributes}=="a0"
> ATTRS{bConfigurationValue}=="2"
> ATTRS{bNumInterfaces}==" 2"
>
> looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb1':
> KERNELS=="usb1"
> SUBSYSTEMS=="usb"
> DRIVERS=="usb"
> ATTRS{configuration}==""
> ATTRS{serial}=="0000:00:1d.0"
> ATTRS{product}=="UHCI Host Controller"
> ATTRS{manufacturer}=="Linux 2.6.18-3-686 uhci_hcd"
> ATTRS{maxchild}=="2"
> ATTRS{version}==" 1.10"
> ATTRS{devnum}=="1"
> ATTRS{speed}=="12"
> ATTRS{bMaxPacketSize0}=="64"
> ATTRS{bNumConfigurations}=="1"
> ATTRS{bDeviceProtocol}=="00"
> ATTRS{bDeviceSubClass}=="00"
> ATTRS{bDeviceClass}=="09"
> ATTRS{bcdDevice}=="0206"
> ATTRS{idProduct}=="0000"
> ATTRS{idVendor}=="0000"
> ATTRS{bMaxPower}==" 0mA"
> ATTRS{bmAttributes}=="e0"
> ATTRS{bConfigurationValue}=="1"
> ATTRS{bNumInterfaces}==" 1"
>
> looking at parent device '/devices/pci0000:00/0000:00:1d.0':
> KERNELS=="0000:00:1d.0"
> SUBSYSTEMS=="pci"
> DRIVERS=="uhci_hcd"
> ATTRS{broken_parity_status}=="0"
> ATTRS{enable}=="1"
> ATTRS{modalias}=="pci:v00008086d000027C8sv00001019sd00002141bc0Csc03i00"
> ATTRS{local_cpus}=="ff"
> ATTRS{irq}=="201"
> ATTRS{class}=="0x0c0300"
> ATTRS{subsystem_device}=="0x2141"
> ATTRS{subsystem_vendor}=="0x1019"
> ATTRS{device}=="0x27c8"
> ATTRS{vendor}=="0x8086"
>
> looking at parent device '/devices/pci0000:00':
> KERNELS=="pci0000:00"
> SUBSYSTEMS==""
> DRIVERS==""
>
> La commande udevinfo -ap /sys/class/tty/ttyACM2 donne :
> looking at device '/class/tty/ttyACM2':
> KERNEL=="ttyACM2"
> SUBSYSTEM=="tty"
> DRIVER==""
> ATTR{dev}=="166:2"
>
> looking at parent device
> '/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:2.0':
> KERNELS=="2-1:2.0"
> SUBSYSTEMS=="usb"
> DRIVERS=="cdc_acm"
> ATTRS{interface}=="Multi-Tech Win95 Modem USB"
> ATTRS{modalias}=="usb:v06E0pF107d0100dc02dsc00dp00ic02isc02ip01"
> ATTRS{bInterfaceProtocol}=="01"
> ATTRS{bInterfaceSubClass}=="02"
> ATTRS{bInterfaceClass}=="02"
> ATTRS{bNumEndpoints}=="01"
> ATTRS{bAlternateSetting}==" 0"
> ATTRS{bInterfaceNumber}=="00"
>
> looking at parent device '/devices/pci0000:00/0000:00:1d.1/usb2/2-1':
> KERNELS=="2-1"
> SUBSYSTEMS=="usb"
> DRIVERS=="usb"
> ATTRS{configuration}=="Data Interface"
> ATTRS{product}=="MultiModemUSB"
> ATTRS{manufacturer}=="Multi-Tech Systems, Inc."
> ATTRS{maxchild}=="0"
> ATTRS{version}==" 1.00"
> ATTRS{devnum}=="3"
> ATTRS{speed}=="12"
> ATTRS{bMaxPacketSize0}=="8"
> ATTRS{bNumConfigurations}=="2"
> ATTRS{bDeviceProtocol}=="00"
> ATTRS{bDeviceSubClass}=="00"
> ATTRS{bDeviceClass}=="02"
> ATTRS{bcdDevice}=="0100"
> ATTRS{idProduct}=="f107"
> ATTRS{idVendor}=="06e0"
> ATTRS{bMaxPower}=="400mA"
> ATTRS{bmAttributes}=="a0"
> ATTRS{bConfigurationValue}=="2"
> ATTRS{bNumInterfaces}==" 2"
>
> looking at parent device '/devices/pci0000:00/0000:00:1d.1/usb2':
> KERNELS=="usb2"
> SUBSYSTEMS=="usb"
> DRIVERS=="usb"
> ATTRS{configuration}==""
> ATTRS{serial}=="0000:00:1d.1"
> ATTRS{product}=="UHCI Host Controller"
> ATTRS{manufacturer}=="Linux 2.6.18-3-686 uhci_hcd"
> ATTRS{maxchild}=="2"
> ATTRS{version}==" 1.10"
> ATTRS{devnum}=="1"
> ATTRS{speed}=="12"
> ATTRS{bMaxPacketSize0}=="64"
> ATTRS{bNumConfigurations}=="1"
> ATTRS{bDeviceProtocol}=="00"
> ATTRS{bDeviceSubClass}=="00"
> ATTRS{bDeviceClass}=="09"
> ATTRS{bcdDevice}=="0206"
> ATTRS{idProduct}=="0000"
> ATTRS{idVendor}=="0000"
> ATTRS{bMaxPower}==" 0mA"
> ATTRS{bmAttributes}=="e0"
> ATTRS{bConfigurationValue}=="1"
> ATTRS{bNumInterfaces}==" 1"
>
> looking at parent device '/devices/pci0000:00/0000:00:1d.1':
> KERNELS=="0000:00:1d.1"
> SUBSYSTEMS=="pci"
> DRIVERS=="uhci_hcd"
> ATTRS{broken_parity_status}=="0"
> ATTRS{enable}=="1"
> ATTRS{modalias}=="pci:v00008086d000027C9sv00001019sd00002141bc0Csc03i00"
> ATTRS{local_cpus}=="ff"
> ATTRS{irq}=="209"
> ATTRS{class}=="0x0c0300"
> ATTRS{subsystem_device}=="0x2141"
> ATTRS{subsystem_vendor}=="0x1019"
> ATTRS{device}=="0x27c9"
> ATTRS{vendor}=="0x8086"
>
> looking at parent device '/devices/pci0000:00':
> KERNELS=="pci0000:00"
> SUBSYSTEMS==""
> DRIVERS==""
>
> Et ainsi de suite...
>
> Je cherche donc à garder un nommage persistant en attachant le nommage
> du modem à sa position sur le bus USB.
>
> J'ai cherché sur google et j'ai trouvé des pistes pour le renommage des
> cartes réseau via udev par exemple mais rien pour ce qui m'intéresse ici.
>
> Si quelqu'un a une piste, je suis très preneur,
>
> Merci d'avance,
>
> Sylvain
>
Bonsoir,
Dans mon cas, il s agissait d'un rack usb pour lequel udev changeait le
nom a chaque fois que je l'eteignais puis le rallumais. Du coup, a la
premiere detection, je me trouvais avec un 'dev'sda1' puis a la seconde
detection (turn off puis turn on) j obtenais un '/dev/sdb1'. Plutot
genant au final, car j'avais place la ligne de montage dans /etc/fstab
en fonction de '/dev/sda1'.
Finalement, j ai trouve une solution qui consiste a creer une regle qui
match l'identite de mon rack et qui l'associe ensuite a un nom fixe
grace a un lien symbolique.
Pour ce faire, j ai cree un fichier hd.rules dans le repertoire
/etc/udev/ et contenant la regle suivante :
KERNEL=="sd*", SYSFS{vendor}=="Initio", SYSFS{model}=="6L200R0",
NAME="maxtor_rack"
Ensuite j ai fait un lien symbolique (010_hd.rules) sur ce meme fichier
dans le
repertoire rules.d.
Pour finir j'ai modifie mon fichier /etc/fstab pour prendre en compte le
device /dev/maxtor_rack et ca marche au poil.
Il faudrait reussir a identifier chacun des modems, il est peut etre
possible de recuperer le numero de serie !! Je ne sais pas.
En effectuant la commande:
udevinfo -ap /sys/class/tty/"device"
sur chacun de tes modems je le critere serial devrait etre different ;
du coup, tu ajoutes dans ta regle un SYSFS{serial}==
Je penses que cela devrait faire l'affaire. (A verifier :p!)
- --
Franck Joncourt
http://www.debian.org
http://smhteam.info/wiki/
GPG server : pgpkeys.mit.edu
Fingerprint : C10E D1D0 EF70 0A2A CACF 9A3C C490 534E 75C0 89FE
___________________________________________________________
All New Yahoo! Mail ? Tired of Vi@gr@! come-ons? Let our SpamGuard protect you. http://uk.docs.yahoo.com/nowyoucan.html
Reply to: