-
-
Save dlueth/36a3d5fbbc98a46ac14e to your computer and use it in GitHub Desktop.
#!/bin/bash | |
if [ ! $(whoami) = 'root' ]; then | |
echo "This script should be run as root." > /dev/stderr | |
exit 1 | |
fi | |
spinner() | |
{ | |
local pid=$! | |
local delay=0.75 | |
local spinstr='|/-\' | |
local text=$1 | |
local count=0 | |
echo -ne "$text " | |
while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do | |
local temp=${spinstr#?} | |
printf "[%c]" "$spinstr" | |
local spinstr=$temp${spinstr%"$temp"} | |
sleep $delay | |
printf "\b\b\b" | |
done | |
echo -ne "\b\b\b\n" | |
} | |
case "$1" in | |
install) | |
(cp ./mDNSResponder /usr/sbin/ && cp ./mDNSResponderHelper /usr/sbin/ && cp ./com.apple.mDNSResponder.plist /System/Library/LaunchDaemons/ && cp ./com.apple.mDNSResponderHelper.plist /System/Library/LaunchDaemons/) > /dev/null 2>&1 & spinner "copying required files" | |
(launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist && launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd_helper.plist) > /dev/null 2>&1 & spinner "deactivating discoveryd" | |
(launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist && launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponderHelper.plist) > /dev/null 2>&1 & spinner "activating mDNSResponder" | |
echo -e "Please reboot your machine" | |
;; | |
remove) | |
(launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist && launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponderHelper.plist) > /dev/null 2>&1 & spinner "deactivating mDNSResponder" | |
(launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist && launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd_helper.plist) > /dev/null 2>&1 & spinner "activating discoveryd" | |
(rm -rf /usr/sbin/mDNSResponder && rm -rf /usr/sbin/mDNSResponderHelper && rm -rf /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist && rm -rf /System/Library/LaunchDaemons/com.apple.mDNSResponderHelper.plist) > /dev/null 2>&1 & spinner "removing unnecessary files" | |
echo -e "Please reboot your machine" | |
;; | |
*) | |
echo -e "Usage: mdnsresponder.sh {install|remove}" | |
exit 1 | |
;; | |
esac |
Usage: | |
1. Download and unzip the archive from https://copy.com/DKXr6KxqL1LrFkpA into the same directory as the attached shell script | |
2. chmod +x ./mdnsresponder.sh | |
3. sudo ./mdnsresponder.sh install | |
4. reboot your machine | |
To switch back to discoverd: | |
1. sudo ./mdnsresponder.sh remove | |
2. reboot your machine |
Thanks ! I'd have included the sh file into the zip archive. It works insanely well : almost every broken services are back (WOL, WOW, Disappearing shares, duplicate machine names, ...) and even Handoff and Airdrop are much more stable.
Just for future onlookers concerned about the security around downloading those binaries, here are the MD5 hashes of both that you should verify before running this script. I had these verified from multiple systems running OS X 10.9.
MD5 (mDNSResponder) = f09fd4f1a256ba622356a9fc0579a338
MD5 (mDNSResponderHelper) = 30646c984e812e157a352d24df125033
Thanks! I had problems with Bonjour services ever since I upgraded to Yosemite.
Wow! thanks! fixed a lot of strange wifi error after wake-up too! thanks!
Fixed DOTA 2 lag spikes :D
@dlueth if you would be kind enough to update the links. seems broken. Thanks
@dlueth yes link broken to download
THANKS A LOT! My internet connection only works on Chrome and not in Safari, Dropbox, Spotify... And you have resolved it!!!!!!!!!
Thanks!