45

I have a Win 10 64-bit HP laptop (model: 15-dw0088ca) which has 1 USB-C port and two USB ports.

  1. Can I use an ordinary USB-C ↔ USB-C cable, like the one in Pic 1, to transfer files from this HP computer to another one that also has an USB-C port?

    simplex1_0-1633888143587.jpeg

    Pic 1: USB-C ↔ USB-C cable.

  2. Can I use an ordinary USB-C ↔ USB cable, like the one in Pic 2, to transfer files from this HP computer to another one that only has USB ports (no USB-C port)?

    simplex1_1-1633888328047.jpeg

    Pic 2: USB-C ↔ USB cable.

Remark: I know that, with some software, files can be transferred from one PC to another using a special USB ↔ USB cable like this one:

simplex1_2-1633888514559.jpeg

PC to PC data transfer cable (which I do not have).

Various sites say that using an ordinary USB ↔ USB cable for PC to PC data transfer is not a solution. I do not really understand why as long as ordinary cables like: USB ↔ Micro-USB, USB ↔ USB-C, USB-C ↔ USB-C can be used for transferring files between a mobile phone and a PC.

Note:

There is a similar question (Is it possible to connect two PCs via USB C?) but the answers there are a bit speculative. This is an example:

So, if you have two computers with USB-C ports, and a USB-C cable, then the chances are that all the hardware is there to make a 20 Gbps connection between the two. All it takes is one computer to have the right software to support a network device on a USB-C port, and the other to have the right software to emulate a network device on a USB-C port.

It is not clear from the above excerpt whether an USB-C ↔ USB-C connection between two computer, with an ordinary cable (not a data transfer cable), is possible. Also, there is no answer regarding the USB-C ↔ USB data transfer.

phuclv
  • 30,396
  • 15
  • 136
  • 260

5 Answers5

46

USB-C gets rid of the physical USB-A/B distinction and instead allows the two ends to negotiate to work out which acts as computer and which as a device.

However, connecting two USB-C desktops together with a USB-C cable, although physically possible, still ends up with one end being required to act as a device. Most computers don’t usually have software (or hardware) allowing them to act as devices, although it is possible to install such software. Then it all depends on this software.

This is why for generic USB-C you still need a PC-to-PC data transfer cable, that acts for both computers as a device so both computers can act as hosts, which Windows does well. Unless the transfer cable can emulate a network adapter for both hosts, you will also need a specialized software for the transfer of data.

USB-C can also be used for Thunderbolt 3, and if both computers have this then connecting them together with a USB-C cable results in a 10Gbps network link between the two. Thunderbolt 3 has this networking capability built in, rather than requiring adapters or special software. You can even use this capability to daisy chain together multiple PCs into a high speed LAN without requiring a switch, as long as the intermediate PCs each have two Thunderbolt 3 sockets, taking advantage of the Thunderbolt 3 built-in daisy-chaining capability.

Without Thunderbolt 3, the best bet is to do the transfer via a common router. You may also connect the two computers directly via an Ethernet cable to create a local network. Modern Ethernet adapters do not even need a crossover cable.

harrymc
  • 498,455
19

Can I use an ordinary USB-C <-> USB-C cable, like the one in Pic 1, to transfer files from this HP computer to another one that also has an USB-C port?

As far as I know: only if both ports are Thunderbolt or USB4 ports, and if the operating system on both ends supports "IP over Thunderbolt" (or really Ethernet over Thunderbolt). This is available in macOS, Linux, and apparently supported in Windows 10 as well. If it is supported, the connection would show up as a new LAN interface through which you could use SMB or other network file transfer software.

Unfortunately, it seems that your laptop's USB-C port only supports USB (3.2 Gen 1x1) but not Thunderbolt.

With just USB, it would in theory be possible with USB-C for either end to act as either role (USB host vs USB peripheral), but as far as I know, laptops typically do not support this – only smartphones tend to be dual-role, while computers are always hosts.

(Note that the ability to switch USB roles for data transfer seems to be completely independent from the ability to change power supply direction in USB Power Delivery.)

Can I use an ordinary USB-C <-> USB cable, like the one in Pic 2, to transfer files from this HP computer to another one that only has USB ports (no USB-C port)?

Same as above, excpt the device on the USB type-A side is always a USB host, so the HP laptop on the USB-C side is specifically the one which would need to support role switching.

(Finally, if one of the devices supported USB peripheral mode aka USB OTG, like a Raspberry Pi with its USB OTG-capable "dwc2" chip, it could pretend to be a network interface or a storage device – but only Linux has so-called "gadget" drivers implementing this; Windows doesn't.)

It will be helpful if someone can explain to me the purpose of that convertor which can be seen in the middle of the PC to PC data transfer cable (the last of the three pictures I posted).

Regular USB A-to-A connections are not allowed. The 'A' port is always on the USB host, and you cannot connect together two USB hosts. If you tried to make such a direct cable, you'd probably fry one of the USB controllers.

(Micro-B ports on phones and some RPi models are wired to special controllers which can act as either host or peripheral, and the Micro-B port itself has an extra pin to indicate this – which full-size A/B ports did not.)

So what you (usually) have with this cable is not an A-to-A connection between the PCs, but two fairly standard A-to-B connections to the box in the middle which acts as a USB peripheral on both sides. They're a lot like if you had two "USB-to-Ethernet" adapters connected back-to-back.

grawity
  • 501,077
3

For you, (un)fortunately, answer boils down to this: get an USB-C/USB-C cable and try. You may have to be careful, though, as Austin Hemmelgarn points out there may be significant voltage difference between laptops, which may not be mitigated by internal protection of the USB port... Modern laptops aren't grounded at all, so you may have to either get a dedicated USB grounding cable (believe it or not, but apparently this is a big issue in USB, especially for people working with sound on their laptops, and they worked it out ages ago), or makeshift something.

To connect two PCs via USB for data transfer - besides using Bridged USB-A/USB-A cable that has some extra board added, which you don't have - you have few possibilities available:

  1. Use USB-C/USB-C cable. But it also requires for at least one port to be DRD (Dual-role-Data) port. It is part of the USB-C standard already, so basically, it depends on the actual, physical build of the port(s) you have in your laptop(s). Had one of your computers be a Mac of newer design, answer would be yes, as Apple makes all it's USB-C ports as DRD for a few years now.

  2. I think you could also achieve what you need with USB-A/USB-A cable, but again, at least one port needs to be DRD and of course it is, I believe, USB3 or higher feature (But please don't quote me on this, I'm not 100% on that).

  3. Technically, you could to that too with any USB cable provided one of the devices is OTG (OTG is basically DRD, but I think those differ in implementation, so same functionality, different port build), but same condition applies: not 100% sure. Also, not sure if OTG is purely hardware, or it needs also software to work properly (which means drivers in your case).

AcePL
  • 1,919
3

It's possible, but it would require different drivers to the ones that most computers normally use, for the particular port that you are going to be using for this purpose. Such software is not widely available and would probably be a PITA to set up.

In practical terms I'd plug both computers together with Gbit Ethernet and transfer data between them using the existing networking software. The minimum hardware requirement (for those living on a desert island), is one cross-over Ethernet cable. If you have a computer with no wired Ethernet port, get a USB3 (or USB2) Ethernet "dongle", or use wireless through your router. Wireless is pretty fast these days if you put the wireless computer close to a sufficiently capable router.

I once saw a USB data-exchange cable rather like the photo in the question, with a plastic lump in the wire and some rather bogus Windows software. Out of interest I plugged it into a Linux computer, which revealed the plastic lump to contain two USB-Ethernet NICs connected together! So basically, an expensive way to avoid having to learn how to configure one's networking software at all.

nigel222
  • 347
2

This is a lengthy addendum to the answer by @nigel222, too lengthy to have as a comment.

It is possible to transfer data by USB A-to-A, C-to-A, or C-to-C, using the USB 3.x protocol. The process is a pain in the ass and only documented for use by kernel and driver developers, not even the typical software developer is expected to have to do this. If the USB-C ports in question support Thunderbolt then that's a different question, connecting computers by Thunderbolt will create an Ethernet-like network connection which makes the process trivial for all but the newbiest of newbs.

Using two USB-Ethernet adapters and an Ethernet cable is an option, and would be as trivial as if using Thunderbolt. No need to seek out a crossover cable for this as any Ethernet adapter capable of gigabit speed (and all but the cheapest will do this) are able to auto-negotiate the crossover. Unless paying out top dollar for a pair of 10-Gbps adapters this means being limited to 1 Gbps, far below what USB-C is capable of offering on a direct connection.

There are USB-to-USB bridge cables that offer 5 Gbps speeds. This is an improvement not only in speed but often in costs. As nigel222 discovered the chip in the cable is capable of emulating an Ethernet connection. What I discovered is that this chip has a serial port emulator mode too. When used with the horrible software these cables come with the cable is in a non-network mode, some kind of serial transfer mode. The Linux drivers for this cable will be default put the cable in a network mode and I suspect will allow an Ethernet-like connection between two Linux computers. How to get this in a network mode for macOS and Windows is anyone's guess, and if able to be put in this mode it should appear as an Ethernet port in the OS network settings.

So, it is possible to connect two computers by USB for file transfer but so far this is left in the realm of low level programmers. There's work arounds for us mere mortals but none are exactly pretty, or fast. They are not difficult, just not ideal as they involve extra hardware and slow down the connection with this same hardware that would not have to be there if someone wrote software to make this easier.

Some tablet computers and phones have the software for an easy transfer of files to a PC by a USB-C cable. There is nothing special about the hardware that enables this function, it is all software with an off the shelf USB-C controller that is common in many laptop and desktop computers. My guess that this is not a ubiquitous feature because there are still plenty of USB-C controller chips out in the wild that do not support peer-to-peer functionality and the people that have to answer the phones on user complaints would rather just sell you a $50 data transfer cable than try to explain the difference between USB-C controllers.

MacGuffin
  • 1,655
  • 8
  • 14