Pi jako klient USB

16

Szukam sposobu, aby Pi działał jako klient USB, a maskarada jako dysk flash.

Widziałem wiele sugestii, jednak większość z nich jest już stara (ponad 1 rok) i niejasna / niepełna - chciałbym prosić o odświeżenie tego, co zadziałało, a co nie itd.

Istnieje również wiele sugestii dotyczących używania Pi jako urządzenia typu NAS. To nie zadziała dla moich celów, ponieważ mam „głupi” host, który akceptuje tylko dyski flash (i chcę użyć Pi, aby uczynić go „inteligentniejszym”)

podsumowanie sugestii, które już widziałem:

  1. emulować klienta USB za pomocą pinów GPIO
  2. emuluj połączenie szeregowe przez GPIO, a następnie użyj istniejących kabli, aby przejść z portu szeregowego na USB
  3. używając modelu A, użyj oprogramowania, aby przekonać pi do działania jak klient
  4. za pomocą kabla USB host-to-host (nie jestem pewien, czy widziałem takie, które obsługują linux ..)

czy ktoś mógłby bardziej szczegółowo wyjaśnić niektóre z proponowanych rozwiązań?

PS - Nie potrzebuję ani nie oczekuję wysokiej wydajności z tej konfiguracji, szybkości USB 1.1 byłyby wystarczające.

edytuj: Byłbym również zainteresowany wszelkimi alternatywami, które mogłyby zapewnić tę funkcjonalność, jednak nie widziałem jeszcze żadnych „inteligentnych” pendrive'ów USB ani wariantów Android-on-a-stick.

użytkownik 2813274
źródło
1
Zdecydowanie istnieją kable obsługiwane przez system Linux; to część celu usbnetkierowcy. Mają stronę z kilkoma wzmiankami; wygląda na nieaktualny, więc może być więcej. Zanim cokolwiek kupisz, sprawdź.
goldilocks
Kilka uwag dotyczących modelu A na ten temat tutaj
złotowłosa
Możesz również znaleźć takie projekty, jak usbip: stackoverflow.com/a/19689740/544721 lub linux-usb.org/gadget przydatne w asemblerze.
Grzegorz Wierzowiecki

Odpowiedzi:

6

Miałbyś szczęście, gdyby porty USB na PI były OTG, a nie USB Host.

Może powinieneś rozważyć inne urządzenie, ponieważ żadne z sugerowanych przez Ciebie rozwiązań może nie być praktyczne:

emulować klienta USB za pomocą pinów GPIO: Teoretycznie można emulować USB za pomocą pinowania bitowego. Może to spowodować dość duże obciążenie programowe w zakresie rozwoju oprogramowania. Rozwiązanie będzie stosunkowo trudne do wdrożenia. Teoretycznie jest to możliwe, ale musisz przeprowadzić analizę kosztów i korzyści.

emuluj połączenie szeregowe przez GPIO, a następnie użyj istniejących kabli, aby przejść z portu szeregowego na USB: To rozwiązanie nie spełni twojego zadania, ponieważ Ty (raczej Twój DUMB Host) chciałbyś emulacji „Mass Storage Device” (typ urządzenia 0x08), a nie Emulacja urządzenia „Komunikacja i kontrola CDC” (typ urządzenia 0x02).

używając modelu A, użyj oprogramowania, aby przekonać pi do działania jak klient: niejasne, co zostało zasugerowane

za pomocą kabla USB host-host (nie jestem pewien, czy widziałem takie, które obsługują system Linux). W takim przypadku oba urządzenia zobaczą urządzenie pamięci masowej podłączone do kontrolera hosta. Dzięki tej metodzie Twój Raspberry pi pojawi się jako urządzenie pamięci masowej eksportujące pamięć opartą na karcie SD. Dzięki temu rozwiązaniu możesz rozważyć, jaki typ pamięci chcesz wyeksportować do hosta DUMB. Twój host DUMB może nie eksportować się jako urządzenie pamięci masowej. W tym momencie będziesz mieć inne opcje USB niż Raspberry Pi.

Chetan Bhargava
źródło
Jakie inne urządzenia poleciłbyś? (Mam nadzieję na coś z Wi-Fi i możliwością uruchomienia Dropbox lub synchronizacji
Bittorent
Twoje potrzeby dotyczące obsługi hosta DUMB są dość niejasne. Wymagana jest większa przejrzystość.
Chetan Bhargava,
2
OK, dzisiaj mam w samochodzie dysk flash, który odtwarza pliki mp3 - za każdym razem, gdy chcę zmienić na nim muzykę, muszę fizycznie przenieść dysk flash - chciałbym po prostu zsynchronizować urządzenie z czymś na pulpicie i przedstawić interfejs USB do samochodu - również port USB w modelu A Pi to układ OTG (i w modelu B, ale port Ethernet wyłącza tę funkcjonalność) - źródło
2813274
Przejdźmy do czatu (piekarnia), abyśmy nie zaśmiecali posta komentarzami :-)
Chetan Bhargava,
2

Istnieje teraz wariant Pi zero, który może robić to, co chciałem, a Adafruit przygotował dla niego tutorial:

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

Oficjalna nazwa tego systemu to „gadżet USB” i wymaga jedynie kabla OTG.

Nie byłem w stanie tego przetestować, ponieważ Pi zero są wszędzie niedostępne, ale myślę, że jest to obecnie najlepsza droga

użytkownik 2813274
źródło