• Stars
    star
    2,436
  • Rank 18,739 (Top 0.4 %)
  • Language
    C
  • Created over 13 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Airtunes emulator! Shairport is no longer maintained.

ShairPort is no longer maintained

As I no longer use Shairport myself, I am no longer maintaining or supporting Shairport. Thanks to everyone who has contributed over the years; it's been a great experience. For the ongoing user, there are a great many forks and ports to choose from now, many of which are of a very high quality and well maintained.

— James

ShairPort

By James Laird (announcement)

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).

Build Requirements

Required:

  • OpenSSL

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 advertise 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.

Metadata

The following metadata can be output for the currently playing track:

  • artist
  • title
  • album
  • artwork
  • genre
  • comment

To enable the output of metadata, the -M <directory name> flag must be set to instruct shairport where to save the output. This directory must exist. A fifo named now_playing will be created, and records will be written to it when tracks are changed. The end of a set of metadata is delimited by a zero-length line. Cover filenames are relative to the cover directory. Files are not deleted.

An example::

artist=Arcade Fire
title=City With No Children
album=The Suburbs
artwork=cover-e6450a45ab900815e831434f5ee0499c.jpg
genre=Rock
comment=

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

Contributors to version 0.x

Known Ports and Tools

More Repositories

1

mygov-totp-enroll

Enroll a real TOTP client to access myGov
JavaScript
99
star
2

nightcap

Run Windows screensavers under xscreensaver, using copious quantities of wine
C
47
star
3

nxBender

Open source client for netExtender SSL VPNs
Python
41
star
4

spacefn-evdev

SpaceFn keyboard layout for Linux using libevdev
C
40
star
5

epson-reversing

Bits and bobs relating to reversing Epson printers circa 2020
Python
25
star
6

tinyhidd

A minimal replacement for BlueZ, for use with Bluetooth keyboards and mice on Linux. Uses BTstack, doesn't require kernel support, BlueZ, DBus...
C
23
star
7

saturn-pademu

Gamepad emulator for plugging in to Sega Saturn. Work in progress!
C++
11
star
8

switchbox

Windows-style window-level "alt-tab" support for OS X
Objective-C
8
star
9

pdf2tspl

Tool to print to TSPL-based label printers eg. Hotlabel/Xprinter
Python
5
star
10

x900-otsakupuhastajat

Tool for checking & cleaning nozzles on Epson Stylus Pro 4900 and related printers.
Python
4
star
11

btstack

Tracking fork of BTstack. Includes daemon-specific patches, and its edge is slightly less bleeding than upstream's SVN.
C
3
star
12

unLZKJ

Tools for unpacking & repacking Dreamcast & Naomi games, including the "LZKJ" compression used in Azumanga Puzzle Bobble
Python
3
star
13

gk802-uboot

u-boot tree for GK802 and HI802 "HDMI dongle"/"tv stick" quad core minicomputers
3
star
14

wgo2tool

Tools for working with the Røde Wireless GO II wireless microphone/recorder.
Python
3
star
15

bento-linux-build

Scripts and files to build kernels and userlands for Debian on VT8500/WM8505 ARM devices, in both tablet and netbook forms.
Shell
1
star
16

intertube

Minimal UDP VPN
Python
1
star