PC to PC file transfer with USB-C <-> USB-C or USB-C <-> USB ordinary cables. Is it possible?

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.


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.


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).


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.