Problem statement
Here is the challenge. We have a MacBook Pro M2 and an Intel NUC 12th generation PC running Windows 11. We want to transfer a significant amount of data between the two and potentially sync content of 2 directories. The Mac has no Ethernet adapter.
Solution
Both machines support Thunderbolt 4 and USB4. I happen to have a 0.5 m (1.6 ft) Thunderbolt 4 cable in my tools bag. We connect the two machines back to back. They establish USB4 peer to peer 20/20 Gbps connection, and automatically assign locally significant IP addresses from the 169.254.0.0/16 APIPA range.
For the record, I am using the Thunderbolt 4 cable shipped with my trusty OWC 10 Gigabit Ethernet Thunderbolt adapter.
The MacBook side
Let’s start with the Mac. Head over to System Settings and Network. Select the Thunderbolt Bridge adapter and explore its config.
As far as I can tell, the machines have decided to use USB4. From what Windows network manager is telling us, they negotiated 20/20 Gbps link speed. I expected 40 Gbps but I think I set a wrong expectation in my head. 20 Gbps up and 20 Gbps down full duplex makes up 40 Gbps.
A quick iperf3 test gives us amazing throughput of 16.4 Gbps of TCP traffic from the Mac client to PC server. That’s fast!
By default macOS uses standard MTU size of 1500 Bytes. This is important hold that thought.
In the downstream direction, that is from Windows PC towards the Mac, we “only” get 5.3 Gbps. Windows claims 20/20 Gbps link speed, so what’s wrong?
Yes, we need to bump MTU (Maximum Transmission Unit) size to the maximum value of 9000 Bytes on my Mac. Apparently, Windows defaults to 62000 Bytes MTU on this peer to peer link type, and there is no UI option to change it. But that’s fine for now.
Let’s retest upload speed. Now we are talking. That’s 16.4 Gbps TCP from Mac to PC and 12.8 Gbps from PC to Mac. I am starting the file transfer.
We are not done yet.
Intel NUC and the Windows part
Windows sees this link as a peer to peer USB4 connection.
The two machines negotiated a 20/20 Gbps link. Windows uses 62000 Bytes MTU by default with no obvious UI option to change it. Mac uses 9000 Bytes. MTU mismatch is bad and we should fix that.
Let’s deal with the MTU, and set it to 9000 Bytes on Windows. Same as the Mac.
With matching MTU on both sides of the pipe, we get 15.1 Gbps TCP throughput from Mac to PC, and 13.6 Gbps from PC to Mac. Slightly more symmetrical in both directions.
Summary
I knew Thunderbolt 4 peer to peer connection was possible between 2 Macs but I’ve never tried connecting a Mac to a PC. It works.
Use a Thunderbolt 4 cable, not just a regular “USB-C to USB-C” cable. If there is a Mac involved, increase macOS MTU size to Jumbo 9000 Bytes and match MTU setting on both machines.
The outcome is a peer to peer 20/20 Gbps USB4 link with TCP throughput around 15 Gbps in either direction.
Very interesting. Thanks for sharing!
Is it possible to connect an M1 Mac to Rog Ally in an ethernet way with just a Thunderbolt 4 cable? I want to use the M1 Mac to access Rog Ally’s remote desktop and use the keyboard and screen of the Mac to use Rog Ally as an affiliate Windows device for the M1 Mac.
Can I connect my Mac to an Intel NUC using Thunderbolt for remote desktop or SSH with a private IP? If I do, will I still be able to use Wi-Fi on my MacBook to access the internet at the same time?
Yes, that should work, assuming that your Wi-Fi adapter has a default route to the internet and you only configure IP address and subnet mask on the Thunderbolt interface without a default gateway (which is called “Router” in macOS GUI).
This is an excellent article for Thunderbolt 4 PC to Mac data transfers!
I am trying to do this between two Windows 11 machines using Thunderbolt 4 networking.
The speeds I am getting are horrendous. Between 60 -145 mb per second.
I am new to this and I was wondering if anyone that reads this can help.
Both of my machines have fast 4tb pcie4 nvme SSDs.
Any help would be greatly appreciated.
Thank you,
Michael
Hi Michael, I remember seeing some reports of poor iperf tool (the tool itself) on Windows. Some folks recommended using a different measurement tool instead. I wonder if this could be the reason?