Ist eine Datenübertragung zwischen 2 Ubuntu-Rechnern per USB-Kabel möglich?

20

Ich habe zwei Maschinen mit Ubuntu 14.04, direkt nebeneinander. Aber kein Netzwerk ((W) LAN). Kann ich Daten per USB-Kabel von einer Maschine zur anderen übertragen? Und wenn ja, wie?

Creech
quelle
Nein, das glaube ich nicht. Dafür bräuchten Sie ein sogenanntes "Überbrückungskabel".
mikewhatever
Im Allgemeinen nicht. USB wurde als PC-zu-Peripheriegerät entwickelt. Wir haben die Definition von Peripheriegeräten mit Tablets und Telefonen verwischt, aber Sie können kein einfaches altes USB-A / A-Kabel von PC zu PC stecken. Ich glaube nicht, dass ich jemals ein A-to-A-Kabel außer dem Windows Easy Transfer-Kabel gesehen habe.
Christopher Hostage
2
Was gesagt wurde, gilt für gewöhnliche PCs, obwohl "Ubuntu 14.04" streng genommen keine Hardware identifiziert, und es kann durchaus Builds geben, die auf verschiedenen quasi-eingebetteten Plattformen oder Tablets mit USB-Geräten oder OTG-Schnittstellen sowie dem laufen Auf PCs übliche USB-Host-Schnittstellen.
Chris Stratton
1
Dies wurde unter superuser.com/a/1165890/41259 beantwortet .
CHX

Antworten:

16

Wenn Sie sagen, USB-Kabel beziehen Sie sich auf ein Windows-Easy-Transfer-Kabel, oder?

Bildbeschreibung hier eingeben

In diesem Fall ist es am einfachsten, die beiden Maschinen direkt mit einem Ethernet-Kabel zu verbinden. Moderne Netzwerkkarten sind so intelligent, dass Sie nicht einmal ein Crossover-Kabel benötigen. Sie kreuzen sich nur automatisch, wenn sie feststellen, dass Sie zwei Computer verbunden haben.

Android Dev
quelle
2
Soweit ich gehört habe, werden die abgebildeten USB-Übertragungskabel in Linux normalerweise sowieso als eine Art Netzwerk behandelt. Einige ultraleichte Laptops verfügen nicht über Ethernet-Kabelbuchsen. Dies kann daher von Vorteil sein. Möglicherweise gibt es zwei USB-Ethernet-Adapter und ein RJ45-Patchkabel (diese können jedoch auch für andere Netzwerkzwecke verwendet werden).
Chris Stratton
@ ChrisStratton Das ist richtig. Bei diesen Kabeln handelt es sich im Wesentlichen um zwei Netzwerkkarten.
David Schwartz
1
@DavidSchwartz in Bezug darauf, wie Linux sie traditionell behandelt, ja. Aber Windows sieht sie völlig anders (angeblich funktioniert die plattformübergreifende Übertragung nicht) und architektonisch handelt es sich wahrscheinlich um zwei FIFOs und eine Logik, die zwischen zwei USB-Geräte-Engines sitzt, oder auch nur um die Koordination der Logik, um virtuelle Fifos aus einem gemeinsamen Pufferspeicher zu erstellen.
Chris Stratton
2
@ChrisStratton Sie basieren fast alle auf einer Variante des Prolific 2501 (2301, 25A1, was auch immer). Physikalisch gibt es zwei FIFOs zwischen zwei Back-End-Controllern mit einem Mikrocontroller für die Verwaltung. Aber das ist im Wesentlichen dasselbe, was Sie erhalten würden, wenn Sie zwei Netzwerkkarten miteinander verbinden würden. Wie der Fahrer es präsentiert, ist natürlich die Entscheidung des Fahrers. Dieselbe Windows-Software, die über diese Kabel funktioniert, funktioniert in der Regel auch über Back-to-Back-NICs, sofern der Hersteller diese nicht gesperrt hat.
David Schwartz
Dies ist meines Erachtens die USB 2.0-Antwort. Die USB 3.0-Antwort finden Sie unter superuser.com/a/1165890/41259 .
CHX
3

Wenn Sie dies für einen Proof of Concept unbedingt tun müssten, könnten Sie die uralte Kunst der "Laplink" -Übertragung simulieren, indem Sie einen seriellen Port auf jedem Computer emulieren.

Auf der einen Seite von USB auf seriell und auf der anderen Seite von USB auf seriell (Nullmodem).

Es würde nicht schnell gehen.

mckenzm
quelle
8
"Es wäre nicht schnell."
Charlie
0

Wenn Ihre Computer über einen Typ-B- oder einen On-the-Go- Anschluss verfügen , können Sie den USB-Gadget-Treiber verwenden . Laden des Treibers

# modprobe g_ether

Sie können die MAC-Adressen sowie die Hersteller- und Produkt-IDs konfigurieren:

# modinfo g_ether
filename:       /lib/modules/version/kernel/drivers/usb/gadget/legacy/g_ether.ko
license:        GPL
author:         David Brownell, Benedikt Spanger
description:    RNDIS/Ethernet Gadget
srcversion:     5E4C828D24F6E477C9CB5EE
depends:        libcomposite,u_ether,usb_f_rndis
intree:         Y
vermagic:       version SMP mod_unload modversions 
parm:           idVendor:USB Vendor ID (ushort)
parm:           idProduct:USB Product ID (ushort)
parm:           bcdDevice:USB Device version (BCD) (ushort)
parm:           iSerialNumber:SerialNumber string (charp)
parm:           iManufacturer:USB Manufacturer string (charp)
parm:           iProduct:USB Product string (charp)
parm:           qmult:queue length multiplier at high/super speed (uint)
parm:           dev_addr:Device Ethernet Address (charp)
parm:           host_addr:Host Ethernet Address (charp)
parm:           use_eem:use CDC EEM mode (bool)

Sie können Modulparameter beim Laden des Treibers festlegen, indem Sie sie nach dem Modulnamen übergeben:

# modprobe g_ether host_addr=00:dc:c8:f7:75:05 dev_addr=00:dd:dc:eb:6d:f1

Wenn keines Ihrer Geräte den Betrieb als USB-Gerät unterstützt, funktioniert dieser Ansatz nicht.

Warnung: Versuchen Sie NICHT, zwei USB-Stecker vom Typ A anzuschließen. Bestenfalls können Sie Ihre Motherboards beschädigen. Im schlimmsten Fall können Sie ein Feuer entfachen.

David Cullen
quelle