Pi como um cliente USB

16

Estou procurando uma maneira de o Pi atuar como um cliente USB e se disfarçar como uma unidade flash.

Tenho visto muitas sugestões, no entanto, a maioria delas já tem mais de um ano e é vaga / incompleta - eu gostaria de pedir uma atualização sobre o que funcionou, o que não funcionou etc.

Também existem inúmeras sugestões para usar o Pi como um dispositivo do tipo NAS. Isso não funcionará para meus propósitos, pois tenho um host "burro" que só pode aceitar drives flash (e quero usar o Pi para torná-lo "mais inteligente")

resumo das sugestões que eu já vi:

  1. emular um cliente USB através dos pinos GPIO
  2. emule uma conexão serial via GPIO e use os cabos existentes para passar de serial para USB
  3. usando um modelo A, use o software para convencer o pi a agir como um cliente
  4. usando um cabo USB host a host (não tenho certeza de ter visto algum que suporte linux ..)

alguém poderia explicar mais profundamente algumas dessas soluções propostas?

PS - Não preciso nem espero alto desempenho dessa configuração; as velocidades do USB 1.1 seriam suficientes.

edit: Eu também estaria interessado em quaisquer alternativas que pudessem fornecer essa funcionalidade, mas ainda não vi nenhum pendrive "inteligente" ou variantes do Android-on-a-stick que possam.

user2813274
fonte
1
Definitivamente existem cabos que o Linux suporta; isso faz parte do objetivo do usbnetmotorista. Eles têm uma página mencionando alguns; parece desatualizado, portanto pode haver mais agora. Antes de comprar qualquer coisa, verifique.
goldilocks
Algumas observações específicas para o modelo A sobre isso aqui
goldilocks
Você também pode encontrar projetos como usbip: stackoverflow.com/a/19689740/544721 ou linux-usb.org/gadget úteis na solução de montagem.
Grzegorz Wierzowiecki

Respostas:

6

Você teria sorte se as portas USB no PI fossem OTG e não USB Host.

Talvez você deva considerar outro dispositivo, pois nenhuma das soluções sugeridas pode ser prática:

emule um cliente USB através dos pinos GPIO: Em teoria, é possível emular USB usando os pinos batendo. Isso pode causar uma sobrecarga de software bastante grande em termos de desenvolvimento de software. A solução será relativamente difícil de implementar. Em teoria, é possível, mas você precisa fazer a análise de custo / benefício.

emule uma conexão serial via GPIO e use os cabos existentes para passar de serial para USB: Esta solução não servirá ao seu objetivo, pois você (em vez de seu host DUMB) deseja uma emulação de "Dispositivo de armazenamento em massa" (tipo de dispositivo 0x08) e não uma Emulação de dispositivo "Communications and CDC Control" (tipo de dispositivo 0x02).

usando um modelo A, use o software para convencer o pi a agir como um cliente: não está claro o que foi sugerido

usando um cabo USB host a host (não tenho certeza de ter visto algum que suporte linux ..): Nesse caso, os dois dispositivos verão um dispositivo de armazenamento em massa conectado ao controlador host. Usando esse método, seu Raspberry pi aparecerá como um dispositivo de armazenamento em massa que exporta o armazenamento baseado em cartão SD. Com esta solução, convém considerar que tipo de armazenamento você gostaria de exportar para o host DUMB. Seu host DUMB não pode ser exportado como um dispositivo de armazenamento em massa. Nesse ponto, você terá outras opções USB diferentes do Raspberry Pi.

Chetan Bhargava
fonte
Que tipo de outros dispositivos você recomendaria? (Eu estou esperando por algo com wifi e a capacidade de executar dropbox ou sincronizar bittorent ou algo similar)
user2813274
Suas necessidades em relação à manutenção do host DUMB não são claras. É necessária mais clareza.
Chetan Bhargava
2
OK, hoje eu tenho um pen drive no meu carro que toca mp3 - sempre que quero mudar a música, preciso mover fisicamente o pen drive - eu gostaria de sincronizar o dispositivo com algo na minha área de trabalho e apresentar uma interface USB para o carro - também, a porta USB no modelo A Pi é um chip OTG (e no modelo B, mas a porta ethernet desativa essa funcionalidade) - fonte
user2813274
Vamos movimento para bate-papo (padaria) para que não enchem o post com comentários :-)
Chetan Bhargava
2

Agora existe uma variante Pi zero, que pode fazer o que eu queria, e a Adafruit fez um tutorial para isso:

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

O nome oficial para isso parece ser "sistema de dispositivo usb" e simplesmente requer um cabo OTG.

Não pude testar isso, pois os zero de Pi estão praticamente esgotados em todos os lugares, mas acho que atualmente é a melhor rota

user2813274
fonte