Ich bin ein Taucher und stolzer Besitzer von 2 Tauchcomputern. Diese beiden können an einen USB-Port angeschlossen werden und mit Linus 'SubSurface Divinglog-Programm kann ich Tauchprotokolle von ihnen importieren. Einer ist ein Atomic Aquatics Cobalt und der andere ist ein Suunto D4i. Jetzt möchte ich mit udev Dev-Dateien für jede von ihnen erstellen, damit ich sie an jeden USB-Port anschließen und immer noch dieselbe Dev-Datei in der Protokollierungssoftware verwenden kann. (ZB / dev / my_cobalt und / dev / my_d4i)
Für beide wird dieselbe (Art von) Konfiguration verwendet.
Für den D4i wird die Verwendung der dev-Datei durch ein automatisch erstelltes / dev / ttyUSB0 blockiert.
Für beide Tauchcomputer wird die dev-Datei erstellt und für den Cobalt funktioniert alles wie gewünscht, aber nicht für den D4i.
Ich kann / dev / ttyUSB0 verwenden, aber nicht / dev / my_d4i.
Irgendwie scheint es (da bin ich mir nicht sicher), dass sie sich anders auf dem USB-Bus präsentieren. Siehe die Ausgabe von lsusb weiter unten.
Wenn mir jemand sagen kann, was diesen Unterschied verursacht und / oder wie ich ihn lösen kann, wäre ich sehr dankbar. (Warum wird beim Anschließen des d4i auch eine ttyUSB-dev-Datei erstellt?)
Nachfolgend finden Sie einige Informationen zu den Ergebnissen / Einstellungen.
/etc/udev/rules.d/dive-computers.rules
# My Cobalt2 DiveComputer
SUBSYSTEM=="usb", ATTR{idVendor}=="0471", ATTR{idProduct}=="0888", SYMLINK+="my_cobalt", GROUP="dialout", MODE="0660"
# My Suunto D4i DiveComputer
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6001", SYMLINK+="my_d4i", GROUP="dialout", MODE="0660"
dev-files nach dem verbinden von Cobalt
lrwxrwxrwx 1 root root 15 mei 16 23:13 my_cobalt -> bus/usb/003/007
# no ttyUSB0 created
dev-files nach dem verbinden von d4i
lrwxrwxrwx 1 root root 15 mei 16 23:15 my_d4i -> bus/usb/003/009
crw-rw---- 1 root dialout 188, 0 mei 16 23:15 ttyUSB0
lsusb -v -D / dev / bus / usb / 003/007 (Kobalt)
Gerät: ID 0471: 0888 Philips (oder NXP) Hantek DDS-3005 Arbitrary Waveform Generator Gerätebeschreibung: bLänge 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 220 Diagnostic bDeviceSubClass 1 Reprogrammierbare Diagnose bDeviceProtocol 1 USB2-Konformität bMaxPacketSize0 16 idVendor 0x0471 Philips (oder NXP) idProduct 0x0888 Hantek DDS-3005 Arbitrary Waveform Generator bcdDevice 0.02 iManufacturer 1 ATOMIC AQUATICS iProduct 2 COBALT iSerial 3 123456789ABCDEF bAnzahlKonfigurationen 1 Konfigurationsdeskriptor: bLänge 9 bDescriptorType 2 Gesamtlänge 39 bNumInterfaces 1 bKonfigurationswert 1 iConfiguration 4-Konsole bmAttributes 0xe0 Selbstversorgt Remote Wakeup MaxPower 500mA Schnittstellendeskriptor: bLänge 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bAnzahlEndpunkte 3 bInterfaceClass 220-Diagnose bInterfaceSubClass 160 bInterfaceProtocol 176 iInterface 0 Endpunkt-Deskriptor: bLänge 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Übertragungsart Bulk Synchronisationstyp Keine Verwendungsart Daten wMaxPacketSize 0x0040 1x 64 Bytes bIntervall 0 Endpunkt-Deskriptor: bLänge 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Übertragungsart Bulk Synchronisationstyp Keine Verwendungsart Daten wMaxPacketSize 0x0040 1x 64 Bytes bIntervall 0 Endpunkt-Deskriptor: bLänge 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Übertragungsart Bulk Synchronisationstyp Keine Verwendungsart Daten wMaxPacketSize 0x0040 1x 64 Bytes bIntervall 0 Gerätestatus: 0x0101 Selbstversorgt
lsusb -v -D / dev / bus / usb / 003/009 (D4i)
Gerät: ID 0403: 6001 FT232 USB-Serial (UART) IC von Future Technology Devices International, Ltd. Gerätebeschreibung: bLänge 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (auf Schnittstellenebene definiert) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x0403 Future Technology Devices International, Ltd idProduct 0x6001 FT232 USB-Serial (UART) IC bcdDevice 6.00 iManufacturer 1 Smartinterface iProduct 2 USB-serielles Kabel iSerial 3 DiYISDGK bAnzahlKonfigurationen 1 Konfigurationsdeskriptor: bLänge 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bKonfigurationswert 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 500mA Schnittstellendeskriptor: bLänge 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bAnzahlEndpunkte 2 bInterfaceClass 255 Herstellerspezifische Klasse bInterfaceSubClass 255 Herstellerspezifische Unterklasse bInterfaceProtocol 255 Herstellerspezifisches Protokoll iInterface 2 USB Serial Cable Endpunkt-Deskriptor: bLänge 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Übertragungsart Bulk Synchronisationstyp Keine Verwendungsart Daten wMaxPacketSize 0x0040 1x 64 Bytes bIntervall 0 Endpunkt-Deskriptor: bLänge 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Übertragungsart Bulk Synchronisationstyp Keine Verwendungsart Daten wMaxPacketSize 0x0040 1x 64 Bytes bIntervall 0 Gerätestatus: 0x0000 (Bus Powered)
Protokollierung der Software (für was es sich lohnt)
Download von / dev / my_d4i starten Starten des Threads 0 [0.000126] FEHLER: Ungeeignete Ioctl für Gerät (25) [in ../../src/serial_posix.c:308 (dc_serial_open)] [0.000156] FEHLER: Der serielle Anschluss konnte nicht geöffnet werden. [in ../../src/suunto_d9.c:155 (suunto_d9_device_open)] INFO: dc_deveice_open Fehlerwert von -6 Beenden des Threads% s% s (% s) heruntergeladene Tauchgänge können nicht geöffnet werden 0 Download von / dev / ttyUSB0 starten Starten des Threads 0 INFO: dc_deveice_open Fehlerwert von 0 Beenden der heruntergeladenen Thread-Tauchgänge 0
Antworten:
Also gab dirkt einen Kommentar, der mich zum Nachdenken brachte, und ich überprüfte noch einmal einige Fakten. Mit udevadm monitor und anschließender Verbindung der Geräte habe ich folgendes bekommen:
Kobalt :
D4i
Damit habe ich erraten, dass die richtigen udev-Subsysteme sein sollten:
Und wie dirkt schon sagte, benutze ATTRS anstelle von ATTR, um im gesamten Gerätepfad zu passen. Also habe ich die udev-Regeln geändert zu:
Nach dem Neustart von udev und dem erneuten Anschließen des Geräts habe ich:
ls -l / dev / tty_d4i
Und das hat funktioniert, wie ich wollte. Ich bin mir immer noch nicht hundertprozentig sicher, warum, aber das ist wohl mein begrenztes Wissen über Udev. Ich werde udev weiter untersuchen, aber im Moment scheint dies gelöst zu sein. Also danke dirkt für den Hinweis.
Als Referenz die Ausgabe von:
sudo udevadm info -a -n / dev / ttyUSB0
quelle