Start | Getting Started | Tutorial | Supported Features | Concepts | Protocols | atvremote | atvproxy | atvscript | atvlog

Table of Contents

Supported Features

pyatv supports multiple protocols, each of them providing a certain set of features. This page aims to summarize the provided feature set, what each protocol supports as well as limitations.

In general, as a developer you should use interface.Features to verify if a particular feature is available or not and refrain from making other assumptions. See this page as informational.

This page is still work-in-progress and a bit inconsistent. State will improve over time.

Some things worth knowing…

Things change. Constantly. Here are a few things worth knowing about the protocols:

Feature List

This is the general feature list provided by the external interface.

Feature Links
Automatic discovery of devices (zeroconf/Bonjour) Concept, Doc, pyatv.scan
Device Metadata (e.g. operating system and version) Concept, Doc, interface.DeviceInfo
Push updates Concept, Doc, interface.PushUpdater
Remote control pairing Concept, Doc, interface.PairingHandler
List supported features Concept, Doc, interface.Features
AirPlay play URL (including local files) Doc, interface.Stream
AirPlay stream files and from HTTP(s) Doc, interface.Stream
Playback controls (play, pause, next, stop, etc.) Doc, interface.RemoteControl
Navigation controls (select, menu, top_menu, arrow keys) Doc, interface.RemoteControl
Different input actions (tap, double tap, hold) Doc, interface.RemoteControl
Fetch artwork Doc, interface.Metadata.artwork
Currently playing (e.g. title, artist, album, total time, etc.) Doc, interface.Metadata
App used for playback Doc, interface.App
Media type and play state Doc, interface.Metadata
Change media position Doc, interface.Metadata.set_position
Shuffle and repeat Doc, interface.Metadata.set_shuffle, interface.Metadata.set_repeat
Volume Controls Doc, interface.RemoteControl
Power management Doc, interface.Power
Deep Sleep Detection Concept, Doc, pyatv.scan
Launch application Doc, interface.Apps
List installed apps Doc, interface.Apps
Storage Doc, interface.Storage

Core Features

Some features are provided generally by pyatv and not bound to any particular protocol. These core features include:

Protocols per Device

Here is a summary of what protocols various devices support:

Protocol Devices
AirPlay (video) Apple TV (any)
Companion Apple TV 4(K), HomePod (mini)
DMAP Apple TV 2/3
MRP Apple TV 4(K), tvOS <=14
RAOP Apple TV, AirPort Express gen 2, HomePod (mini), 3rd party speakers

pyatv might still not support a particular combination of protocol or hardware, please refer to protocol details below.

Protocols Details

This section provides details on what each protocols support and current limitations.

AirPlay

This protocol concerns the “video” parts of the AirPlay protocol suite, e.g. video streaming, screen mirroring and image sharing.

Supported Features

Limitations and notes

Companion

This protocol is a low-overhead protocol supporting remote control features, HID (touch control), app and power related functions.

Supported Features

Limitations and notes

DMAP

This protocol is the same protocol (suite) used by iTunes in the past and mainly deals with metadata and playback. It is used by legacy devices, like Apple TV 3 and also to control the Music app in macOS.

Supported Features

Limitations and notes

MRP

This protocol was introduced in tvOS and superseds DMAP. It has the same features as well as new ones, like notion of apps and game pad controls.

Supported Features

Limitations and notes

RAOP

This protocols corresponds to the audio streaming part of AirPlay (previously known as AirTunes).

Supported Features

Limitations and notes

Verified Devices

Audio streaming has been verified to work with these devices:

The following 3rd party software receivers have also been verified to work:

If you have verified another device or receiver, please update the list by pressing Edit this page below and opening a pull request.

← Tutorial | Concepts →