Inconsistent access to Bonjour services on sleeping devices

airplayappletvbonjouritunessleep-wake

This may turn out to be two different questions/answers, but I suspect they're somewhat related. Let's see…

Among other things on my home network, I have a MacBook Pro (mid-2010) and a Macbook (late 2009), both running 10.9.5, and a 2nd gen AppleTV and a 3rd gen AppleTV, both fully updated.

When the Macbook is asleep, provided iTunes was running when it went to sleep, all my other devices can see its iTunes library, and wake up the Macbook to access it if they want to. But when the MacbookPro is asleep, nothing can see its iTunes library until I open the lid again.

When the AppleTV 2 is asleep, all my other devices can see it and select it as an AirPlay target. But when the AppleTV 3 is asleep, nothing can see it until I wake it up.

Obviously, I'd prefer it if all my devices could see the services on all my other devices, all the time—I understand this is what the Bonjour Sleep Proxy service is supposed to do. But I can't figure out why it's working for some devices, but not others.

Any clues?

EDIT: To answer the most common question I'd anticipate, yes, "Wake for network access" is checked in the Energy Saving prefs on both the laptops in question.

Best Answer

I eventually tracked this down to the behaviour of one of my Powerline adapters, specifically a TP-Link TL-WPA4220. For whatever reason, multicast traffic does not appear to correctly pass through the WiFi on this device, even with the latest firmware.

TP-Link have a related technical note on this, but it doesn't seem to apply to my particular device. In the meantime, I've just left the WiFi turned off on this adapter (still using it for two wired devices, including the 3rd gen Apple TV), and things seem to be working better again.