]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Add back all accumulated changes to master branch at 3.0 release
authorMike Brady <mikebrady@eircom.net>
Sat, 25 Feb 2017 15:18:34 +0000 (15:18 +0000)
committerMike Brady <mikebrady@eircom.net>
Sat, 25 Feb 2017 15:18:34 +0000 (15:18 +0000)
RELEASENOTES.md
UPDATING.md
man/shairport-sync.7
man/shairport-sync.7.xml
man/shairport-sync.html
rtp.c
scripts/shairport-sync.conf
shairport-sync.spec

index 3e1788febe1b887d94efefc83be7a1db4bfd54b0..18996d0ed4ac27cfa9922dc5f43ac819e48b34eb 100644 (file)
@@ -99,6 +99,27 @@ Pesky Changes You Cannot Ignore
 **Bugs**
 * Documentation is not updated.
 
+Version 2.8.6 – Stable Candidate
+----
+
+**Enhancements**
+* This release contains a small change – it identifies itself as a ShairportSync device rather than an AirPort device. This should make it possible for Tuneblade, and possibly other players, to recognise it correctly. 
+
+Version 2.8.5 – Stable Version
+----
+This release includes bug fixes and minor enhancements and is recommended for all users.
+
+Note: if you're upgrading, there is a new `./configure` option:  
+====
+The build process now uses the directory path `sysconfdir` to determine where to place the configuration file `shairport-sync.conf`.
+The default value for `sysconfdir` is `/usr/local/etc` which is used in the BSD family, whereas `/etc` is normally used in Linux.
+To retain the present behaviour of Shairport Sync, *you must add an extra parameter to the `./configure... ` command.* The parameter you must add is `--sysconfdir=/etc`. (This has been added to the sample configuration command line in README.md.)
+
+The enhancements and bug fixes in 2.8.5 were made in versions 2.8.4.1 to 2.8.4.8 inclusive. Please read below for the full list.
+
+For advice on updating an installation you built yourself,
+please visit the [UPDATING](https://github.com/mikebrady/shairport-sync/blob/master/UPDATING.md) page.
+
 Version 2.8.4.8 – Development Version
 ----
 **Enhancements**
@@ -107,8 +128,6 @@ Version 2.8.4.8 – Development Version
 
 Version 2.8.4.7 – Development Version
 ----
-Pesky Changes You Cannot Ignore
-====
 
 * This update means the build process now uses the directory path `sysconfdir` to determine where to place the configuration file `shairport-sync.conf`. The default value for `sysconfdir` is `/usr/local/etc` which is used in the BSD family, whereas `/etc` is normally used in Linux. So, to retain the present behaviour of Shairport Sync, you must add an extra parameter to the `./configure... ` command. The parameter you must add is `--sysconfdir=/etc`. (This has been added to the sample configuration command line in README.md.)
 * Shairport Sync has been updated to use the value of `sysconfdir` to determine where to look for the configuration file. If `sysconfdir` has been left with its default value of `/usr/local/etc`, then Shairport Sync will look for `/usr/local/etc/shairport-sync.conf`. If, as recommended for Linux, `sysconfdir` has been set to `/etc`, then Shairport Sync will look, as before, for `/etc/shairport-sync.conf`.
@@ -155,7 +174,7 @@ Version 2.8.4.1 – Development Version
 * Fixed two issues when including support for `pulseaudio`.
 * Corrected two small errors in sample parameters for the UDP metadata stream settings, thanks to [rkam](https://github.com/rkam).
 
-Version 2.8.4 – Stable Version (Candidate Release)
+Version 2.8.4 – Stable Version
 ----
 This release includes important bug fixes and minor enhancements and is recommended for all users. No settings need to be changed. For advice on updating an installation you built yourself, please visit the [UPDATING](https://github.com/mikebrady/shairport-sync/blob/master/UPDATING.md) page.
 
index 1cf40049b4a7df3e9dde00e12e30597889fa2f45..481f3c63b4680ce885fdde7ff7e7e7e4b64b818e 100644 (file)
@@ -10,43 +10,46 @@ But before you begin, you should update and upgrade any packages.
 Here is the sequence for Raspbian Jessie, which is based on Debian Jessie. The same commands work for Ubuntu, and maybe more. Here, a non-`root` user with `sudo` privileges is assumed.
 
 ```
-$sudo apt-get update
-$sudo apt-get upgrade
+$ sudo apt-get update
+$ sudo apt-get upgrade
 ```
 Next, stop playing music to your device.
 
-Now, to update and install Shairport Sync, if you still have the directory in which you previously built Shairport Sync, navigate your way to it and execute the command:
+Now, to update and install Shairport Sync, if you still have the directory in which you previously built Shairport Sync, it will contain the repository you originally downloaded. Navigate your way to it and 'pull' the changes from GitHub:
+
 ```
-$git pull
+$ git pull
 ```
-Otherwise, just pull Shairport Sync from `github` again and move into the new directory:
+Otherwise – say if you deleted the repository – just pull Shairport Sync from GitHub again and move into the new directory:
 ```
-$git clone https://github.com/mikebrady/shairport-sync.git
-$cd shairport-sync
+$ git clone https://github.com/mikebrady/shairport-sync.git
+$ cd shairport-sync
 ```
 Now, while in the `shairport-sync` directory, perform the following commands (note that there is a choice you must make in there):
 ```
-$autoreconf -fi
-
+$ autoreconf -fi
+```
+Please review the release notes to see if any configuration settings have been changed. For instance, in the transitions from version 2 to version 3, the `--with-ssl=polarssl` has been deprecated in favour of `--with-ssl=mbedtls`.
+```
 #The following is the standard configuration for a Linux that uses the systemd initialisation system:
-$./configure --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemd
+$ ./configure --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemd --sysconfdir=/etc
 #OR
 #The following is the standard configuration for a Linux that uses the older System V initialisation system:
-$./configure --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemv
+$ ./configure --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemv --sysconfdir=/etc
 
-$make
-$sudo make install
+$ make
+$ sudo make install
 ```
 At this point you have downloaded, compiled and installed the updated Shairport Sync. However, the older version is still running. So, you need to do a little more: 
 
 If you are on a `systemd`-based system such as Raspbian Jessie or recent versions of Ubuntu and Debian, execute the following commands:
 ```
-$sudo systemctl daemon-reload
-$sudo systemctl restart shairport-sync
+$ sudo systemctl daemon-reload
+$ sudo systemctl restart shairport-sync
 ```
 Otherwise execute the following command:
 ```
-$sudo service shairport-sync restart
+$ sudo service shairport-sync restart
 ```
 
 That's it. Your Shairport Sync should be upgraded now. 
index 1f866811daf6606cabd1b69d1aa1f928e04bb9ab..c616ed6830b6352c64dd3580d0d3b9543dffcd2b 100644 (file)
@@ -23,7 +23,9 @@ shairport-sync can be compiled to stream audio, without synchronisation, to a pi
 
 Settings can be made using the configuration file (recommended for all new installations) or by using command-line options.
 .SH CONFIGURATION FILE SETTINGS
-You should use the configuration file for setting up shairport-sync. This file is normally \fI/etc/shairport-sync.conf\f1. You may need to have root privileges to modify it.
+You should use the configuration file for setting up shairport-sync. This file is usually \fIshairport-sync.conf\f1 and is generally located in the System Configuration Directory, which is normally the \fI/etc\f1 directory in Linux or the \fI/usr/local/etc\f1 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 \fI$ shairport-sync -V\f1. One of the items in the output string is the value of the \fBsysconfdir\f1, i.e. the System Configuration Directory.)
 
 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:
 
@@ -49,7 +51,7 @@ Settings are organised into groups, for example, there is a "general" group of s
 
 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 volume control's name should be specified. It is highly desirable to use the output device's mixer for volume control, if available -- response time is reduced to zero and the processor load is reduced. In the example above, "soxr" interpolation was also enabled.
 
-A sample configuration file with all possible settings, but with all of them commented out, is installed at \fI/etc/shairport-sync.conf.sample\f1.
+A sample configuration file with all possible settings, but with all of them commented out, is installed at \fIshairport-sync.conf.sample\f1, within the System Configuration Directory -- \fI/etc\f1 in Linux, \fI/usr/local/etc\f1 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.
 
@@ -96,10 +98,10 @@ Allow playback to drift up to \fIseconds\f1 out of exact synchronization before
 Resynchronise if timings differ by more than \fIthreshold\f1 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 \fBresync_threshold\f1 setting. 
 .TP
 \fBlog_verbosity=\f1\fI0\f1\fB;\f1
-Use this to specify how much debugging information should be output or logged. "0" means no debug information, "3" means most debug information. The default is "0"
+Use this to specify how much debugging information should be output or logged. The value \fI0\f1 means no debug information, \fI3\f1 means most debug information. The default is \fI0\f1
 .TP
 \fBignore_volume_control=\f1\fI"choice"\f1\fB;\f1
-Set this \fIchoice\f1 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"
+Set this \fIchoice\f1 to \fI"yes"\f1 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 \fI"no"\f1
 .TP
 \fBvolume_max_db=\f1\fIdBvalue\f1\fB;\f1
 Specify the maximum output level to be used with the hardware mixer, if used. If no hardware mixed is used, this setting speciies the maximum setting permissible in the software mixer, which has an attenuation of from 0.0 dB down to -96.3 dB.
@@ -113,10 +115,10 @@ Another potential use might be where the range specified by the mixer does not m
 
 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 full "native" range of the mixer is used.
+If you omit this setting, the native range of the mixer is used.
 .TP
 \fBregtype=\f1\fI"regTypeString"\f1\fB;\f1
-Use this advanced setting to set the service type and transport to be advertised by Zeroconf/Bonjour. Default is "_raop._tcp"
+Use this advanced setting to set the service type and transport to be advertised by Zeroconf/Bonjour. Default is \fI"_raop._tcp"\f1
 .TP
 \fBplayback_mode=\f1\fI"mode"\f1\fB;\f1
 The \fImode\f1 can be "stereo", "mono", "reverse stereo", "both left" or "both right". Default is "stereo". 
@@ -131,12 +133,12 @@ This can be "hammerton" or "apple". This advanced setting allows you to choose t
 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 \fBalsamixer\f1 or \fBaplay\f1 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 \fBalsa\f1 group settings:
 .TP
 \fBoutput_device=\f1\fI"output_device"\f1\fB;\f1
-Use the output device called \fIoutput_device\f1. The default is the device called "default"
+Use the output device called \fIoutput_device\f1. The default is the device called \fI"default"\f1
 .TP
 .TP
 \fBmixer_control_name=\f1\fI"name"\f1\fB;\f1
 Specify the \fIname\f1 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. \fBmixer_type=\f1\fI"mixer_type"\f1\fB;\f1
-This setting is deprecated and is ignored. For your information, its functionality has been automatically incorporated in the mixer_control_name setting -- if you specify a mixer name with the mixer_control_name setting, it is assumed that the mixer is implemented in hardware. 
+This setting is deprecated and is ignored. For your information, its functionality has been automatically incorporated in the \fBmixer_control_name\f1 setting -- if you specify a mixer name with the \fBmixer_control_name\f1 setting, it is assumed that the mixer is implemented in hardware. 
 .TP
 \fBmixer_device=\f1\fI"mixer_device"\f1\fB;\f1
 By default, the mixer is assumed to be output_device. Use this setting to specify a device other than the output device. 
@@ -154,7 +156,7 @@ Use this setting to specify the frame rate to output to the ALSA device. Allowab
 Use this setting to specify the format that should be used to send data to the ALSA device. 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". If you are using a hardware mixer, the best setting is S16, as audio will pass through Shairport Sync unmodifed except for interpolation. If you are using the software mixer, use 32- or 24-bit, if your device is capable of it, to get the lowest possible levels of dither. 
 .TP
 \fBdisable_synchronization=\f1\fI"no"\f1\fB;\f1
-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. 
+This is an advanced setting and is for debugging only. Set to \fI"yes"\f1 to disable synchronization. Default is \fI"no"\f1. If you use it to disable synchronisation, then sooner or later you'll experience audio glitches due to audio buffer overflow or underflow. 
 .TP
 \fBperiod_size=\f1\fInumber\f1\fB;\f1
 Use this optional advanced setting to set the alsa period size near to this value. 
@@ -162,6 +164,9 @@ Use this optional advanced setting to set the alsa period size near to this valu
 \fBbuffer_size=\f1\fInumber\f1\fB;\f1
 Use this optional advanced setting to set the alsa buffer size near to this value. 
 .TP
+\fBuse_mmap_if_available=\f1\fI"yes"\f1\fB;\f1
+Use this optional advanced setting to control whether MMAP-based output is used to communicate with the DAC. Default is \fI"yes"\f1. 
+.TP
 \fB"PIPE" SETTINGS\f1
 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.
 
@@ -270,7 +275,7 @@ Execute \fIprogram\f1 when playback is about to begin. Specify the full path to
 If you want shairport-sync to wait until the command has completed before starting to play, select the \fB-w\f1 option as well. 
 .TP
 \fB-c \f1\fIfilename\f1\fB | --configfile=\f1\fIfilename\f1
-Read configuration settings from \fIfilename\f1. The default is to read them from \fI/etc/shairport-sync.conf\f1. For information about configuration settings, see the "Configuration File Settings" section above. 
+Read configuration settings from \fIfilename\f1. The default is to read them from the \fIshairport-sync.conf\f1 in the System Configuration Directory -- \fI/etc\f1 in Linux, \fI/usr/local/etc\f1 in BSD unixes. For information about configuration settings, see the "Configuration File Settings" section above. 
 .TP
 \fB-D | --disconnectFromOutput\f1
 Disconnect the shairport-sync daemon from the output device and exit. (Requires that the daemon has written its PID to an agreed file -- see the \fB-d\f1 option). 
index 695655d1776d227f695982311378635f9d034efe..db1ce722f737634bfcd88fa4d33ca078ac177e10 100644 (file)
        
        <section name="Configuration File Settings">
           <p>You should use the configuration file for setting up shairport-sync.
-         This file is normally <file>/etc/shairport-sync.conf</file>.
+         This file is usually <file>shairport-sync.conf</file> and is generally located in the System Configuration Directory, which is normally the <file>/etc</file> directory in Linux or the <file>/usr/local/etc</file> directory in BSD unixes.
          You may need to have root privileges to modify it.</p>
          
+         <p>(Note: Shairport Sync may have been compiled to use a different configuration directory. You can determine which by performing the command <file>$ shairport-sync -V</file>. One of the items in the output string is the value of the <opt>sysconfdir</opt>,
+         i.e. the System Configuration Directory.)</p>
+         
+         
          <p>Settings are organised into <i>groups</i>, 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:</p>
          <p>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 volume control's name should be specified. It is highly desirable to use the output device's mixer for volume control, if available -- response time is reduced to zero and the processor load is reduced. In the example above, "soxr" interpolation was also enabled.</p>
          
-         <p>A sample configuration file with all possible settings, but with all of them commented out, is installed at <file>/etc/shairport-sync.conf.sample</file>.</p>
+         <p>A sample configuration file with all possible settings, but with all of them commented out, is installed at <file>shairport-sync.conf.sample</file>, within the System Configuration Directory -- <file>/etc</file> in Linux, <file>/usr/local/etc</file> in BSD unixes.</p>
          
          <p>To retain backwards compatibility with previous versions of shairport-sync
          you can use still use command line options, but any new features, etc. will
     </option>
     <option>
     <p><opt>udp_port_range=</opt><arg>range</arg><opt>;</opt></p>
-    <optdesc>Use this in conjunction with the prevous setting to specify the <arg>range</arg> 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.</optdesc>
+    <optdesc>Use this in conjunction with the prevous setting to specify the <arg>range</arg> 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.</optdesc>
     </option>
     <option>
     <p><opt>drift_tolerance_in_seconds=</opt><arg>seconds</arg><opt>;</opt></p>
     </option>
     <option>
     <p><opt>log_verbosity=</opt><arg>0</arg><opt>;</opt></p>
-    <optdesc>Use this to specify how much debugging information should be output or logged. "0" means no debug information, "3" means most debug information. The default is "0".</optdesc>
+    <optdesc>Use this to specify how much debugging information should be output or logged. The value <arg>0</arg> means no debug information, <arg>3</arg> means most debug information. The default is <arg>0</arg>.</optdesc>
     </option>
     <option>
     <p><opt>ignore_volume_control=</opt><arg>"choice"</arg><opt>;</opt></p>
-    <optdesc>Set this <arg>choice</arg> 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".</optdesc>
+    <optdesc>Set this <arg>choice</arg> to <arg>"yes"</arg> 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 <arg>"no"</arg>.</optdesc>
     </option>
     
     <option>
     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.</p>
-    <p>If you omit this setting, the full "native" range of the mixer is used.</p></optdesc>
+    <p>If you omit this setting, the native range of the mixer is used.</p></optdesc>
     </option>
     <option>
     <p><opt>regtype=</opt><arg>"regTypeString"</arg><opt>;</opt></p>
-    <optdesc>Use this advanced setting to set the service type and transport to be advertised by Zeroconf/Bonjour. Default is "_raop._tcp".</optdesc>
+    <optdesc>Use this advanced setting to set the service type and transport to be advertised by Zeroconf/Bonjour. Default is <arg>"_raop._tcp"</arg>.</optdesc>
     </option>
     
     <option>
 
     <option>
     <p><opt>output_device=</opt><arg>"output_device"</arg><opt>;</opt></p>
-    <optdesc>Use the output device called <arg>output_device</arg>. The default is the device called "default".</optdesc>
+    <optdesc>Use the output device called <arg>output_device</arg>. The default is the device called <arg>"default"</arg>.</optdesc>
     </option>
     <option>
     <option>
     If you do not specify a mixer control name, shairport-sync will adjust the volume in software.</optdesc>
     </option>
     <p><opt>mixer_type=</opt><arg>"mixer_type"</arg><opt>;</opt></p>
-    <optdesc>This setting is deprecated and is ignored. For your information, its functionality has been automatically incorporated in the mixer_control_name setting
-  -- if you specify a mixer name with the mixer_control_name setting, it is assumed that the mixer is implemented in hardware.</optdesc>
+    <optdesc>This setting is deprecated and is ignored. For your information, its functionality has been automatically incorporated in the <opt>mixer_control_name</opt> setting
+  -- if you specify a mixer name with the <opt>mixer_control_name</opt> setting, it is assumed that the mixer is implemented in hardware.</optdesc>
     </option>
     <option>
     <p><opt>mixer_device=</opt><arg>"mixer_device"</arg><opt>;</opt></p>
 
     <option>
     <p><opt>disable_synchronization=</opt><arg>"no"</arg><opt>;</opt></p>
-    <optdesc>This is an advanced setting and is for debugging only. Set to "yes" to disable synchronization. Default is "no".
+    <optdesc>This is an advanced setting and is for debugging only. Set to <arg>"yes"</arg> to disable synchronization. Default is <arg>"no"</arg>.
     If you use it to disable synchronisation, then sooner or later you'll experience audio glitches due to
     audio buffer overflow or underflow.
     </optdesc>
     <p><opt>buffer_size=</opt><arg>number</arg><opt>;</opt></p>
     <optdesc>Use this optional advanced setting to set the alsa buffer size near to this value.</optdesc>
     </option>
-    
+    <option>
+    <p><opt>use_mmap_if_available=</opt><arg>"yes"</arg><opt>;</opt></p>
+    <optdesc> Use this optional advanced setting to control whether MMAP-based output is used to communicate  with the DAC. Default is <arg>"yes"</arg>.</optdesc>
+    </option>
+     
     <option><p><opt>"PIPE" SETTINGS</opt></p></option>
     <p>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.</p>
          <option>
                <p><opt>-c </opt><arg>filename</arg><opt> | --configfile=</opt><arg>filename</arg></p>
                <optdesc><p>
-               Read configuration settings from <arg>filename</arg>. The default is to read them from <file>/etc/shairport-sync.conf</file>. For information about configuration settings, see the  "Configuration File Settings" section above.
+               Read configuration settings from <arg>filename</arg>. The default is to read them from the <file>shairport-sync.conf</file> in the System Configuration Directory -- <file>/etc</file> in Linux, <file>/usr/local/etc</file> in BSD unixes.
+               For information about configuration settings, see the  "Configuration File Settings" section above.
     </p></optdesc>
          </option>
 
index 858863abeca292beb79dbeb2e9a5a171a7901310..5c1455f71c1740615da9e349b3c40d4368d763a8 100644 (file)
        <h2>Configuration File Settings</h2>
 
           <p>You should use the configuration file for setting up shairport-sync.
-         This file is normally <em>/etc/shairport-sync.conf</em>.
+         This file is usually <em>shairport-sync.conf</em> and is generally located in the System Configuration Directory, which is normally the <em>/etc</em> directory in Linux or the <em>/usr/local/etc</em> directory in BSD unixes.
          You may need to have root privileges to modify it.</p>
          
+         <p>(Note: Shairport Sync may have been compiled to use a different configuration directory. You can determine which by performing the command <em>$ shairport-sync -V</em>. One of the items in the output string is the value of the <b>sysconfdir</b>,
+         i.e. the System Configuration Directory.)</p>
+         
+         
          <p>Settings are organised into groups, for example, there is a &quot;general&quot; group of
          standard settings, and there is an &quot;alsa&quot; group with settings that pertain to the ALSA
          back end. Here is an example of a typical configuration file:</p>
@@ -82,7 +86,7 @@
          <p>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 volume control's name should be specified. It is highly desirable to use the output device's mixer for volume control, if available -- response time is reduced to zero and the processor load is reduced. In the example above, &quot;soxr&quot; interpolation was also enabled.</p>
          
-         <p>A sample configuration file with all possible settings, but with all of them commented out, is installed at <em>/etc/shairport-sync.conf.sample</em>.</p>
+         <p>A sample configuration file with all possible settings, but with all of them commented out, is installed at <em>shairport-sync.conf.sample</em>, within the System Configuration Directory -- <em>/etc</em> in Linux, <em>/usr/local/etc</em> in BSD unixes.</p>
          
          <p>To retain backwards compatibility with previous versions of shairport-sync
          you can use still use command line options, but any new features, etc. will
     
     
     <p><b>udp_port_range=</b><em>range</em><b>;</b></p>
-    Use this in conjunction with the prevous setting to specify the <em>range</em> 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.
+    Use this in conjunction with the prevous setting to specify the <em>range</em> 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.
     
     
     <p><b>drift_tolerance_in_seconds=</b><em>seconds</em><b>;</b></p>
     
     
     <p><b>log_verbosity=</b><em>0</em><b>;</b></p>
-    Use this to specify how much debugging information should be output or logged. &quot;0&quot; means no debug information, &quot;3&quot; means most debug information. The default is &quot;0&quot;.
+    Use this to specify how much debugging information should be output or logged. The value <em>0</em> means no debug information, <em>3</em> means most debug information. The default is <em>0</em>.
     
     
     <p><b>ignore_volume_control=</b><em>&quot;choice&quot;</em><b>;</b></p>
-    Set this <em>choice</em> to &quot;yes&quot; 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 &quot;no&quot;.
+    Set this <em>choice</em> to <em>&quot;yes&quot;</em> 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 <em>&quot;no&quot;</em>.
     
     
     
     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.</p>
-    <p>If you omit this setting, the full &quot;native&quot; range of the mixer is used.</p>
+    <p>If you omit this setting, the native range of the mixer is used.</p>
     
     
     <p><b>regtype=</b><em>&quot;regTypeString&quot;</em><b>;</b></p>
-    Use this advanced setting to set the service type and transport to be advertised by Zeroconf/Bonjour. Default is &quot;_raop._tcp&quot;.
+    Use this advanced setting to set the service type and transport to be advertised by Zeroconf/Bonjour. Default is <em>&quot;_raop._tcp&quot;</em>.
     
     
     
 
     
     <p><b>output_device=</b><em>&quot;output_device&quot;</em><b>;</b></p>
-    Use the output device called <em>output_device</em>. The default is the device called &quot;default&quot;.
+    Use the output device called <em>output_device</em>. The default is the device called <em>&quot;default&quot;</em>.
     
     
     
     If you do not specify a mixer control name, shairport-sync will adjust the volume in software.
     
     <p><b>mixer_type=</b><em>&quot;mixer_type&quot;</em><b>;</b></p>
-    This setting is deprecated and is ignored. For your information, its functionality has been automatically incorporated in the mixer_control_name setting
-  -- if you specify a mixer name with the mixer_control_name setting, it is assumed that the mixer is implemented in hardware.
+    This setting is deprecated and is ignored. For your information, its functionality has been automatically incorporated in the <b>mixer_control_name</b> setting
+  -- if you specify a mixer name with the <b>mixer_control_name</b> setting, it is assumed that the mixer is implemented in hardware.
     
     
     <p><b>mixer_device=</b><em>&quot;mixer_device&quot;</em><b>;</b></p>
 
     
     <p><b>disable_synchronization=</b><em>&quot;no&quot;</em><b>;</b></p>
-    This is an advanced setting and is for debugging only. Set to &quot;yes&quot; to disable synchronization. Default is &quot;no&quot;.
+    This is an advanced setting and is for debugging only. Set to <em>&quot;yes&quot;</em> to disable synchronization. Default is <em>&quot;no&quot;</em>.
     If you use it to disable synchronisation, then sooner or later you'll experience audio glitches due to
     audio buffer overflow or underflow.
     
     Use this optional advanced setting to set the alsa buffer size near to this value.
     
     
+    <p><b>use_mmap_if_available=</b><em>&quot;yes&quot;</em><b>;</b></p>
+     Use this optional advanced setting to control whether MMAP-based output is used to communicate  with the DAC. Default is <em>&quot;yes&quot;</em>.
+    
+     
     <p><b>&quot;PIPE&quot; SETTINGS</b></p>
     <p>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.</p>
          
                <p><b>-c </b><em>filename</em><b> | --configfile=</b><em>filename</em></p>
                <p>
-               Read configuration settings from <em>filename</em>. The default is to read them from <em>/etc/shairport-sync.conf</em>. For information about configuration settings, see the  &quot;Configuration File Settings&quot; section above.
+               Read configuration settings from <em>filename</em>. The default is to read them from the <em>shairport-sync.conf</em> in the System Configuration Directory -- <em>/etc</em> in Linux, <em>/usr/local/etc</em> in BSD unixes.
+               For information about configuration settings, see the  &quot;Configuration File Settings&quot; section above.
     </p>
          
 
diff --git a/rtp.c b/rtp.c
index 7f8abee207c3fa2e1dc1a60396cbb295c04acec1..dcaf28d4321ab897ca9420ad5f6791199d68576d 100644 (file)
--- a/rtp.c
+++ b/rtp.c
@@ -682,9 +682,12 @@ void rtp_setup(SOCKADDR *local, SOCKADDR *remote, int cport, int tport, uint32_t
     die("Can't get address of client's control port");
 
 #ifdef AF_INET6
-  if (servinfo->ai_family == AF_INET6)
+  if (servinfo->ai_family == AF_INET6) {
     memcpy(&rtp_client_control_socket, servinfo->ai_addr, sizeof(struct sockaddr_in6));
-  else
+    // ensure the scope id matches that of remote. this is needed for link-local addresses.
+    struct sockaddr_in6 *sa6 = (struct sockaddr_in6 *)&rtp_client_control_socket;
+    sa6->sin6_scope_id = self_scope_id;
+  } else
 #endif
     memcpy(&rtp_client_control_socket, servinfo->ai_addr, sizeof(struct sockaddr_in));
   freeaddrinfo(servinfo);
@@ -698,9 +701,12 @@ void rtp_setup(SOCKADDR *local, SOCKADDR *remote, int cport, int tport, uint32_t
   if (getaddrinfo(client_ip_string, portstr, &hints, &servinfo) != 0)
     die("Can't get address of client's timing port");
 #ifdef AF_INET6
-  if (servinfo->ai_family == AF_INET6)
+  if (servinfo->ai_family == AF_INET6) {
     memcpy(&rtp_client_timing_socket, servinfo->ai_addr, sizeof(struct sockaddr_in6));
-  else
+    // ensure the scope id matches that of remote. this is needed for link-local addresses.
+    struct sockaddr_in6 *sa6 = (struct sockaddr_in6 *)&rtp_client_timing_socket;
+    sa6->sin6_scope_id = self_scope_id;
+  } else
 #endif
     memcpy(&rtp_client_timing_socket, servinfo->ai_addr, sizeof(struct sockaddr_in));
   freeaddrinfo(servinfo);
index 53909bf5bfeed03b0d4374197b2f23ad9d563f06..d19e85f39d382f9d9703d1d4789965db83d98229 100644 (file)
@@ -5,13 +5,13 @@
 general =
 {
 //     name = "%H"; // This means "Hostname" -- see below. This is the name the service will advertise to iTunes.
-//     The default is "Hostname" -- i.e. the machine's hostname with the first letter capitalised (ASCII only.)
-//     You can use the following substitutions:
-//     %h for the hostname,
-//     %H for the Hostname (i.e. with first letter capitalised (ASCII only)),
-//     %v for the version number, e.g. 3.0 and
-//     %V for the full version string, e.g. 3.0-OpenSSL-Avahi-ALSA-soxr-metadata-sysconfdir:/etc
-//     Overall length can not exceed 50 characters. Example: "Shairport Sync %v on %H".
+//             The default is "Hostname" -- i.e. the machine's hostname with the first letter capitalised (ASCII only.)
+//             You can use the following substitutions:
+//                             %h for the hostname,
+//                             %H for the Hostname (i.e. with first letter capitalised (ASCII only)),
+//                             %v for the version number, e.g. 3.0 and
+//                             %V for the full version string, e.g. 3.0-OpenSSL-Avahi-ALSA-soxr-metadata-sysconfdir:/etc
+//             Overall length can not exceed 50 characters. Example: "Shairport Sync %v on %H".
 //     password = "secret"; // leave this commented out if you don't want to require a password
 //     interpolation = "basic"; // aka "stuffing". Default is "basic", alternative is "soxr". Use "soxr" only if you have a reasonably fast processor.
 //     output_backend = "alsa"; // Run "shairport-sync -h" to get a list of all output_backends, e.g. "alsa", "pipe", "stdout". The default is the first one.
@@ -42,9 +42,9 @@ metadata =
 //     include_cover_art = "no"; // set to "yes" to get Shairport Sync to solicit cover art from the source and pass it via the pipe. You must also set "enabled" to "yes".
 //     pipe_name = "/tmp/shairport-sync-metadata";
 //     pipe_timeout = 5000; // wait for this number of milliseconds for a blocked pipe to unblock before giving up
-//      socket_address = "226.0.0.1"; // if set to a host name or IP address, UDP packets containing metadata will be sent to this address. May be a multicast address. "socket-port" must be non-zero and "enabled" must be set to yes"
-//      socket_port = 5555; // if socket_address is set, the port to send UDP packets to
-//      socket_msglength = 65000; // the maximum packet size for any UDP metadata. This will be clipped to be between 500 or 65000. The default is 500.
+//     socket_address = "226.0.0.1"; // if set to a host name or IP address, UDP packets containing metadata will be sent to this address. May be a multicast address. "socket-port" must be non-zero and "enabled" must be set to yes"
+//     socket_port = 5555; // if socket_address is set, the port to send UDP packets to
+//     socket_msglength = 65000; // the maximum packet size for any UDP metadata. This will be clipped to be between 500 or 65000. The default is 500.
 };
 
 // Advanced parameters for controlling how a Shairport Sync runs
index b1d30575819f8a20c602bc8af8fa684f5fc06549..a2b54c39820508ffdb2c8f0d9e178c4dd1698458 100644 (file)
@@ -1,5 +1,5 @@
 Name:           shairport-sync
-Version:        2.8.3
+Version:        3.0
 Release:        1
 Summary:        AirTunes emulator. Shairport Sync adds multi-room capability with Audio Synchronisation.
 
@@ -56,6 +56,14 @@ getent passwd %{name} &> /dev/null || useradd --system -c "%{name} User" \
 %doc AUTHORS LICENSES README.md
 
 %changelog
+* Fri Feb 24 2017 Mike Brady <mikebrady@eircom.net> 2.8.6
+- Many changes including 8- 16- 24- and 32-bit output
+* Fri Oct 21 2016 Mike Brady <mikebrady@eircom.net> 2.8.6
+- Advertise self as ShairportSync rather than AirPort device 2.8.6
+* Sun Sep 25 2016 Mike Brady <mikebrady@eircom.net> 2.8.5
+- Bug fixes and small enhancements 2.8.5
+* Sat May 28 2016 Mike Brady <mikebrady@eircom.net> 2.8.4
+- Bug fixes and a few small enhancements 2.8.4
 * Fri Apr 15 2016 Mike Brady <mikebrady@eircom.net> 2.8.2
 - Stability improvements, bug fixes and a few special-purpose settings 2.8.2
 * Wed Mar 02 2016 Mike Brady <mikebrady@eircom.net> 2.8.1