Destructive Interference

The Problem

I’ve spent the last year or so trying to figure out why it was my 2018 Mac Mini would not unlock with my Apple Watch. While seemingly unrelated, I also attempted to discover why my wireless trackpad had such difficulty maintaining a good connection to my Mini.

The Solution

I finally found the solution: my USB 3.1 hub(s) created sufficient interference in the 2.4 Ghz radio band, the same band as Bluetooth and Wifi, to create instability in the connections with peripherals. As the Apple Watch unlock feature uses signal timing to determine user proximity, it would fail due to the interference. My trackpad issues stemmed from the same problem.

The simple solution involved purchasing a USB 3.1 to USB-C cable, as opposed to the USB 3.1 to USB-A cable provided with the hub. This seemingly-inconsequential change reduced (or perhaps eliminated) the interference such that my watch consistently unlocks my computer, and my trackpad no longer disconnects or stutters.

My life’s story in brief, but first, a baking recipe

A number of complexities complicated the ability to diagnose the cause of the issue. For one, console.log provided no easy hints when failing to unlock the computer via the watch. For another, the watch unlock consistently succeeded with my Macbook Air.

Additionally, I use an external GPU with my Mac Mini, which is an esoteric setup at best. OS 10.15 received a number of patches aimed at solving a number of security holes discovered with Thunderbolt 3, the connection protocol for the eGPU. I thought that might have the most to do with the issue, given the poorly supported configuration and numerous patches that broke the ability to boot with the eGPU attached.

Odd as it may sound, I did not think of the USB hubs as “accessories” when I went about disconnecting all possible causes from the machine. I had read about USB 3.1 causing interference to other devices, but I thought it would be more related to cheap, poorly made devices as opposed to most USB 3.1 devices in general.

The moral of the story: disconnect everything from your device, test, and add things one at a time until you find the fault.