Digital Audio Access Protocol

{{Short description|For sharing music in Apple's iTunes}}

The Digital Audio Access Protocol (DAAP) is the proprietary protocol introduced by Apple in its iTunes software to share media across a local network.

DAAP addresses the same problems for Apple as the UPnP AV standards address for members of the Digital Living Network Alliance (DLNA).

Description

The DAAP protocol was originally introduced in iTunes version 4.0.[http://tapjam.net/daap/ "Unofficial DAAP protocol documentation"] {{webarchive|url=https://web.archive.org/web/20120222074557/http://tapjam.net/daap/ |date=2012-02-22 }} by Daniel Garcia, retrieved December 2, 2006 Initially, Apple did not officially release a protocol description, but it has been reverse-engineered to a sufficient degree that reimplementations of the protocol for non-iTunes platforms have been possible.

A DAAP server is a specialized HTTP server, which performs two functions. It sends a list of songs and it streams requested songs to clients. There are also provisions to notify the client of changes to the server. Requests are sent to the server by the client in form of URLs and are responded to with data in {{mono|application/x-dmap-tagged}} mime-type, which can be converted to XML by the client. iTunes uses the zeroconf (also known as Bonjour) service to announce and discover DAAP shares on a local subnet. The DAAP service uses TCP port 3689 by default.[https://www.iana.org/assignments/port-numbers "Well Known Port Numbers"] by IANA, November 30, 2006, retrieved December 2, 2006

DAAP is one of two media sharing schemes that Apple has currently released. The other, Digital Photo Access Protocol (DPAP), is used by iPhoto for sharing images. They both rely on an underlying protocol, Digital Media Access Protocol (DMAP).

Early versions of iTunes allowed users to connect to shares across the Internet, however, in recent versions only computers on the same subnet can share music (workarounds such as port tunneling are possible). The Register speculates that Apple made this move in response to pressure from the record labels.[https://www.theregister.co.uk/2003/05/28/apple_halts_itunes_internet_sharing/ "Apple halts iTunes' Internet sharing ability"] by Tony Smith, The Register, May 28, 2003, retrieved August 31, 2006 More recent versions of iTunes also limit the number of clients to 5 unique IP addresses within a 24-hour period.

DAAP has also been implemented in other non-iTunes media applications such as Banshee, Amarok, Exaile (with a plugin), Songbird (with a plugin), Rhythmbox, and WiFiTunes.

DAAP authentication

Beginning with iTunes 4.2, Apple introduced authentication to DAAP sharing, meaning that the only clients that could connect to iTunes servers were other instances of iTunes. This was further modified in iTunes 4.5 to use a custom hashing algorithm, rather than the standard MD5 function used previously. Both authentication methods were successfully reverse engineered within months of release.{{cite web|url=http://apple.slashdot.org/apple/04/04/29/1554231.shtml|title=iTunes 4.5 Authentication Cracked|date=April 29, 2004|accessdate=March 12, 2007}}

With iTunes 7.0, a new 'Client-DAAP-Validation' header hash is needed when connecting to an iTunes 7.0 server. This does not affect third-party DAAP servers, and all DAAP clients without support for this feature, including iTunes itself before version 7.0, will fail to connect to an iTunes 7.0 server, receiving a '403 Forbidden' HTTP error. The iTunes 7.0 authentication traffic analysis seem to indicate that a certificate exchange is performed to calculate the hash sent in the 'Client-DAAP-Validation' header.

DAAP clients

class="wikitable sortable" border="1"
Name

!Platform: Desktop

!Platform: Portable

!Platform: Devices/Other

!Platform: TVs

!Development status

iOS Music app (formerly iPod app)

|

|iOS (by setting: password on Settings, then More>Shared), since iOS 4.3

|

|

|Native

Amarok

|Windows, Mac, Linux

|

|

|

|Active

Banshee

|Windows, Mac, Linux

|

|

|

|Active

Crossfire

|

|

|Cross-platform Ajax-based Firefly client, with multiple browser support

Safari (inc. iOS), Nokia, Opera, IE, Chrome

|

|Active

DAAP Client

|

|Android

|

|

|Dormant

DAAP Media Player

|

|Android

|

|

|Active

Diapente

|

|Android

|

|

|Dormant

FireflyClient

|

|

|Independent (uses Java)

|

|Dormant

Get it together

|

|

|Any Java supported platform

|

|Dormant

iTunes

|Windows, Mac

|iOS

|Apple TV

|

|Native

LimeWire

|Windows, Mac, Linux

|

|

|

|Active

One2OhMyGod

|

|

|Any Java supported platform

|

|Dormant

Rhythmbox

|Linux

|

|

|

|Active

Roku Soundbridge and Radio

|

|

|Roku

|

|Dormant

WiFiTunes

|

|PocketPC

|

|

|Dormant

Songbird

|Windows, Mac, Linux (unsupported)

|

|

|

|Dormant, via plugin for 1.8.0

SoundBox

|Windows, Mac

|

|

|

|Active

Silverplay

|

|

|Only Silverlight required

|

|Active

Simple DAAP Client

|

|iOS

|

|

|Dormant

Winamp with ml_daap plugin

|Windows

|

|

|

|Winamp discontinued on 12/20/2013; ml_daap dormant, depends on Apple Bonjour support for Windows

XBMC

|Windows, Mac, Linux

|XBMC Live iPad

|Apple TV (2nd generation) only, and some others

|

|Active

DAAP servers

class="wikitable sortable" border="1"
rowspan=2 | Namecolspan=4 | Operating systemrowspan=2 | Development status
Linux || macOS || Microsoft Windows || Other
iTunes

| {{no}}

{{no}}{{yes}}{{no}}

| Active

Apple Music

| {{no}}

{{yes}}{{no}}{{no}}

| Active

[https://github.com/owntone/owntone-server OwnTone]

| {{yes}}

{{no}}{{no}}{{yes|FreeBSD}}

| Active

Firefly Media Server (mt-daapd)

| {{yes}}

{{yes}}{{yes}}{{yes|FreeBSD}}

| Dormant

Tangerine

| {{yes}}

{{yes}}{{yes}}{{yes|FreeBSD}}

| Dormant

spydaap DAAP server (python)

| {{yes}}

{{yes}}{{yes}}{{yes|FreeBSD}}

| Dormant

FreeNAS and NAS4Free

| {{no}}

{{no}}{{no}}{{yes|FreeBSD}}

| Active

NASLite M2

| {{yes}}

{{no}}{{no}}{{no}}

| Active

OpenMediaVault

| {{yes}}

{{no}}{{no}}{{no}}

| Active

Ampache

| {{yes}}

{{yes}}{{yes}}{{yes|FreeBSD}}

| Active

Rhythmbox

| {{yes}}

{{no}}{{no}}{{no}}

| Active

[https://github.com/alanszlosek/node-daapd node-daapd]

| {{yes}}

{{no}}{{no}}{{no}}

| Dormant

[https://www.wildmediaserver.com Wild Media Server (UPnP, DLNA, HTTP)]

| {{yes}}

{{yes}}{{yes}}{{no}}

| Active

[https://github.com/mycoboco/canary canary]

| {{yes}}

{{yes}}{{no}}{{no}}

| Active

[https://www.flyn.org/projects/dmapd/ dmapd]

| {{yes}}

{{no}}{{no}}{{no}}

| Active

See also

Notes and references