Raspberry Serial / USB Schnittstellen Anzeige/ Auswahl

Moin…

… ich würde es gut finden, wenn der Port der Seriellen Schnittstelle den Namen des Devices anzeigen würde und auch nur diesen mit der Instanz verbindet.
Der Raspberry würfelt ja gerne mal die Schnittstellen durcheinander nach einem Neustart und mehreren USB-Devices und schon würde die Serielle-Schnittstelle nicht mehr funktionieren.

Durch den Befehl in putty :

ls -l /dev/serial/by-id

kommt folgende Ausgabe:

pi@raspberrypi:~ $ ls -l /dev/serial/by-id
insgesamt 0
lrwxrwxrwx 1 root root 13 Jun  8 15:36 usb-DMX4ALL_NanoDMX_Interface-if00 -> ../                                                ../ttyACM0

Es wäre schön, wenn jetzt unter „PORT:“ nicht: ttyACM0 sondern usb-DMX4ALL_NanoDMX_Interface-if00 angezeigt werden würde.

Ebenso nur dieser Name mit der Serial-Instanz verbunden wird und nicht einfach nur nach ttyACM0.
Wäre das möglich?

Gruß,
Peter

Gute Idee, stehe ich voll dahinter :smiley:

Ohhhh ja, das Problem habe ich auch immer wieder nach einem Neustart. Das Thema gab es hier in Forum auch schon mal…! Vielleicht tut sich jetzt etwas!

Wenn ich es könnte würde ich ein Programm erstellen, welches die Info ausliest und die Ports automatisch wieder zuordnet. :wink:

Gruß
Bruno

Wäre eine feine Sache, wenn auf diese Weise der Kernelfehler in udev und die Krücken mit symlink und Port-Zuweisungen nicht mehr nötig sind!

Grüße, Gerhard

Mir würde die Auswahl der symlink’s reichen…

Hat hier jemand schon eine Lösung, das Thema ist mehr als nervig :banghead:

Ja, ist ruhig geworden. Wäre echt mal ein feines Feature!!

Gesendet von iPhone mit Tapatalk

Hat hier jemand schon eine Workaround? Das Problem ist wirklich nervig. Kann man hier nicht ein Script basteln das wenn nach einem Neustart die serielle Schnittstelle nicht erreichbar ist, dann auf einen anderen Port gewechselt wird?

@paresy Hast du eine Idee ob und wenn ja wie man das mit einem Script abfangen kann?

Ich glaube das ich der Lösung hatte… Fix multiply serial USB ports (ttyUSB) on a RPi with a symlink es ist auf englisch…

Oh, werde ich testen!
Wäre ja genial wenn das funktioniert.

Das mach man auch nicht! ich suche mit das Linux Command „readlink“ der originale ttyPort dabei :wink: und dieser brauche ich mit IPS_SetProperty()

Das schone von das man erst ein filter macht ist das der link immer verbindet mit der Port wo das gefilterte gerät angeschlossen ist. Egal off das ding ttyUSB0,1,2 oder 3 bekommen hat.

Hallo /dev/ttyUSB??? Genervte!

Ich hatte bisher eine etwas mutigere Lösung benutz.
Nach dem stop von symcon habe ich die settings.json editiert und die eingestellten „/dev/ttyUSBx“ gegen die „/dev/serial/by-id/xxxx“ geändert. Das hat die letzten Monate auch gut funktioniert, aber mit meinem heutigen update von symcon geht das jetzt nicht mehr.
Die Devices werden zwar scheinbar geöffnet aber werden nach kurzer Zeit auf error gesetzt und neu verbunden und so weiter. Es gibt also scheinbar etwas neues in symcon, dass ein Problem mit symlinks hat.

Den obigen (englischen) Artikel habe ich mir durchgelesen, aber der erzeugt auch nur symbolische links und ich vermute damit das gleiche Problem, da unter /dev/serial/by-id auch nur symlinks liegen.

Oder hat jemand eine Lösung für das Problem ?

Grüße

Mit welcher IPS Version hast du das Problem?
Ich arbeite schon lang mit symlinks und einer händisch angepassten settings.json… Bisher gab es von IPS ja keine offizielle Lösung… Mir würde es schon reichen wenn IPS einfach die per udev rules festgelegten symlinks einlesen würde… IPS könnte dazu ja eine bestimmte Dateinamensgebung vorgeben… und nur diese einlesen (Ips_symlink…)

Gesendet von meinem Redmi Note 2 mit Tapatalk

Ich habe die englische Anleitung probiert und bis jetzt läuft es ohne Probleme! :cool:

Hallo,
zu den Fragen:

  • die Version ist: IP-Symcon 4.10, 09.03.2017 (die Hex Zahl dahinter habe ich weggelassen, weil ich nicht weiss, was die bedeutet)
  • Ich glaube, dass die englische Anleitung auch bei mir funktioniert hätte, aber seit dem letzten update glaube ich das nicht mehr.

Eigentlich wollte ich gestern nur mal wieder alles auf Stand bringen, da das ja i.d.R. problemlos funktioniert.
Das apt-get upgrade hat mir aber unerwartet viele Updates gebracht, darunter auch symcon.

Natürlich habe ich, nachdem ich das Problem bemerkt hatte, zuerst auch an einen Linux Fehler geglaubt, da ich kürzlich mal ähnliche Probleme mit Treibern auf dem rpi3 hatte (verursacht durch ein fehlerhaftes busware modul) , aber in den Linux Lofgiles habe ich nichts von USB device disconnected etc gefunden.
BTW: die Busware addon Hardware habe ich als erstes ausgebaut, als das Problem gestern aufkam. Hat aber nichts geändert.

Alle anderen Devices, die über das direkte /dev/* (also kein Link) angesprochen wurden, funktionierten sowohl in symcon als auch in homegear einwandfrei. Deshalb habe ich auf ein Problem mit symlinks in symcon geschlossen.
Seit ich dann in symcon auch wieder die direkten Devices eingtragen habe, lief es wieder normal… bis zum nächsten reboot :frowning:

Falls jemand mit der gleichen Version und ge"symlinkten" devices kein Problem hat, dann würde ich die Forschung fortsetzen, aber was soll noch probieren?

Grüsse

So ist seit gestern hier auch.(IPS 4.2 auf Pi2)

Auch ich hatte dem symlink fest eingetragen, habe aber jetzt die Idee von MartijnD umgesetzt.
readlink holt den orginal Port aus dem symlink ! Und somit wird der gesetzt.


root@raspberrypi:~# readlink /dev/ttyUSB16
ttyUSB1

ttyUSB16 ist der symlink (bei mir enocean), und der orginal Port ist ttyUSB1, der wird dann mit dem Beispiel von MartijnD gesetzt.

Jetzt hab ich den kleinen Unterschied (readlink) auch verstanden.
Das Erstellen der zusätzlichen Links aus der super Anleitung von MartijnD wollte ich mir allerdings ersparen und habe lieber die vorhanden „by-id“ Links benutzen. Das macht dann den baldigen Wechsel auf RPI4 :slight_smile: etwas einfacher.
Deshalb enthält mein StartupScript jetzt zusätzlich dies:

// Workaround for symcon symlink problem
$FHZ_TTYport = exec ("readlink -f /dev/serial/by-id/usb-ELV_AG_ELV_FHZ_1300_PC_EL3HUXIP-if00-port0"); 
$WDE_TTYport = exec ("readlink -f /dev/serial/by-id/usb-Silicon_Labs_ELV_USB-WDE1_Wetterdatenempfänger_MEFUQNWRQEFC0AMP-if00-port0");
$RS485_TTYport = exec ("readlink -f /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AH01GTUT-if00-port0");
IPS_SetProperty(19197 /*[FHZ1350]*/, "Port", $FHZ_TTYport);  
IPS_SetProperty(50774 /*[WDE USB Port]*/, "Port", $WDE_TTYport);  
IPS_SetProperty(59270 /*[Serial Port KMTronicOct]*/, "Port", $RS485_TTYport);  


Ich stimme damit auch für den Verbesserungs Vorschlag von MartijnD, dass symbolische Links in der ips_console angeboten werden sollten und natürlich auch richtig angewendet werden sollten.

Grüße

Ist jemanden schon aufgefallen, das im laufenden Betrieb der Port wechselt. Mein Raspberry macht keinen Neustart, es ändert sich aber der serielle Port.

Mist, da hab ich auch das Apply vergessen:

// Workaround for symcon symlink problem
$FHZ_TTYport = exec ("readlink -f /dev/serial/by-id/usb-ELV_AG_ELV_FHZ_1300_PC_EL3HUXIP-if00-port0"); 
$WDE_TTYport = exec ("readlink -f /dev/serial/by-id/usb-Silicon_Labs_ELV_USB-WDE1_Wetterdatenempfänger_MEFUQNWRQEFC0AMP-if00-port0");
$RS485_TTYport = exec ("readlink -f /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AH01GTUT-if00-port0");
IPS_SetProperty(19197 /*[FHZ1350]*/, "Port", $FHZ_TTYport);  
IPS_SetProperty(50774 /*[WDE USB Port]*/, "Port", $WDE_TTYport);  
IPS_SetProperty(59270 /*[Serial Port KMTronicOct]*/, "Port", $RS485_TTYport);  
IPS_ApplyChanges(19197 /*[FHZ1350]*/);
IPS_ApplyChanges(50774 /*[WDE USB Port]*/);
IPS_ApplyChanges(59270 /*[Serial Port KMTronicOct]*/);