Spraw, aby komputer działał jak wirtualne urządzenie USB dla innych urządzeń

18

Niektóre aplikacje symulują wirtualny napęd USB lub CD Rom, tak jakby napęd USB był podłączony do komputera.

Czy jest jakaś konfiguracja lub aplikacja zapewniająca wirtualny dysk USB, nie dla samego systemu operacyjnego, ale dla innych urządzeń, które akceptują dysk USB, przez port USB.

Będę więc miał wirtualny dysk twardy (np. *.vdiPlik) w komputerze, który jest podłączony przez gniazdo USB jako dysk USB do innego sprzętu (np. Telefonu komórkowego lub laptopa).

użytkownik62511
źródło

Odpowiedzi:

12

Konieczne będzie dodanie do komputera urządzenia USB / kontrolera urządzeń peryferyjnych, w przeciwieństwie do kontrolera hosta USB, z którym zwykle są dostarczane.

Coś takiego: https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html

Niestety musisz znaleźć sposób, aby podłączyć go do płyty głównej. Technicznie można to zrobić. Praktycznie trzeba będzie przeprojektować płytę główną, aby ją uwzględnić. Możesz mieć szczęście znaleźć magistralę SPI lub I2C odsłoniętą gdzieś na płycie głównej, aby umożliwić jej dodanie, ale zwykle są one podłączone bezpośrednio do tego, do czego są używane, chyba że używasz płyty deweloperskiej lub pojedynczego komputer pokładowy z odsłoniętym GPIO i innymi portami, takimi jak Raspberry Pi.

Inną opcją byłby kontroler USB On-the-Go. Płyty główne zaprojektowane dla urządzeń wbudowanych i przenośnych mają zwykle kontroler USB OTG (On-the-go), który może działać jako kontroler hosta lub urządzenia. Na przykład wyżej wspomniany Raspberry Pi ma kontroler On-the-Go, ale we wszystkich modelach oprócz Pi Zero, który jest ponownie podłączony do portu hosta lub wbudowanego koncentratora USB, uniemożliwiając korzystanie z funkcji urządzenia USB. BeagleBone Black ma port OTG.

To jednak nie wszystko - kiedy już dostaniesz sprzęt, będziesz potrzebować oprogramowania. Linux ma kilka przydatnych sterowników gadżetu USB jądra („gadżet USB” to inny termin określający urządzenie peryferyjne / urządzenie USB), takie jak g_serial i g_ethernet, które pozwalają podłączyć urządzenie do innego komputera i być widoczne jako urządzenie szeregowe lub Ethernet-przez-USB (istnieją inne sposoby na ujawnienie urządzenia jako pamięci masowej, które pozwalają na użycie pliku jako urządzenia blokowego i udostępnienie komputera jako gadżetu pamięci masowej). BeagleBone Black zazwyczaj ma tę funkcję domyślnie włączoną, więc możesz po prostu podłączyć ją do komputera przez USB i zobaczyć jako urządzenie sieciowe - i uważam, że pojawia się również jako urządzenie pamięci masowej za pomocą sterownika kompozytowego (który pozwala ma pojawiać się jako wiele typów urządzeń USB w ramach jednego połączenia. Pi Zero może z nich korzystać , ale domyślnie nie. W przypadku systemu Windows lub innych systemów operacyjnych prawdopodobnie prawdopodobnie będziesz musiał napisać ten sterownik urządzenia.

Teoretycznie możesz to zrobić. Możesz rozebrać komputer stacjonarny, spróbować gdzieś znaleźć nieużywaną kompatybilną magistralę na płycie głównej (najprawdopodobniej kilka nieużywanych styków w układzie scalonym kontrolera), lub sposób na rozszerzenie wewnętrznej magistrali I2C lub SPI, lub coś, co możesz oderwać i wymień i przylutuj na nim USB OTG lub układ kontrolera urządzenia. Następnie możesz zainstalować Linuksa i użyć sterownika gadżetu lub napisać własny dla innego systemu operacyjnego. Praktycznie, chyba że jesteś inżynierem elektroniki na najwyższym poziomie, nie będziesz w stanie tego zrobić. Przynajmniej dopóki ktoś nie wyjdzie z tym nieuchwytnym adapterem z urządzeniem lub portem OTG, który podłącza się do portu USB (teoretycznie można to zrobić za pomocą mikrokontrolera takiego Arduino podłączonego do pary układów kontrolera urządzenia USB), i pisze sterowniki, aby go uruchomić.

Matt Thomason
źródło
2
świetne wyjaśnienie, czy możesz zaktualizować odpowiedź, jeśli (ze swoją wiedzą) zobaczysz coś nowego w odniesieniu do zdania „dopóki ktoś nie wyjdzie z ekskluzywnym adapterem ...”. Istnieją laptopy z USB-C w 2018 roku, czy mogą być rozwiązaniem.
Asain Kujovic,
8

USB jest niesymetryczny: jedna strona to host, druga strona to urządzenie peryferyjne. Nie można sprawić, aby urządzenie peryferyjne działało jako host lub odwrotnie. Port USB może działać po obu stronach; nazywa się to USB w podróży i jest obecne na niektórych telefonach komórkowych i tabletach. Porty są fizycznie portami typu urządzenia, a nie portami typu host. Nigdy nie widziałem komputera z portem urządzenia. Wymaga to elektroniki na kontrolerze, nie wystarczy zrobić kabel, który pasuje na obu końcach.

Więc nie, nie będziesz mógł przekształcić komputera w urządzenie USB.

Jeśli chcesz używać komputera jako urządzenia pamięci USB, zamiast komputera możesz użyć telefonu komórkowego lub tabletu z połączeniem USB.

Gilles „SO- przestań być zły”
źródło
Czy możesz rozwinąć nieco więcej, w jaki sposób korzystanie z telefonu komórkowego może pomóc mi zmienić komputer w urządzenie pamięci masowej USB / host, które mogę podłączyć do innego komputera, telewizora lub urządzenia? Myślę, że brakuje mi tego punktu, ale myślę, że mam dobrą wiedzę na temat USB OTG.
trejder
@trejder Jak napisałem, nigdy nie widziałem komputera z portem urządzenia („PC” z wyjątkiem tabletów x86).
Gilles „SO- przestań być zły”
Tak, ale odnoszę się do twojego ostatniego zdania: „ Jeśli chcesz przekształcić komputer w urządzenie pamięci USB, możesz użyć telefonu komórkowego lub tabletu z połączeniem USB ”. Może czegoś mi brakuje, ale rozumiem to jako „Możesz użyć telefonu komórkowego lub tabletu, aby zmienić komputer w urządzenie pamięci USB”. Jeśli tak, to pytanie brzmi: jak?
trejder
1
@trejder Ah, „komputer” w tym zdaniu nie jest „PC”, to „komputer”. Telefon / tablet to inny rodzaj komputera niż komputer. Czy to Cię niepokoi?
Gilles „SO- przestań być zły”
1
@ trereder Nie. Zazwyczaj najlepszym rozwiązaniem jest ustanowienie połączenia sieciowego w taki czy inny sposób. Możesz użyć Firewire jako połączenia sieciowego między dowolnymi dwoma komputerami z portem Firewire, ale wiele komputerów nie ma takiego. Większość komputerów ma port Ethernet, można podłączyć dwa komputery za pomocą kabla Ethernet (bardzo stare komputery wymagają kabla krosowanego, ale nowoczesne mogą wymagać zwykłego kabla). Aby komputer działał jako urządzenie pamięci masowej dla urządzenia mobilnego, zazwyczaj musisz jakoś podłączyć komputer do Wi-Fi.
Gilles „SO- przestań być zły”
2

Możesz rozważyć użycie jednego ze specjalnych „mostkowanych kabli USB-USB”, czasami nazywanych „kablami sieciowymi USB”. Jak wspomniano w tych artykułach:

Umożliwiają przesyłanie plików między dwoma komputerami. Używam tego rodzaju kabli ponad dziesięć lat temu (w czasach Windows XP) i wtedy wszystkie takie kable dostępne na rynku wymagały specjalnego sterownika i oprogramowania. Pozwalają przesyłać pliki tylko za pomocą specjalnego programu do zarządzania plikami, który jest dostarczany wraz ze sterownikami kablowymi na dysku instalacyjnym i dlatego nie pozwalają jednemu komputerowi na działanie jako inne urządzenie zewnętrzne USB.

Nie jestem pewien, czy cokolwiek się zmieniło od tego czasu i czy nowe rozwiązania pozwalają tylko na przesyłanie plików za pomocą specjalnego oprogramowania i - czy możesz zmusić jeden komputer do działania jako urządzenie zewnętrzne na innym komputerze.

trejder
źródło
2

Jak wyjaśniono w odpowiedzi Matt Thomson , nie jest możliwe, aby fizyczny port USB komputera działał jako urządzenie podrzędne USB, ponieważ brakuje kontrolera podrzędnego USB.

Oznacza to, że jeśli mamy kartę adaptera, która może zapewnić USB w trybie slave (na przykład Raspberry Pi Zero), musimy podłączyć go do komputera hosta innym kanałem, na przykład przewodowym Ethernetem. Mam dwie różne propozycje, jaki protokół można uruchomić przez to połączenie Ethernet:

(1) Odsłoń port USB przez sieć IP.

Skorzystaj z oprogramowania, aby udostępnić port Raspberry Pi Zero w trybie podrzędnym USB jako wirtualne urządzenie USB na komputerze. Projekt USB / IP zapewnia to za pomocą sterownika, który może przesyłać USB przez sieci IP. Oto przykład użycia USB / IP do dostarczenia symulowanego urządzenia USB do komputera - którym byłby tutaj Twój komputer.

To, czego nie wiem w tym proponowanym rozwiązaniu, to to, czy oprogramowanie USB / IP jest już w stanie udostępnić port USB slave przez sieć IP lub tylko port hosta USB jak zwykle.

Ale nawet jeśli to zadziała, nadal musisz skonfigurować lub dostosować sterowniki urządzeń na komputerze w taki sposób, aby (1) akceptowały przychodzące połączenie USB / IP jako połączenie USB, (2) zapewniały tryb USB slave zamiast Tryb hosta USB (3) symuluje urządzenie pamięci masowej USB, podając dane z przypisanej lokalizacji ( .vdipliku).

Ogólnie rzecz biorąc, jest to złożony sposób na zrobienie tego.

(2) Ujawnij plik przez sieć IP.

Jest to o wiele prostszy sposób wykorzystania połączenia Ethernet z Raspberry Pi Zero: na Raspberry Pi Zero zamontuj dane przechowywane na komputerze za pośrednictwem sieciowego systemu plików. Pliki te są następnie logicznie wyświetlane jako część systemu plików Pi Zero i można je obsługiwać za pomocą sterownika gadżetu USB dla systemu Linux, aby Raspberry Pi wyglądał jak urządzenie pamięci masowej USB dla podłączonych urządzeń.

Tanius
źródło