Trouble with AirDrop over ethernet, IPv6 related

Started by deviantintegral, June 19, 2025, 01:53:04 PM

Previous topic - Next topic
I've been having difficulty with AirDrop in a specific scenario that I'm stuck on. First, some background.

  • AirDrop requires WiFi and Bluetooth to work at all.
  • Most of the time, AirDrop will use AWDL to send files with a direct peer-to-peer wireless link after the initial setup has completed. This avoids any connection with your current WLAN or LAN.
  • AirDrop uses an IPv6 link-local address to send data in this case.
  • In some circumstances AirDrop will use a wired connection instead of AWDL. Recently, Apple added support for devices connected directly with USB-C. Macs will also use ethernet if available, both devices are on the wan LAN, and if the heuristic thinks that's better than a direct connection. In this case it uses a regular IPv6 address instead of a link-local one.

It's this last scenario that's broken for me. In particular, if I try to send a file with AirDrop from a Mac to an iPhone or iPad, the initial setup works fine but the actual file transfer hangs. I've tried with two Macs, and three different destination devices, and they all have the same issue. However, I've found two cases where AirDrop still works:

1. If the file is small enough (say a few MB) it sends fine. I think it just sends the file over AWDL instead of trying the wired connection.
2. If I disable IPv6 on the LAN in OPNSense, it works! I can see the data going out from the Mac over it's ethernet connection, and then over wireless to the iDevice. It's only when using SLAAC IPs and not link-local that AirDrop breaks.

This made me think there was perhaps a firewall issue, but there's nothing showing up in the logs. The devices are on the same VLAN anyways and there's a switch in between. Also, while the AirDrop transfer is hanging, I can ping the IPv6 addresses it's using to send.

I did a capture with WireShark as well. It shows a few seconds of encrypted UDP traffic, and then some ICMPv6 with solicitations and advertisements, and then hangs.

IPv6 in OPNSense is set up as a delegated prefix with the "Track Interface" option. I don't have any advanced options set up. Otherwise, as far as I can tell IPv6 is working correctly. At one point I suspected multicast settings on my UniFi APs, but given link-local IPv6 addresses work I don't think that's the case.

Any suggestions?

You are correct about OpnSense not being directly involved in either AWDL or any traffic that is sent locally in your (W)LAN, i.e. all devices are on the same VLAN. This traffic does not pass OpnSense, so you cannot see anything there.

Maybe you should check if your IPv6 setup is really working correctly. Depending on your wireless APs, they can also isolate devices. E.g., with Unifi, there are in fact multiple options that could be the culprit:

You cannot view this attachment.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Thanks. Here's my normal settings for the SSID. Isolation is off, UAPSD is on, Multicast Enhancement is on, but Multicast control is off.

I set them to match your example with no change. I also created a brand new SSID with default settings, joined the two devices to that network, and saw the same issue.

I was all convinced that the APs had nothing to do with the issue. But then to be sure, I unplugged them all, and used a USB-C network adapter on my iPhone to plug into the LAN. And, it worked fine!

Next, I double checked IPv6 connectivity on the WLAN, and it looks good. I can ping devices, and CloudFlare's speedtest shows an IPv6 address.

As one last idea, I set IPv6 on all interfaces on the Mac to "link local only". I was thinking this would work, given how disabling IPv6 on the LAN fixed the issue. But, it showed the same problem.

Without any further knowledge of those strange protocols, it will be hard to find what the problem is. Apple doing Apple stuff... :-(
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+