Ist die folgende USB-Verbindung möglich: Host USB zu seriell konvertiert (FTDI) und dann zurück konvertiert zu USB (FTDI)

Ich versuche, ein Host-USB-Gerät auf einer Platine mit einem Endpunkt-USB-Gerät auf einer anderen Platine zu verbinden, aber ich muss die Verbindung zwischen den beiden Geräten als serielle (UART) Verbindung zwischen den beiden Platinen senden. Die USB-zu-Seriell- und Seriell-zu-USB-Konverter würden auf den einzelnen Platinen untergebracht, die die jeweiligen Host- und Endpunktgeräte beherbergen.

Ich brauche das Host-USB-Gerät, um das Endpunktgerät als USB-Endpunkt zu erkennen, genauso wie bei einer direkten USB-Verbindung.

Ist es möglich, diese Arbeit so zu bekommen, wie ich sie brauche? Ich verstehe, dass die Kommunikationsgeschwindigkeit viel langsamer wäre als bei herkömmlichem USB. Ich habe FTDI-Konvertierungschips gesehen, die behaupten, mit bis zu 3 MBaud zu arbeiten (wie dieser hier: https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT234XD.pdf ), und ich würde denken, dass ~ 2 MBaud ausreichen würden für das, was ich tue. Der Chip, den ich verlinkt habe, scheint ausschließlich für die Konvertierung von USB-Host-Geräten in den seriellen Ausgang zu sein. Ich war nicht so erfolgreich darin, ein Gerät zu finden, von dem erwartet wird, dass es in die entgegengesetzte Richtung funktioniert (Seriell-zu-USB-Endpunkt).

Hat jemand so etwas schon einmal erfolgreich gemacht oder kann mir vielleicht sagen, dass dies aus Gründen X, Y, Z unmöglich ist?

Wenn Sie damit zufrieden sind, dass es sich um einen COM-Port handelt, sollten Sie dies tun können
(USB-Ethernet-Brücke) - (über serielles PPP/SLIP geroutet) - (Ethernet-USB-Brücke), wobei jedes Ende der (USB-Ethernet-Brücke) eine Hälfte dieses Verlängerungsgeräts ist.
@brhans das wird nicht funktionieren. Das Gerät, mit dem Sie eine Verbindung herstellen, verwendet ein Ethernet-Kabel, aber es spricht kein Ethernet und verwendet kein IP, sodass Sie es nicht über PPP/SLIP weiterleiten können.
@ChrisStratton - Ok - Ich war faul und habe gerade das erste Ding verlinkt, das auftauchte - aber es gibt USB-over-Ethernet-Extender-Geräte.
@brhans - das ist eine Behauptung, die Beweise erfordern würde. Das transparente Proxying eines eng getakteten Paketnetzwerks über ein typischerweise paketvermitteltes Netzwerk ist nicht trivial, und dies auf eine Weise zu tun, bei der PPP/SLIP in die Mitte eingefügt werden könnte, ohne es zu unterbrechen, ist überhaupt nicht wirklich glaubwürdig . Software, die den USB-Verkehr auf dem Host auf USB-API-Ebene abgefangen hat, wäre plausibler, aber da es sich bei dem Gerät um einen Massenspeicher handelt, müsste es etwas sein, das Dateisystemschichten statt USB abfängt. Ein intransparenter Ersatz durch ein vernetztes Speichergerät ist wahrscheinlich die beste Lösung.

Antworten (1)

Nein, wie beschrieben wird das nicht funktionieren. Herkömmliche FTDI-USB-Seriell-Konverter können nur die USB- Geräterolle übernehmen . Sie können Ihr USB- Gerät der Gegenseite nicht hosten . Während Sie also möglicherweise einen am nahen Ende verwenden können, benötigen Sie am fernen Ende etwas anderes.

Es gibt jedoch eingebettete USB-Hosts, die Sie möglicherweise verwenden können. Dies sind letztendlich alles Mikrocontroller - einige wie Viniculum / Viniculum II von FTDI werden speziell für diese Art von Zweck verkauft (aber können Ihren genauen Anforderungen entsprechen oder auch nicht) und andere sind Allzweckgeräte, die definitiv für diese Aufgabe angepasst werden können. vielleicht so etwas wie ein Kinetis KLZ25/KLZ26 (alias Teensy-LC), ein STM32 mit USB-Host-Fähigkeit usw. Oder sogar ein kleines eingebettetes Linux-System, obwohl dies die Komplexität und den Stromverbrauch erhöht, einen heiklen Dateisystemstatus einführt usw.

Unabhängig von der Hardware besteht die erste Aufgabe darin , die genauen USB - Operationen herauszufinden , die von dem Gerät der Gegenseite erwartet werden . Sie müssen dafür effektiv einen benutzerdefinierten USB-Treiber für einen eingebetteten Host entwickeln oder entscheiden, dass es bereits einen in Linux gibt, den Sie verwenden können, indem Sie das andere Ende Ihrer Brücke um ein eingebettetes Linux-System bauen. Oder Sie erfinden eine Art USB-Proxying-Schema und entwickeln einen benutzerdefinierten Treiber oder Treiber-Interceptor auf dem Near-End-Betriebssystem, der über serielle Proxys weiterleitet.

Beachten Sie, dass Dinge wie USB-über-Glasfaser-Extender existieren. Das entspricht nicht unbedingt Ihrer angegebenen Anforderung des Proxyings über seriell, aber es passt möglicherweise gut zu Ihrem tatsächlichen Bedarf und würde Ihnen viel Entwicklungszeit ersparen. In diesem Zusammenhang könnten Sie vielleicht den gesamten Computer an den entfernten Standort verlegen und über ein Netzwerk remote mit ihm interagieren.

Ein USB-Endpunktgerät ist ein Speichergerät, im Grunde ein Flash-Laufwerk, das Sie an einen USB-Anschluss eines PCs anschließen. Ihr dritter Absatz geht mir etwas über den Kopf, aber ich gehe davon aus, dass selbst mit einer geeigneten Hardware, die den theoretischen Betrieb bewältigen kann, eine Menge benutzerdefinierter Firmware-Arbeit erforderlich wäre.
Können Sie einfach eine billige Network-Attached-Storage-Box am anderen Ende aufstellen und den USB-Stick daran anschließen? Das Ändern eines Betriebssystems, für das eine Open-Source-Betriebssysteminstallation (DD-WRT oder was auch immer) verfügbar ist, um über eine serielle Schnittstelle zu arbeiten, sollte einfach sein. Aber Sie sollten nicht versuchen, es der nahen Seite als USB-Massenspeichergerät zu präsentieren, Sie sollten ein Netzwerk-Dateisystem-Paradigma verwenden, um mit ihm zu sprechen, oder vielleicht explizite Dateiübertragungsoperationen.
Ich bin mir nicht sicher, ob das mit der Systemarchitektur funktionieren würde, aber angesichts der Einschränkungen ist das sicherlich eine gute Idee. Vielen Dank für Ihren Einblick in dieses Thema.
Vielleicht möchten Sie das eigentliche Anwendungsproblem als neue Frage zu Superuser SE posten . Versuchen Sie, Lösungen nicht einzuschränken, wie Sie es hier getan haben, sondern geben Sie stattdessen die Anforderungen und die letztendliche Quelle der Anforderungen genau an.