Es posible la siguiente conexión USB: Host USB para convertir a serial (FTDI) y luego volver a convertir a USB (FTDI)

Estoy tratando de conectar un dispositivo USB host en una placa a un dispositivo USB de punto final en otra placa, pero debo enviar el enlace entre los dos dispositivos como una conexión en serie (UART) entre las dos placas. Los convertidores de USB a serie y de serie a USB estarían alojados en las placas individuales que albergan los respectivos host y dispositivos de punto final.

Necesito que el dispositivo host USB reconozca el dispositivo terminal como un terminal USB como si fuera una conexión USB directa.

¿Es posible obtener este trabajo de la manera que necesito? Entiendo que la velocidad de comunicación sería mucho más lenta que el USB convencional. He visto chips de conversión FTDI que afirman funcionar hasta 3Mbaudios (como este: https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT234XD.pdf ) y creo que ~2Mbaudios serían suficientes por lo que estoy haciendo El chip que vinculé parece ser exclusivamente para que los dispositivos host USB se conviertan a salida en serie, no he tenido tanto éxito en encontrar un dispositivo que se espera que funcione en la dirección opuesta (serie a punto final USB).

¿Alguien ha hecho algo como esto con éxito antes, o tal vez pueda identificarme que esto es imposible por las razones X, Y, Z?

Si está satisfecho con que sea un puerto COM, debería poder hacerlo
(Puente USB-Ethernet) - (enrutado sobre serie PPP/SLIP) - (Puente Ethernet-USB), siendo cada extremo del (Puente USB-Ethernet) la mitad de este dispositivo extensor.
@brhans eso no funcionará. El dispositivo al que se conecta utiliza un cable estilo Ethernet, pero no habla Ethernet y no utiliza IP, por lo que no puede utilizarlo como proxy a través de PPP/SLIP.
@ChrisStratton - Ok, estaba siendo perezoso y acabo de vincular lo primero que apareció, pero los dispositivos de extensión USB a través de Ethernet existen.
@brhans: esa es una afirmación que necesitaría evidencia. El proxy transparente de una red de paquetes estrechamente sincronizada sobre una típicamente conmutada por paquetes no es trivial, y hacerlo de una manera en la que PPP/SLIP pueda insertarse en el medio sin romperlo no es realmente creíble en absoluto . El software que intercepta el tráfico USB en el host en el nivel de API USB sería más plausible, pero dado que el dispositivo es un almacenamiento masivo, tendría que ser algo que interceptara las capas del sistema de archivos en lugar de USB. Un reemplazo no transparente con un dispositivo de almacenamiento en red es probablemente la mejor solución.

Respuestas (1)

No, como se describe, esto no funcionará. Los convertidores FTDI USB-Serial tradicionales solo pueden cumplir la función de dispositivo USB . No pueden alojar su dispositivo USB remoto . Entonces, si bien es posible que pueda usar uno en el extremo cercano, necesitará algo más en el otro extremo.

Sin embargo, hay hosts USB incorporados que podría usar. Todos estos son, en última instancia, microcontroladores: algunos, como Viniculum / Viniculum II de FTDI, se venden específicamente para este tipo de propósito (pero pueden o no satisfacer sus necesidades exactas) y otros son dispositivos de uso más general que definitivamente se pueden personalizar para esta tarea. tal vez algo como un Kinetis KLZ25/KLZ26 (también conocido como Teensy-LC), un STM32 con capacidad de host USB, etc. O incluso un pequeño sistema Linux integrado, aunque eso aumenta la complejidad y el consumo de energía, presenta un estado delicado del sistema de archivos, etc.

Independientemente del hardware, la primera tarea será determinar las operaciones USB exactas que espera el dispositivo remoto . Efectivamente, deberá crear un controlador USB personalizado para un host integrado, o decidir que ya hay uno en Linux que puede usar construyendo el otro extremo de su puente alrededor de un sistema Linux integrado. O inventará algún tipo de esquema de proxy USB y creará un controlador personalizado o un interceptor de controlador en el sistema operativo cercano que actúa como proxy a través de la serie.

Tenga en cuenta que existen cosas como los extensores de USB a través de fibra. Eso no se ajustará estrictamente a su requisito declarado de proxy en serie, pero bien podría satisfacer su necesidad real y le ahorraría mucho tiempo de desarrollo. De hecho, tal vez podría mover toda la computadora a la ubicación remota e interactuar con ella de forma remota a través de una red.

El dispositivo de punto final USB es un dispositivo de memoria, básicamente una unidad flash que se conecta a un puerto USB de una PC. Su tercer párrafo está un poco por encima de mi cabeza, pero mi opinión es que incluso con alguna pieza de hardware apropiada que pueda manejar la operación teórica, sería necesario mucho trabajo de firmware personalizado.
¿Puede simplemente poner una caja de almacenamiento conectada a la red barata en el otro extremo y conectar la memoria USB en ella? La modificación de uno para el que esté disponible una instalación de sistema operativo de código abierto (DD-WRT o lo que sea) para que funcione a través de un puerto serie debería ser sencilla. Pero no debe tratar de presentarlo al lado cercano como un dispositivo de almacenamiento masivo USB, debe usar un paradigma de sistema de archivos de red para hablar con él, o tal vez operaciones de transferencia de archivos explícitas.
No estoy seguro de que eso funcione con la arquitectura del sistema, pero ciertamente es una buena idea dadas las limitaciones. Gracias por su comprensión de este tema.
Es posible que desee publicar el problema real de la aplicación como una nueva pregunta en el superusuario SE. Trate de no restringir las soluciones como lo ha hecho aquí, sino que sea específico acerca de las necesidades y la fuente final de los requisitos.