Pi como cliente USB

16

Estoy buscando una manera de que el Pi actúe como un cliente USB y se haga pasar por una unidad flash.

He visto muchas sugerencias, sin embargo, la mayoría de ellas son antiguas (1+ años) y vagas / incompletas. Me gustaría pedir una actualización sobre lo que funcionó, lo que no funcionó, etc.

También hay numerosas sugerencias para usar el Pi como dispositivo de tipo NAS. Esto no funcionará para mis propósitos, ya que tengo un host "tonto" que solo puede aceptar unidades flash (y quiero usar el Pi para hacerlo "más inteligente")

resumen de sugerencias que ya he visto:

  1. emular un cliente USB a través de los pines GPIO
  2. emule una conexión en serie a través de GPIO, luego use los cables existentes para pasar de serie a USB
  3. usando un modelo A, use software para convencer al pi de que actúe como un cliente
  4. usando un cable USB de host a host (no estoy seguro de haber visto alguno que admita Linux ...)

¿Alguien podría explicar más en profundidad algunas de esas soluciones propuestas?

PD: no necesito ni espero un alto rendimiento de esta configuración, las velocidades de USB 1.1 serían suficientes.

editar: También me interesaría cualquier alternativa que pudiera proporcionar esta funcionalidad, sin embargo, todavía no he visto ninguna memoria USB "inteligente" o variantes de Android en un dispositivo que puedan.

usuario2813274
fuente
1
Definitivamente hay cables que admite Linux; Esto es parte del objetivo con el usbnetconductor. Tienen una página que menciona algunos; parece anticuado, por lo que puede haber más ahora. Antes de comprar algo, consulte.
Ricitos de oro
Algunas observaciones específicas sobre el modelo A sobre esto aquí
goldilocks
También puede encontrar proyectos como usbip: stackoverflow.com/a/19689740/544721 o linux-usb.org/gadget útiles en la solución de ensamblaje.
Grzegorz Wierzowiecki

Respuestas:

6

Tendría suerte si los puertos USB en el PI fueran OTG y no USB Host.

Tal vez debería considerar algún otro dispositivo, ya que ninguna de las soluciones que le han sugerido puede ser práctica:

emular un cliente USB a través de los pines GPIO: en teoría, es posible emular un USB mediante un golpe de bits en los pines. Esto puede causar una sobrecarga de software bastante grande en términos de desarrollo de software. La solución será relativamente difícil de implementar. En teoría es posible, pero debe hacer el análisis de costo / beneficio.

emule una conexión en serie a través de GPIO, luego use los cables existentes para pasar de serie a USB: esta solución no servirá a su propósito ya que usted (más bien su DUMB Host) querría una emulación de "Dispositivo de almacenamiento masivo" (tipo de dispositivo 0x08) y no Emulación de dispositivos "Comunicaciones y control de CDC" (tipo de dispositivo 0x02).

usando un modelo A, use software para convencer al pi de que actúe como un cliente: no está claro lo que le han sugerido

usando un cable USB de host a host (no estoy seguro de haber visto alguno que admita Linux ...): en este caso, ambos dispositivos verán un dispositivo de almacenamiento masivo conectado a su controlador de host. Con este método, su Raspberry pi se mostrará como un dispositivo de almacenamiento masivo que exporta el almacenamiento basado en su tarjeta SD. Con esta solución, es posible que desee considerar qué tipo de almacenamiento le gustaría exportar al host DUMB. Su host DUMB no puede exportarse a sí mismo como un dispositivo de almacenamiento masivo. En este punto, tendrá otras opciones de USB que no sean Raspberry Pi.

Chetan Bhargava
fuente
¿Qué tipo de otros dispositivos recomendarías? (Espero algo con wifi y la capacidad de ejecutar dropbox o sincronización bittorent o algo similar)
user2813274
Sus necesidades con respecto al servicio del host DUMB no son claras. Se requiere más claridad.
Chetan Bhargava
2
De acuerdo, hoy tengo una unidad flash en mi automóvil que reproduce mp3; cada vez que quiero cambiar la música, tengo que mover físicamente la unidad flash, me gustaría sincronizar un dispositivo con algo en mi escritorio y presentar una interfaz USB para el automóvil - también, el puerto USB en el modelo A Pi es un chip OTG (y en el modelo B, pero el puerto ethernet deshabilita esa funcionalidad) - fuente
usuario2813274
Pasemos al chat (Bakery) para que no abarrotemos la publicación con comentarios :-)
Chetan Bhargava
2

Ahora hay una variante Pi cero, que puede hacer lo que quería, y Adafruit hizo un tutorial para ello:

https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/overview

El nombre oficial para esto parece ser "sistema de dispositivo usb", y simplemente requiere un cable OTG.

No he podido probar esto, ya que los Pi zero están agotados en casi todas partes, pero creo que esta es actualmente la mejor ruta

usuario2813274
fuente