Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/12/2011, à 21:29

jpiebrig

[résolu] - Règle UDEV pour périphériques identiques

Bonjour,

J'ai deux interfaces USB/Série identiques, des Prolific. J'aimerai créer une règle UDEV afin de leur attribuer un lien symbolique différent pour chacune d'entre elle. Ceci afin de ne pas avoir à se soucier du paramétrage des ttyUSBx dans les logiciels. Mais je n'arrive pas à trouver quelque chose qui puisse les distinguer de façon fiable l'une de l'autre. J'ai créé des règles pour d'autres interfaces différentes et cela fonctionne bien, mais ici, je coince ! Voilà le résultat de udevadm info pour chacune d'entre elles :

udevadm info -a -p `udevadm info -q path -n "/dev/ttyUSB0"`

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/ttyUSB0/tty/ttyUSB0':
    KERNEL=="ttyUSB0"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/ttyUSB0':
    KERNELS=="ttyUSB0"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="pl2303"
    ATTRS{port_number}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0':
    KERNELS=="2-1.1:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="pl2303"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="03"
    ATTRS{bInterfaceClass}=="ff"
    ATTRS{bInterfaceSubClass}=="00"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1':
    KERNELS=="2-1.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="17"
    ATTRS{idVendor}=="067b"
    ATTRS{idProduct}=="2303"
    ATTRS{bcdDevice}=="0202"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="17"
    ATTRS{devpath}=="1.1"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
    KERNELS=="2-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="244"
    ATTRS{idVendor}=="8087"
    ATTRS{idProduct}=="0024"
    ATTRS{bcdDevice}=="0000"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="2"
    ATTRS{devpath}=="1"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="6"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2':
    KERNELS=="usb2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="24"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="2"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.38-13-generic ehci_hcd"
    ATTRS{product}=="EHCI Host Controller"
    ATTRS{serial}=="0000:00:1d.0"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0':
    KERNELS=="0000:00:1d.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x1c26"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{subsystem_device}=="0x11d7"
    ATTRS{class}=="0x0c0320"
    ATTRS{irq}=="23"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,000000ff"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{numa_node}=="-1"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""
    ATTRS{companion}==""

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

jp@jp-N73SV:~$ 

et :

udevadm info -a -p `udevadm info -q path -n "/dev/ttyUSB1"`

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/ttyUSB1/tty/ttyUSB1':
    KERNEL=="ttyUSB1"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/ttyUSB1':
    KERNELS=="ttyUSB1"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="pl2303"
    ATTRS{port_number}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0':
    KERNELS=="2-1.3:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="pl2303"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="03"
    ATTRS{bInterfaceClass}=="ff"
    ATTRS{bInterfaceSubClass}=="00"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3':
    KERNELS=="2-1.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="17"
    ATTRS{idVendor}=="067b"
    ATTRS{idProduct}=="2303"
    ATTRS{bcdDevice}=="0202"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="13"
    ATTRS{devpath}=="1.3"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
    KERNELS=="2-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="244"
    ATTRS{idVendor}=="8087"
    ATTRS{idProduct}=="0024"
    ATTRS{bcdDevice}=="0000"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="2"
    ATTRS{devpath}=="1"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="6"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2':
    KERNELS=="usb2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="24"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="2"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.38-13-generic ehci_hcd"
    ATTRS{product}=="EHCI Host Controller"
    ATTRS{serial}=="0000:00:1d.0"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0':
    KERNELS=="0000:00:1d.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x1c26"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{subsystem_device}=="0x11d7"
    ATTRS{class}=="0x0c0320"
    ATTRS{irq}=="23"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,000000ff"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{numa_node}=="-1"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""
    ATTRS{companion}==""

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

jp@jp-N73SV:~$ 

Merci de votre aide ![

Dernière modification par jpiebrig (Le 06/12/2011, à 15:39)

Hors ligne

#2 Le 02/12/2011, à 22:22

backtolinux

Re : [résolu] - Règle UDEV pour périphériques identiques

Salut,
moi, je suis sous mandriva, et la commande udevadm info -a -p `udevadm info -q path -n "/dev/ttyUSB0"`devient chez moi udevadm info -a -p (udevadm info -q path -n /dev/ttyUSB0). Mais c'est pour des event.
Je me trompe peut-être.
Moi quand je lance la commande (celle qui marche sous mandriva), j'otiens une ligne ATTRS(NAME)= et ATTRS(Phys Adr)=
Ce qui me permet de les différencier.
Toi, tu devrais jouer avec le KERNELS=="2-1.3:1.0" en début de règle :
KERNELS=="2-1.1:1.0", SYMLINK+="input/USB0", MODE="0666"
KERNELS=="2-1.3:1.0", SYMLINK+="input/USB1", MODE="0666"


FW(2NICs) : Mandriva2010.2 x64 + 3DVB-S+Phoenix(039) (abonné C+, CSat, Freebox V6) + SSD 96Go + 2To SATA (0.5 + 1.5)
HPTC : Mandriva2010.2 x86 + 2DVB-S client du FW
HTPC-Client : Optiplex GX520+Mandriva2010.2 x86 + XBMC
2 stations XP-SP3

Hors ligne

#3 Le 02/12/2011, à 23:12

jpiebrig

Re : [résolu] - Règle UDEV pour périphériques identiques

Bonsoir,

Merci de ta réponse, je vais essayer de nouveau. Je l'avais déjà fait avec les kernels, mais j'avais du me planter quelque part. Je te tiens au courant dès que j'ai eu le temps de rentrer tout cela !

Hors ligne

#4 Le 02/12/2011, à 23:15

backtolinux

Re : [résolu] - Règle UDEV pour périphériques identiques

c'est KERNELS, avec un S à la fin, pas KERNEL


FW(2NICs) : Mandriva2010.2 x64 + 3DVB-S+Phoenix(039) (abonné C+, CSat, Freebox V6) + SSD 96Go + 2To SATA (0.5 + 1.5)
HPTC : Mandriva2010.2 x86 + 2DVB-S client du FW
HTPC-Client : Optiplex GX520+Mandriva2010.2 x86 + XBMC
2 stations XP-SP3

Hors ligne

#5 Le 03/12/2011, à 05:37

jpiebrig

Re : [résolu] - Règle UDEV pour périphériques identiques

Cela ne fonctionne pas comme je le voudrai car en fait le lien symbolique est attribué au périphérique que l'on branche sur la prise correspondante. Ainsi, j'ai une prise USB 3.0 et quelque soit le périphérique que j'y connecte, c'est toujours le lien "ais+gps" qui est attribué. Exemple : j'ai connecté ce qui devrait être 'icm700" sur le port USB 3.0 et il est nommé "ais+gps" car la clé est toujours KERNELS=="3-2:1.0".
Le problème est le même pour les autres prises.

udevadm info -q all -n /dev/ttyUSB2
P: /devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb3/3-2/3-2:1.0/ttyUSB2/tty/ttyUSB2
N: ttyUSB2
S: serial/by-path/pci-0000:04:00.0-usb-0:2:1.0-port0
S: serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
S: ais+gps
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb3/3-2/3-2:1.0/ttyUSB2/tty/ttyUSB2
E: MAJOR=188
E: MINOR=2
E: DEVNAME=/dev/ttyUSB2
E: SUBSYSTEM=tty
E: ID_PORT=0
E: ID_PATH=pci-0000:04:00.0-usb-0:2:1.0
E: ID_VENDOR=Prolific_Technology_Inc.
E: ID_VENDOR_ENC=Prolific\x20Technology\x20Inc.
E: ID_VENDOR_ID=067b
E: ID_MODEL=USB-Serial_Controller
E: ID_MODEL_ENC=USB-Serial\x20Controller
E: ID_MODEL_ID=2303
E: ID_REVISION=0300
E: ID_SERIAL=Prolific_Technology_Inc._USB-Serial_Controller
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:ff0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=pl2303
E: ID_IFACE=00
E: ID_VENDOR_FROM_DATABASE=Prolific Technology, Inc.
E: ID_MODEL_FROM_DATABASE=PL2303 Serial Port
E: ID_MM_CANDIDATE=1
E: DEVLINKS=/dev/serial/by-path/pci-0000:04:00.0-usb-0:2:1.0-port0 /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 /dev/ais+gps

jp@jp-N73SV:~$ 

et :

udevadm info -a -p `udevadm info -q path -n "/dev/ttyUSB2"`

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb3/3-2/3-2:1.0/ttyUSB2/tty/ttyUSB2':
    KERNEL=="ttyUSB2"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb3/3-2/3-2:1.0/ttyUSB2':
    KERNELS=="ttyUSB2"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="pl2303"
    ATTRS{port_number}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb3/3-2/3-2:1.0':
    KERNELS=="3-2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="pl2303"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="03"
    ATTRS{bInterfaceClass}=="ff"
    ATTRS{bInterfaceSubClass}=="00"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb3/3-2':
    KERNELS=="3-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="19"
    ATTRS{idVendor}=="067b"
    ATTRS{idProduct}=="2303"
    ATTRS{bcdDevice}=="0300"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="5"
    ATTRS{devpath}=="2"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Prolific Technology Inc."
    ATTRS{product}=="USB-Serial Controller"

  looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb3':
    KERNELS=="usb3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="69"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0003"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="03"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="9"
    ATTRS{speed}=="5000"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 3.00"
    ATTRS{maxchild}=="2"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.38-13-generic xhci_hcd"
    ATTRS{product}=="xHCI Host Controller"
    ATTRS{serial}=="0000:04:00.0"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:04:00.0':
    KERNELS=="0000:04:00.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="xhci_hcd"
    ATTRS{vendor}=="0x1b73"
    ATTRS{device}=="0x1000"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{subsystem_device}=="0x1039"
    ATTRS{class}=="0x0c0330"
    ATTRS{irq}=="19"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,000000ff"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{numa_node}=="-1"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

  looking at parent device '/devices/pci0000:00/0000:00:1c.3':
    KERNELS=="0000:00:1c.3"
    SUBSYSTEMS=="pci"
    DRIVERS=="pcieport"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x1c16"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{subsystem_device}=="0x11d7"
    ATTRS{class}=="0x060400"
    ATTRS{irq}=="19"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,000000ff"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{numa_node}=="-1"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}=="1"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

jp@jp-N73SV:~$ 

Voilà le fichier .rules que j'ai crée :

# Creates a unique link for each usb/serial device
#
#
# 0 - AIS + GPS ICOM
KERNELS=="3-2:1.0", SYMLINK+="ais+gps", MODE="0666"
#
# 1 - GPS GARMIN
KERNELS=="2-1.3:1.0", SYMLINK+="gpsgarmin", MODE="0666"
#
# 2 - IC-M700Pro
KERNELS=="2-1.2.3:1.0", SYMLINK+="icm700", MODE="0666"
#
# 3 - PTCII radio modem
KERNELS=="2-1.2.4:1.0", SYMLINK+="pactor", MODE="0666"
#
# 4 - Huawei 1
#SUBSYSTEM=="tty", SUBSYSTEMS=="usb", DRIVERS=="usb", SYMLINK+="huawei 1"
#
# 5 - Huawei 2
#SUBSYSTEM=="tty", SUBSYSTEMS=="usb", DRIVERS=="usb", SYMLINK+="huawei 2"
#
# 6 - Huawei 3
#SUBSYSTEM=="tty", SUBSYSTEMS=="usb", DRIVERS=="usb", SYMLINK+="huawei 3"
#
# 7 - GPS EARTHMATE
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1163", ATTRS{idProduct}=="0100", ATTRS{product}=="DeLorme USB Earthmate", SYMLINK+="gpsearth"
#

Par contre, cela fonctionne très bien pour la règle 7 qui identifie clairement le périphérique.

Je continue à chercher sad

Hors ligne

#6 Le 03/12/2011, à 07:35

backtolinux

Re : [résolu] - Règle UDEV pour périphériques identiques

Salut,
le premier truc c'est qu'il faut trouver un truc pour identifier de manière unique, donc pour le prolific, dans la règle udev, ajoute
ATTRS{manufacturer}=="Prolific Technology Inc."
Il faut trouver un truc qui identifie le bus, puis le device sur le bus.
Et c'est pareil pour les autres : dans le résultat de la commande udevadm, tu dois avoir un truc qui identifie le matos, le nom du fabricant, l'idproduct, comme tu as dans la règle 7
Donc, je vois pour le prolifi :
KERNELS=="3-2:1.0", ATTRS{manufacturer}=="Prolific Technology Inc.", SYMLINK+="pl2303", MODE="0666"
Au vu de la valeur du KERNELS, tu as changé de port les prolific ? Ou c'est des autres produits ?


FW(2NICs) : Mandriva2010.2 x64 + 3DVB-S+Phoenix(039) (abonné C+, CSat, Freebox V6) + SSD 96Go + 2To SATA (0.5 + 1.5)
HPTC : Mandriva2010.2 x86 + 2DVB-S client du FW
HTPC-Client : Optiplex GX520+Mandriva2010.2 x86 + XBMC
2 stations XP-SP3

Hors ligne

#7 Le 03/12/2011, à 14:58

jpiebrig

Re : [résolu] - Règle UDEV pour périphériques identiques

Salut,
Lorsque j'ai fait l'essai, je n'avais que deux Prolific, ancien modèle, de connectés et dont le résultat de udevadm info est dans le premier post.

Pour tester la validité de ta proposition, je n'ai installé que 2 Prolific, ancien modèle, et j'ai créé une règle UDEV pour seulement ces deux périphériques et tant que tu ne les changes pas de port USB, tout va bien. Mais dès lors que tu débranches, arrête le PC ou change de port, ils ne sont plus reconnus ou aléatoirement. La clé KERNELS utilisée semble ne pas être suffisante et n'est pas propre au périphérique.

Ensuite, j'ai remis tous mes périphériques en place : 2 Prolific plus anciens (ATTRS{bcdDevice}=="0202") pour un gps GARMIN et un modem PTCII ,  2 Prolific plus récents (ATTRS{bcdDevice}=="0300"), pour un ais+gps ICOM et une BLU ICOM M700. Puis avec des interfaces différentes, une clé 3G Huawei et au final un gps Earthmate. J'ai refais des règles post plus haut) toujours selon ton exemple, mais cela ne fonctionne pas.

Le but étant de pouvoir reconnecter n'importe quoi, n'importe où en fonction des impératifs, au travers de règles UDEV sans que les logiciels en soient affectés. Cela fonctionne bien pour le gps Earthmate, la clé 3G.
Avec les règles que j'avais fait, j'arrive à différencier les 2 Prolific anciens et les 2 nouveaux avec la clé ATTRS{bcdDevice}=="0202" et ATTRS{bcdDevice}=="0300, mais ensuite, avec seulement ces clés, cela ne fonctionne plus car les 2 anciens se mélangent, ainsi que les deux nouveaux.

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3':
    KERNELS=="2-1.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="17"
    ATTRS{idVendor}=="067b"
    ATTRS{idProduct}=="2303"
    ATTRS{bcdDevice}=="0202"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="13"
    ATTRS{devpath}=="1.3"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"

Puis dans la section que j'utilise (voir au dessus et post 1), il n'y a plus rien pour faire la distinction entre 2 anciens (ou deux nouveaux) Prolific et là, je trouve mes limites de connaissances dans les règles UDEV car je crois que l'on ne peut faire référence qu'à une seule section dans la règle. C'est pourquoi je n'avais mis que les udevadm info de 2 anciens, précisément ceux qui posent problème. S'il y a une solution pour les anciens Prolific, il y en a une pour les nouveaux !

Dernière modification par jpiebrig (Le 03/12/2011, à 15:07)

Hors ligne

#8 Le 03/12/2011, à 17:28

backtolinux

Re : [résolu] - Règle UDEV pour périphériques identiques

ici il y a Olaf qui a fait un script pour créer des règles udev pour du multi seat, tu pourrais t'en inspirer :
http://forum.ubuntu-fr.org/viewtopic.php?id=332886&p=1


FW(2NICs) : Mandriva2010.2 x64 + 3DVB-S+Phoenix(039) (abonné C+, CSat, Freebox V6) + SSD 96Go + 2To SATA (0.5 + 1.5)
HPTC : Mandriva2010.2 x86 + 2DVB-S client du FW
HTPC-Client : Optiplex GX520+Mandriva2010.2 x86 + XBMC
2 stations XP-SP3

Hors ligne

#9 Le 03/12/2011, à 18:31

jpiebrig

Re : [résolu] - Règle UDEV pour périphériques identiques

Ok, j'ai jeté un oeil, mais c'est hard pour mon faible niveau de connaissances wink ! Je potasse cela plus longuement et je vois si je peux en tirer quelque chose. Déjà merci en tout cas de t'intéresser à cela.

Hors ligne

#10 Le 03/12/2011, à 18:53

backtolinux

Re : [résolu] - Règle UDEV pour périphériques identiques

reviens sur ce thrad, des fois qu'on trouve ou pour indiquer une solution pour d'autres qui passerais.
Ca m'intéresse aussi quand même.
Parce qu'en regardant les résultats des commandes, on voit que ttyUSBx est déjà issue d'une règle udev :
udevadm info -q all -n /dev/ttyUSB2
P: /devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb3/3-2/3-2:1.0/ttyUSB2/tty/ttyUSB2
N: ttyUSB2
S: serial/by-path/pci-0000:04:00.0-usb-0:2:1.0-port0
S: serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
S: ais+gps
E: UDEV_LOG=3
.....
E: DEVPATH=/devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb3/3-2/3-2:1.0/ttyUSB2/tty/ttyUSB2
...
E: DEVLINKS=/dev/serial/by-path/pci-0000:04:00.0-usb-0:2:1.0-port0 /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 /dev/ais+gps

Regarde dans  /dev/serial/by-id et modifie le script.

Bon courage, à bientôt.


FW(2NICs) : Mandriva2010.2 x64 + 3DVB-S+Phoenix(039) (abonné C+, CSat, Freebox V6) + SSD 96Go + 2To SATA (0.5 + 1.5)
HPTC : Mandriva2010.2 x86 + 2DVB-S client du FW
HTPC-Client : Optiplex GX520+Mandriva2010.2 x86 + XBMC
2 stations XP-SP3

Hors ligne

#11 Le 03/12/2011, à 19:16

jpiebrig

Re : [résolu] - Règle UDEV pour périphériques identiques

Ok je regarde cela aussi, mais cet après-midi et demain je ne pourrai pas. Je reviendrai sans doute lundi et de toute façon, comme tu le dis, il y a de nombreuses personnes qui sont intéressées alors il faut que je trouve.

Hors ligne

#12 Le 06/12/2011, à 15:35

jpiebrig

Re : [résolu] - Règle UDEV pour périphériques identiques

Bon, après un long week-end à chercher un peu partout (très intéressant d'ailleurs), j'en conclue, que dans l'état actuel de mes connaissances, qu'avec des périphériques identiques et non clairement identifiables les uns des autres, il n'y a pas moyen d'attribuer un symlink spécifique à chaque interface USB/Série afin de pouvoir les connecter n'importe où.
J'ai donc transigé et j'ai attribué un symlink dépendant de kernels, ce qui fait que si je ne change pas physiquement mes interfaces de place, cela fonctionne et je peux conserver mes paramétrages logiciels sans les voir bouleverser à chaque redémarrage.

# Créer un lien unique pour chaque interface USB/Série dépendant de kernels
#
#
# 0 - AIS + GPS receiver
KERNELS=="3-2", ATTRS{idProduct}=="2303", ATTRS{bcdDevice}=="0300", ATTRS{devnum}=="2", SYMLINK+="ais+gps"
#
# 1 - GPS GARMIN
KERNELS=="2-1.3", ATTRS{idProduct}=="2303", ATTRS{bcdDevice}=="0202", ATTRS{devnum}=="5", SYMLINK+="gpsgarmin"
#
# 2 - IC-M700Pro 
KERNELS=="2-1.2.3", ATTRS{idProduct}=="2303", ATTRS{bcdDevice}=="0300", ATTRS{devnum}=="8", SYMLINK+="icm700"
#
# 3 - PTCII radio modem
KERNELS=="2-1.2.4", ATTRS{idProduct}=="2303", ATTRS{bcdDevice}=="0202", ATTRS{devnum}=="9", SYMLINK+="pactor"
#
# 4.5.6 - Huawei 1+2+3
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1001", SYMLINK+="huawei%n"
#
# 7 - GPS EARTHMATE
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1163", ATTRS{idProduct}=="0100", ATTRS{product}=="DeLorme USB Earthmate", SYMLINK+="gpsearth"
#

Donc avant d'investir dans ce genre d'appareil, se renseigner auparavant sur la disponibilité d'un numéro de série valide qui puisse l'identifier clairement par la suite dans des règles udev si besoin est. Ce qui n'est pas le cas des interfaces USB/Série Prolific.

je te remercie de ton aide et je vais marquer le sujet comme résolu, mais un petit résolu en minuscules...

Dernière modification par jpiebrig (Le 06/12/2011, à 15:35)

Hors ligne