Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
shairport-sync(1)	     General Commands Manual	       shairport-sync(1)

NAME
     shairport-sync - AirPlay and AirPlay 2 Audio Player

SYNOPSIS
     shairport-sync  [-djvw] [-a service-name | --name=service-name] [-B command
     |	--onstart=command]  [-c  configurationfile   |	 --configfile=configura-
     tionfile]	[-d  |	--daemon]  [-E	command | --onstop=command] [-g | --get-
     cover-art] [-j |  --justDaemoniseNoPIDFile]  [--logOutputLevel]  [--log-to-
     syslog]  [-L latency | --latency=latency] [-m backend | --mdns=backend] [-M
     |	--metadata-enable]  [-o  backend  |   --output=backend]   [-p	port   |
     --port=port]   [--password=secret]   [-r  threshold  |  --resync=threshold]
     [--statistics] [-S mode | --stuffing=mode] [-t timeout | --timeout=timeout]
     [--tolerance=frames] [-v | --verbose] [-w	|  --wait-cmd]	[--  audio_back-
     end_options]

     shairport-sync -X | --displayConfig

     shairport-sync -h

     shairport-sync -k

     shairport-sync -V

DESCRIPTION
     Shairport	Sync  plays AirPlay audio. It can be built to stream either from
     "classic" AirPlay (aka "AirPlay 1") or from AirPlay 2 devices.

     AirPlay 2 support is limited, and AirPlay 2 from iTunes for Windows is  not
     supported.  For  AirPlay 2 operation, a companion program called nqptp must
     be installed.

     Please see https://github.com/mikebrady/shairport-sync for details.

     The name of the Shairport Sync executable is shairport-sync.

CONFIGURATION FILE SETTINGS
     You should use the configuration file for setting up Shairport Sync because
     -- apart from a few special-purpose commands -- it has a much richer set of
     options than are available on the command line. This file is usually shair-
     port-sync.conf and is generally located in the System Configuration  Direc-
     tory,  which  is normally the /etc directory in Linux or the /usr/local/etc
     directory in BSD unixes. You may need to have root privileges to modify it.

     (Note: Shairport Sync may have been compiled to use a different  configura-
     tion  directory. You can determine which by performing the command $ shair-
     port-sync -V. The last item in the  output  string  is  the  value  of  the
     sysconfdir, i.e. the System Configuration Directory.)

     Within  the configuration file, settings are organised into groups, for ex-
     ample, there is a general group of standard settings, and there is an  alsa
     group  with  settings that pertain to the ALSA back end. Here is an example
     of a typical configuration file:

     general = {

     name = "Mike's Boombox";

     };

     alsa = {

     output_device = "hw:0";

     mixer_control_name = "PCM";

     };

     Users generally only need to set (1) the service name and	(2)  the  output
     device.  If  the  name setting is omitted, the service name is derived from
     the system's hostname. By default, the ALSA backend will be chosen  if  in-
     cluded  in  the  build. If the (alsa) output device has a mixer that can be
     used for volume control, then (3) the mixer name should be specified. It is
     important to do this if the mixer exists.	Otherwise,  the  maximum  output
     from  the output device will be whatever setting the mixer happens to have,
     which will be a matter of chance and  which  could  be  very  low	or  even
     silent.

     A	sample	configuration  file  with all possible settings, but with all of
     them commented out, is installed at shairport-sync.conf.sample, within  the
     System  Configuration  Directory  --  /etc  in Linux, /usr/local/etc in BSD
     unixes.

     The sample configuration file includes extensive documentation of the  set-
     tings.  and  is  also  available at https://github.com/mikebrady/shairport-
     sync/blob/master/scripts/shairport-sync.conf. Please refer to  it	for  the
     most up-to-date information on configuration file settings.

OPTIONS
     There  are  two  kinds  of command-line options for shairport-sync: regular
     program options and audio	backend  options.  Program  options  are  always
     listed  first, followed by any audio backend options, preceded by a -- sym-
     bol.

     See the EXAMPLES section for sample usages.

PROGRAM OPTIONS
     Program Options are used by shairport-sync itself.

     -a service name | --name=service name
	    Use this service name to identify this player in iTunes, etc.

	    The following substitutions are allowed: %h for the computer's host-
	    name, %H for the computer's hostname with  the  first  letter  capi-
	    talised (ASCII only), %v for the shairport-sync version number, e.g.
	    "3.0.1"   and   %V	for  the  shairport-sync  version  string,  e.g.
	    "3.0.1-OpenSSL-Avahi-ALSA-soxr-metadata-sysconfdir:/etc".

	    The default is "%H", which is replaced  by	the  hostname  with  the
	    first letter capitalised.

     -B program | --on-start=program
	    Execute  program  when  playback is about to begin. Specify the full
	    path to the program, e.g. /usr/bin/logger. Executable scripts can be
	    used, but they must have the appropriate shebang (#!/bin/sh) in  the
	    headline.

	    If	you  want shairport-sync to wait until the command has completed
	    before starting to play, select the -w option as well.

     -c filename | --configfile=filename
	    Read configuration settings from filename. The default  is	to  read
	    them from the shairport-sync.conf in the System Configuration Direc-
	    tory -- /etc in Linux, /usr/local/etc in BSD unixes. For information
	    about  configuration settings, see the "Configuration File Settings"
	    section above.

     -d | --daemon
	    Instruct shairport-sync  to  demonise  itself.  It	will  write  its
	    Process   ID   (PID)  to  a  file,	usually  at  /var/run/shairport-
	    sync/shairport-sync.pid, which is used by the -k, -D and -R  options
	    to	locate	the daemon at a later time. See also the -j option. Only
	    available if shairport-sync has been compiled  with  libdaemon  sup-
	    port.

     -E program | --on-stop=program
	    Execute  program  when  playback has ended. Specify the full path to
	    the program, e.g. /usr/bin/logger. Executable scripts can  be  used,
	    but  they must have the appropriate shebang (#!/bin/sh) in the head-
	    line.

	    If you want shairport-sync to wait until the command  has  completed
	    before continuing, select the -w option as well.

     -g | --get-coverart
	    This  option  requires  the -M | --metadata-enable option to be set,
	    and enables shairport-sync to request cover art from the source  and
	    to process it as metadata.

     -h | --help
	    Print brief help message and exit.

     -j | justDaemoniseNoPIDFile
	    Instruct shairport-sync to demonise itself. Unlike the -d option, it
	    will  not  write a Process ID (PID) to a file -- it will just (hence
	    the "j") demonise itself. Only available if shairport-sync has  been
	    compiled with libdaemon support.

     -k | --kill
	    Kill  the  shairport-sync daemon and exit. (Requires that the daemon
	    has written its PID to an agreed file -- see  the  -d  option.  Only
	    available  if  shairport-sync  has been compiled with libdaemon sup-
	    port.)

     --logOutputLevel
	    Use this to log the volume level when the volume is changed. It  may
	    be	useful	if  you are trying to determine a suitable value for the
	    maximum volume level. Not available as a configuration file setting.

     --log-to-syslog
	    Warnings, error messages and  messages  are  sent,	by  default,  to
	    STDERR.  Use  this	option to route these messages to the syslog in-
	    stead. This is intended for use when Shairport Sync is operating  as
	    a daemon.

	    See also --displayConfig.

     -L | --latency=latency
	    Use  this  to  set	the default latency, in frames, for audio coming
	    from an unidentified source or from an iTunes Version 9  or  earlier
	    source. The standard value for the default latency is 88,200 frames,
	    where there are 44,100 frames to the second.

	    Please note that this feature is deprecated and will be removed in a
	    future version of shairport-sync.

     -M | --metadata-enable
	    Ask  the  client to send metadata. It will be sent, along with meta-
	    data generated by shairport-sync itself, to a pipe and will also  be
	    sent  as UDP packets. If you add the -g | --get-cover-art then cover
	    art  included,   where   available.   See	https://github.com/mike-
	    brady/shairport-sync-metadata-reader for a sample metadata reader.

     --metadata-pipename=pathname
	    Specify  the  path	name for the metadata pipe. Note that shairport-
	    sync will need write permission on that directory and pipe. The  de-
	    fault  is /tmp/shairport-sync-metadata. If you rename the shairport-
	    sync executable, the default pipe name will change accordingly.

     -m mdnsbackend | --mdns=mdnsbackend
	    Force the use of the specified mDNS backend to advertise the  player
	    on the network. The default is to try all mDNS backends in order un-
	    til one works.

     -o outputbackend | --output=outputbackend
	    Force the use of the specified output backend to play the audio. The
	    default is to try the first one.

     -p port | --port=port
	    Listen  for  play  requests on port. The default is to use port 5000
	    for AirPlay and 7000 for AirPlay 2.

     --password=secret
	    Require the password secret to be able to connect and stream to  the
	    service. (This only works for AirPlay and not for AirPlay 2.)

     -r threshold | --resync=threshold
	    Resynchronise  if  timings	differ by more than threshold frames. If
	    the output timing differs from the source timing by  more  than  the
	    threshold,	output	will  be muted and a full resynchronisation will
	    occur. The default threshold is 2,205 frames, i.e. 50  milliseconds.
	    Specify  0	to disable resynchronisation. This setting is deprecated
	    and will be removed in a future version of shairport-sync.

     --statistics
	    Print some performance information to STDERR, or to  syslog  if  the
	    -log-to-syslog command line option is also chosen.

     -S mode | --stuffing=mode
	    Interpolate  ("stuff")  the  audio stream using the mode. "Stuffing"
	    refers to the process of adding or removing frames of  audio  to  or
	    from  the  stream sent to the output device in order to keep it syn-
	    chronised with the player. The basic mode is  normally  almost  com-
	    pletely  inaudible.  The alternative mode, soxr, is even less obtru-
	    sive but requires much more processing power. For this mode, support
	    for libsoxr, the SoX Resampler Library, must be selected when shair-
	    port-sync is built. The default setting, auto, allows Shairport Sync
	    to choose soxr mode if the system is powerful enough.

     -t timeout | --timeout=timeout
	    Exit play mode if the stream disappears for more than  timeout  sec-
	    onds.

	    When  shairport-sync plays an audio stream, it starts a play session
	    and will return a busy signal to any other sources that  attempt  to
	    use  it. If the audio stream disappears for longer than timeout sec-
	    onds, the play session will be terminated. If you specify a  timeout
	    time of 0, shairport-sync will never signal that it is busy and will
	    not prevent other sources from "barging in" on an existing play ses-
	    sion. The default value is 120 seconds.

     --tolerance=frames
	    Allow  playback  to be up to frames out of exact synchronization be-
	    fore attempting to correct it. The default is 88 frames, i.e. 2  ms.
	    The smaller the tolerance, the more likely it is that overcorrection
	    will  occur. Overcorrection is when more corrections (insertions and
	    deletions) are made than are strictly necessary to keep  the  stream
	    in	sync.  Use the --statistics option to monitor correction levels.
	    Corrections should not greatly exceed net corrections. This  setting
	    is	deprecated and will be removed in a future version of shairport-
	    sync.

     -V | --version
	    Print version information and exit.

     -v | --verbose
	    Print debug information to the STDERR, or to syslog if the	-log-to-
	    syslog  command line option is also chosen. Repeat up to three times
	    (i.e. -vv or -vvv) for more detail. You should use -vvv  very  spar-
	    ingly -- it is really noisy.

     -w | --wait-cmd
	    Wait  for  commands specified using -B or -E to complete before con-
	    tinuing execution.

     -X | --displayConfig
	    This logs information relating to  the  configuration  of  Shairport
	    Sync. It can be very useful for debugging. The information logged is
	    some  host	OS information, the Shairport Sync version string (which
	    indicates the build options used when shairport-sync was built), the
	    contents of the command line that invoked Shairport Sync,  the  name
	    of the configuration file and the active settings therein.

	    If	this is the only option on the command line, shairport-sync will
	    terminate after displaying the information.

AUDIO BACKEND OPTIONS
     Audio Backend Options are command-line options that are passed to the  cho-
     sen  audio  backend. They are always preceded by the -- symbol to introduce
     them and to separate them from any preceding program options. In this  way,
     option  letters  can be used as program options and reused as audio backend
     options without ambiguity.

     Audio backends are listed with their corresponding Audio Backend Options in
     the help text provided by the help (-h or --help) option.

EXAMPLES
     Here is a slightly contrived example:

     shairport-sync -a "Joe's Stereo" -o alsa -- -d hw:1,0 -m hw:1 -c PCM

     The program will be visible as "Joe's Stereo" ( -a "Joe's	Stereo"  ).  The
     program  option  -o alsa specifies that the alsa backend be used, thus that
     audio should be output into the ALSA audio subsystem. The audio backend op-
     tions following the -- separator are passed to the alsa backend and specify
     that the audio will be output on subdevice 0 of soundcard 1 ( -d  hw:1,0  )
     and  will	take  advantage of the same sound card's mixer ( -m hw:1 ) using
     the level control named "PCM" ( -c "PCM" ).

     The example above is slightly contrived: Firstly, if the alsa  backend  has
     been  included  in the build, it will be the default, so it doesn't need to
     be specified and the -o alsa option could be omitted. Secondly, subdevice 0
     is the default for a soundcard, so the output device could simply be  writ-
     ten  -d hw:1. Thirdly, when a mixer name is given ( -c "PCM" ), the default
     is that the mixer is on the output device, so the -m  hw:1  is  unnecessary
     here. Using these defaults and simplifications gives the following command:

     shairport-sync -a "Joe's Stereo" -- -d hw:1 -c PCM

CREDITS
     Mike  Brady  (https://github.com/mikebrady)  developed  Shairport Sync from
     Shairport by James Wah (https://github.com/abrasive).

COMMENTS
     This man page was written using xml2man(1) by Oliver Kurth.

Manuals 			      User		       shairport-sync(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=shairport-sync&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help