Czy możliwy jest transfer danych z USB na USB między dwoma systemami Linux?


26

Chcę stworzyć system przesyłania danych z USB na USB w Linuksie (najlepiej Ubuntu). Do tego nie chcę używać zewnętrznego sprzętu ani przełącznika ( z wyjątkiem tego kabla ). Będzie to jak montaż dysku USB w systemie, ale w tym scenariuszu jeden z systemów Linux zostanie zamontowany na drugim. Jak mogę to stworzyć?

Czy są dostępne jakieś moduły jądra, biorąc pod uwagę, że moje doświadczenie z programowaniem jądra jest bardzo podstawowe?


6
„W tym celu nie chcę używać zewnętrznego sprzętu ani przełącznika.” Nie możesz tego zrobić w żadnym okresie systemowym, jeśli chcesz przez to podłączyć zwykły kabel USB. USB nie jest symetryczną relacją. Możesz fizycznie uszkodzić dowolną maszynę, podłączając ją w ten sposób, ponieważ wiąże się to z napięciem.
Złotowłosa

2
Możesz jednak użyć specjalnego kabla host-to-host, w którym to przypadku tak, istnieją sterowniki jądra, więc jeśli zamierzasz je kupić, sprawdź, czy istnieją sterowniki dla tego konkretnego kabla.
Złotowłosa

4
To na pewno nie zadziała i jest to rodzaj kabla, który może usmażyć komputer, jeśli podłączysz go bezpośrednio do innego komputera.
zhongfu

2
@Thorongil Nie, nie o to mi chodzi. Wygląda na to, że nie ma nic na tej stronie Amazon, którą mogłem znaleźć - są to coś niezwykłego. Oto jeden . Nie należy tego mylić z kablem OTG („on-the-go”), który jest znacznie bardziej powszechny. Zasadniczo nie warto tego robić - zauważ, że jest to kabel 2.0, co oznacza, że ​​masz szybsze transfery za pomocą kabla Ethernet, jeśli oba mają gigabitowy Ethernet (i możesz użyć zwykłego oprogramowania).
Złotowłosa

2
po prostu robię sieć ... moje komputery, więc wiem, że już to mam ... LAN-over-USB na LAN-over-USB to, czego bym szukał
Skaperen

Odpowiedzi:


24

Tak jest to możliwe, ale to jest nie możliwe poprzez cięcie dwa kable USB ze złączem USB-A (co jest normalnie wchodząc USB na płycie głównej) i Krzyż podłączania kabli danych. Jeśli podłączysz linie zasilania USB za pomocą takiego samodzielnie wykonanego kabla, prawdopodobnie usmażysz wbudowany układ obsługi USB . Nie próbuj tego w domu!

Na większości płyt komputerowych układy obsługujące USB są hostowane. Oprócz tego obsługuje wiele komunikacji na niskim poziomie, aby przyspieszyć i zmniejszyć obciążenie procesora. To nie jest tak, że można tak zaprogramować komputer, aby obsługiwał styki portu USB i działał jak nie-host. Niewielu jest urządzeń zdolnych do przełączania między działaniem jako host a łączeniem się z hostem, ponieważ wymaga to znacznie droższego układu¹. Dlatego np. Inteligentne urządzenia, takie jak mój smartfon, GPS i ebook, chociaż wszystkie działają pod Linuksem lub czymś podobnym, nie pozwalają mi sshna komunikację, gdy są podłączone zwykłym kablem USB.

Po podłączeniu urządzenia te przechodzą w jakiś głupi tryb, w którym host (mój komputer stacjonarny) może używać swojej pamięci jako dysku USB. Po odłączeniu urządzenie korzysta z tego samego interfejsu co host, aby uzyskać dostęp do danych (chociaż nie jest wymagane połączenie kablowe, dzieje się to wewnętrznie). Przy tego rodzaju urządzeniach, nawet jeśli Linux działa na obu systemach, nie ma komunikacji między systemami, tj. Linuxami . Jest to niezależne od zwykłego kabla micro lub mini USB łączącego je z moim komputerem.

Między dwoma komputerami stacjonarnymi powyższe czynności są zwykle niemożliwe, ponieważ wymagany jest kabel USB-A do USB-A, co nie jest powszechne (ponieważ nie działałoby to z normalnymi układami sterującymi połączeniami i tak).

Każde rozwiązanie wykorzystujące USB na USB z dwoma złączami USB-A, które widziałem, opiera się na kablu z pewną elektroniką między nimi. (podobnie jak USB → szeregowy podłączony do kabla szeregowego → USB, ale wszystko w jednym kawałku). Zwykle wymagają one sterowników do wykonania transferu, chociaż możesz być w stanie użyć UUCP lub czegoś innego za pomocą takiego kabla, tak jak w przypadku „normalnego” portu szeregowego. Prawdopodobnie wymaga to inetd i odpowiedniej konfiguracji, aby zalogować się również na innym komputerze.

¹ Jedyne posiadane przeze mnie urządzenie, które można w ten sposób zmieniać programowo, to płyta Arduino z dokładnie tak specjalnym układem. Właśnie ten układ sprawił, że płyta była dwa razy droższa niż zwykła płyta Arduino.


„nie pozwala mi używać sshdo komunikowania się po podłączeniu za pomocą zwykłego kabla USB” I mogą być nieporozumienia ciebie, ale można ssh się do mojego jailbreak iPhone
Cole Johnson

@ColeJohnson Nie znam iPhone'a. Czy to pozwala zobaczyć pamięć wewnętrzną jako dysk USB na dowolnym komputerze z USB? Jeśli to możliwe, powinien uruchomić pełną emulację strony innej niż host. Jeśli nie może, to prawdopodobnie wymaga dedykowanego programu do ładowania danych do telefonu.
Anthon

Jeśli instalujesz opensshna urządzeniu, możesz wejść ssh(przez Wi-Fi), a jeśli zainstalujesz afc2(Apple File Conduit) na urządzeniu, powinieneś być w stanie przeglądać system plików przez USB (bez niego jesteś „uwięziony” „do /var/mobile)
Cole Johnson

1
Wszystko w porządku, z wyjątkiem trochę o telefonach. Fakt, że wiele urządzeń ogranicza to, co można zrobić, nie neguje faktu, że układy USB używane we wszystkich urządzeniach oprócz kilku mogą działać w trybie klienta, a niektóre mogą także działać w trybie hosta.
Caleb

6

Tak, USB 3.0 umożliwia przesyłanie danych w pełnym dupleksie z okablowaniem 3.0. Dane techniczne znajdują się w sekcji 5.5.2 specyfikacji USB. Link do tych specyfikacji podano wcześniej w innej odpowiedzi. http://www.gaw.ru/pdf/interface/usb/USB%203%200_english.pdf

Kable stają się coraz łatwiejsze do znalezienia - można je kupić na przykład w Amazon za mniej niż 8,00 $. koniecznie kup kabel PRZENOSZENIA DANYCH, męski A na męski A. Nowsze wersje systemu Linux obsługują przesyłanie.

Mam nadzieję, że to komuś pomoże - sam szukałem odpowiedzi.


jakakolwiek konfiguracja potrzebna do tego kabla? czy będzie to montaż czy symulacja sieci?
mpapis

co ciekawe, mam prosty kabel USB 3.0 (tylko męskie końce i prosty kabel pomiędzy) i zastanawiam się, czy nie usmażę portu notebooka USB 2.0, podłączając go do portu USB 3.0 na pulpicie? Połączyłem się przez kilka sekund i nic się nie wydarzyło na dmesg, więc natychmiast się rozłączyłem, jak zwykle robię ze wszystkim, co nie działa natychmiast.
Aquarius Power

2
Sekcja 5.5.2 „Zespół kabla USB 3.0 Standard-A do USB 3.0 Standard-A” specyfikacji określa tylko kabel i mówi: „Zespół kabla jest zdefiniowany do debugowania systemu operacyjnego i innych aplikacji do połączenia hosta z hostem”. Czy jesteś pewien, że kabel USB-a-to-a pozwala nie tylko debugować ( kernel.org/doc/html/v4.16/driver-api/usb/usb3-debug-port.html - wymaga możliwości debugowania xHCI DbC, który jest opcjonalne dla kontrolerów hosta xHCI USB3), ale także transfer plików? Do przesyłania plików są aktywne kable (ze środkowym kontrolerem), niektóre wymienione na stronie: ghisler.com/cables
osgx

Nigdy nie widziałem z tym działającej konfiguracji. Chcesz podzielić się szczegółami?
bezpośrednio

3

możesz użyć urządzenia mostkowego USB, które jest dostępne w formie kabla takiego jak ten ... http://www.usbgear.com/link/ (ostrzeżenie o automatycznym odtwarzaniu wideo)


3
czy nie bezpośrednio połączyć porty USB
Skaperen

może to być specyficzne dla systemu Windows
Skaperen

3
Byłbym bardzo ostrożny w stosunku do bitu „niepotrzebny sterownik”. AFAIK, w rzeczywistości potrzebują sterowników. linux-usb.org/usbnet/#t-host
goldilocks

@goldilocks tak, ta płyta prawdopodobnie ma jakiś kod systemu Windows ... żaden użytkownik nie musi instalować sterownika z płyty CD
Skaperen

1

Jest to technicznie możliwe, jeśli jedno z urządzeń obsługuje USB OTG , w którym port może działać jako master lub slave. Możesz skonfigurować urządzenie OTG jako urządzenie podrzędne i pozwolić mu działać jako dysk twardy USB (więc nie potrzebujesz nawet specjalnego sterownika na urządzeniu głównym).

To właśnie robi wiele telefonów i niektórych aparatów. Jeśli podłączysz je do drukarki, staną się one master; po podłączeniu do komputera stają się niewolnikami.


1
USB OTG po prostu przełącza między hostem USB a trybem urządzenia USB. Choć wspólne dla telefonów, nie znam żadnego komputera z tą funkcją. Czy te komputery faktycznie istnieją?
Lekensteyn,

@Lekensteyn: Nie jest to rzadkie w przypadku tabletów, a niektóre tablety to naprawdę pełne komputery. Prawdopodobnie istnieje jednak wysoka korelacja między portami USB hosta a pełnym komputerem.
Ben Voigt,

@lekensteyn zredagował odpowiedź jako tylko jedno z dwóch urządzeń, nie ma znaczenia, czy nadawca, czy odbiorca. Wydaje mi się, że wciąż brakuje otg po stronie komputera. Jaka szkoda.
Lesto

Uważam, że jest to również nazywane danymi podwójnej roli . Niektóre nowsze płyty główne obsługują tę funkcję - patrz na przykład ta strona . Jest to udokumentowane w arkuszu danych chipsetu, ale z konieczności jest włączone na wszystkich płytach głównych.
Luciano

0

Chciałbym to zrobić, używając 2 kabli szeregowych USB i zerowego połączenia między nimi. Następnie możesz użyć xmodem, zmodem, kermit itp. Do przesyłania plików lub użyć ppp lub slip do sieci między dwoma komputerami. Staroświecki, ale zadziała.

Thad


1
Z „kablami szeregowymi USB” masz na myśli kable, które konwertują z USB na niektóre wtyczki szeregowe i są standardowe jak RS232 przez DE-9? Czyli to właściwie dwa konwertery i kabel do komunikacji szeregowej? Byłoby też miło z nieco większą ilością informacji na temat korzystania z tych protokołów lub gdzie znaleźć dobrą pomoc na ich temat.
phk

phk ma rację, wyjaśnisz, czym jest zerowe połączenie. Odpowiedź powinna być samodzielna. Proszę również użyć „ty” zamiast „u”, ponownie odpowiedź powinna być samodzielnym przykładem, a nie postem na forum
grochmal

Spowoduje to zmniejszenie prędkości transferu USB 3 (5-10 Gb / s) i zmniejszenie jej do około 0,001 Gb / s, około 1000 razy wolniej niż standardowy gigabit Ethernet. Nie warte wysiłku! Zwłaszcza jeśli podobnie jak OP chcesz udostępniać dyski przez połączenie.
Malvineous
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.