Skip to content
DnsLister Forum

Where domain hunters compare notes

Send voice to Siri on your Apple TV through Home Assistant

Send voice to Siri on your Apple TV through Home Assistant

After switching to a dedicated remote (Astrion) for my living room, I missed having Siri functional on the Apple TV.

So I (and Claude) built appletv-siri-voice – an Apache-2.0 open-source project that makes Home Assistant appear to your Apple TV as a HomeKit remote (the same accessory profile used by Crestron’s TSR-310), allowing it to stream voice directly to Siri.

“Skip the intro” · “What did she say?” · “Play the next episode” · “Open Netflix”

No MFi licence, no special hardware, no jailbreak. It pairs through the Home app using a standard 8-digit HomeKit setup code.

The interesting part

Apple’s public HomeKit Accessory Protocol specification documents the Target Control profile (Chapter 12), but every known implementation is commercial MFi hardware. The common assumption is that Siri support therefore requires MFi, but it simply checks whether the accessory declares itself as a hardware entity – a flag the accessory sets about itself. Nothing verifies it. Once I stopped assuming it required MFi and actually followed the specification, Siri worked.

I couldn’t find another open-source project implementing this, but I’d be happy to hear if I missed one.

Features

  • Voice to Siri on any paired Apple TV using Opus (16 kHz), streamed in real time so Siri starts listening while you’re still speaking.
  • Remote button control over HomeKit, independent of pyatv, so it continues working even if the Home Assistant Apple TV integration is asleep or disconnected.
  • Text-to-Siri — send written commands from automations, scripts, or an LLM with no microphone involved.
  • Multiple Apple TVs from a single bridge and pairing. Each Apple TV is exposed separately, making room-based routing straightforward.

Requirements / caveats

  • Apple TV running tvOS 12 or later on the same LAN.
  • A companion Docker container (works with Home Assistant Core, Container, Supervised, and HA OS). It can run on any Docker host on your network.
  • Host networking is required, since HomeKit relies on mDNS.
  • The companion container exists because HAP-NodeJS is currently the only open-source implementation that supports HomeKit Data Stream, which Siri audio uses. HAP-python does not currently implement either Data Stream or Target Control.

By default, every voice request goes to Siri. If you already use Home Assistant Assist or a local LLM, you can optionally route requests between them based on your own logic.

Feedback, bug reports, and contributions are very welcome.

submitted by /u/madolfsson to r/homeassistant
[link] [comments]

Source: r/homeassistant · by /u/madolfsson

Leave a Reply

Your email address will not be published. Required fields are marked *