Hallo, für ein Heimautomatisierungs-Projekt möchte ich ein paar Arduino Nano programmieren. Hierfür habe ich mir aus China (Aliexpress) ein paar Arduinos bestellt. Nun habe ich festgestellt, dass mir in Linux "ls /dev/serial/by-id/" nur folgendes ausgibt: "usb-FTDI_FT232R_USB_UART_00000000-if00-port0" Dies ist meiner Kenntnis nach keine eindeutige ID, demnach kann ich nicht mehrere Arduinos gleichzeitig an einem Microcontroller (Raspberry) verwenden. Ist das ein Einstellungsfehler von mir oder sind die FTDI Chips gefaked? Ich habe schon auf http://zeptobars.com/en/read/FTDI-FT232RL-real-vs-fake-supereal geschaut, meine Chips sehen eher gefaked aus. Nach http://binefa.cat/blog/?p=80 stimmen bei faked FT232RL die "ID" 0403:0000 lauten muss, bei mir lautet diese allerdings "Bus 001 Device 005: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC". Möglicherweise hat ja jemand einen Tipp! Vielen Dank für eventuelle Hilfestellungen.
Hallo, Ich hatte auch mal solche Chips. Meine konnte ich mit dem FTDI Tool umprogrammieren. Da gibt es eine Einstellung für eine Manuelle ID. Da muss man dann halt selber hochzählen ;-) Einen davon habe ich jetzt schon ca. ein halbes Jahr im Dauereinsatz, bisher keine Probleme.
Max M. schrieb: > Dies ist meiner Kenntnis nach keine eindeutige ID, demnach kann ich > nicht mehrere Arduinos gleichzeitig an einem Microcontroller (Raspberry) > verwenden. Man kann auch USB-Geräte gleichzeitig verwenden, die keine eineindeutige ID (Seriennummer) verwenden. Unterscheiden lassen sich die dann durch ihre Position im USB-Gerätebaum, d.h. der Nummer des Anschlusses am jeweils verwendeten USB-Hub. Das schafft sogar der USB-Stack von Windows.
Rufus Τ. F. schrieb: > Man kann auch USB-Geräte gleichzeitig verwenden, die keine eineindeutige > ID (Seriennummer) verwenden. Unterscheiden lassen sich die dann durch > ihre Position im USB-Gerätebaum, d.h. der Nummer des Anschlusses am > jeweils verwendeten USB-Hub. Das hilft dem OP genau gar nicht, denn es ist trotzdem von der Reihenfolge des Ansteckens abhängig welches ttyUSBx zu welchem USB Gerät gehört. Genau das will aber der OP nicht haben.
> Das hilft dem OP genau gar nicht, denn es ist trotzdem von der > Reihenfolge des Ansteckens abhängig welches ttyUSBx zu welchem USB Gerät > gehört. Die Zuordnung zum 'x' in ttyUSBx schon, aber nicht die Zuordnung zur Position im Gerätebaum. Praktischer ist es trotzdem wenn man eine Seriennummer vergibt und sich dann ein paar udev-Regeln gönnt.
Jim M. schrieb: > denn es ist trotzdem von der Reihenfolge des Ansteckens abhängig > welches ttyUSBx zu welchem USB Gerät gehört. Das unterscheidet sich dann vom Verhalten unter Windows. Dort wird für ein Gerät ohne Seriennummer die zugehörige virtuelle Schnittstelle in Abhängigkeit von der Position im USB-Baum zugewiesen. Wird das Gerät an einer anderen USB-Buchse angeschlossen, hat es einen anderen Ort im USB-Baum und wird folglich mit einer anderen virtuellen Schnittstelle verknüpft. Sind die ttyUSBx immer monoton aufsteigend numeriert? Dann geht das natürlich nicht. Dann wird mehr Aufwand nötig; mit lsusb -t sollte sich der USB-Baum ausgeben lassen.
1 | root@linaro-ubuntu-desktop:/# lsusb -t |
2 | /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=s5p-ohci/3p, 12M |
3 | /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=s5p-ehci/3p, 480M |
4 | |__ Port 2: Dev 2, If 0, Class=vend., Driver=smsc95xx, 480M |
5 | |__ Port 3: Dev 3, If 0, Class=hub, Driver=hub/3p, 480M |
6 | |__ Port 3: Dev 13, If 0, Class=hub, Driver=hub/7p, 480M |
7 | |__ Port 1: Dev 14, If 0, Class=vend., Driver=ftdi_sio, 12M |
8 | |__ Port 5: Dev 15, If 0, Class=vend., Driver=ftdi_sio, 12M |
9 | |__ Port 6: Dev 16, If 0, Class=vend., Driver=ftdi_sio, 12M |
10 | |__ Port 7: Dev 17, If 0, Class=vend., Driver=ftdi_sio, 12M |
(Willkürliches, im Netz gefundenes Beispiel) Jetzt ist nur noch die Zuordnung von Device- und Interfacenummer zur ttyUSBx-Schnittstelle herauszufinden. Das müsste mit udevadm möglich sein. (Ich hab' hier kein Linux-System, um das nachzustellen, das mögen geneigte Leser bitte selbst machen)
Max M. schrieb: > Bus 001 Device 005: ID 0403:6001 Das ist OK. g457 schrieb: > Praktischer ist es trotzdem wenn man eine Seriennummer vergibt Sag das dem Chinesen. > die Zuordnung zur Position im Gerätebaum Dazu muss man in udev DEVPATH abfragen: https://www.domoticz.com/wiki/PersistentUSBDevices#Alternative_filtering
>> Praktischer ist es trotzdem wenn man eine Seriennummer vergibt > > Sag das dem Chinesen. Kann man die bei einem Fake nicht per ftdi_eeprom nachträglich ändern/vergeben?
Guten Abend, vielen Dank für die freundlichen und hilfreichen Antworten. Kann ich das Tool von FTDI auch unter Linux (Raspberry Pi) nutzen?
> Kann ich das Tool von FTDI auch unter Linux (Raspberry Pi) nutzen?
Unter Debian-artigen (dazu zählt auch Raspbian) heisst das erwähnte
Paket 'ftdi-eeprom' (und ist nicht von FTDI). Bei den anderen muss man
nachsehen, einfach mal nach 'ftdi' suchen im jeweiligen Repository.
Habe ich ausprobiert, danke für den Tipp! Leider bekomme ich keine Verbindung zum Arduino-Clone hin - die config-Datei kann anscheinend nicht gelesen werden. name@name:~$ ftdi_eeprom --read-eeprom FTDI eeprom generator v0.17 (c) Intra2net AG and the libftdi developers <opensource@intra2net.com> Can't open configuration file name@name:~$ Das ganze habe ich unter einem Ubuntu System ausprobiert. Der FTDI Chip auf dem Arduino ist anscheinend ein FT232R: name@name:~$ ls -lah /dev/serial/by-id/ insgesamt 0 drwxr-xr-x 2 root root 60 Jan 6 22:44 . drwxr-xr-x 4 root root 80 Jan 6 22:44 .. lrwxrwxrwx 1 root root 13 Jan 6 22:44 usb-FTDI_FT232R_USB_UART_00000000-if00-port0 -> ../../ttyUSB0 name@name:~$ Nach https://www.intra2net.com/en/developer/libftdi/index.php kann die libFTDI anscheinend keinen FT232R auslesen/verändern/programmieren. Gibt es für Windows eventuell eine Alternative mit der ich das EEPROM verändern bzw. die UART-ID ändern kann?
> [..] die config-Datei kann anscheinend nicht gelesen werden. > > name@name:~$ ftdi_eeprom --read-eeprom ^^^ [..] > Can't open configuration file
1 | $ man ftdi_eeprom | grep -e SYNOPSIS -A 1 |
2 | SYNOPSIS |
3 | ftdi_eeprom [commands] config-file |
^^^^^^^^^^^ HTH
Danke für die Antwort - allerdings habe ich keine Ahnung, welche config-Datei ich verwenden soll und wo ich diese finde. Windows habe ich derzeit nicht zur Verfügung. Könnte mir jemand mit der Lösung des Problems helfen? Ich möchte gerne unter Linux mittels ftdi_eeprom die UART ID von 00000000 auf etwas sinnvolles (z. B. MD137MEA) ändern. Meinetwegen auch mit einem anderen Programm.
> [..] allerdings habe ich keine Ahnung, welche config-Datei ich verwenden > soll und wo ich diese finde. Einfach die manpage weiterlesen.
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.