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.