Apple compatibility
- OS:
🪐 Platform-independent
Apple’s mDNSResponder — the origin of the Bonjour Sleep Proxy protocol and the implementation with the biggest reach — is the most likely counterpart a Desomnia Sleep Proxy or client will encounter in the wild. Desomnia’s implementation has been developed against Apple’s open-source mDNSResponder and verified against real Apple hardware. Both directions work out of the box:
Desomnia as a proxy for Apple clients. A Mac with Wake for network access enabled registers with a Desomnia proxy like with any Apple one. The quirks of Apple’s client are accepted transparently — registrations without a zone section, per-service instance names, service-type enumeration and subtype pointers, auxiliary records such as the device-info TXT, and registrations that span multiple messages (routine for a Mac with AirPlay or sharing enabled). SRV priorities/weights and TXT attributes are preserved and re-advertised exactly as registered. When the Mac wakes up, its return announcement releases the lease immediately.
Desomnia as a client of an Apple proxy. A host with handoff="SleepProxy" registers with an Apple TV, HomePod or AirPort base station just as a Mac would: the registration includes everything Apple’s proxy needs to defend the host’s addresses (reverse address mappings for ARP/NDP proxying), advertise its services, and wake it with a Magic Packet — including the SecureOn password, if one is configured.
Known caveats
The following limitations apply when one end of the exchange is an Apple implementation; none of them affect Desomnia-to-Desomnia operation.
No wake filters on Apple proxies. Desomnia’s filter rules travel as private protocol extensions that Apple’s proxy ignores. An Apple proxy wakes the host according to its own fixed policy — essentially any incoming TCP connection attempt to the sleeping host — so wake gating by source host or address range is only enforced when the proxy is also a Desomnia instance.
Apple proxies cap leases at 24 hours and always wake the host when the lease expires, regardless of any expiry setting. However long your
handoffDuration, expect a sleeping host parked at an Apple proxy to be woken at least once a day; Desomnia then re-registers on the next idle, so the cycle is self-healing.A short blind spot after registration. For roughly the first ten seconds after accepting a registration, Apple’s proxy probes the host to confirm it is really asleep and does not yet answer address resolution on its behalf. Connection attempts in this window can fail; they succeed once the proxy starts defending the addresses.
Apple clients ignore registration errors. Apple’s client treats any response as success, so a registration a Desomnia proxy has to refuse (for example because the lease pool is exhausted) goes unnoticed by a Mac — it suspends believing it is proxied. Nothing can be done about this on the proxy side.
No TCP keepalive proxying. Apple’s proxies can keep a sleeping Mac’s established TCP connections alive by answering keepalive probes on its behalf. Desomnia accepts such registrations but does not currently sustain the connections, so long-lived idle connections of a sleeping Mac may time out. This is a planned improvement.
Friendly names are not preserved by Apple proxies. The service names from Desomnia’s configuration travel as a private extension; an Apple proxy simply advertises the service without them, which is cosmetic.
Compatible devices
The following Aplle devices offer a Bonjour Sleep Proxy on the network and can be used instead of a seperate Desomnia deployment, if you own one of these:
Device |
Notes |
|---|---|
Apple TV |
2nd generation and later. Acts as a Sleep Proxy automatically whenever it is powered and on the network; the most common proxy in Apple households today. |
HomePod / HomePod mini |
Acts as a Sleep Proxy automatically, like the Apple TV. |
AirPort Express / Extreme / Time Capsule |
Apple’s Wi-Fi base stations, from firmware 7.4.2 on. Discontinued in 2018, but still deployed in many networks. |
Note
Several proxies may serve the same network segment simultaneously — clients simply pick the one with the best metric. If Desomnia should win that election against an Apple TV, advertise a better metric via sleepProxyMetrics.