This Is USB-to-USB data transfer between two Linux OSes possible? question and the answer is USB 2.0 which is simply outdated. As USB 3.0 is much faster than simple Gigabit Ethernet and I want to connect a laptop and a desktop both with SSDs, this would be a great solution. If it's possible.
4 Answers
Yes, USB 3.0 makes full duplex data transfer possible, with 3.0 cabling. The specs are in section 5.5.2 of the USB specs. The link to those specs is given earlier in another answer. http://www.gaw.ru/pdf/interface/usb/USB%203%200_english.pdf
Cables are becoming easier to find- they can be bought on Amazon, for example, for under $8.00. be sure to buy DATA TRANSFER, male A to male A cables. Newer versions of Linux support the transfer.
I hope that helps someone- I searched for the answer for quite a while myself.
-
5Care to add something about how this works under Linux? Will your USB ports show up as network interfaces?– chxCommented Oct 1, 2016 at 10:34
-
3this is the same exact answer from the other thread and it was equally useless there. you don't explain how to do anything.– KrupipCommented Jun 6, 2017 at 21:09
-
2I found a cable as described in 5.5.2 (no VCC or D+/D- connected, USB 3.0 pins are connected as crossover), but they claim it's for debugging only & that Mac, Linux, and Windows don't support host-to-host file transfers. datapro.net/products/… I have found bridge cables, such as this: startech.com/Networking-IO/USB-PS2/… Bridge cables like this do NOT conform to section 5.5.2 of the USB spec and are active devices which need a driver. I'm unable to verify linux support.– bobpaulCommented Aug 28, 2017 at 23:50
-
Section 5.5.2 "USB 3.0 Standard-A to USB 3.0 Standard-A Cable Assembly" of the Specifications only defines cable and says "cable assembly is defined for operating system debugging and other host-to-host connection applications". Are you sure that usb3 a-to-a cable allows not only debugging (kernel.org/doc/html/v4.16/driver-api/usb/usb3-debug-port.html - needs xHCI debug capability DbC, which is optional for xHCI usb3 host controllers), but also file transfer? For file transfer there are active cables (with controller in middle), some listed at: ghisler.com/cables– osgxCommented Apr 8, 2018 at 13:31
While this doesn't seem to be availabe, there are dual Gigabit Ethernet adapters (make sure to get a real dual NIC and not a NIC + switch) and that's 2GBit. Disappointing. Then it's down to bonding the two together. In my case, the desktop have spare PCI Express x1 ports so I will get a dual NIC card instead of converting USB 3.0 there. For the laptop, USB 3.0 expresscard (they make ones with practically disappearing ports) and an adapter seems to be the easiest.
And since we are bonding, the laptop and the desktop both have gigabit Ethernet already so I can reach 3gbit/s theoretically which is quite good for syncing two machines which are limited by SATA speeds.
-
Bonding ethernet is quite tricky. It requires special cooperation from the dual NIC driver ( can't bond a different nic ) and the switch, which must support 802.11ad LACP. There is a poor man's bonding driver in the linux kernel, but it can only allow you to send traffic to two different hosts at the same time, not twice the throughput to the same host.– psusiCommented Oct 28, 2015 at 1:44
-
802.3ad/LACP also doesn't share the bandwidth to the same host. It sends packets out of one or the other NIC based on a hash of the destination MAC (or IP in some cases). So you can get 2Gbps in or out, but only if you are connecting to at least two different remote machines. You can't get 2Gbps between only two machines, sadly. Commented Mar 16, 2017 at 13:14
Found some info about this on the linux-usb mailing list, from Feb 2012:
The xHCI spec describes a debug port to connect two hosts together, but a debug port is optional and almost none of the xHCI hosts currently on the market actually have them. Also, as Alan said, there isn't any Linux software to support it.
Sarah Sharp
I can't find anything newer to contradict this, so looks like it's a not the way to go. I would bet that even if it did work, the fact that it uses a debug port is going to slow things down considerably. Plus some systems only designate a single USB connector as debug-enabled, so not only would this male-to-male cable only work on certain machines, but only on one USB port on those machines as well!
I did find information on a Prolific PL2701 IC that can bridge two USB3 hosts, in a similar way to the older USB2 bridge cables. It says it supports RNDIS (network emulation), mass storage, and some other protocols. So looks like USB3 doesn't alleviate the need for a special bridge cable to connect two PCs.
-
1Usb3 a-to-a cable debugging is supported now in Linux - kernel.org/doc/html/v4.16/driver-api/usb/usb3-debug-port.html - it needs xHCI debug capability DbC, which is optional for xHCI usb3 host controllers. I have no list of xchi controllers with this capability. And Prolific host-to-host bridge is in plusb module: github.com/torvalds/linux/blob/master/drivers/net/usb/plusb.c– osgxCommented Apr 8, 2018 at 13:40
-
1Seems that xHCI DbC (Debug Capability) option is implemented in Intel PCH chips since 100 series (Skylake and newer platforms) - ptsecurity.com/upload/corporate/ww-en/analytics/… "Then, starting with the 100 series (for Skylake), Intel introduced their own XHCI controller supporting DbC on PCH. Intel DCI (in Skylake and later) uses USB 3.0 DbС"– osgxCommented Apr 8, 2018 at 17:35
No; it is not possible. USB is a master/slave ( host/device ) protocol. You can only connect devices to a host, and a host can only be connected to devices. The USB On The Go addition allows for some gadgets ( limited to cell phones and tablets ) to act as one, or the other, depending on what it is connected to, but desktop PCs are host only and so can not be connected to each other.
-
3That's true for USB2, but no longer for USB3. Commented Oct 30, 2015 at 23:46
-
@Gilles, no, as I said usb3 only incorporates the ability for certain controllers to act as either a host or a device, but it is still not a peer to peer protocol: the host drives the clock, and issues the commands, to which the devices are expected to reply.– psusiCommented Oct 31, 2015 at 2:37
-
-1, the question has nothing to do with peers, clocks, or commands. It's about data transfer.– NavinCommented Feb 5, 2019 at 10:08