Moin.
An einer Kiste mit Arch-Linux hängen zwei verschiedene Funkgeräte (IC-R8600, IC-9700) des gleichen Herstellers (Icom), beide über USB mit dem Linuxrechner verbunden.
Das ältere Gerät (IC-R8600) verwendet den Silabs CP2102 Chip (genauer den CP2102-GMR) als UART Bridge, das neuere Gerät den CP2102N (genauer den CP2102N-A01-GQFN28R). Zu sehen ist die unterschiedliche Hardware in dmesg oder auch mit lsusb -v. Beide Chips nutzen das gleiche Treiber-Modul cp210x.
Jedes Gerät bildet zwei serielle Schnittstellen ab, für unterschiedliche Funktionen.
Um den Geräten persistente Namen zu geben (per symlink) habe ich udev-Rules erstellt. Die funktionieren prinzipiell auch.
Das Problem:
Wenn ich beim älteren Gerät auf den symlink zugreife, dann geht das.
Wenn ich beim neueren Gerät auf den symlink zugreife, dann geht das nicht, ich darf nicht schreiben.
Beide Symlinks haben die gleichen owner und Rechte.
Wenn ich bei beiden Geräten direkt auf de Geräte zugreife (/dev/ttyUSBx) dann geht alles, owner udn Rechte lassen das zu. Aber die Zuordnung ändert sich halt immer wieder, weswegen ich überhaupt mit den udev-Rules angefangen habe.
Der Unterschied ist das im
* ersten Fall (älteres Gerät, CP2102 chip) der Symlink auf das /dev/ttyUSBx Gerät zeigt (das root:uucp gehört)
* zweiten Fall (neueres Gerät, CP2102N chip) der Symlink auf das /dev/bus/usb/<n>/<m> Gerät zeigt (das root:root gehört). Dies obwohl für dieses Gerät ebenfalls /dev/ttyUSBx Geräte existieren...
Wie erreiche ich, dass der Symlink auf /dev/ttyUSBx zeigt, und nicht auf /dev/bus/usb/001/nnn ?
Hier die udev-Rules:
Was ich bereits probiert habe:
- andere USB Anschlüsse am Rechner probiert
- nach dem Problem gegoogelt
- Datenblätter und Application Notes CP2102 und CP2102N verglichen
- beide Geräte zig mal aus- und wieder eingesteckt, und Log mitgelesen, das Problem ist reproduzierbar.
Irgendwelche Ideen?
Danke.
Ekki
An einer Kiste mit Arch-Linux hängen zwei verschiedene Funkgeräte (IC-R8600, IC-9700) des gleichen Herstellers (Icom), beide über USB mit dem Linuxrechner verbunden.
Das ältere Gerät (IC-R8600) verwendet den Silabs CP2102 Chip (genauer den CP2102-GMR) als UART Bridge, das neuere Gerät den CP2102N (genauer den CP2102N-A01-GQFN28R). Zu sehen ist die unterschiedliche Hardware in dmesg oder auch mit lsusb -v. Beide Chips nutzen das gleiche Treiber-Modul cp210x.
Jedes Gerät bildet zwei serielle Schnittstellen ab, für unterschiedliche Funktionen.
Um den Geräten persistente Namen zu geben (per symlink) habe ich udev-Rules erstellt. Die funktionieren prinzipiell auch.
Das Problem:
Wenn ich beim älteren Gerät auf den symlink zugreife, dann geht das.
Wenn ich beim neueren Gerät auf den symlink zugreife, dann geht das nicht, ich darf nicht schreiben.
Beide Symlinks haben die gleichen owner und Rechte.
Wenn ich bei beiden Geräten direkt auf de Geräte zugreife (/dev/ttyUSBx) dann geht alles, owner udn Rechte lassen das zu. Aber die Zuordnung ändert sich halt immer wieder, weswegen ich überhaupt mit den udev-Rules angefangen habe.
Der Unterschied ist das im
* ersten Fall (älteres Gerät, CP2102 chip) der Symlink auf das /dev/ttyUSBx Gerät zeigt (das root:uucp gehört)
* zweiten Fall (neueres Gerät, CP2102N chip) der Symlink auf das /dev/bus/usb/<n>/<m> Gerät zeigt (das root:root gehört). Dies obwohl für dieses Gerät ebenfalls /dev/ttyUSBx Geräte existieren...
ekki@grappa ~ $ ll /dev/ic*
lrwxrwxrwx 1 root root 15 27. Aug 14:36 /dev/ic9700a -> bus/usb/001/020
lrwxrwxrwx 1 root root 15 27. Aug 14:36 /dev/ic9700b -> bus/usb/001/021
lrwxrwxrwx 1 root root 7 27. Aug 14:28 /dev/icr8600a -> ttyUSB0
lrwxrwxrwx 1 root root 7 27. Aug 14:28 /dev/icr8600b -> ttyUSB1
ekki@grappa ~ $ ll /dev/ttyUSB*
crw-rw---- 1 root uucp 188, 0 27. Aug 14:28 /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 1 27. Aug 14:34 /dev/ttyUSB1
crw-rw---- 1 root uucp 188, 2 27. Aug 14:36 /dev/ttyUSB2
crw-rw---- 1 root uucp 188, 3 27. Aug 14:45 /dev/ttyUSB3
ekki@grappa ~ $ ll /dev/bus/usb/001
total 0
...
crw-rw-r-- 1 root root 189, 19 27. Aug 14:36 020
crw-rw-r-- 1 root root 189, 20 27. Aug 14:36 021
...
Wie erreiche ich, dass der Symlink auf /dev/ttyUSBx zeigt, und nicht auf /dev/bus/usb/001/nnn ?
Hier die udev-Rules:
ekki@grappa ~ $ cat /etc/udev/rules.d/93-icom.rules
# Icom
# IC-R8600
ATTRS{product}=="CP2102 USB to UART Bridge Controller", ATTRS{serial}=="IC-R8600 03001303 A", SYMLINK+="icr8600a"
ATTRS{product}=="CP2102 USB to UART Bridge Controller", ATTRS{serial}=="IC-R8600 03001303 B", SYMLINK+="icr8600b"
# IC-9700
ATTRS{product}=="CP2102N USB to UART Bridge Controller", ATTRS{serial}=="IC-9700 13002958 A", SYMLINK+="ic9700a"
ATTRS{product}=="CP2102N USB to UART Bridge Controller", ATTRS{serial}=="IC-9700 13002958 B", SYMLINK+="ic9700b"
Was ich bereits probiert habe:
- andere USB Anschlüsse am Rechner probiert
- nach dem Problem gegoogelt
- Datenblätter und Application Notes CP2102 und CP2102N verglichen
- beide Geräte zig mal aus- und wieder eingesteckt, und Log mitgelesen, das Problem ist reproduzierbar.
Irgendwelche Ideen?
Danke.
Ekki