Features
Configurable bitmask
Features are declared in the features
field of the mDNS records as a 64 bits
long bitfield and encoded as two 32 bits hex values separated by a comma. For
example, the features set 0x1111111122222222
will be declared as "0x22222222,0x11111111"
.
The following table is a listing of the features extracted so far. The column condition, if available, contains the necessary condition(s) to satisfy a specific feature.
Bit | Property | Condition | Description |
---|---|---|---|
0 | SupportsAirPlayVideoV1 | ||
1 | SupportsAirPlayPhoto | ||
5 | SupportsAirPlaySlideshow | ||
7 | SupportsAirPlayScreen | ||
9 | SupportsAirPlayAudio | ||
11 | AudioRedunant | ||
14 | Authentication_4 | FairPlay authentication | |
15 | MetadataFeatures_0 | Send artwork image to receiver | |
16 | MetadataFeatures_1 | Send track progress status to receiver | |
17 | MetadataFeatures_2 | Send NowPlaying info via DAAP | |
18 | AudioFormats_0 | ||
19 | AudioFormats_1 | ||
20 | AudioFormats_2 | ||
21 | AudioFormats_3 | ||
23 | Authentication_1 | RSA authentication (NA) | |
26 | Authentication_8 | 26 || 51 |
MFi authentication |
27 | SupportsLegacyPairing | ||
30 | HasUnifiedAdvertiserInfo | ||
32 | IsCarPlay | ||
32 | SupportsVolume | !32 |
|
33 | SupportsAirPlayVideoPlayQueue | ||
34 | SupportsAirPlayFromCloud | 34 && flags_6_SupportsAirPlayFromCloud |
|
35 | SupportsTLS_PSK | ||
38 | SupportsUnifiedMediaControl | ||
40 | SupportsBufferedAudio | srcvers >= 354.54.6 && 40 |
|
41 | SupportsPTP | srcvers >= 366 && 41 |
|
42 | SupportsScreenMultiCodec | ||
43 | SupportsSystemPairing | ||
44 | IsAPValeriaScreenSender | ||
46 | SupportsHKPairingAndAccessControl | ||
48 | SupportsCoreUtilsPairingAndEncryption | 38 || 46 || 43 || 48 |
|
49 | SupportsAirPlayVideoV2 | ||
50 | MetadataFeatures_3 | Send NowPlaying info via bplist | |
51 | SupportsUnifiedPairSetupAndMFi | ||
52 | SupportsSetPeersExtendedMessage | ||
54 | SupportsAPSync | ||
55 | SupportsWoL | 55 || 56 |
|
56 | SupportsWoL | 55 || 56 |
|
58 | SupportsHangdogRemoteControl | ((isAppleTV || isAppleAudioAccessory) && 58) || (isThirdPartyTV && flags_10) |
|
59 | SupportsAudioStreamConnectionSetup | 59 && !disableStreamConnectionSetup |
|
60 | SupportsAudioMediaDataControl | 59 && 60 && !disableMediaDataControl |
|
61 | SupportsRFC2198Redundancy |
Bits not present in the table are still unknown.
Example: features declared by Sonos one
0x445F8A00,0x1C340 => 0x1C340445F8A00
Bits: 9, 11, 15, 16, 17, 18, 19, 20, 22, 26, 30, 38, 40, 41, 46, 47, 48
Other features
Some features are not associated to any bit, but they are rather tested over other feature bits and/or flags.
Property | Condition | Description |
---|---|---|
AudioFormats | supportedFormats || (18 | 19 | 20 | 21) |
|
SupportsAirPlayVideo | 0 || 49 |
|
SupportsExtendedWHA | srcvers >= 366 && (41 || forceAirPlay2NTP) && 40 |
|
ThirdPartySpeaker | 26 || 51 |
|
ThirdPartyTV | (26 || 51) && (0 || 49) |
|
SupportsTransientPairing | 48 || 43 |
|
SupportsKeepAlive | srcvers >= 0.74.25 |
|
SupportsCBCSEncryption | srcvers >= 301.44.30 && len("OSversion") > 0 |
#wut |
SupportsUnifiedPairVerifyAndMFi | 51 && srcvers >= 377 |
|
SupportsInitialVolume | !32 && srcvers >= 120.2 |
|
SupportsAirPlayVideoPausedStart | srcvers >= 220.68 |
|
SupportsMuteCommand | srcvers >= 370.35 |
|
SupportsScreenIdle | srcvers >= 150.35 |
Minimal set of features
Multi-room support
The minimal set of features an AirPlay 2 receiver must declare for multi-room support are:
SupportsAirPlayAudio
(bit 9)AudioRedundant
(bit 11)HasUnifiedAdvertiserInfo
(bit 30)SupportsBufferedAudio
(bit 40)SupportsPTP
(bit 41)SupportsUnifiedPairSetupAndMFi
(bit 51)
The respective features bitmask is 0x8030040000a00
and will be declared as
features=0x40000a00,0x80300
.
Metadata support
The receiver can support metadata information by controlling bits 15, 16, 17 and 50:
- bit 15 - receive the artwork of the track currently played;
- bit 16 - receive the progress status;
- bit 17 - receive a set of #nowplaying info via DAAP1
- bit 50 - receive #nowplaying info encoded in a binary plist - overrides bit 17.
Internal configurable fields (WIP)
- disableStreamConnectionSetup
- forceAirPlay2NTP
- supportedFormats
- canRecordScreenStream
- keepAliveSendStatsAsBody
- extendedFeatures
- playbackCapabilities
- voiceModelSupportedLanguages
-
Digital Audio Access Protocol - https://en.wikipedia.org/wiki/Digital_Audio_Access_Protocol ↩︎