www.mikrocontroller.net

Forum: PC Hard- und Software Linux UDEV und rules + FTTI


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,
ich habe versucht einen Gerät und linux sinnvolle Alias namen zu 
vergeben. Leider will die Regel nicht so wie ich will.
Das ganze ist ein CardReader mit einem FTTI, er liefert ttyUSB1, ttyUSB2 
und ttyUSB3

Folgende habe ich Probiert:

Im netzt gefunden:
SUBSYSTEMS=="usb", ENV{ID_IFACE}="$attr{bInterfaceNumber}", 
KERNEL=="ttyUSB*", ATTRS{serial}=="000003d5", 
SYMLINK+="tripleeen$env{ID_IFACE}"

geht teilweise aber die variable ENV{ID_IFACE} ist immer leer, damit 
wird immer der gleiche namen zusammengebaut.

eigene Versuche:

keine der Regeln macht was

SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="00", KERNEL=="ttyUSB*", 
ATTRS{serial}=="000003d5", SYMLINK+="tripleeen_00"
SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="01", KERNEL=="ttyUSB*", 
ATTRS{serial}=="000003d5", SYMLINK+="tripleeen_01"
SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="02", KERNEL=="ttyUSB*", 
ATTRS{serial}=="000003d5", SYMLINK+="tripleeen_02"

diese Regel geht, aber ich brauche die 3 device:

SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="000003d5", 
SYMLINK+="tripleeen_xx"


Scheinbar ist die ATTRS{bInterfaceNumber}=="01" nie true aber warum?

Hier noch die eigenschaften von dem gerät:

udevadm info --query=all --name=/dev/ttyUSB2 --attribute-walk

  looking at device 
'/devices/pci0000:00/0000:00:11.0/0000:02:02.0/usb1/1-2/1-2:1.1/ttyUSB1/ 
tty/ttyUSB1':
    KERNEL=="ttyUSB1"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device 
'/devices/pci0000:00/0000:00:11.0/0000:02:02.0/usb1/1-2/1-2:1.1/ttyUSB1' 
:
    KERNELS=="ttyUSB1"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="ftdi_sio"
    ATTRS{latency_timer}=="1"
    ATTRS{port_number}=="0"

  looking at parent device 
'/devices/pci0000:00/0000:00:11.0/0000:02:02.0/usb1/1-2/1-2:1.1':
    KERNELS=="1-2:1.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="ftdi_sio"
    ATTRS{bInterfaceNumber}=="01"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{bInterfaceClass}=="ff"
    ATTRS{bInterfaceSubClass}=="ff"
    ATTRS{bInterfaceProtocol}=="ff"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{interface}=="Triple Reader+"

  looking at parent device 
'/devices/pci0000:00/0000:00:11.0/0000:02:02.0/usb1/1-2':
    KERNELS=="1-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 3"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}=="150mA"
    ATTRS{urbnum}=="19"
    ATTRS{idVendor}=="0403"
    ATTRS{idProduct}=="6011"
    ATTRS{bcdDevice}=="0500"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="16"
    ATTRS{devpath}=="2"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Argolis"
    ATTRS{product}=="Triple Reader+"
    ATTRS{serial}=="000003d5"


  looking at parent device 
'/devices/pci0000:00/0000:00:11.0/0000:02:02.0/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="387"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0302"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="6"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 3.2.0-2-686-pae ehci_hcd"
    ATTRS{product}=="EHCI Host Controller"
    ATTRS{serial}=="0000:02:02.0"
    ATTRS{authorized_default}=="1"

  looking at parent device 
'/devices/pci0000:00/0000:00:11.0/0000:02:02.0':
    KERNELS=="0000:02:02.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci_hcd"
    ATTRS{vendor}=="0x15ad"
    ATTRS{device}=="0x0770"
    ATTRS{subsystem_vendor}=="0x15ad"
    ATTRS{subsystem_device}=="0x0770"
    ATTRS{class}=="0x0c0320"
    ATTRS{irq}=="16"
    ATTRS{local_cpus}=="ffffffff"
    ATTRS{local_cpulist}=="0-31"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""
    ATTRS{companion}==""
    ATTRS{uframe_periodic_max}=="100"

  looking at parent device '/devices/pci0000:00/0000:00:11.0':
    KERNELS=="0000:00:11.0"
    SUBSYSTEMS=="pci"
    DRIVERS==""
    ATTRS{vendor}=="0x15ad"
    ATTRS{device}=="0x0790"
    ATTRS{subsystem_vendor}=="0x15ad"
    ATTRS{subsystem_device}=="0x0790"
    ATTRS{class}=="0x060401"
    ATTRS{irq}=="0"
    ATTRS{local_cpus}=="ffffffff"
    ATTRS{local_cpulist}=="0-31"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}=="1"

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
> CardReader mit einem FTTI

Du meinst eine USB-Seriell-Bridge von FTDI. Wie bastelt man sich damit 
einen Cardreader?

Autor: Konrad S. (maybee)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Meine udev-Regeln sehen typischerweise so aus:
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTR{serial}=="B800fDKM", GROUP="mygroup", MODE="0660", SYMLINK+="FT_L0", SYMLINK+="FT%n"

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> Wie bastelt man sich damit
> einen Cardreader?

Vielleicht bastelt man nicht, sondern der hat einfach sowas?

"Card" heißt ja nicht automatisch "SD-Card", sondern es könnte auch
irgendeine Art von Smartcard sein (HBCI oder dergleichen).

Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> Du meinst eine USB-Seriell-Bridge von FTDI. Wie bastelt man sich damit
> einen Cardreader?

den kauft man einfach

http://www.google.de/products/catalog?oe=utf-8&rls...

Konrad S. schrieb:
> Meine udev-Regeln sehen typischerweise so aus:

das wird nicht helfen, dann es sind 3 leser über einen FTTI diese will 
ich trennen

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Peter II,

ich nutze immer folgende Zeilen:

# BST Dual USB-Serial-Adapter (Chipset: pl2303)
SUBSYSTEMS=="usb", DRIVERS=="usb", ACTION=="add", 
ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", 
ATTRS{bcdDevice}=="0300", KERNELS=="*.1", SYMLINK+="ttyFix0"
SUBSYSTEMS=="usb", DRIVERS=="usb", ACTION=="add", 
ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", 
ATTRS{bcdDevice}=="0300", KERNELS=="*.2", SYMLINK+="ttyFix1"

# Digitus Single USB-Serial-Adapter (Chipset: FT232R)
SUBSYSTEMS=="usb", DRIVERS=="usb", ACTION=="add", 
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", 
ATTRS{bcdDevice}=="0600", ATTRS{serial}=="A700aeXw", SYMLINK+="ttyFix2"
SUBSYSTEMS=="usb", DRIVERS=="usb", ACTION=="add", 
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", 
ATTRS{bcdDevice}=="0600", ATTRS{serial}=="A800dDaK", SYMLINK+="ttyFix3"


Wie Du siehst ist die Seriennummer entscheidend.

Gruß

Olaf

Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Olaf Dreyer schrieb:
> Wie Du siehst ist die Seriennummer entscheidend.

genau das ist das Problem, die 3 anschlüsse haben alle die gleiche 
Seriennummer.

Das einzigste was unterschiedlich ist ist:

ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceNumber}=="01"
ATTRS{bInterfaceNumber}=="02"

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Dann mus Du den ATTRS-String der entsprechenden Zeile hinzufügen.
Die einzelnen kommaseparierten Strings / ATTRS sind UND-verknüpft.
Für jeden Anschluß erstellst Du eine eigene Zeile und weist
einen eigenen Symlink zu. Der ist dann immer fix.

Gruß

Olaf

Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Olaf Dreyer schrieb:
> Dann mus Du den ATTRS-String der entsprechenden Zeile hinzufügen.

genau das habe ich gemacht und es geht nicht.

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hast Du auch den udevd neu gestartet, bzw. ihn angewiesen die 
Konfiguration neu zu laden?

Gruß

Olaf

Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Olaf Dreyer schrieb:
> Hast Du auch den udevd neu gestartet, bzw. ihn angewiesen die
> Konfiguration neu zu laden?

nein, denn die zeile ohne ATTRS{bInterfaceNumber}=="01" geht je auch 
ohne neustart. Und sie wurde später eingefügt.

Ich versteht nicht die hierarchie von dem UDEV (siehe ersten Post), denn 
es gibt ja mehre ebenen wo die Attribute sind. Wie bekommt man raus 
welche Attribute wirklich verwendbar sind?

Es gibt z.b.

ATTRS{serial}=="000003d5"
und
ATTRS{serial}=="0000:02:02.0"

woher weiss er welches der beiden er nehmen muss?

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Schau Dir doch mal mein Beispiel an:

Der pl2303 ist ein Dual-Port-RS232-Adapter.
Die FT232R sind zwei Single-Port-RS232-Adapter.

Bei Deinen Chip ist das Attribut ATTRS{serial}=="0000:02:02.0"
wohl die Seriennummer des Hubs (ev. auch eines internen Hubs).

Ich würde eher auf ATTRS{serial}=="000003d5" tippen.

Tip meinerseits an die Vorgehensweise:

Steck den/die Adapter an den gleichen Port dran.
Mach jeweils ein "lsusb -v" und lass über die Ausgaben ein "diff" 
laufen.

Gruß

Olaf

Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Olaf Dreyer schrieb:
> Bei Deinen Chip ist das Attribut ATTRS{serial}=="0000:02:02.0"
> wohl die Seriennummer des Hubs (ev. auch eines internen Hubs).
>
> Ich würde eher auf ATTRS{serial}=="000003d5" tippen.

ja das ist mir klar, war als Beispiel genannt. Die Abfrage der 
ATTRS{serial} funktioniert ja, aber nicht die Abfrage nach 
ATTRS{bInterfaceNumber}.

> Mach jeweils ein "lsusb -v" und lass über die Ausgaben ein "diff"
das habe ich auch gemacht darum habe ich geschrieben:

Das einzigste was unterschiedlich ist:

ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceNumber}=="01"
ATTRS{bInterfaceNumber}=="02"

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Peter II,

poste doch mal die Ausgabe von "lsusb -d 15ad: -v"

Gruß

Olaf

Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Olaf Dreyer schrieb:
> poste doch mal die Ausgabe von "lsusb -d 15ad: -v"

nichts

bei

lsusb -d 0403: -v

kommt (seht aber auch schon im ersten post):

Bus 001 Device 022: ID 0403:6011 Future Technology Devices 
International, Ltd FT4232H Quad HS USB-UART/FIFO IC
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0403 Future Technology Devices International, Ltd
  idProduct          0x6011 FT4232H Quad HS USB-UART/FIFO IC
  bcdDevice            5.00
  iManufacturer           1 Argolis
  iProduct                2 Triple Reader+
  iSerial                 3 000003d5
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           78
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              150mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              2 Triple Reader+
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              2 Triple Reader+
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              2 Triple Reader+
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x06  EP 6 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0000
  (Bus Powered)

Autor: mandy28 (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Kannst Du so machen
SUBSYSTEMS=="usb",KERNEL=="ttyUSB*", ATTRS{interface}=="Triple Reader+",ATTRS{bInterfaceNumber}=="00", SYMLINK+="triple1"
SUBSYSTEMS=="usb",KERNEL=="ttyUSB*", ATTRS{interface}=="Triple Reader+",ATTRS{bInterfaceNumber}=="01", SYMLINK+="triple2"
SUBSYSTEMS=="usb",KERNEL=="ttyUSB*", ATTRS{interface}=="Triple Reader+",ATTRS{bInterfaceNumber}=="02", SYMLINK+="triple3"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net