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==""
> CardReader mit einem FTTI
Du meinst eine USB-Seriell-Bridge von FTDI. Wie bastelt man sich damit
einen Cardreader?
Meine udev-Regeln sehen typischerweise so aus:
1 | ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTR{serial}=="B800fDKM", GROUP="mygroup", MODE="0660", SYMLINK+="FT_L0", SYMLINK+="FT%n" |
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).
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=org.mozilla:de:official&client=firefox-a&q=smargo+triple+reader&um=1&ie=UTF-8&tbm=shop&cid=9834880902756663036&sa=X&ei=RL-PT4n1OdK5hAecodSvBA&ved=0CDsQ8wIwAg 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
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
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: > Dann mus Du den ATTRS-String der entsprechenden Zeile hinzufügen. genau das habe ich gemacht und es geht nicht.
Hast Du auch den udevd neu gestartet, bzw. ihn angewiesen die Konfiguration neu zu laden? 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"
Hallo Peter II, poste doch mal die Ausgabe von "lsusb -d 15ad: -v" Gruß Olaf
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)
Kannst Du so machen
1 | SUBSYSTEMS=="usb",KERNEL=="ttyUSB*", ATTRS{interface}=="Triple Reader+",ATTRS{bInterfaceNumber}=="00", SYMLINK+="triple1" |
2 | SUBSYSTEMS=="usb",KERNEL=="ttyUSB*", ATTRS{interface}=="Triple Reader+",ATTRS{bInterfaceNumber}=="01", SYMLINK+="triple2" |
3 | SUBSYSTEMS=="usb",KERNEL=="ttyUSB*", ATTRS{interface}=="Triple Reader+",ATTRS{bInterfaceNumber}=="02", SYMLINK+="triple3" |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.