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?
kernel
drivers
usb
kernel-modules
the_Strider
quelle
quelle
Antworten:
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
ssh
Kommunikation ü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.
quelle
ssh
Erlaube mir nicht, zu kommunizieren, wenn ich über ein normales USB-Kabel verbunden bin " Ich verstehe dich vielleicht falsch, aber ich kannssh
openssh
auf dem Gerät installieren , können Siessh
in (über Wi-Fi), und wenn Sieafc2
(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
)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.
quelle
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)
quelle
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.
quelle
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
quelle