Ist eine USB-zu-USB-Datenübertragung zwischen zwei Linux-Betriebssystemen möglich?

26

Ich möchte ein USB-zu-USB-Datenübertragungssystem unter Linux (vorzugsweise Ubuntu) erstellen. Dafür möchte ich keine externe Hardware oder Schalter verwenden ( außer diesem Kabel ). Es ist wie beim Mounten eines USB-Laufwerks an ein System, aber in diesem Szenario wird eines der Linux-Systeme auf dem anderen gemountet. Wie kann ich das schaffen?

Gibt es Kernelmodule, da meine Erfahrung mit der Kernelprogrammierung sehr grundlegend ist?

the_Strider
quelle
6
"Dafür möchte ich keine externe Hardware oder Schalter verwenden." Sie können dies in keinem Systemzeitraum tun, wenn Sie ein einfaches USB-Kabel für die Verbindung verwenden möchten. USB ist keine symmetrische Beziehung. Sie können tatsächlich beide Maschinen physisch beschädigen , indem Sie sie auf diese Weise anschließen, da Spannung anliegt.
Goldlöckchen
2
Sie können jedoch ein spezielles Host-zu-Host-Kabel verwenden. In diesem Fall gibt es ja Kerneltreiber. Wenn Sie also einen kaufen möchten, überprüfen Sie, ob Treiber für dieses bestimmte Kabel vorhanden sind.
Goldlöckchen
4
Das wird definitiv nicht funktionieren und ist die Art von Kabel, die Ihren Computer braten kann, wenn Sie ihn direkt an einen anderen Computer anschließen.
Zhongfu
2
@Thorongil Nein, das meine ich nicht. Es sieht so aus, als gäbe es auf dieser Amazon-Website keine, die ich finden könnte - es sind ungewöhnliche Dinge. Hier ist einer . Verwechseln Sie dies nicht mit einem häufig verwendeten OTG-Kabel ("on-the-go"). Grundsätzlich lohnt es sich nicht, dies zu versuchen. Beachten Sie, dass es sich um ein 2.0-Kabel handelt. Dies bedeutet, dass Sie mit einem Ethernet-Kabel schnellere Übertragungen haben würden, wenn beide über Gigabit-Ethernet verfügen (und Sie normale Software verwenden könnten).
Goldlöckchen
2
Ich mache nur Networking ... meine Computer, damit ich weiß, dass ich es bereits habe ... ein LAN-über-USB zu LAN-über-USB wäre das, wonach ich suchen würde
Skaperen

Antworten:

24

Ja, dies ist möglich, aber es ist nicht möglich, zwei USB-Kabel mit USB-A-Anschlüssen (was normalerweise in den USB-Anschluss Ihres Motherboards fließt) zu schneiden und die Datenkabel zu kreuzen. Wenn Sie die USB-Stromkabel an ein solches selbst hergestelltes Kabel anschließen, braten Sie wahrscheinlich Ihren integrierten USB-Handling-Chip . Versuchen Sie das nicht zu Hause!

Auf den meisten Computerplatinen sind die USB-Chips nur Hosts. Darüber hinaus übernimmt es einen Großteil der Low-Level-Kommunikation, um die Dinge zu beschleunigen und die CPU-Last zu verringern. Es ist nicht so, als könnten Sie Ihren Computer so programmieren, dass er die Stifte am USB-Anschluss so handhabt, als ob er kein Host wäre. Auf der Chipebene gibt es nur wenige Geräte, die zwischen der Arbeit als Host und der Verbindung mit einem Host umschalten können, da hierfür ein wesentlich teurerer Chip erforderlich ist¹. Dies ist zB der Grund, warum intelligente Geräte wie mein Smartphone, GPS und E-Book, obwohl sie alle unter Linux oder ähnlichen Betriebssystemen laufen, die sshKommunikation über ein normales USB-Kabel nicht zulassen .

Diese Geräte werden beim Anschließen in einen dummen Modus versetzt, in dem der Host (mein Desktopsystem) den Speicher als USB-Datenträger verwenden kann. Nach dem Trennen verwendet das Gerät dieselbe Schnittstelle wie ein Host, um an die Daten zu gelangen (obwohl keine Kabelverbindung erforderlich ist, geschieht dies intern). Selbst wenn Linux auf beiden Geräten ausgeführt wird, besteht bei diesen Geräten keine Kommunikation zwischen den Systemen, dh den Linuxen . Dies unabhängig von einem normalen Mikro- oder Mini-USB-Kabel, das sie mit meinem Desktop verbindet.

Zwischen zwei Desktop-PCs ist dies normalerweise nicht möglich, da Sie ein USB-A-zu-USB-A-Kabel benötigen, was nicht üblich ist (da dies mit den normalen Chips, die die Verbindungen steuern, ohnehin nicht funktioniert).

Jede USB-zu-USB-Lösung mit zwei USB-A-Anschlüssen, die ich gesehen habe, basiert auf einem Kabel, zwischen dem sich Elektronik befindet. (Ähnlich wie bei einem USB → Seriell-Anschluss, der an ein Seriell → USB-Kabel angeschlossen ist, aber dann alles in einem Stück). Diese erfordern normalerweise Treiber für die Übertragung, obwohl Sie möglicherweise UUCP oder etwas anderes über ein solches Kabel verwenden können, wie Sie es über eine "normale" serielle Schnittstelle tun würden. Dies erfordert wahrscheinlich inetd und die richtige Konfiguration, um sich auch auf dem anderen Computer anzumelden.

¹ Das einzige Gerät, das ich habe und das auf diese Weise per Software geändert werden kann, ist ein Arduino-Board mit genau einem solchen speziellen Chip. Nur dieser Chip machte das Board doppelt so teuer wie ein normales Arduino-Board.

Anthon
quelle
"ssh Erlaube mir nicht, zu kommunizieren, wenn ich über ein normales USB-Kabel verbunden bin " Ich verstehe dich vielleicht falsch, aber ich kann ssh
Cole Johnson
@ColeJohnson Ich kenne das iPhone nicht. Können Sie damit den internen Speicher auf jedem Host-Computer mit USB als USB-Laufwerk anzeigen? Wenn dies möglich ist, sollte eine vollständige Emulation der Nicht-Host-Seite ausgeführt werden. Wenn dies nicht möglich ist, ist wahrscheinlich ein spezielles Programm erforderlich, um Daten auf das Telefon zu laden.
Anthon
Wenn Sie opensshauf dem Gerät installieren , können Sie sshin (über Wi-Fi), und wenn Sie afc2(Apple File Conduit) auf dem Gerät installieren , sollten Sie in der Lage sein, das Dateisystem über USB zu durchsuchen (ohne es sind Sie "inhaftiert" "bis /var/mobile)
Cole Johnson
1
Dies ist alles in Ordnung mit Ausnahme des Teils über Telefone. Die Tatsache, dass viele Geräte beschränken, was getan werden kann, negiert nicht die Tatsache, dass die USB-Chips, die in allen bis auf eine Handvoll von Geräten verwendet werden, im Client-Modus ausgeführt werden können, wobei einige auch im Host-Modus ausgeführt werden können.
Caleb
6

Ja, USB 3.0 ermöglicht Vollduplex-Datenübertragung mit 3.0-Verkabelung. Die technischen Daten finden Sie in Abschnitt 5.5.2 der USB-Spezifikationen. Der Link zu diesen Spezifikationen wurde bereits in einer anderen Antwort gegeben. http://www.gaw.ru/pdf/interface/usb/USB%203%200_english.pdf

Kabel werden immer leichter zu finden - sie können beispielsweise bei Amazon für unter 8,00 USD gekauft werden. Achten Sie darauf, dass Sie DATA TRANSFER-Kabel (A-Stecker auf A-Stecker) kaufen. Neuere Linux-Versionen unterstützen die Übertragung.

Ich hoffe, das hilft jemandem - ich habe selbst eine ganze Weile nach der Antwort gesucht.

Wayne Wright
quelle
Benötigen Sie eine Einrichtung, damit dieses Kabel funktioniert? Wird es eine Montage- oder Netzwerksimulation sein?
Papis
Interessanterweise habe ich ein einfaches USB 3.0-Kabel (nur männliche Enden und ein einfaches Kabel dazwischen), und ich frage mich, ob ich meinen USB 2.0-Notebook-Port nicht durch Anschließen an meinen Desktop-USB 3.0-Port braten kann. Ich habe eine Verbindung für ein paar Sekunden hergestellt und auf dmesg ist nichts passiert. Daher habe ich die Verbindung sofort getrennt, wie ich es normalerweise mit allem tue, was nicht sofort funktioniert.
Aquarius Power
2
In Abschnitt 5.5.2 "USB 3.0 Standard-A zu USB 3.0 Standard-A-Kabelkonfektion" der technischen Daten wird nur das Kabel definiert und "Die Kabelkonfektion ist für das Debuggen des Betriebssystems und andere Host-zu-Host-Verbindungsanwendungen definiert". Sind Sie sicher , dass usb3 a-to-a - Kabel ermöglicht nicht nur das Debuggen ( kernel.org/doc/html/v4.16/driver-api/usb/usb3-debug-port.html - xHCI Debug - Fähigkeit DbC braucht, das ist optional für xHCI USB3 Host Controller), aber auch Dateiübertragung? Für die Dateiübertragung gibt es aktive Kabel (mit Controller in der Mitte). Einige sind unter ghisler.com/cables
osgx am
Ich habe noch nie ein funktionierendes Setup gesehen. Möchtest du uns Details mitteilen?
24.
3

Sie könnten ein USB-Bridge-Gerät verwenden, das in einem Kabel-Formfaktor wie diesem erhältlich ist ... http://www.usbgear.com/link/ (automatische Videowarnung)

Skaperen
quelle
3
Sie nicht anschließen USB - Anschlüsse direkt
Skaperen
Dies kann spezifisch für Windows sein
Skaperen
3
Ich wäre sehr vorsichtig mit dem "no driver needed" -Bit. AFAIK brauchen sie in der Tat Fahrer. linux-usb.org/usbnet/#t-host
goldilocks
@ Goldilocks Ja, dieses Board hat wahrscheinlich eine Art Windows-Code ... Es muss kein Treiber von einer CD vom Benutzer installiert werden
Skaperen
1

Es ist technisch möglich, dass eines der Geräte USB OTG unterstützt , wobei ein Port als Master oder als Slave fungieren kann. Sie können das OTG-Gerät als Slave einrichten und es als USB-Festplattenlaufwerk verwenden (Sie benötigen also nicht einmal einen speziellen Treiber für den Master).

Dies ist, was viele Telefone und einige Kameras tun. Wenn Sie sie an einen Drucker anschließen, werden sie Master. Wenn sie an einen PC angeschlossen sind, werden sie Slave.

Lesto
quelle
1
USB OTG schaltet nur zwischen USB-Host- und USB-Gerätemodus um. Obwohl es für Telefone üblich ist, kenne ich keinen PC mit dieser Funktion. Gibt es diese PCs überhaupt?
Lekensteyn,
@Lekensteyn: Es ist nicht ungewöhnlich für Tablets, und einige Tablets sind wirklich vollwertige PCs. Es besteht jedoch wahrscheinlich eine hohe Korrelation zwischen USB-Anschlüssen nur für den Host und dem vollständigen PC.
Ben Voigt
@lekensteyn bearbeitete die Antwort als nur eines der beiden Geräte, es ist nicht wichtig, ob Sender oder Empfänger. Ich denke, es fehlt immer noch otg auf der PC-Seite. Das ist eine Schande.
Lesto,
Ich glaube, das nennt man auch Dual Role Data . Einige neuere Motherboards unterstützen diese Funktion - siehe zum Beispiel diese Seite . Es ist im Datenblatt des Chipsatzes dokumentiert, muss aber auf allen Motherboards aktiviert sein.
Luciano
0

Die Art und Weise, wie ich es tun würde, ist die Verwendung von 2 USB-seriellen Kabeln und einer Nullverbindung zwischen. Dann können Sie xmodem, zmodem, kermit usw. zum Übertragen von Dateien verwenden oder ppp oder slip für ein Netzwerk zwischen zwei Computern verwenden. Altmodisch, wird aber funktionieren.

Thad

Thad
quelle
1
Mit "USB-seriellen Kabeln" meinen Sie Kabel, die von USB zu einem seriellen Stecker und Standard wie RS232 über DE-9 konvertieren? Also sind es im Grunde zwei Konverter und ein Kabel für die serielle Kommunikation? Es wäre auch nett gewesen, ein bisschen mehr Informationen darüber zu haben, wie man diese Protokolle verwendet oder wo man gute Hilfe dazu findet.
Phk
Wenn phk korrekt ist, erklären Sie, was eine Nullverbindung ist. Eine Antwort muss in sich geschlossen sein. Verwenden Sie auch "you" anstelle von "u". Auch hier sollte eine Antwort ein in sich geschlossenes Beispiel sein, kein
Forumbeitrag
Dies würde Ihre USB-3-Übertragungsgeschwindigkeit (5-10 Gbit / s) verringern und auf etwa 0,001 Gbit / s, etwa 1000-mal langsamer als das Standard-Gigabit-Ethernet. Kaum die Mühe wert! Vor allem, wenn Sie wie im OP Festplatten über die Verbindung freigeben möchten.
Malvineous