Pi als USB-Client

16

Ich suche nach einer Möglichkeit, den Pi als USB-Client und als Flash-Laufwerk zu maskieren.

Ich habe viele Vorschläge gesehen, aber die meisten davon sind mittlerweile alt (1+ Jahre) und vage / unvollständig. Ich möchte um eine Erneuerung bitten, was funktioniert hat, was nicht usw.

Es gibt auch zahlreiche Vorschläge, den Pi stattdessen als NAS-Gerät zu verwenden. Dies wird für meine Zwecke nicht funktionieren, da ich einen "dummen" Host habe, der nur Flash-Laufwerke akzeptieren kann (und ich möchte den Pi verwenden, um ihn "smarter" zu machen).

Zusammenfassung der Vorschläge, die ich bereits gesehen habe:

  1. Emulieren Sie einen USB-Client über die GPIO-Pins
  2. emulieren Sie eine serielle Verbindung über GPIO und verwenden Sie dann vorhandene Kabel, um von seriell zu USB zu wechseln
  3. Verwenden Sie mithilfe eines Modells A eine Software, um das Pi davon zu überzeugen, sich wie ein Client zu verhalten
  4. Verwenden eines Host-zu-Host-USB-Kabels (ich bin mir nicht sicher, ob Linux unterstützt wird.)

Kann jemand einige dieser Lösungsvorschläge genauer erläutern?

PS - Ich brauche und erwarte keine hohe Leistung für diese Konfiguration, USB 1.1-Geschwindigkeiten wären ausreichend.

edit: Ich wäre auch an Alternativen interessiert, die diese Funktionalität bieten könnten, aber ich habe noch keine "intelligenten" USB-Sticks oder Android-on-a-Stick-Varianten gesehen, die dies können.

user2813274
quelle
1
Es gibt definitiv Kabel, die Linux unterstützt; Dies ist Teil des Ziels mit dem usbnetFahrer. Sie haben eine Seite , auf der einige erwähnt werden; es sieht veraltet aus, also kann es jetzt mehr geben. Bevor Sie etwas kaufen, schauen Sie sich um.
Goldlöckchen
Einige Anmerkungen zu Modell A dazu hier
Goldlöckchen
: Sie können auch solche Projekte wie usbip finden stackoverflow.com/a/19689740/544721 oder linux-usb.org/gadget nützlich bei der Montage Lösung.
Grzegorz Wierzowiecki

Antworten:

6

Sie hätten Glück, wenn die USB-Anschlüsse am PI OTG und nicht USB Host wären .

Vielleicht sollten Sie ein anderes Gerät in Betracht ziehen, da keine der vorgeschlagenen Lösungen praktisch sein kann:

Einen USB-Client über die GPIO-Pins emulieren: Theoretisch ist es möglich, USB durch Bit-Banging der Pins zu emulieren. Dies kann einen ziemlich großen Software-Overhead in Bezug auf die Softwareentwicklung verursachen. Die Lösung wird relativ schwer zu implementieren sein. Theoretisch ist dies möglich, Sie müssen jedoch die Kosten-Nutzen-Analyse durchführen.

Emulieren Sie eine serielle Verbindung über GPIO, und verwenden Sie dann vorhandene Kabel, um von seriell zu USB zu wechseln : Diese Lösung erfüllt nicht Ihren Zweck, da Sie (stattdessen Ihr DUMB-Host) eine "Massenspeichergerät" -Emulation (Gerätetyp 0x08) und nicht eine Emulation wünschen Geräteemulation "Communications and CDC Control" (Gerätetyp 0x02).

Verwenden Sie mithilfe eines Modells A eine Software, um das Pi davon zu überzeugen, sich wie ein Kunde zu verhalten : Unklar, was Ihnen vorgeschlagen wurde

Verwenden eines Host-zu-Host-USB-Kabels (nicht sicher, ob Linux unterstützt wird): In diesem Fall wird auf beiden Geräten ein Massenspeichergerät angezeigt, das an den Host-Controller angeschlossen ist. Mit dieser Methode wird Ihr Raspberry pi als Massenspeichergerät angezeigt, das Ihren SD-Speicherkarten-basierten Speicher exportiert. Mit dieser Lösung möchten Sie möglicherweise überlegen, welche Art von Speicher Sie auf den DUMB-Host exportieren möchten. Ihr DUMB-Host exportiert sich möglicherweise nicht selbst als Massenspeichergerät. Zu diesem Zeitpunkt haben Sie andere USB-Optionen als Raspberry Pi.

Chetan Bhargava
quelle
Welche anderen Geräte würden Sie empfehlen? (Ich hoffe auf etwas mit WiFi und die Fähigkeit, Dropbox oder bittorent Sync oder etwas ähnliches
auszuführen
Ihre Bedürfnisse bezüglich der Wartung des DUMB-Hosts sind ziemlich unklar. Mehr Klarheit ist erforderlich.
Chetan Bhargava
2
OK, heute habe ich ein Flash-Laufwerk in meinem Auto, das MP3s wiedergibt - wenn ich die Musik darauf ändern möchte, muss ich das Flash-Laufwerk physisch bewegen - ich möchte einfach ein Gerät mit etwas auf meinem Desktop synchronisieren und präsentieren eine USB-Schnittstelle für das Auto - auch der USB-Anschluss am Modell A Pi ist ein OTG-Chip (und am Modell B, aber der Ethernet-Anschluss deaktiviert diese Funktionalität) - Quelle
Benutzer2813274
Gehen wir zum Chat (Bäckerei), damit wir den Beitrag nicht mit Kommentaren überladen :-)
Chetan Bhargava
2

Es gibt jetzt eine Pi-Zero-Variante, die machen kann, was ich wollte, und Adafruit hat ein Tutorial dafür erstellt:

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

Der offizielle Name hierfür scheint "USB-Gadget-System" zu sein und erfordert lediglich ein OTG-Kabel.

Ich konnte dies nicht testen, da Pi-Zero-Modelle fast überall ausverkauft sind, aber ich denke, dass dies derzeit die beste Route ist

user2813274
quelle