Download WiFriedX — a band-aid that can double Yosemite WiFi speeds.

WiFriedX

Mario Ciabarra
11 min readDec 10, 2014

--

An In-depth look at Yosemite WiFi issues due to AWDL & AirDrop.

There are a number of WiFi issues plaguing Yosemite users. Some have been around awhile and some are new. Their various combinations have created a perfect storm that severely impact users’ WiFi while also making it very difficult for Apple to identify and resolve. Apple Wireless Direct Link (AWDL) is new in Yosemite, and is causing severe WiFi interference while also contributing to other Yosemite WiFi trouble.

A few weeks ago, I stumbled upon a WiFi issue on my iOS 8.1 iPhone 5S/6. I conducted some research into the issue and wrote about my findings in WiFried, the issue of Bonjour over Apple Wireless Direct Link (AWDL). Just before finishing that article, I decided to glance at Yosemite and noticed similar behavior. However, I only looked at Yosemite peripherally as I had only made a workaround for iOS.

This week, I decided to spend more time diving into AirDrop and AWDL on Yosemite. Here’s what I found:

AirDrop will destroy you

Well, really just your WiFi ☺

I said it before and I’ll say it again. Apple, please no Bonjour over AWDL (or add a new WiFi chip to do so). Why not? Because it requires the WiFi chip to transmit and receive over two interfaces/channels simultaneously.

I opined previously how I didn’t believe it was possible to really have AWDL work without a performance penalty. However:

With the iPhone 6 WiFi chipset, Broadcom specifically touts “connect to multiple Wi-Fi ….without interference issues”. Either Apple has bugs still to work out or Broadcom oversold their product.

Of course, Broadcom’s press release stating “without interference issues” is referring to their latest chip that’s used in the iPhone 6. Even if Apple could improve the code, what about older iPhones and Macs? Even the latest iMac is using a ~3 year old WiFi Chip (Broadcom’s BCM20702).

Personally, I believe this is not an Apple bug, but rather a hardware limitation, and a bad choice by Apple in terms of implementation. Sure, I believe Apple can fully move Bonjour over AWDL to strictly Bluetooth. But when you AirDrop a file, I’m confident there will continue to be interference with an active WiFi access point connection on at least most, if not all, of today’s Yosemite and iOS 8 hardware.

Download WiFriedX and disable AirDrop and AWDL

As I detail below, there’s no way to full disable AWDL in Yosemite. As AWDL is impacting WiFi performance and perhaps aggravating other issues, I’ve put together a small app to allow users to toggle AWDL off and on from the menu bar.

Results from one user with an 80% improvement in WiFi performance after installing WiFriedX
WiFriedX allows users to enable/disable AWDL from the Yosemite Menu bar

Download WiFriedX
Source Code

Note: WiFriedX only assists Macs with an awdl0 interface, which is roughly mid 2012 and later. It will not help with, what Apple refers to as, “Older Mac”.

Reproduce AirDrop issue on Yosemite

To reproduce the AWDL issue on Yosemite, you need at least two devices that are on either Yosemite or iOS 8, including any point releases. You only need to begin discovering AirDrop services to see the effects.

AirDrop discovery begins after pressing the action button on both Yosemite and iOS. Additionally, discovery will begin when choosing the AirDrop tab in Finder.

On Yosemite: To begin discovering AirDrop services on Yosemite, open the AirDrop tab in Finder. This device and any nearby devices with AirDrop set to “Everyone” will be affected.

On iOS 8: To begin discovering AirDrop services, open the Photos app, choose a picture, and press the action button. This device and any nearby devices with AirDrop set to “Everyone” will be affected.

If just one Yosemite device user leaves open the AirDrop tab at your office or your dorm, and you are discoverable by that device, your WiFi performance is doomed!

From a usability standpoint, Apple simply can’t expect users to know that leaving the Finder AirDrop tab open causes interference with their WiFi & nearby devices.

Without WiFriedX: Use “No One”

As a less complete alternative to WiFriedX, you can set AirDrop discoverability to “No One” in Finder -> AirDrop tab. By preventing resolution of your device, you can prevent other devices from interfering with your WiFi performance without your permission.

Why: This helps reduce exposure to AWDL, but WiFriedX helps more.
Catch: You’ll need to change this setting when you want to use incoming AirDrop connections.

AirDrop allows you to set your discoverability. By setting it to “No One”, nearby devices running Yosemite or iOS 8 will no longer be able to induce WiFi interference.

If not using WiFriedX, Yosemite users should select “No One” in their AirDrop settings.

Note: The discoverability setting is available only for newer Macs with an awdl0 interface.

By default when you are not logged into iCloud, Yosemite sets discoverability to “No One”. However, as I recommended above and explain in more detail below, you are still better off using WiFriedX to disable awdl0 as “No One” does not equate to stop using AWDL.

AirDrop: Don’t use “Everyone”

This should be called, “Allow Everyone to destroy my WiFi”. Seriously. On iOS 8–8.1, simply opening the Control Center could impact your WiFi. On iOS 8.1.1, Apple has reduced the impact. If someone uses an iOS 8.1.1 AirDrop-capable iPhone nearby and opens the Photos app, selects a photo, and presses the action button (ie, to iMessage the photo), they will inadvertently reduce your WiFi performance. The minimum time span it will affect nearby WiFi devices is about 30 seconds after the user has closed the action view.

With AirDrop set to “Everyone” or “Contacts Only”, devices from
over 40m (120 feet) away can severly degrade your WiFi performance.

Simply put, the ability for neighboring devices to half or worse my WiFi’s performance is not acceptable.

AirDrop: Don’t Use “Contacts Only”

If you sign into iCloud, Yosemite changes the discoverability to “Contacts Only”. I would rename this setting, “Grant Permission to degrade my WiFi only if I know you”. It’s a definite improvement over “Everyone”, but typically in an office or dorm, nearby iPhone’s are in your contact list.

Is AirDrop set to “No One” enough?

It turns out AWDL is still a problem even when set to “No One”. The largest impact I saw during my tests was when I connected to a WiFI access point. For 30 seconds to a minute, I would experience severe degradation of my MBP’s WiFi speeds. To verify, I brought the awdl0 interface down and the speed degradation did not occur (except for the impact of the scans mentioned below). You can also verify traffic going out the awdl0 interface by doing a “netstat -i” and watch the packet count increase on the awdl0 interface when hopping access points.

AWDL Channel Insanity

I was curious what channel(s) AWDL uses, so I whipped together some quick code to fetch the channel from the kernel on the awdl0 interface. During discovery, I was surprised to see the awdl0 interface alternating between channel 6 and 149, despite being connected to an access point on channel 11 or 36 for example.

AirDrop uses 5ghz (chan 149) for Transmit

Another important note is that while it will jump channels while browsing for nearby devices, it appears to use the 5Ghz 149 WiFi channel for actual transmission. While transmitting a file, the interface will report alternating between channel 149 and the WiFi channel my Mac is connected to (instead of channel 6 as before). If my Mac is not connected to any access point, the interface reports back channel 149 the entire time the AirDrop interface is in use.

Most concerning was that after AirDrop browsing is stopped on my MBP, after about 30 seconds of final alternating, the awdl0 interface would report back channel 1. Now you wouldn’t expect any traffic on the awdl0 interface at this time, so no worries right? However, after being set to channel 1, packets do get sent out over awdl0. I noticed these packets, along with interference and performance degradation, most prominently when I switched WiFi connections.

Too Much Information, But….

This may be TMI, but to boil it down to a relevant question, why is Apple jumping around between 6 and 149 during discovery? I understand the reason to use the 5Ghz 149 channel for sending and discovery, but not clear as to why, during discovery, it jumped between channel 6 and 149. I mention this as I hope Apple will perhaps look into this, and perhaps find it to be a bug. This jumping around is during the discovery period which corresponds with when Yosemite is having the most problematic interference / performance degradation.

Surprisingly, AWDL is actually interfering with even Windows machines

I set my WiFi access point to channel 149 and disconnected my MBP and iPhone 6. On a 3rd Windows computer, I ran a speed test while sending a file over AirDrop between the MBP and iPhone 6. Not surprisingly, my Windows computer began to degrade its WiFi performance due to interference from AirDrop.

To be clear, the channel 149 interference is not nearly as severe as the way AirDrop discovery degrades Yosemite. Additionally, it’s only noticeable when users are actively using AirDrop, so it’s unlikely you’ll ever have much interference.

To avoid interference, I’m no longer going to use the 149 5Ghz channel that Apple has dedicated to using for AWDL.

One anecdotal reference a user not being able to use 149.

With changes in iOS 8.1.1, it’s clear that Apple has given the AWDL issue attention. There have been reports of improved performance from users on 10.10.1/2, but it’s clear from the list below, there’s still a lot of challenges for Apple to tackle. I’m crossing my fingers, but not holding my breath.

Other Yosemite WiFi Issues

While I was I’ll researching AWDL, I encountered or researched a number of other Yosemite WiFi issues. This is not meant to be an exhaustive list, nor very detailed. However, I thought it would be better to at least bring attention to the fact that while AWDL may be exacerbating other WiFi issues, it is not the only issue nor is WiFriedX the panacea to all WiFi issues on Yosemite.

Yosemite WiFi Issues

Here are the issues I encountered or reviewed while researching AWDL:

1. AWDL interference and channel hopping (WiFriedX provides band-aid)
2. Too many scans after network associate (WiFriedX helps a little)
3. AppleTV, Bonjour Sleep Proxy, and AWDL (Uncheck “Wake For Wi-Fi”)
4. Enterprise Authentication

Scans, Scans, and more Scans

After a device connects to a WiFi network, over approximately the next 30 seconds, Yosemite performs a series of WiFi scans. You can recreate the impact of this at any time by clicking on the WiFi symbol on the menu bar, which will initiate scans, or choosing a different WiFi station. The result of Yosemite performing these superfluous WiFi scans after you are connected is a sporadic reduction of WiFi performance for about 30 seconds. I happened to have Snow Leopard installed on another partition, and verified that this wasn’t always the case.

Why is Yosemite performing so many scans, just after we associated with a new station? I have no idea, but I hope someone at Apple is reading.

AppleTV, AWDL, and Bonjour Sleep Proxy

Apple promoted using a peer-to-peer connection for AirPlay. This is a cool feature if you are at a conference and want to present onto a AppleTV without having to connect the AppleTV and your MacBook Pro onto a WiFi access point.

However, and this is the part not disclosed, it doesn’t work well when you want to present from your MacBook Pro that is connected to a WiFi access point onto a AppleTV that is not connected. Perhaps you want to show a YouTube video as part of your presentation. Because you would have an AWDL connection with the AppleTV, the interference generated would severely degrade your WiFi access point connection, making it impossible to show a HD YouTube video. The workaround is to make sure you connect that AppleTV to the WiFi AP as well.

All of these catches really take the fun out of using AWDL. Apple wants to make it just work, but is making users pay the price of WiFi performance. Apple can’t expect users to remember a bunch of if-statements on how to use it “correctly”.

Mac Attacked by AppleTV via Bonjour Sleep Proxy

Sounds like a scene out of a really bad spoof. While I was looking into the AppleTV, at one point my Mac went to sleep. I came back and my WiFi connection was WiFried (aka, not working)!

I noticed in the log file that my Mac was defending
against an “attack”, by my AppleTV!

Defending IP 192.168.1.90 against BonjourSleepProxy 58:55:ca:xx:xx:xx

I had no network access, despite my WiFi symbol showing I was connected. Turns out, my Mac can’t defend so well. And I thought the AppleTV was cute.

Something was in a very bad state. I executed“netstat -i”, and the command hung after writing the en0 statistics. The next interface to print was none other than awdl0. After I manually brought the awdl0 interface down, netstat returned and my connection began working again. This leads me to believe that the issue could be exacerbated by AWDL, but I don’t have specific evidence.

To be fair, this happened to me only once over the 2 days I was testing. But it does happen, here, and here confirming it continues to be an issue in at least 10.10.1.

Until the AppleTV attack, I was not aware of the Bonjour Sleep Proxy service. There’s a great write up by an Apple engineer, Stuart Cheshire, here. AppleTVs running iOS 8 (with a wired connection per source?), AirPort Base stations, and Time Capsules are capable of becoming a Bonjour Sleep Proxy service.

You can disable your Mac from participating in the Bonjour Sleep Proxy service by unchecking “Wake for Wi-Fi network access” under Preferences -> Energy Saver. The largest impact of disabling this feature for most users is that WiFi wake for Back To Mac will no longer work.

Under Preferences -> Energy Saver

Uncheck “Wake For Wi-Fi network access”.

While I mentioned above that this attack didn’t happen often, it appears to be one more “feature” that can stop your WiFi from working. If you’re not using the associated benefits, it’s best to disable.

Yosemite and Enterprise Authentication

I’ve seen multiple issues with enterprise authentication and Yosemite. I don’t really have a lot of details. I’ve seen log files, and lots of comments, comments, and more comments (x 1000). It seems that there’s a minor “won’t connect at all” issue based on certificate authentication, but a larger issue where a roaming event occurs, causing a re-authentication which can fail or take a long time for SSL verification.

The enterprise authentication issue appears to be a preexisting condition that may be exacerbated perhaps by AWDL or perhaps new code changes.

Awaiting Yosemite Updates

I know the above was a lot to digest, but I wanted to relay a sense of the complexity Apple is facing and that the task is by no means simple.

In 10.10.2, Apple stated “Focus Area: WiFi” for the update. I would ask that Apple be more specific when they release updates to Yosemite, as Apple users deserve more and would be better equipped to assist in troubleshooting at least their own Mac’s WiFi.

______________________________________________________________

Mario Ciabarra is Co-Founder and CEO of Quantum Metric, and lives with his wife and 3 kids in beautiful Colorado Springs.

@mariociabarra
LinkedIn

--

--

Mario Ciabarra

Founder | CEO of Quantum Metric. Previous Founder/CTO of DevStream, Intelliborn, Rock Your Phone, & others. Most importantly, Dad of 3.