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==""
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).
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"
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
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?
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
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"