diff --git a/README.md b/README.md index 9023f2bc..d91e96d0 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,101 @@ -ShairPort 2.0 -============= - -Shairport 2.0 is a pretty big rewrite of Shairport 1.0 by James Laird. As present, the files are being pushed to this repository, but they aren't there yet; it may take a little time. +ShairPort +========= +By [James Laird](mailto:jhl@mafipulation.org) ([announcement](http://mafipulation.org/blagoblig/2011/04/08#shairport)) What it is ---------- This program emulates an AirPort Express for the purpose of streaming music from iTunes and compatible iPods and iPhones. It implements a server for the Apple RAOP protocol. ShairPort does not support AirPlay v2 (video and photo streaming). -What's new in Shairport 2.0 ---------------------------- -Synchronisation. - -(1) Shairport 2.0 sets a delay ("latency") between when music is sent and when it is played. The duration of the delay can be set to match the delay through other iTunes output devices, including other Shairplay 2.0 devices. Latency is actively kept at the set level, so synchronisation is actively maintained. - -(2) Shairport 2.0 is developed for ALSA, so is ALSA and Linux only. - -Status ------- -Shairport 2.0 is working on Raspberry Pi and Linksys NSLU2, both on OpenWrt. It works on an Ubuntu laptop. It works well with built-in audio and with a variety of USB-connected Amplifiers and DACs. - -Shairport 2.0 DOES NOT WORK WITH RASPIAN. It runs, but it's very glitchy. This seems to be a known problem with Raspian. OTOH, Shairport 2.0 runs well on the exact same hardware but using OpenWrt in place of Raspian. - -Shairport 2.0 runs on Ubuntu inside VMWare Fusion on a Mac, but syncronisation is off when using the built-in emulated soundcard. - Build Requirements ------------------ Required: * OpenSSL -* Avahi -* ALSA -Debian users can get the basics with +Optionally: +* libao +* PulseAudio +* avahi + +Debian/Raspbian users can get the basics with `apt-get install libssl-dev libavahi-client-dev libasound2-dev` + + +Runtime Requirements +-------------------- +You must be running an mDNS (Bonjour) daemon. On a Mac, this will be running already. Otherwise, you must be running avahi-daemon or Howl. +As an alternative, you may use the tinysvcmdns backend, which embeds a lightweight mDNS daemon. It is, however, way less robust than bonjour or avahi. +Check the [mDNS Backends] section for more information. + +How to get started +------------- +``` +./configure +make +./shairport -a 'My Shairport Name' +``` + +The triangle-in-rectangle AirTunes (now AirPlay) logo will appear in the iTunes status bar of any machine on the network, or on iPod/iPhone play controls screen. Choose your access point name to start streaming to the ShairPort instance. + +Audio Outputs +------------- +Shairport supports different audio backends. +For a list of available backends and their options, run `shairport -h`. +Note that options are supplied to backends at the end of the commandline, separated by --, for example: +``` +shairport -o ao -- -d mydriver -o setting=thing +``` + +mDNS Backends +------------- +Shairport uses mDNS to advertize the service. Multiple backends are available to perform the task. +For a list of available backends, run `shairport -h`. +The backends prefixed by 'external' rely on external programs that should be present in your path. +By default, shairport will try all backends, in the order they are listed by `shairport -h`, until one works. +You can force the use of a specific backend using `shairport -m tinysvcmdns` for example. + + +Thanks +------ +Big thanks to David Hammerton for releasing an ALAC decoder, which is reproduced here in full. +Thanks to everyone who has worked to reverse engineer the RAOP protocol - after finding the keys, everything else was pretty much trivial. +Thanks also to Apple for obfuscating the private key in the ROM image, using a scheme that made the deobfuscation code itself stand out like a flare. +Thanks to Ten Thousand Free Men and their Families for having a computer and stuff. +Thanks to wtbw. + +Contributors to version 1.x +--------------------------- +* [James Laird](http://mafipulation.org) +* [Paul Lietar](http://www.lietar.net/~paul) +* [Quentin Smart](http://github.com/sm3rt) +* [Brendan Shanks](http://github.com/mrpippy) +* [Peter Körner](http://mazdermind.de) +* [Muffinman](http://github.com/therealmuffin) +* [Skaman](http://github.com/skaman) + +Contributors to version 0.x +--------------------------- +* [James Laird](mailto:jhl@mafipulation.org), author +* [David Hammerton](http://craz.net/), ALAC decoder +* [Albert Zeyer](http://www.az2000.de), maintainer +* [Preston Marshall](mailto:preston@synergyeoc.com) +* [Mads Mætzke Tandrup](mailto:mads@tandrup.org) +* [Martin Spasov](mailto:mspasov@gmail.com) +* [Oleg Kertanov](mailto:okertanov@gmail.com) +* [Rafał Kwaśny](mailto:mag@entropy.be) +* [Rakuraku Jyo](mailto:jyo.rakuraku@gmail.com) +* [Vincent Gijsen](mailto:vtj.gijsen@gmail.com) +* [lars](mailto:lars@namsral.com) +* [Stuart Shelton](https://blog.stuart.shelton.me/) +* [Andrew Webster](mailto:andywebs@gmail.com) + +Known Ports and Tools +--------------------- +* Java: + * [JAirPort](https://github.com/froks/JAirPort) + * [RPlay](https://github.com/bencall/RPlay) +* Windows: + * [shairport4w](http://sf.net/projects/shairport4w) +* OS X: + * [ShairportMenu](https://github.com/rcarlsen/ShairPortMenu), a GUI wrapper as a menu widget + * [MacShairport](https://github.com/joshaber/MacShairport)