Provided by: shairport-sync_3.3.8-1build5_amd64 bug

NAME

       shairport-sync - Synchronised Audio Player for iTunes / AirPlay

SYNOPSIS

       shairport-sync  [-djvuw]  [-a name] [-A latency] [-B command] [-c configurationfile] [-E command] [--get-
       cover-art]  [--logOutputLevel]  [-L   latency]   [-m   backend]   [--meta-dir=directory]   [-o   backend]
       [--password=secret]  [-r  threshold]  [--statistics]  [-S  mode]  [-t  timeout]  [--tolerance=frames] [--
       audio_backend_options]

       shairport-sync -k

       shairport-sync -h

       shairport-sync -V

DESCRIPTION

       Shairport Sync plays audio streamed from iTunes or from an AirPlay device  to  an  ALSA-compatible  audio
       output device (available on Linux and FreeBSD), to a "sndio" output device (available on OpenBSD, FreeBSD
       and Linux), to a PulseAudio output stream or to Jack Audio.

       Shairport Sync offers full audio synchronisation. Full audio synchronisation means that audio  is  played
       on  the  output device at exactly the time specified by the audio source. This means that if many devices
       are playing the same stream at the same time, all the outputs will stay in synchrony  with  one  another.
       This  allows  multiple  devices  to  play  the  same source without getting out of step with one another,
       enabling, for example, simultaneous multi-room operation.

       Shairport Sync can stream synchronised audio to a unix pipe or to standard output, or  to  audio  systems
       that do not provide timing information. This could perhaps be described as partial audio synchronisation,
       where synchronised audio is provided by Shairport  Sync,  but  what  happens  to  it  in  the  subsequent
       processing chain, before it reaches the listener's ear, is outside the control of shairport-sync.

       Shairport Sync can be compiled to stream metadata, including cover art, to a pipe or socket.

       Shairport  Sync  can  be  compiled to offer a standard MPRIS interface, a "native" D-Bus interface and an
       MQTT client interface. Through these interfaces, it can provide metadata, including cover  art,  and  can
       offer remote control of the audio source.

       Settings  can  be  made  using the configuration file (recommended for all new installations) or by using
       command-line options.

       The name of the Shairport Sync executable is shairport-sync. Both names are used in these man pages.

CONFIGURATION FILE SETTINGS

       You should use the configuration file for setting up Shairport Sync.  This  file  is  usually  shairport-
       sync.conf  and  is  generally  located  in the System Configuration Directory, 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 configuration directory. You can
       determine which by performing the command $ shairport-sync -V. One of the items 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 example, 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";

       password = "secret";

       output_backend = "alsa";

       };

       alsa = {

       output_device = "hw:0";

       mixer_control_name = "PCM";

       };

       Most settings have sensible default values, so -- as in the example above -- users generally only need to
       set (1) the service name, (2) a password (if desired) and (3) the output device. If the output device has
       a mixer that can be used for volume control, then (4) 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.

       To retain backwards compatibility with previous versions of shairport-sync you can use still use  command
       line options, but any new features, etc. will be available only via configuration file settings.

       The     configuration     file     is     processed     using    the    libconfig    library    --    see
       http://www.hyperrealm.com/libconfig/libconfig_manual.html.

       "GENERAL" SETTINGS
              These are the settings available within the general group:

       name="service_name";
              Use this service_name to identify this player in iTunes, etc.

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

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

       password="password";
              Require  the password password to connect to the service. If you leave this setting commented out,
              no password is needed.

       interpolation="mode";
              Interpolate, or "stuff", the audio stream using the mode. Interpolation here refers to the process
              of  adding  or removing frames of audio to or from the stream sent to the output device to keep it
              exactly synchronised with the player. The "basic" mode is normally  almost  completely  inaudible.
              The  alternative mode, "soxr", is even less obtrusive but requires much more processing power. For
              this mode, support for libsoxr, the SoX Resampler Library, must be selected when shairport-sync is
              compiled.  The  default  setting  is  "auto",  which will choose "soxr" if support for it has been
              compiled into the build of Shairport Synce and if the  CPU  is  fast  enough.  Otherwise,  "basic"
              stuffing will be chosen.

       output_backend="backend";
              shairport-sync  has  a  number  of  modules  of  code  ("backends") through which audio is output.
              Normally, the first audio backend that works is selected. This setting forces the selection of the
              specific  audio  backend.  Perform  the command shairport-sync -h to get a list of available audio
              backends -- the default is the first on this list. Only the  "alsa",  "sndio"  and  "pa"  backends
              support synchronisation.

       mdns_backend="backend";
              shairport-sync  has a number of modules of code ("backends") for interacting with the mDNS service
              to be used to advertise itself. Normally, the first mDNS backend  that  works  is  selected.  This
              setting  forces  the  selection  of the specific mDNS backend. The default is "avahi". Perform the
              command shairport-sync -h to get a list of available mDNS modules.

       port=portnumber;
              Use this to specify the portnumber shairport-sync uses to listen for service requests from iTunes,
              etc. The default is port 5000.

       udp_port_base=portnumber;
              When shairport-sync starts to play audio, it establises three UDP connections to the audio source.
              Use this setting to specify the starting portnumber for these three ports. It will pick the  first
              three unused ports starting from portnumber. The default is port 6001.

       udp_port_range=range;
              Use  this  in  conjunction  with  the  previous  setting to specify the range of ports that can be
              checked for availability. Only three ports are needed. The default is 100, thus 100 ports will  be
              checked from port 6001 upwards until three are found.

       drift_tolerance_in_seconds=seconds;
              Allow  playback  to  drift up to seconds out of exact synchronization before attempting to correct
              it. The default is 0.002 seconds, i.e. 2 milliseconds. 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
              setting  to monitor correction levels. Corrections should not greatly exceed net corrections. This
              setting replaces the deprecated drift setting.

       resync_threshold_in_seconds=threshold;
              Resynchronise if timings differ by more than threshold seconds. 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 0.050 seconds, i.e. 50 milliseconds. Specify 0.0  to  disable
              resynchronisation. This setting replaces the deprecated resync_threshold setting.

       ignore_volume_control="choice";
              Set  this  choice to "yes" if you want the volume to be at 100% no matter what the source's volume
              control is set to. This might be useful if you want to  set  the  volume  on  the  output  device,
              independently of the setting at the source. The default is "no".

       volume_range_db=dBvalue;
              Use this dBvalue to reduce or increase the attenuation range, in decibels, between the minimum and
              maximum volume.

              For example, if a mixer has a minimum volume of -80 dB and a maximum of +20 dB, you might wish  to
              use  only  60 dB of the 100 dB available. This might be because the sound becomes inaudible at the
              lowest setting and unbearably loud at the highest setting -- indeed, many  domestic  HiFi  systems
              have a volume control range of just 60 to 80dB.

              Another  potential  use  might  be  where  the  range  specified  by  the mixer does not match the
              capabilities of the device. For example, the Raspberry Pi's DAC that feeds the built-in audio jack
              claims  a  range  of  106 dB but has a useful range of only about 30 dB. The setting allows you to
              specify the maximum range from highest to lowest. The  range  suggested  for  the  Raspberry  Pi's
              built-in  audio DAC, which feeds the headphone jack, is 30. Using it in this case gives the volume
              control a much more useful range of settings.

              As a third example, you can actually extend the range provided by a mixer. Many cheaper DACs  have
              hardware  mixers  that offer a restricted attenuation range. If you specify a volume range greater
              than the range of the mixer, software attenuation and hardware attenuation  will  be  combined  to
              give the specified range.

              If you omit this setting, the native range of the mixer is used.

       volume_max_db=dBvalue;
              Specify the maximum output level to be used with the hardware mixer, if used. If no hardware mixed
              is used, this setting specifies the maximum setting permissible in the software mixer,  which  has
              an attenuation range from 0.0 dB down to -96.3 dB.

       volume_control_profile="choice";
              Use  this  advanced  setting to specify how the airplay volume is transferred to the mixer volume.
              The "standard" profile, which is the default, makes  the  volume  change  more  quickly  at  lower
              volumes  and slower at higher volumes. Choose the "flat" profile to makes the volume change at the
              same rate at all volume levels.

       volume_range_combined_hardware_priority= "choice";
              Use this advanced setting to  specify  how  to  combine  the  hardware  attenuator  with  software
              attenuation to provide a greater attenuation range than the hardware attenuator alone can provide.
              Choosing "yes" means that when attenuation is required, the hardware attenuator will  be  used  in
              preference.  If  more attenuation than it can provide is needed, the hardware attenuator is set to
              its greatest attenuation and software attenuation is added.

              For example, if 40 dB of attenuation is required and the hardware attenuator offers a  maximum  of
              30  dB,  then  the hardware attenuator will be set to give 30 dB attenuation and 10 dB of software
              attenuation will be added.

              Unfortunately, certain hardware attenuators will mute at their greatest attenuation, so  can't  be
              combined  with  software attenuation in this way. Choosing "no" means that software attenuation is
              used to bring  the  remaining  attenuation  required  into  the  range  offered  by  the  hardware
              attenuator. This is the default.

       run_this_when_volume_is_set= "/full/path/to/application/and/args";
              Here  you  can  specify  a  program  and  its arguments that will be run when the volume is set or
              changed. Be careful to include the full path to the application. The application must be marked as
              executable  and, if it is a script, its first line must begin with the standard shebang #!/bin/...
              as appropriate.

              The desired AirPlay volume is appended to the end of the command line -- leave a space at the  end
              of  the  command line you specify here if you want it treated as an extra argument. AirPlay volume
              goes from 0.0 to -30.0 and -144.0 means "mute".

       regtype="regTypeString";
              Use  this  advanced  setting  to  set  the  service  type  and  transport  to  be  advertised   by
              Zeroconf/Bonjour. Default is "_raop._tcp".

       playback_mode="mode";
              The  mode  can  be  "stereo",  "mono",  "reverse  stereo", "both left" or "both right". Default is
              "stereo". Note that dither will be added to the signal in the mono mode.

       alac_decoder="decodername";
              This can be "hammerton" or "apple". This advanced  setting  allows  you  to  choose  the  original
              Shairport  decoder  by David Hammerton or the Apple Lossless Audio Codec (ALAC) decoder written by
              Apple. Shairport Sync must have been compiled with the configuration  setting  "--with-apple-alac"
              and the Apple ALAC decoder library must be present for this to work.

       interface="name";
              Use  this  advanced setting if you want to confine Shairport Sync to the named interface. Leave it
              commented out to get the default behaviour.

       audio_backend_latency_offset_in_seconds= offset_in_seconds;
              Set this offset_in_seconds to compensate for a fixed delay in the audio back end. For example,  if
              the output device delays by 100 ms, set this to -0.1.

       audio_backend_buffer_desired_length_in_seconds= length_in_seconds;
              Use this length_in_seconds to set the desired length of the queue of audio frames in the backend's
              output buffer.

              The default is 0.15 seconds for the ALSA backend, 0.35 seconds for the PA backend and  one  second
              for all other backends.

              If this value is set too small, underflow may occur on low-powered machines. If set too large, the
              response times to the volume control may become excessive, or it may exceed the  backend's  buffer
              size.  It may need to be larger on low-powered machines that are also performing other tasks, such
              as processing metadata.

       audio_backend_buffer_interpolation_threshold_in_seconds= time_in_seconds;
              This is an advanced feature. If the length of the audio backend buffer size drops below this, it's
              a  sign  that  shairport sync can not process frames of audio quickly enough. It this threshold is
              reached, shairport sync will stop using time-consuming interpolation like soxr to avoid underruns.

       audio_backend_silent_lead_in_time= lead_in_time_in_seconds;
              This is an advanced setting. Use the lead_in_time_in_seconds to set  the  desired  length  of  the
              period of silence (a "silent lead-in") played before a play session begins.

              The purpose of this silent lead-in is to give the backend sufficient time to prepare for operation
              and to make an estimate (and, importantly, to correct the estimate) of the exact time at which  to
              begin  playing audio to achieve initial synchronisation. The value can be from 0.0 up to a maximum
              of either 4.0 seconds. The actual duration will be close to the setting but  can  not  exceed  the
              latency set by the client, usually 2 seconds or a little more.

              If the value chosen is too short for synchronised backends such as the ALSA, sndio or PA backends,
              then audio will not be synchronised correctly at the start of play.  The  default  is  to  have  a
              silent lead-in of approximately the same time as the latency set by the client.

       dbus_service_bus= "bus_name";
              If  shairport  sync  is  compiled with the D-Bus interface, it can offer it on the "system" or the
              "session" D-Bus "bus". Use this to specify which. The default is to use the "system" bus.

       mpris_service_bus= "bus_name";
              If shairport sync is compiled with the MPRIS interface, it can offer the service on  the  "system"
              or the "session" D-Bus "bus". Use this to specify which. The default is to use the "system" bus.

       "SESSIONCONTROL" SETTINGS

       run_this_before_play_begins="/path/to/application and args";
              Here  you  can  specify  a  program  and its arguments that will be run just before a play session
              begins. Be careful to include the full path to the application. The application must be marked  as
              executable  and, if it is a script, its first line must begin with the standard shebang #!/bin/...
              as appropriate.

       run_this_after_play_ends="/path/to/application and args";
              Here you can specify a program and its arguments that will be run just after a play session  ends.
              Be  careful  to  include  the  full  path  to  the  application. The application must be marked as
              executable and, if it is a script, its first line must begin with the standard shebang  #!/bin/...
              as appropriate.

       run_this_before_entering_active_state="/path/to/application and args";
              Here  you can specify a program and its arguments that will be run just before shairport-sync goes
              active.

              Shairport Sync goes "active" when a play session starts. When the play session  ends,  the  system
              will  stay  active  until the time specified in the active_state_timeout setting elapses. If a new
              play session starts before that, the system will remain active.  Otherwise,  the  system  will  go
              inactive.

              Be  careful  to  include  the  full  path  to  the  application. The application must be marked as
              executable and, if it is a script, its first line must begin with the standard shebang  #!/bin/...
              as appropriate.

       run_this_after_exiting_active_state="/path/to/application and args";
              Here  you  can specify a program and its arguments that will be run just after shairport-sync goes
              inactive (see the previous entry for an explanation of the idea). Be careful to include  the  full
              path  to the application. The application must be marked as executable and, if it is a script, its
              first line must begin with the standard shebang #!/bin/... as appropriate.

       active_state_timeout=seconds;
              After a play session has ended, the system will remain active for seconds seconds. If a  new  play
              session  starts  before  this  time has elapsed, the system will remain active. However, if no new
              session starts in the interval, the system will go inactive at the end of it. The  default  is  10
              seconds.

       run_this_if_an_unfixable_error_is_detected="/path/to/application and args";
              Here  you  can  specify  a  program  and  its  arguments that will be run if the system detects an
              unfixable error. At present, there are two types of unfixable errors. One is where a play  session
              cannot  be  terminated.  The  second is if an output device has "stalled" -- that is, if an output
              device refuses to accept any more output frames.

              Although the first problem could, in principle, be fixed  by  restarting  Shairport  Sync,  it  is
              usually caused by a malfunctioning output device. Typically, the most reliable way to recover from
              either of these errors is to reboot the entire machine.

              Be careful to include the full path  to  the  application.  The  application  must  be  marked  as
              executable  and, if it is a script, its first line must begin with the standard shebang #!/bin/...
              as appropriate.

       wait_for_completion="choice";
              Set choice to "yes" to make shairport-sync wait until the programs specified in  the  run_this_...
              settings have completed execution before continuing. The default is "no".

       allow_session_interruption="choice";
              If  choice is set to "yes", then another source will be able to interrupt an existing play session
              and start a new one. When set to "no" (the default),  other  devices  attempting  to  interrupt  a
              session will fail, receiving a busy signal.

       session_timeout=seconds;
              If a play session has been established and the source disappears without warning (such as a device
              going out of range of a network) then wait for the number of seconds specified before  ending  the
              session. Once the session has terminated, other devices can use it. The default is 120 seconds.

       "ALSA" SETTINGS
              These  settings  are  for  the ALSA back end, used to communicate with audio output devices in the
              ALSA system. (By the way, you can use tools such as alsamixer or aplay to  discover  what  devices
              are available.) Use these settings to select the output device and the mixer control to be used to
              control the output volume. You can additionally set the desired size of the output buffer and  you
              can adjust overall latency. Here are the alsa group settings:

       output_device="output_device";
              Use the output device called output_device. The default is the device called "default".

       mixer_control_name="name";
              Specify  the  name  of  the  mixer control to be used by shairport-sync to control the volume. The
              mixer control must be on the mixer device, which by default is the output device. If  you  do  not
              specify a mixer control name, shairport-sync will adjust the volume in software.

       mixer_device="mixer_device";
              By  default,  the mixer is assumed to be output_device. Use this setting to specify a device other
              than the output device.

       output_rate=frame rate;
              Use this setting to specify the frame rate to output to the  ALSA  device.  Allowable  values  are
              "auto"  (default),  44100, 88200, 176400 and 352800. The device must have the capability to accept
              the rate you specify. There is no particular reason to use anything other  than  44100  if  it  is
              available, and if "auto" is selected, the lowest of these rates available, starting at 44100, will
              be selected.

       output_format="format";
              Use this setting to specify the format that should be used  to  send  data  to  the  ALSA  device.
              Allowable  values  are  "auto" (default), "U8", "S8", "S16", "S24", "S24_3LE", "S24_3BE" or "S32".
              The device must have the capability to accept the format you specify.

              "S" means signed; "U" means unsigned; BE means big-endian and LE means little-endian. Except where
              stated (using *LE or *BE), endianness matches that of the processor. The default is "S16".

              If  you  are  using  a  hardware  mixer,  S16  is  fine, as audio will pass through Shairport Sync
              unmodified except for interpolation, but any of the higher-resolution formats are okay too. If you
              are  using the software mixer, use 32- or 24-bit, if your device is capable of it, in order to get
              the lowest possible levels of dither. The "auto" setting will cause Shairport Sync to  choose  the
              highest resolution available.

       disable_synchronization="no";
              This  is  an  advanced setting and is for debugging only. Set to "yes" to disable synchronization.
              Default is "no". If you use it to disable synchronisation, then sooner or later you'll  experience
              audio glitches due to audio buffer overflow or underflow.

       period_size=number;
              Use this optional advanced setting to set the alsa period size near to this value.

       buffer_size=number;
              Use this optional advanced setting to set the alsa buffer size near to this value.

       use_mmap_if_available="yes";
              Use  this  optional  advanced  setting to control whether MMAP-based output is used to communicate
              with the DAC. Default is "yes".

       mute_using_playback_switch="no";
              This is an advanced setting and the default is "no". If it is set to "yes", hardware mute will  be
              used where it is available. Set it to "no" to prevent the hardware mute being used.

              If  Shairport  Sync is sharing the output device with other applications, it is best to leave this
              set to "no" for compatibility with those applications.

              Another    motivation    for    this    is     to     allow     the     ALSA     function     call
              "snd_mixer_selem_set_playback_switch_all"  to be avoided. It is incorrectly implemented on certain
              soundcards, including the emulated card in VMWare Fusion 8.5.

       maximum_stall_time=seconds;
              If an output device fails to accept any audio frames for more than the time, in seconds, specified
              here  (0.2  seconds  by  default),  it  is considered to have malfunctioned. It will result in the
              run_this_if_an_unfixable_error_is_detected program, if any, being called.

              Implemented for the ALSA back end only.

       disable_standby_mode="never";
              Shairport Sync has a "Disable Standby" feature to  eliminate  certain  faint-but-annoying  audible
              pops  and clicks. When activsted, it prevents an output device from entering standby mode and thus
              it minimises standby/busy transitions, which can sometimes be heard. Use this setting  to  control
              when  the  Disable  Standby  feature is active: "never" means it will never be activated, "always"
              means it will be active as soon as shairport-sync starts running, and  "auto"  means  it  will  be
              active while shairport-sync is in the "active" state.

              Shairport  Sync  goes  "active" when a play session starts. When the play session ends, the system
              will stay active until the time specified in the active_state_timeout setting elapses.  If  a  new
              play  session  starts  before  that,  the system will remain active. Otherwise, the system will go
              inactive.

       "SNDIO" SETTINGS
              These settings are for the SNDIO back end, used to communicate with audio output  devices  in  the
              SNDIO system.

       device="snd/0";
              Use  this  optional setting to specify the name of the output device, e.g. "snd/0". The default is
              to use the SNDIO system's default.

       rate=44100;
              Use this optional setting to specify the output rate in frames per second. Valid rates are  44100,
              88200,  176400  or  352800.  The  output  device  must  have  the capability to accept data at the
              specified rate. The default is 44100.

       format="S16";
              Use this optional setting to specify the output format. Allowable values are  "U8",  "S8",  "S16",
              "S24", "S24_3LE", "S24_3BE" or "S32". The device must have the capability to accept the format you
              specify.

              "S" means signed; "U" means unsigned; BE means big-endian and LE means little-endian. Except where
              stated (using *LE or *BE), endianness matches that of the processor. The default is "S16".

              Since  the  SNDIO  backend  does  not  use  a  hardware  mixer  for volume control, dither will be
              introduced into the output if it is less than full volume. Thus,  (unless  you  are  ignoring  the
              volume  control  setting), consider using 32- or 24-bit output if your device is capable of it, to
              get the lowest possible levels of dither.

              Please note that 32- or 24-bit has not been extensively tested on SNDIO.

       round=value;
              Use this optional advanced setting to specify the period size of the SNDIO channel. If omitted,  a
              SNDIO system default value will be used.

       bufsiz=value;
              Use  this optional advanced setting to specify the buffer size of the SNDIO channel. If omitted, a
              SNDIO system default value will be used.

       "PA" SETTINGS
              These settings are for the new PulseAudio backend.

       application_name="Shairport Sync";
              Use this to set the name to appear in the Sounds "Applications" tab when Shairport Sync is active.
              The default is the name "Shairport Sync".

       "PIPE" SETTINGS
              These settings are for the PIPE backend, used to route audio to a named unix pipe. The audio is in
              raw CD audio format: PCM 16 bit little endian, 44,100 samples per second, interleaved stereo.

       name="/path/to/pipe";
              Use this to specify the name and location of the pipe. The pipe will be created  and  opened  when
              shairport-sync  starts  up  and  will be closed upon shutdown. Frames of audio will be sent to the
              pipe in packets of 352 frames and will be discarded if the pipe has not have  a  reader  attached.
              The sender will wait for up to five seconds for a packet to be written before discarding it.

       "STDOUT" SETTINGS
              There are no settings for the STDOUT backend.

       "AO" SETTINGS
              There are no configuration file settings for the AO backend.

       "METADATA" SETTINGS
              shairport-sync  can  process  metadata  provided  by the source, such as Track Number, Album Name,
              cover art, etc. and can provide additional metadata such as volume level,  pause/resume,  etc.  It
              sends  the  metadata  to  a  pipe,  by  default /tmp/shairport-sync-metadata. To process metadata,
              shairport-sync must have been compiled with metadata support included. You can check that this  is
              so  by  running  the  command $ shairport-sync -V; the identification string will contain the word
              metadata.

              Please note that different sources provide different levels of metadata. Some provide a lot;  some
              provide almost none.

              The  metadata  group  of  settings  allow  you  to enable metadata handling and to control certain
              aspects of it:

       enabled="choice";
              Set the choice to "yes" to enable shairport-sync to look for metadata from the audio source and to
              forward  it,  along  with  metadata  generated by shairport-sync itself, to the metadata pipe. The
              default is "no".

       include_cover_art="choice";
              Set the choice to "yes" to enable shairport-sync to look for cover art from the audio  source  and
              to  include  it  in  the feed to the metadata pipe. You must also enable metadata (see above). One
              reason for not including cover art is that the images can sometimes be very large  and  may  delay
              transmission of subsequent metadata through the pipe. The default is "no".

       pipe_name="filepathname";
              Specify  the  absolute  path name of the pipe through which metadata should be sent The default is
              /tmp/shairport-sync-metadata.

       socket_address="hostnameOrIP";
              If hostnameOrIP is set to a host name or and IP address, UDP packets containing metadata  will  be
              sent  to  this address. May be a multicast address. Additionally, socket-port must be non-zero and
              enabled must be set to "yes".

       socket_port=port;
              If socket_address is set, use port to specify the port to send UDP packets to. Must not be zero.

       socket_msglength=65000;
              The maximum packet size for any UDP metadata. This must be between 500 or 65000.  The  default  is
              500.

       "DIAGNOSTICS" SETTINGS

       statistics="setting";
              Use this setting to enable ("yes") or disable ("no") the output of some statistical information to
              the system log (or to STDERR if the -u command line option is chosen). The default is  to  disable
              statistics.

       log_verbosity=0;
              Use  this to specify how much debugging information should sent to the system log (or to STDERR if
              the -u command line option is chosen). The value 0 means no debug information, 3 means most  debug
              information. The default is 0.

OPTIONS

       This section is about the command-line options available in shairport-sync.

       Note:  if  you are setting up shairport-sync for the first time or are updating an existing installation,
       you are encouraged to use the configuration file settings  described  above.  Most  of  the  command-line
       options  described below simply replicate the configuration settings and are retained to provide backward
       compatibility with older installations of shairport-sync.

       Many command-line options take sensible default values, so you can normally ignore most of them. See  the
       EXAMPLES section for typical usages.

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

PROGRAM OPTIONS

       These command-line 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 hostname, %H for the computer's
              hostname with the first letter capitalised (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 Directory -- /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 shaiport-sync has
              been compiled with libdaemon support.

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

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

       --get-coverart
              This  option requires the --meta-dir option to be set, and enables shairport-sync to request cover
              art from the source and to transmit it through the metadata pipe.

              Please note that cover art data may be very large, and may  place  too  great  a  burden  on  your
              network.

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

       -j     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  shaiport-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 shaiport-sync has been compiled with libdaemon
              support.)

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

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

       --meta-dir=directory
              Listen for metadata coming from the source and send it, along with  metadata  from  shairport-sync
              itself,  to  a  pipe  called  shairport-sync-metadata in the directory you specify. If you add the
              --get-cover-art   then   cover   art   will    be    sent    through    the    pipe    too.    See
              https://github.com/mikebrady/shairport-sync-metadata-reader for a sample metadata reader.

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

       --password=secret
              Require the password secret to be able to connect and stream to the service.

       -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 statistics in the standard output, or in the logfile if in daemon mode.

       -S mode | --stuffing=mode
              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 to keep it  exactly  in  synchrony
              with the player. The default mode, basic, is normally almost completely inaudible. The alternative
              mode, soxr, is even less obtrusive but requires much more processing power. For this mode, support
              for libsoxr, the SoX Resampler Library, must be selected when shairport-sync is compiled.

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

              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  seconds,  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 session. The default value is 120 seconds.

       --tolerance=frames
              Allow  playback  to  be up to frames out of exact synchronization before 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.

       -u     If you are running shairport-sync from the command line and want logs to appear  there,  use  this
              option. Otherwise, logs may go to the system log.

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

       -v | --verbose
              Print  debug  information to the system log, or or to STDERR if the -u command line option is also
              chosen. Repeat up to three times to get more detail.

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

AUDIO BACKEND OPTIONS

       These command-line options are passed to the chosen audio backend. The audio backend options are preceded
       by  a  --  symbol  to  introduce  them and to separate them from any program options. In this way, option
       letters can be used as program options and also as audio backend options without ambiguity.

       In the ALSA backend, audio is sent to an output device which you can specify using  the  -d  option.  The
       output  level (the "volume") is controlled using a level control associated with a mixer. By default, the
       mixer is implemented in shairport-sync itself in software. To use a hardware level control on a mixer  on
       the  sound card, specify the name of the mixer control with the -c option. If the mixer is not associated
       with the output device, then you need to specify where the mixer is to be found with the -m option.

       -c controlname
              Use the level control called controlname on the hardware mixer for  controlling  volume.  This  is
              needed if the mixer type is specified, using the -t option, to be hardware. There is no default.

       -d device
              Use  the  specified  output  device.  You may specify a card, e.g. hw:0, in which case the default
              output device on the card will be chosen. Alternatively, you can specify a specific  device  on  a
              card, e.g. hw:0,0. The default is the device named default.

       -m mixer
              Use  the specified hardware mixer for volume control. Use this to specify where the mixer is to be
              found. For example, if the mixer is associated with a card, as is  often  the  case,  specify  the
              card,  e.g. hw:0. If (unusually) the mixer is associated with a specific device on a card, specify
              the device, e.g. hw:0,1. The default is the device named in the -d option, if given, or the device
              named default.

       -t devicetype
              This  option  is  deprecated  and  is  ignored.  For  your information, its functionality has been
              automatically incorporated in the -c option -- if you specify a mixer name with the -c option,  it
              is assumed that the mixer is implemented in hardware.

EXAMPLES

       Here is a slightly contrived example:

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

       The  program  will run in daemon mode ( -d ), will be visible as "Joe's Stereo" ( -a "Joe's Stereo" ) and
       will use the SoX Resampler Library-based stuffing ( -S soxr ). The audio backend options following the --
       separator  specify  that  the audio will be output on output 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 in order to show the use of the -m option. Typically, output 0 is
       the  default  output  of  a card, so the output device could be written -d hw:1 and then the mixer option
       would be unnecessary, giving the following, simpler, command:

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

CREDITS

       Mike Brady developed shairport-sync from the original Shairport by James Laird.

       shairport-sync can be found at https://github.com/mikebrady/shairport-sync.

       Shairport can be found at https://github.com/abrasive/shairport.

COMMENTS

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