Virtuelle COM-Ports und Virtualisierung - Probleme

Bei meinem neuen Setup habe ich auf ESXi als Virtualisierungslösung gesetzt. Außerdem fehlen bei dem neuen Host die hardwaremäßigen COM-Ports ganz, so dass nun ausschließlich virtuelle COM-Ports über USB zum Einsatz kommen (war aber ohnehin fast schon überall so).

Im Prinzip kann man die einfach „durchreichen“ an die VM und das klappt auch eigentlich ganz gut. Allerdings habe ich mit vielen Schnittstellen unangenehme Probleme der Art

-Verbindungsabbrüche (meist kurzfristig behebbar indem man in IPS die Verbindung trennt und wiederherstellt)
-fehlende Zeichen (Statt „hallo welt“ kommt „hllo welt“ an)

Die Verbindungsprobleme scheinen besonders bei FTDI-basierten Geräten wie dem eBus- und LCN-Busankoppler aufzutreten, während ich das mit den (PC-seitig) nicht ankommenden Zeichen eher bei CH340-basiertem Zeug wie Arduinos habe.

Interessant ist auch, dass diese Phänomene mit dem alten Host und ohne die Virtualisierung nicht aufgetreten sind. Dort gab es nur alle paar Monate mal den Fall dass man den LCN-Busankoppler herausziehen und wieder einstecken musste.

Hat sowas schon mal jemand beobachten können? Bin gerade ziemlich ratlos und schlage mich mit hässlichen Workarounds durch…

Kann ich bei mir (leider oder eher besser) nicht bestätigen.
Allerdings habe ich nur FTDI (eBus) und SiLabs (Xbee) im Einsatz.
Beides als USB Gerät durchgereicht in die Win10 VM.
Michael

Bei mir gabs die gleichen Probleme mit einer per USB angebundenen USV. An Ubuntu VM immer wieder Abbrüche. Neustart VM und wieder gut. Insgesamt zu unzuverlässig. Es scheint aber am Gast zu liegen, bzw. an den Treibern. Die gleiche USV ist jetzt per USB an einer freenas VM angeschlossen. Also FreeBSD. Keine Probleme mehr. Das ganze hatte sich von 6.0 auf 6.5 für Ubuntu eh schon deutlich gebessert. Man kann noch mit dem der VM zugeordneten USB Host experimentieren. Also 3.0 oder 2.0. Das sind auf jeden Fall wieder andere Treiber. Egal ob das Gerät dann wirklich 3.0 kann.
Ich weiß ja nicht ob die Comports direkt auf der Symcon Maschine sein müssen. Sonst könnte man noch unterschiedliche systeme testen.
Die einzig gute Lösung sind aber Schnittstellen übers Netzwerk. Alles andere ist auf Dauer Mist. Aber wie gesagt, ich benutze deine Systeme nicht, weiß also nicht ob es sowas gibt.

Sebastian

Also, zu meinem Setup:

Ich habe hier zwei powered USB2 Hubs der etwas „robusteren“ Sorte, die direkt an zwei USB-Host-Ports vom Mainboard der IPS-Hostmaschine hängen. Und die meisten meiner SerialPort-Devices sind wie gesagt virtuell, nur noch beim Projektor gibt es tatsächlich eine DB9-Steckverbindung mit entsprechenden Spannungspegeln (sonst redet der auch nicht mit mir, der erste USB-to-serial-Adapter den ich getestet hatte war ein halbseidener Schummeladapter der nur die Signale high/low invertiert hat, aber mit TTL-Pegel auf dem DB9-Verbinder gearbeitet hat. Das entspricht nicht dem V.24 Standard und der Projektor ignoriert einen dann.).

Weder von der Stromaufnahme, noch vom Datenverkehrsaufkommen her ist irgendeiner der beiden Hubs auch nur annähernd ausgelastet. Sie funktionieren sogar weiter, wenn ich deren Netzteile weglasse und sie die Spannung nur über den Computer ziehen (was ich aber im Betrieb nicht mache). Und Traffic erzeugen diese Dinger ja nun auch nicht wirklich…

Normalerweise hätte ich, wenn es z.B. nur der eine China-Arduino gewesen wäre, sofort den im Verdacht. Aber es sind halt so gut wie alle diese Geräte am Herumzicken, sogar welche bei denen ich mir 99% sicher bin, dass authentische FTDI-Chips darin werkeln (LCN- und eBus Koppler).

An den Treibern unter Windows habe ich schon herumgefrickelt was das Zeug hält, also mal die Schnittstellenparameter wie FIFO-Puffergröße usw. geändert in jede erdenkliche Richtung. Ich habe die Verteilung der Geräte <=> Hubs geändert um zu sehen, ob der Fehler „mitwandert“, also irgendwie von einem bestimmten Gerät „ausgeht“ und sich auf die anderen „überträgt“, so doof das jetzt klingen mag…

Ich kann mir weiterhin keinen Reim darauf machen.

Hello,

wie ist den dein Host ans Netz gestöpselt 100Mbit oder Gbit?
Wie ist den die Auslastung auf der Netz Seite?
Wie ist den der vSwitch eingestellt, nutzt Du Vlan’s?
Nutz Du einen Hub oder Switch?
Was ist sonst noch in dem Netz?
Deine Seriell to Ethernet mach die TCP oder UDP Traffic?

Ich hab IPS auch auf einen WIN8 auf ESX 6.0 laufen.
ich nutze 5 silex Box (USB Audio, 3xFHZ, 2xModBus, USB 868 Gateway)
Und da ist am Netz schon was los, darf man nicht unterschätzen diese USB to Ethernet Adapter

gruß aus dem Waldviertel.

Chris

Äh… Er nutzt die USB Anschlüsse des Host.
Nix USB2Lan.
Michael

ups,hab ich überlesen.

Ich würde auch die USB Weiterleitung und ESXi (unter 6.5 hab ich es noch nicht getestet) nicht nutzen.
Das kann die Workstation besser.

Christian

Ich habe auch keine Freude an der USB Weiterleitung im ESXi gehabt. Wie schon geschrieben bietet sich ein USB2LAN Adapter wie Silex oder auch ein Raspberry mit VirtualHere an. In der VM muss dann der entsprechende Client geladen werden. Treiber für Silex gibt es mM nur unter Windows.

Tommi

Danke für den Tipp, so etwas würde ich probieren wenn ich hier partout nicht weiter komme. Mir erschien nur intuitiv der Weg über ein USB-LAN-Interface noch komplizierter und daher potentiell fehleranfälliger als „nur“ durch die VM zu müssen.

Ich habe jetzt mal den USB-Ereignislogger von Nirsoft benutzt und festgestellt, dass es bei zwei der FTDI-Devices zu sporadischen Unplug-Ereignissen kommt, gefolgt von sofortigem Plug-Ereignis direkt danach. Im Gerätemanager war mir das auch schon mal so vorgekommen, dort aber nur als „Seitenreload“ ähnliches Auffklackern erkennbar.

Dann habe ich gesehen dass es eine FTDI-Treiber-Version mit geringfügig höherer Revisionsnummer gibt, also mal geupdated (in dem Changelog steht aber leider nichts einschlägiges).

Ich beobachte weiter.

Eventuell irgendwelche Energiespar Einstellungen im BIOS des Host?

Michael

Ich habe jetzt mal so einen SILEX USB-Host eingebaut, mal sehen…

Es sieht soweit gut aus…!

Servus,
Freut mich zu hören.
Was mir noch eingefallen ist.
Die fhz hatte ich jeweils an eine eigene silex 1000er Box. Da gab es Probleme wenn noch andere usb Geräte mit angeschlossen waren.

Ich hatte die silex Software als Service laufen, und beim ips Service als dependency eingetragen.

Wenn mal eine Box ziggig war hab ein Script gestartet , damit wurde über telnet die box neu gestartet.

Schöne Sonntag.
Chris

Hiho,

ich habe meist auch böse Negative Erfahrungen mit Virtuellen Com Ports gemacht.
Wenn ich etwas mit nem Seriellen Port anschließen will mache ich meistens einen Raspberry PI mit IPSymcon direkt dran und frage dann mit einer größeren IPS Instanz die API ab. Hat sich ziemlich bewährt da der COM Port direkt abgefragt wird und nicht über umwege und 3.rd Party.

Weil es möglicherweise ja noch anderen betrifft: Also ich habe es jetzt einige Monate am Laufen mit dem Silex USB Host, und das funktioniert ziemlich stabil.

Kleiner Wermutstropfen ist, dass ich es nicht hinbekommen habe, den lokalen Client, der die Geräte trennen und verbinden kann, aus IPS fernzusteuern. Es gibt zwar ein Kommandozeilenprogramm, aber wenn ich dieses aus IPS heraus zu benutzen versuche (alle einschlägigen PHP-Funktionen sowie IPS_Execute durchprobiert), dann hängt dieses einfach und gibt nichts zurück. :frowning:

Aber es ist auch nur einmal vorgekommen bislang, dass ein virtueller serieller Port mit Fehlerstatus im Gerätemanager hing und man in dem Silex-Client trennen und neu verbinden musste. Und bei dem Gerät habe ich den Verdacht dass etwas am Gerät selbst nicht in Ordnung ist und werde es die Tage mal durchtauschen.

Also eine positive Bilanz!

Hat jemand schon mal was gebaut, um eine Verbindung zum virtuellen USB-Gerät per skript zu trennen und wieder herzustellen? Muss das bislang alle paar Monate per GUI machen, weil sich in seltenen Fällen mal ein Gerät in einen Fehlerzustand bringt, aus dem es nur durch Neuverbinden (im Silex Client, nicht in IPS!) heraus zu bekommen ist.

Silex Dienst neustarten mit net stop [Dienstname] und net start [Dienstname]
schon ausprobiert?
Habe das irgendwo in meinen Untiefen von Scripten für meinen alten eBus-Connector.
Michael

Gute Idee, das probiere ich beim nächsten Mal. Nachteil ist natürlich, dass es alle USB-Verbindungen kappt.

IPS stellt diese aber dann nach 60 Sekunden wieder her. Einen tot muss man ja sterben :wink:
Michael

Hello,
Das Silex Service starte ich eigentlich nie neu wenn eine einzelne Box spinnt.
Du kannst auf die Silex Box per telnet zugreifen und die so neu starten. Das hat bei mir immer gereicht.

Ich hab eine IO Port in ips den öffnen ich per Script bzw. Wenn sich der Status des USB Devices auf 200 ändert (ich schreibe das jetzt aus dem Kopf heraus, bin mir nicht sicher ob 200 richtig ist ). Und schicke mit dem selben Script die telnet Befehle zum Neustart

Chris