I’ll Get You My Pretty (discoveryd and mDNSResponder and why I’m Peeved with Apple OS X)

This is perhaps the 4th or 5th post dedicated solely to my home network and the problems that I’ve been having with it.  Seems that I’m NOT alone.  There are multitudes of complaints and problems with the way WiFi works in OS X Yosemite.

Now, last time I talked about this, I thought that I had pretty much solved it, by going backwards with firmware, but the problem is even more insidious than I thought.


Image Source: austinally.wikia.com

I’LL GET YOU MY PRETTY (So What’s Actually Wrong with my Network)

It appears that Apple (since 2002) has used a very reliable process for WiFi called mDNSResponder.  It has (apparently) been a workhorse over the years and has had very little in the way of issues.  Its like a worker bee that just drones away in the background and gets its job done the the best of its ability.  Well, last October, when Apple released OS X Yosemite, they decided to replace mDNSResponder with a new process for WiFi called discoveryd.  This process is more like a prima dona rockstar: Great when it works, but has so many issues that it isn’t worth investing in.  Based on what I’ve read, it appears to have been written to help OS X features such as AppNap and (perhaps) Power Nap but it has caused no end of frustration to users of Yosemite. Here’s what an article at Ars Technica said about the issue:

Resolving DNS names, resolving Bonjour machine names, resolving Bonjour service advertisement and discovery, and opening ports in NAT gateways to allow incoming network connections are all jobs that have been performed by the mDNSResponder daemon. This was introduced with Mac OS X 10.2 Jaguar back in 2002. mDNSResponder is written in C and has been released as open source by Apple, and it has found its way to all kinds of non-Apple operating systems and hardware.

Again, as of OS X 10.10, mDNSResponder has been replaced by discoveryd. Curiously, discoveryd is (re)written in C++, not exactly one of Apple’s favorite languages. It’s not on Apple’s list of open source projects . . . For instance, when the system is unable to resolve DNS names, discoveryd log messages indicate that it doesn’t recognize the replies from the DNS server to its own requests. discoveryd is also a frequent guest in the CrashReporter logs.

One of the functions of the mDNSResponder was to talk to a home gateway and ask it to forward incoming network connections for any services running on the Mac in question. In the non-Apple world, this is done with the uPnP IGD protocol, and Apple had its own NAT-PMP protocol for this. More recently, the IETF has standardized PCP, a new protocol that also works with IPv6 and firewalls, not just IPv4 and Network Address Translation (NAT) as used by home routers. mDNSResponder supported all of them, but it looks like discoveryd doesn’t use any of them.
Source: http://arstechnica.com/apple/2015/01/why-dns-in-os-x-10-10-is-broken-and-what-you-can-do-to-fix-it/

Wait, what?  Apple, your old software recognized old and new protocols, but your new and improved software doesn’t recognize any of them?


Now, I searched and searched trying to find the issue or cause of my network’s problems and instabilities.  I wasted countless hours trying to diagnose this problem, even reverting back to old hardware and firmware to see if I could get my network to go back to the way it was: rock solid.  It seems that I’m not the only one.  Word is that Apple has reverted back to mDNSResponder for the Beta of the upcoming OS X El Capitan.  Here’s what 9to5 Mac had to say (click on link previous link for full article): After many complaints from the developer community about poor networking performance on Yosemite, the latest beta of OS X 10.10.4 has dropped discoveryd in favor of the old process used by previous versions of the Mac operating system. This should address many of the network stability issues introduced with Yosemite and its new networking stack.

Now, while I’m hopeful that this will clear up the issue and help me get back to my first love (writing), I’m not too happy with Apple at the moment.  No where could I find any mention of these issues on Apple’s (official) Help pages for networking–they just gave general advice such as restart your router, etc.  If you know there’s a problem, or a problem piece of software/code, say so.  Relying on the forum’s to figure it out isn’t an answer.  I searched forum after forum and tried suggestion upon suggestion.  Most people knew there was a problem, but no one could narrow it down to one specific cause/case.  However, there were developers who had more experience who apparently were warning Apple about this very issue (I reference Craig Hockenberry’s blog on the issue–warning: Salty Language).

Now, I didn’t find out about the discoveryd issue until MacWorld included it in a segment on one of their podcasts and then I was able to look it up and see that, hey, those are the very issues that I’m having, ah ha, that’s why I can’t get my wifi back to being consistent and solid.  In the Ars Technica article, there are workarounds to getting mDNSResponder back on your system before Apple “officially” does it and I would have loved to have known that because I would have tried them during the school year.  Now, however, I have to either wait for El Capitan or risk losing the writing that I’m doing over the summer by trying those suggestions or signing up for the El Capitan Beta (the 1st solution involves going into terminal and the 2nd involves a beta–which is, by definition, a testing platform).


I would love it if Apple designated their help files as Novice, Intermediate, Power User & Developer.  I consider myself a Power User and given enough information I can maintain my system rather well.  All that Apple needed to do (for me) to have been satisfied was to give those general hints (restart router, etc.) in the novice or intermediate categories, but in the power user section say, “if you’re still experiencing problems, it could be . . . (and say discoveryd might not be working correctly on your system.  You can find our older mDNSResponder here, download it and tell us if it solved your problem).

Or perhaps visit an Apple forum anonymously and point us in the right direction.  I can’t tell you how many forum posts I looked at on the Apple forums and none of them listed discoveryd as a possible vector.

Do I have wifi as I write this.  Nope.  I’m tethered to the ethernet cable.  Yet, as I look at my MacBook Pro’s Activity Monitor, I see both discoveryd and discoveryd_helper sitting there just staring at me.  But right now, my Apple TV and my iPad are both useless to me, so any research I need to do must be done here tethered to cable or not at all.  And to know that I still have to wait until El Capitan releases (probably in Oct., nearly 4 months away) before I get an “official” fix is all the more egregious.