Skip to content

Apple TV

Controls an Apple TV for navigation, transport, and app launching, and reports detailed now-playing state.

Nothing to install. The driver prepares whatever it needs on the hub the first time an Apple TV is added — a one-off wait of about a minute, shown in the device’s panel while it happens.

An address is a DHCP lease, so it changes on its own. The first time the device is reached it also reports an identity that is fixed in the hardware, and that identity is saved for it. Every reconnect after that tries the known address first, because a single-host lookup answers almost instantly; if nothing is there, or something else has taken that address, the network is swept for the identity instead and the new address is written down. Nobody is asked to find or type either value.

Apple devices are discovered over _companion-link._tcp, _airplay._tcp and _raop._tcp together, and the model identifier in their Bonjour records decides what each one is. That matters because _companion-link._tcp is what Handoff runs on, so every iPad, iPhone and Mac in the house answers it too — they are recognised and left out of the list, along with third-party AirPlay receivers (a Zidoo advertises model=AppleTV2,1 to attract iPhones, and has its own driver here).

KindWhat it isWhat it can do
Apple TVtvOS, offers CompanionEverything below
HomePod / HomePod miniAudioAccessory* — also tvOS, also offers CompanionTransport and volume. No navigation, no power, no apps
AirPort ExpressAirPort*, AirPlay + RAOP onlyVolume, and playing a URL

The kind is worked out each time the device connects rather than stored, so a device added before this existed corrects itself. Nothing in its saved configuration changes — it simply stops offering commands it was never able to run.

  • Pairing — pair with the Apple TV to obtain AirPlay and Companion credentials. The credentials are stored as a managed secret.
CommandWhat it does
navNavigate (up, down, left, right, select, menu, home, home_hold, top_menu)
play / pause / stop / next / previousTransport control
skip_forward / skip_backwardSkip within the current title
volume_up / volume_down / set_volumeAdjust volume
turn_on / turn_offPower the device on or off
launch_appLaunch an app by bundle id
textEnter text

Emits rich playback.changed events reflecting the current now-playing state.