Kann ich Raspberry Pi als USB-Peripheriegerät verwenden?

44

Der Raspberry Pi verfügt über einen Micro-USB-Anschluss zur Stromversorgung. Meine Frage ist, ob dieser Port nur für Energiezwecke oder auch für Daten verwendet werden kann? Ich möchte meinen Raspberry Pi als USB-Peripheriegerät an einen anderen Computer anschließen können. Ist das über einen Stromanschluss möglich? Wenn nicht, kann dies auf andere Weise erfolgen?

SDsolar
quelle
Ich weiß, diese Frage ist lange geschlossen, aber eine Sache, die Sie tun könnten, wenn Sie wirklich wollten, wäre, ein Arduino mit zwei seriellen Ports zu programmieren, um einfach Nachrichten durchzuleiten. Ein bisschen hackisch, aber Sie sollten in der Lage sein, etwas so zum Laufen zu bringen.
Ryan Kennedy
Die mit dem Compute Module Development Kit gelieferte neue E / A-Karte scheint einen USB-Slave-Anschluss zu haben. Wie kann man sie zum Laufen bringen?
Kozuch
Der Anschluss am Pi ist nur für Stromzwecke vorgesehen, aber über einen Adapter ist es möglich, eine Verbindung zum Pi über eine serielle Verbindung herzustellen , um
Wilf

Antworten:

29

Ich habe mir den Schaltplan angesehen . Die Datenpins für den Micro-USB-Anschluss sind mit nichts verbunden. Daher gibt es keine Möglichkeit, das RPi als externes Gerät bereitzustellen.

Es könnte möglich sein, die Festplatte des RPi zu mounten oder sich mit SSH über das Netzwerk anzumelden.

Die GPIO-Pins enthalten eine Reihe von UART-Datenleitungen, die zum Herstellen einer seriellen Verbindung zum RPi von Ihrem PC aus verwendet werden können.

Bit-Banging-USB

Bit-Banging-USB wurde durchgeführt ( AVR V-USB ). Sie müssten jedoch eine eigene Erweiterungskarte entwerfen, die einen weiteren USB-Anschluss hinzufügt. Es ist denkbar, dass dieser Port das RPi antreibt. Danach müssten Sie einen Treiber schreiben. Viel Glück.

Wenn Sie bereit sind, all diese Probleme zu lösen, lohnt es sich möglicherweise, sich stattdessen einen FTDI-Chip anzusehen . Sie würden dies mit den UART-Pins des RPi verbinden. In Bezug auf die Software würden Sie mit dem Computer so kommunizieren, als wäre es ein serielles Gerät.

Alex Chamberlain
quelle
Außer vielleicht USB mit GPIO neu zu implementieren?
2
Da gibt es keine Hoffnung. Sie können USB nicht bumsen.
Alex Chamberlain
Nach diesem Diagramm habe ich gesucht. Gute Antwort.
Jivings
1
@Alex, Bit-Banging-USB wurde durchgeführt. Ein 40-MHz-PIC kann USB mit niedriger Geschwindigkeit verarbeiten. Vielleicht könnte ein 700MHz ARM normale Geschwindigkeit erreichen?
14.
3
dicks.home.xs4all.nl/avr/usbtiny - ein weiterer USB-Stick für 12 MHz AVR. Beachten Sie, dass dies nur möglich ist, weil Sie in Mikrocontrollern die volle Kontrolle über die Uhr und die Interrupts haben. Sie müssten zumindest RTLinux ausführen, um diese Art von Kontrolle zu erhalten. Auch Sie sollten SPI nicht GPIO verwenden, um dies zu tun.
Alistair Buxton
8

Da die Datenpins des Micro-USB-Anschlusses nicht mit dem USB-PHY des SoC verbunden sind, können Sie diesen Anschluss nicht für Daten verwenden (weder im Host- noch im Slave-Modus).

Es sollte jedoch möglich sein, den USB-Typ-A-Anschluss des Modells A im Slave-Modus zu verwenden.

Einige weitere Details;

Das Modell B verwendet einen SMSC LAN9512 USB 2.0 Hub und einen 10/100-Ethernet-Controller-IC, um mehrere physische USB-Host-Ports über den einzelnen USB-OTG-Port des Broadcom SoC bereitzustellen. (Siehe Schema hier: http://www.raspberrypi.org/wp-content/uploads/2012/04/Raspberry-Pi-Schematics-R1.0.pdf )

Das Vorhandensein dieses Hub-IC verhindert, dass die USB-Ports im Slave-Modus verwendet werden. Da beim Modell A dieser IC jedoch nicht vorhanden ist und stattdessen nur ein einziger USB-Port direkt mit dem OTG-Port des SoC verbunden ist, sollte es möglich sein, ihn per Software für den Slave-Modus zu konfigurieren.

Da das Modell A über einen weiblichen Host-USB-Anschluss verfügt, wird ein HOST-zu-HOST-Konvertierungskabel benötigt.

Weitere Informationen finden Sie in diesem Raspberry Pi-Forenthread: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=15696

Rob_Bishop
quelle
5

Das Modell A kann die Standard-Gadget-Schnittstelle verwenden, da der USB-Anschluss des PI OTG ist. Sie können ihn dann einfach in den Gerätemodus zwingen.

Dies bedeutet jedoch, dass Sie Ethernet und alle anderen USB-Geräte verlieren

Gordon
quelle
5

Bei den Modellen Rasberry PI A / A + / B / B + ist der OTG-Modus aus verschiedenen Gründen deaktiviert:

  • USB-Anschluss mit USB-Hub (Ethernet) belegt,
  • fehlender OTG 5. Pin (geerdet), oder
  • Datenpins sind nicht angeschlossen (Stromanschluss).

Sie benötigen Raspberry PI Zero für OTG oder den sogenannten Gadget-Modus. Der Daten-USB-Anschluss kann für OTG und "Power" verwendet werden. Zum Zeitpunkt dieses Schreibens wurden Seriell und Ethernet getestet, andere sollten jedoch mit angemessenem Aufwand arbeiten (Tastatur, Festplatte, Kamera usw.). Zusammengesetzte Geräte sollten ebenfalls funktionieren. Weitere Infos unter

Es wird erwartet, dass die Arbeit in der rpy-4.4-Version des Kernels zusammengeführt wird, damit die OTG-Funktionalität für einfacheres Hacken über OOTB verfügbar ist.

Der Großteil des Schwertransportes wurde in Github raspberrypi / linux Issue # 1212 durchgeführt .

Myroslav
quelle
Hallo und herzlich willkommen. Danke für deinen Beitrag. Vielleicht möchten Sie auch hier einen Beitrag leisten: raspberrypi.stackexchange.com/questions/38576/…
Ghanima
@ Ghanaima: fertig;) raspberrypi.stackexchange.com/a/40626/39346
Myroslav
Kann ich den Stromanschluss als Client-Gerät und den anderen Anschluss als Host-Anschluss verwenden? Es wäre cool, den Stromanschluss als virtuelles Ethernet für die Verbindung mit dem PC und den anderen Anschluss für die Verbindung von USB-Geräten mit dem Pi zu verwenden.
Allo
Diese Antwort ist verwirrend, zumal die Links keine Belege für die Behauptung liefern, dass der Stromanschluss für Daten verwendet werden kann. Bei den meisten geht es einfach darum, den OTG-Gadget-Modus im Kernel zu implementieren, der mittlerweile Standard ist und nur noch über die Netzbuchse ausgeführt werden kann. Es gibt nur eine Buchse , die für verwendet werden kann sowohl Energie und Daten, nicht zwei.
Goldlöckchen
Ich hatte die Antwort korrigiert. Tatsache ist, dass der Datenport zur Stromversorgung von Raspberry PI Zero und als OTG-Port verwendet werden kann
myroslav
4

Leider funktionieren Stromversorgungsanschlüsse im Allgemeinen nicht so, sodass Sie den Micro-USB-Anschluss nur für die Stromversorgung verwenden können.

Ich kann mir derzeit keine Möglichkeit vorstellen, den Pi als Peripheriegerät zu verwenden. Es gibt jedoch mehrere andere Möglichkeiten, wie Sie auf den Pi zugreifen können, einschließlich SSH, FTP oder Samba-Freigabe.

Wenn Sie näher erläutern, was Sie erreichen möchten, können wir Ihnen die beste Methode empfehlen.

Jivings
quelle
Nur ein hypotetisches Beispiel, ich möchte Raspberry Pi als Soundkarte verwenden. Ich würde natürlich Treiber für beide Seiten schreiben, aber ich muss es irgendwie mit dem PC verbinden.
1
Eine elegante Lösung dafür wäre, Audio durch SSH zu leiten. Natürlich können Sie auch versuchen, das GPIO zu verwenden!
Jivings
1

Ja, Sie können einen USB-Peripherie-Controller mit SPI-Schnittstelle wie MAX3420E verwenden und einen Treiber dafür schreiben, wenn er unter Linux noch nicht unterstützt wird und bestimmte USB-Klassen behandelt, die Sie implementieren möchten.

avra
quelle
1

Seitdem die Frage gestellt wurde, wurde viel Arbeit geleistet. Die Verwendung einiger Rasberry Pi-Modelle als USB-Peripheriegerät (z. B. Massenspeicher, seriell, Ethernet, Tastatur, Maus) ist jetzt möglich. Sehen Sie diesen Kern und diese Anleitung .

Diomidis Spinellis
quelle
-2

Sie können eine einfache Netzwerkverbindung von Ihrem PC zum Raspberry Pi herstellen und mit Pulse Audio Sound über das Netzwerk übertragen. Pulse Audio ist ein Sound Server, der Netzwerktransparenz bietet. So können Sie Audiodateien auf Ihrem PC wiedergeben und über die an Ihren Raspberry Pi angeschlossenen Lautsprecher wiedergeben.

MrBlues
quelle