|
|
| |
shairport-sync(7) |
FreeBSD Miscellaneous Information Manual |
shairport-sync(7) |
shairport-sync - Synchronised Audio Player for iTunes / AirPlay
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
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.
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.
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.
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.
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.
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
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.
This man page was written using xml2man(1) by Oliver Kurth.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |