Czy mogę używać Raspberry Pi jako urządzenia peryferyjnego USB?

44

Raspberry Pi ma port Micro USB do zasilania. Moje pytanie brzmi, czy ten port służy wyłącznie do zasilania, czy może służyć również do przesyłania danych? Chciałbym móc podłączyć Raspberry Pi jako urządzenie peryferyjne USB do innego komputera. Czy jest to możliwe przez port zasilania? Jeśli nie, czy można to zrobić w inny sposób?

SDsolar
źródło
Wiem, że to pytanie jest od dawna zamknięte, ale jedną rzeczą, którą możesz zrobić, jeśli naprawdę chcesz, jest zaprogramowanie Arduino z dwoma portami szeregowymi, aby po prostu przesyłać wiadomości. Trochę zuchwały, ale powinieneś być w stanie uzyskać coś działającego w ten sposób.
Ryan Kennedy
Wydaje się, że nowa płyta IO dostarczana z Compute Module Development Kit ma złącze USB slave ... jak można ją uruchomić?
Kozuch
Port na Pi służy wyłącznie do zasilania, ale za pomocą adaptera można połączyć się z Pi za pomocą połączenia szeregowego, aby uzyskać podstawowy dostęp do Pi
Wilf

Odpowiedzi:

29

Spojrzałem na schemat ; styki danych dla połączenia micro USB nie są do niczego podłączone. Dlatego nie ma sposobu na zamontowanie RPi jako urządzenia zewnętrznego.

Możliwe jest zamontowanie dysku twardego RPi lub zalogowanie się przez sieć za pomocą SSH.

Piny GPIO zawierają zestaw linii danych UART, które można wykorzystać do utworzenia połączenia szeregowego z RPi z komputera.

Bit-bit USB

Wykonano bit-banging USB ( AVR V-USB ), jednak trzeba by zaprojektować własną kartę rozszerzeń, która dodała kolejny port USB. Można sobie wyobrazić, że ten port może zasilać RPi. Po wykonaniu tej czynności musisz napisać jakiś sterownik. Powodzenia.

Jeśli jesteś gotów podjąć się tych wszystkich problemów, warto zamiast tego spojrzeć na układ FTDI . Podłączysz to do pinów UART RPi. Z perspektywy oprogramowania komunikowałbyś się z komputerem tak, jakby to było urządzenie szeregowe.

Alex Chamberlain
źródło
Z wyjątkiem może reimplementacji USB z GPIO?
2
Tam nie ma nadziei. Nie można bit-bang USB.
Alex Chamberlain
Ten schemat był tym, czego szukałem. Niezła odpowiedź.
Jivings
1
@Alex, bit-banging USB zostało zrobione. PIC o częstotliwości 40 MHz może obsługiwać wolne łącze USB. Może ARM 700MHz mógłby osiągnąć normalną prędkość?
finnw
3
dicks.home.xs4all.nl/avr/usbtiny - kolejny uderzony USB dla AVR 12MHz. Pamiętaj, że jest to możliwe tylko dlatego, że w mikrokontrolerach masz pełną kontrolę nad zegarem i przerywasz. Musisz mieć przynajmniej RTLinux, aby uzyskać taką kontrolę. W tym celu należy również używać SPI, a nie GPIO.
Alistair Buxton,
8

Ponieważ piny danych portu micro USB nie są podłączone do PHY USB SoC, nie można używać tego portu do przesyłania danych (w trybie hosta lub podrzędnym).

Powinno być jednak możliwe użycie portu USB typu A w modelu A w trybie podrzędnym.

Kilka dalszych szczegółów;

Model B wykorzystuje koncentrator SMSC LAN9512 USB 2.0 i kontroler Ethernet 10/100 Ethernet w celu zapewnienia wielu fizycznych portów hosta USB z jednego portu USB OTG dostępnego w Broadcom SoC. (Zobacz schemat tutaj: http://www.raspberrypi.org/wp-content/uploads/2012/04/Raspberry-Pi-Schematics-R1.0.pdf )

Obecność tego układu koncentratora uniemożliwia korzystanie z portów USB w trybie podrzędnym. Ponieważ jednak model A nie ma tego układu scalonego, a zamiast tego ma tylko jeden port USB podłączony bezpośrednio do portu OTG SoC, powinno być możliwe skonfigurowanie go do działania w trybie slave za pomocą oprogramowania.

Ponieważ model A ma żeński port USB hosta, potrzebny będzie kabel przejściowy HOST na HOST.

Aby uzyskać więcej informacji, zobacz ten wątek na forum Raspberry Pi: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=15696

Rob_Bishop
źródło
5

Model A będzie mógł używać standardowego interfejsu gadżetów, ponieważ USB na PI to OTG, a następnie można po prostu zmusić go do przejścia w tryb urządzenia.

Ale to oznacza, że ​​tracisz Ethernet i inne USB

Gordon
źródło
5

Modele Rasberry PI A / A + / B / B + mają wyłączony tryb OTG z różnych powodów:

  • Port USB zajęty przez hub USB (ethernet),
  • brak piątego styku OTG (uziemiony), lub
  • piny danych nie są podłączone (port zasilania).

Będziesz potrzebował Raspberry PI Zero dla OTG lub tak zwanego trybu gadżetów. Port danych USB może być używany do OTG i „zasilania”. W chwili pisania tego tekstu przetestowano interfejs szeregowy i Ethernet, ale inne powinny działać z odpowiednią ilością wysiłku (klawiatura, dysk, kamera itp.) Urządzenia kompozytowe również powinny działać. Zobacz więcej informacji na

Oczekuje się, że praca zostanie połączona z wersją jądra rpy-4.4, aby funkcjonalność OTG była dostępna OOTB dla łatwiejszego hakowania.

Większość podnoszenia ciężarów została przeprowadzona w Github raspberrypi / linux Issue # 1212 .

myroslav
źródło
Cześć i witaj. Dziękuję za Twój wkład. Możesz także przyczynić się tutaj: raspberrypi.stackexchange.com/questions/38576/...
Ghanima
@Ghanima: gotowe;) raspberrypi.stackexchange.com/a/40626/39346
myroslav
Czy mogę używać portu zasilania jako urządzenia klienta, a drugiego portu jako portu hosta? Byłoby fajnie użyć portu zasilania jako wirtualnego Ethernetu do połączenia z komputerem, a drugiego portu do podłączenia urządzeń USB do pi.
allo
Ta odpowiedź jest myląca, zwłaszcza że łącza nie dostarczają żadnych dowodów potwierdzających twierdzenie, że gniazdka zasilania można używać do przesyłania danych. Większość z nich dotyczy po prostu implementacji trybu gadżetu OTG w jądrze, który jest teraz standardem i można to zrobić, ale nie przez gniazdo zasilania. Jest tylko jedno gniazdo, które może być używane zarówno do zasilania, jak i danych, a nie dwa.
złotowłosy
Poprawiłem odpowiedź. Faktem jest, że port danych może być używany do zasilania Raspberry PI Zero i jako port OTG
myroslav
4

Niestety porty zasilające zwykle nie działają w ten sposób, więc nie można użyć portu micro USB do celów innych niż zasilanie.

Nie mogę obecnie wymyślić sposobu, w jaki można używać Pi jako urządzenia peryferyjnego, jednak istnieje kilka innych sposobów dostępu do Pi, w tym SSH, FTP lub samba.

Jeśli zastanawiasz się, co chcesz osiągnąć, możemy doradzić najlepszą metodę.

Jivings
źródło
Tylko hipotetyczny przykład, chciałbym użyć Raspberry Pi jako karty dźwiękowej. Oczywiście napisałbym sterowniki dla obu końców, ale muszę jakoś podłączyć go do komputera.
1
Eleganckie rozwiązanie polegałoby na przepuszczeniu dźwięku przez SSH. Oczywiście możesz także spróbować użyć GPIO!
Jivings
2

Tak, możesz użyć Modelu A jako urządzenia podrzędnego USB:

http://www.raspberrypi.org/forums/viewtopic.php?f=98&t=74098

Chociaż jest to dość ograniczone tylko do użycia jako urządzenia pamięci masowej (karty SD) - brak dostępu do GPIO, wyświetlania, a nawet użycia procesora ARM.

Mike Redrobe
źródło
1

Tak, możesz, jeśli używasz kontrolera peryferyjnego USB z interfejsem SPI, takiego jak MAX3420E, i napisz do niego sterownik, jeśli nie jest jeszcze obsługiwany w systemie Linux i obsługuj określoną klasę USB, którą chcesz zaimplementować.

avra
źródło
1

Od czasu zadania pytania wykonano wiele pracy. Możliwe jest teraz używanie niektórych modeli Rasberry Pi jako urządzenia peryferyjnego USB (np. Pamięć masowa, port szeregowy, Ethernet, klawiatura, mysz). Zobacz tę treść i przewodnik .

Diomidis Spinellis
źródło
-2

Możesz wykonać proste połączenie sieciowe z komputera do Raspberry Pi i użyć Pulse Audio do przesyłania dźwięku przez sieć. Pulse Audio to serwer dźwięku, który oferuje przezroczystość sieci. Możesz więc odtwarzać pliki dźwiękowe na komputerze i słyszeć je za pomocą głośników podłączonych do Raspberry Pi.

MrBlues
źródło