¿Es posible la transferencia de datos de USB a USB entre dos sistemas operativos Linux?

26

Quiero crear un sistema de transferencia de datos de USB a USB en Linux (preferiblemente Ubuntu). Para esto no quiero usar ningún hardware externo o conmutador ( excepto este cable ). Será como montar una unidad USB en un sistema, pero en este escenario uno de los sistemas Linux se montará en el otro. ¿Cómo puedo crear esto?

¿Hay algún módulo de kernel disponible, dado que mi experiencia con la programación del kernel es muy básica?

the_Strider
fuente
66
"Para esto no quiero usar ningún hardware externo o conmutador". No puede hacer esto en ningún período del sistema, si quiere decir que desea usar un cable USB normal para la conexión. USB no es una relación simétrica. De hecho, puede dañar físicamente cualquier máquina conectándola de esta manera, ya que hay voltaje involucrado.
Ricitos
2
Sin embargo, puede usar un cable de host a host especial, en cuyo caso, sí, hay controladores de kernel, por lo que si va a comprar uno, asegúrese de verificar si hay controladores para ese cable en particular.
Ricitos
44
Eso definitivamente no funcionará, y es el tipo de cable que puede freír su computadora si la conecta directamente a otra computadora.
zhongfu
2
@Thorongil No, eso no es lo que quiero decir. Parece que no hay ninguno en ese sitio de Amazon que pueda encontrar, son cosas inusuales. Aquí hay uno . No confunda esto con un cable OTG ("sobre la marcha"), que son mucho más comunes. Básicamente, esto simplemente no vale la pena: tenga en cuenta que es un cable 2.0, lo que significa que tendría transferencias más rápidas usando un cable de Ethernet si ambos tienen Gigabit Ethernet (y podría usar un software normal).
Ricitos
2
acabo de hacer redes ... mis computadoras, así que sé que ya lo tengo ... un LAN-over-USB a LAN-over-USB sería lo que buscaría
Skaperen

Respuestas:

24

Si esto es posible, pero es no es posible cortando dos cables USB con conector USB-A (lo que normalmente van en el USB de la placa base) y cruzan la conexión de los cables de datos. Si conecta las líneas de alimentación USB en un cable de fabricación propia, es probable que termine friendo su chip de manejo USB incorporado . ¡No intentes esto en casa!

En la mayoría de las placas de computadora, los chips que manejan USB son solo host. No solo eso, sino que también maneja gran parte de la comunicación de bajo nivel para acelerar las cosas y reducir la carga en la CPU. No es como si pudieras programar tu computadora para que maneje los pines en el puerto USB para actuar como si no fuera un host. Los dispositivos capaces, a nivel de chip, de cambiar entre actuar como un host y conectarse a un host son pocos, ya que esto requiere un chip mucho más costoso¹. Esto es, por ejemplo, por qué los dispositivos inteligentes como mi teléfono inteligente, mi GPS y mi libro electrónico, aunque todos ejecutan Linux o algo similar, no me permiten usar la sshcomunicación cuando estoy conectado a través de un cable USB normal.

Esos dispositivos entran en un modo tonto cuando están conectados, donde el host (mi sistema de escritorio) puede usar su almacenamiento como un disco USB. Después de desconectar el dispositivo, utiliza la misma interfaz que un host para acceder a los datos (aunque no se requiere conexión por cable, esto ocurre internamente). Con ese tipo de dispositivos, incluso si Linux se ejecuta en ambos, no hay comunicación entre los sistemas, es decir, los Linux . Esto es independiente de un cable micro o mini USB normal que los conecta a mi escritorio.

Entre dos PC de escritorio, lo anterior es normalmente imposible de hacer, ya que requeriría un cable USB-A a USB-A, lo cual no es común (ya que de todos modos no funcionaría con los chips normales que controlan las conexiones).

Cualquier solución que haga USB a USB con dos conectores USB-A que he visto se basa en un cable que tiene algunos elementos electrónicos en el medio. (al igual que un USB → Serie conectado a un cable Serie → USB, pero todo en una sola pieza). Normalmente, estos requieren que los controladores realicen la transferencia, aunque es posible que pueda usar UUCP o alguna otra cosa a través de dicho cable, como lo haría con un puerto serie "normal". Probablemente esto requiera inetd y la configuración adecuada para iniciar sesión en la otra computadora también.

¹ El único dispositivo que tengo que se puede cambiar de software de esta manera es una placa Arduino con exactamente un chip tan especial. Solo este chip hizo que la placa fuera dos veces más cara que una placa Arduino normal.

Anthon
fuente
"no me permite usar sshpara comunicarme cuando estoy conectado a través de un cable USB normal" Puedo estar malinterpretándote, pero puedo ssh en mi iPhone con jailbreak
Cole Johnson
@ColeJohnson No estoy familiarizado con el iphone. ¿Eso le permite ver la memoria interna como una unidad USB en cualquier computadora host con USB? Si puede, debe ejecutar una emulación completa del lado no host. Si no puede, entonces probablemente requiera un programa dedicado para cargar datos en el teléfono.
Anthon
Si instala opensshen el dispositivo, puede hacerlo ssh(a través de Wi-Fi), y si instala afc2(Apple File Conduit) en el dispositivo, debería poder explorar el sistema de archivos a través de USB (sin él, está "encarcelado" "a /var/mobile)
Cole Johnson
1
Todo esto está bien, excepto lo de los teléfonos. El hecho de que muchos dispositivos restrinjan lo que se puede hacer no niega el hecho de que los chips USB utilizados en todos, excepto un puñado de dispositivos, pueden ejecutarse en modo cliente, algunos también pueden ejecutarse en modo host.
Caleb
6

Sí, USB 3.0 hace posible la transferencia de datos full duplex, con cableado 3.0. Las especificaciones están en la sección 5.5.2 de las especificaciones USB. El enlace a esas especificaciones se proporciona anteriormente en otra respuesta. http://www.gaw.ru/pdf/interface/usb/USB%203%200_english.pdf

Los cables son cada vez más fáciles de encontrar: se pueden comprar en Amazon, por ejemplo, por menos de $ 8.00. asegúrese de comprar TRANSFERENCIA DE DATOS, cables macho A a macho A. Las versiones más nuevas de Linux admiten la transferencia.

Espero que eso ayude a alguien. Busqué la respuesta durante bastante tiempo.

Wayne Wright
fuente
¿Se necesita alguna configuración para que este cable funcione? ¿será montaje o simulación de red?
mpapis
interesante, tengo un cable usb 3.0 simple (solo extremos macho y un cable simple entre ellos), y me pregunto si no freiré mi puerto de computadora portátil usb 2.0 al conectarlo a mi puerto usb 3.0 de escritorio. Me conecté durante unos segundos y no sucedió nada en dmesg, así que me desconecté rápidamente, ya que generalmente hago algo que no funciona.
Acuario Power
2
La sección 5.5.2 "Conjunto de cable USB 3.0 estándar-A a USB 3.0 estándar-A" de las especificaciones solo define el cable y dice "el conjunto de cable se define para la depuración del sistema operativo y otras aplicaciones de conexión de host a host". ¿Estas seguro que USB3-un-a un cable no sólo permite la depuración ( kernel.org/doc/html/v4.16/driver-api/usb/usb3-debug-port.html - necesita una capacidad de depuración xHCI DBC, que es opcional para controladores de host xHCI usb3), pero también transferencia de archivos? Para la transferencia de archivos hay cables activos (con el controlador en el medio), algunos listados en: ghisler.com/cables
osgx
Nunca he visto una configuración funcional con esto. ¿Quieres compartir algún detalle?
dirkt
3

podría usar un dispositivo puente USB que esté disponible en un factor de forma de cable como este ... http://www.usbgear.com/link/ (advertencia de reproducción automática de video)

Skaperen
fuente
3
no no conecte directamente a los puertos USB
Skaperen
esto puede ser específico para Windows
Skaperen
3
Sería muy cauteloso con el bit "no se necesita controlador". AFAIK, de hecho, necesitan conductores. linux-usb.org/usbnet/#t-host
goldilocks
@goldilocks, sí, esa placa probablemente tenga algún tipo de código de Windows ... el usuario no necesita instalar un controlador desde un CD
Skaperen
1

Es técnicamente posible si uno de los dispositivos admite USB OTG , en el que un puerto puede actuar como maestro o esclavo. Puede configurar el dispositivo OTG como esclavo y dejar que actúe como una unidad de disco duro USB (para que ni siquiera necesite un controlador especial en el maestro).

Esto es lo que hacen muchos teléfonos y algunas cámaras. Si los conecta a una impresora, se convierten en maestros; si se conectan a una PC se convierten en esclavos.

Lesto
fuente
1
USB OTG simplemente cambia entre el host USB y el modo de dispositivo USB. Si bien es común para los teléfonos, no conozco ninguna PC con esta función. ¿Estas PC realmente existen?
Lekensteyn
@Lekensteyn: no es infrecuente para las tabletas, y algunas tabletas realmente son PC completas. Sin embargo, es probable que haya una alta correlación entre los puertos USB de solo host y la PC completa.
Ben Voigt
@lekensteyn editó la respuesta como solo uno de los dos dispositivos, no es importante si el remitente o el receptor. Todavía me falta otg en el lado de la PC, creo. Es una pena.
Lesto
Creo que esto también se llama Datos de doble rol . Algunas placas base más nuevas son compatibles con esta función; consulte, por ejemplo, esta página . Está documentado en la hoja de datos del conjunto de chips, pero necesariamente está habilitado en todas las placas base.
Luciano
0

La forma en que lo haría es usar 2 cables serie USB y una conexión nula entre ellos. Luego puede usar xmodem, zmodem, kermit, etc. para transferir archivos, o usar ppp o slip para una red entre dos máquinas. Pasado de moda pero funcionará.

Thad

Thad
fuente
1
Con "cables serie USB", ¿se refiere a cables que se convierten de USB a algún conector serie y estándar como RS232 sobre DE-9? Entonces, ¿son básicamente dos convertidores y un cable para la comunicación en serie? Además, hubiera sido bueno tener un poco más de información sobre cómo usar estos protocolos o dónde encontrar una buena ayuda sobre ellos.
phk
phk es correcto, explicará qué es una conexión nula. Una respuesta será independiente. Además, utilice "usted" en lugar de "u", una vez más, una respuesta debe ser un ejemplo autónomo, no una publicación en el foro
grochmal
Esto tomaría su velocidad de transferencia USB 3 (5-10 Gbps) y la reduciría a unos 0.001 Gbps, aproximadamente 1000 veces más lenta que la Gigabit Ethernet estándar. Apenas vale la pena el esfuerzo! Especialmente si, como el OP, está buscando compartir discos a través de la conexión.
Malvineous