Files
shairport-sync/CONFIGURATIONFILECHANGES5.md
Mike BradyandGitHub e2c247cd33 Document configuration changes for Version 5.0 [skip ci]
This document outlines the significant changes to the `shairport-sync.conf` configuration file for users upgrading to Version 5.0, including new features, settings, and recommendations for optimal use.
2026-02-13 15:55:25 +00:00

155 lines
6.5 KiB
Markdown

# Configuration File Changes in Version 5.0
This document summarizes the important changes to the `shairport-sync.conf` configuration file for normal users upgrading to Version 5.0.
## Multi-Channel Audio Support (NEW!)
Version 5.0 adds support for multi-channel audio (up to 8 channels), including surround sound formats like 5.1 and 7.1.
**New Settings in `general` section (showing defaults):**
* `eight_channel_mode = "on"` - Enable 8-channel (7.1 surround) audio reception.
* `six_channel_mode = "on"` - Enable 6-channel (5.1 surround) audio reception.
* `mixdown = "auto"` - Control how multi-channel audio is mixed down to fewer channels.
* `output_channel_mapping = "auto"` - Control how audio channels map to your output device.
**What this means for you:** If you have a surround sound system, you can now receive and play multi-channel audio directly. Most users can leave these at their defaults.
## Audio Format and Rate Settings
**Enhanced Interpolation Options:**
The `interpolation` setting now supports a new `"vernier"` mode especially intended for low-power devices:
* `"auto"` (default, recommended) - Automatically chooses the best method for your processor.
* `"vernier"` (new!) - Optimized for low-power devices like Raspberry Pi.
* `"soxr"` - High quality, needs fast processor.
* `"basic"` - No longer recommended.
**New FFmpeg Decoder:**
The `alac_decoder` setting has changed:
* Default is now `"ffmpeg"` (if built with FFmpeg support).
* Old `"hammerton"` and `"apple"` decoders are deprecated for security reasons.
**New Buffer Setting:**
* `audio_decoded_buffer_desired_length_in_seconds = 1.0` - (Advanced.) Controls the internal audio buffer size (AirPlay 2 only).
## Backend-Specific Changes
### ALSA Backend
**New format/rate/channel settings** - You can now specify multiple options and let Shairport Sync auto-select:
* `output_rate = "auto"` - Can be "auto", a single rate like `48000`, or a list like `(44100, 48000)`.
* `output_format = "auto"` - Can be "auto", a format like `"S32_LE"`, or a list.
* `output_channels = "auto"` - Can be "auto", a number like `2`, or a list like `(2, 6, 8)`.
**What this means:** Shairport Sync can now automatically switch between different audio formats and rates to match your source, or you can lock it to specific settings.
**Other ALSA changes:**
* `use_mmap_if_available` default changed from `"yes"` to `"no"`.
* `disable_standby_mode_silence_scan_interval` default changed from `0.004` to `0.030`.
* New: `disable_standby_mode_default_channels = 2` - Initial channel setting when standby mode is disabled.
* New: `disable_standby_mode_default_rate` - Initial sample rate when standby mode is disabled.
### PipeWire Backend
**Renamed section:** The `pw` section is now called `pipewire`.
**New settings:**
* `output_rate = "auto"`.
* `output_format = "auto"`.
* `output_channels = "auto"`.
**What this means:** PipeWire now has the same flexible format/rate/channel options as ALSA.
### PulseAudio Backend
**Renamed section:** The `pa` section is now called `pulseaudio`.
**New settings:**
* `output_rate = "auto"`.
* `output_format = "auto"`.
* `output_channels = "auto"`.
* `default_channel_layouts = "alsa"` - Use ALSA-compatible channel layouts (default) or PulseAudio's own layouts.
### Other Backends
`sndio`, `pipe`, `stdout`, and `ao` backends have all gained the new `output_rate`, `output_format`, and `output_channels` settings with similar functionality.
## DSP (Convolution and Loudness) Changes
**Convolution Filter:**
Settings have been renamed for clarity:
* `convolution` → `convolution_enabled`.
* `convolution_ir_file` → `convolution_ir_files`.
* `convolution_max_length` → `convolution_max_length_in_seconds`.
**New convolution setting:**
* `convolution_thread_pool_size = 1` - Number of CPU threads for convolution processing.
**What this means:**
- You can now specify multiple impulse response files for different sample rates.
- The convolution filter works with both stereo and multi-channel audio.
- You can use multiple CPU cores for faster processing (but core management by the OS may cause power supply noise on some systems).
**Loudness Filter:**
* `loudness` → `loudness_enabled`.
* The loudness filter now works with stereo and multi-channel audio at both 44.1k and 48k.
## MQTT Changes
**New setting:**
* `publish_retain = "no"` - Set to `"yes"` to make the MQTT broker store the last message for each topic.
**What this means:** When enabled, new MQTT subscribers will immediately receive the most recent values instead of having to wait for the next update.
## Session Control Changes
**Default timeout changed:**
* `session_timeout` default changed from `120` seconds to `60` seconds.
**What this means:** Shairport Sync will now become available again 60 seconds (instead of 120) after a source disappears.
## Removed Settings
The following old settings have been removed:
* `resync_recovery_time_in_seconds` - No longer needed with improved synchronization.
## What Should You Do?
**For most users:** Your existing configuration file will continue to work, though you might have to make some minimal changes.
**Must Do**
* If you use PipeWire or PulseAudio, please change over to the new configuration file settings and backend names immediately.
**Should Do**
* If you are using ALSA plugins, e.g. `plughw:1` to transcode from 44.1k to 48k, consider outputing directly to the underlying hardware device -- `hw:1` in this example -- allowing Shairport Sync to transcode if needed.
**If you want to use new features:**
1. **Multi-channel audio:** Leave `eight_channel_mode` and `six_channel_mode` settings at default, or set them to `"on"` if you have a surround sound system.
2. **Better performance on low-power devices:** Leave the `interpolation` setting at default, or set it to `"vernier"`.
3. **MQTT retain:** Set `publish_retain = "yes"` if you want MQTT clients to receive the last known state immediately.
4. **Convolution improvements:** Update your `convolution_ir_file` to `convolution_ir_files` and add multiple impulse response files for different sample rates.
5. **Backend-specific formats:** Specify exact rates/formats/channels if you want to lock Shairport Sync to specific settings, or use "auto" to let it adapt.
**To prepare for the future:** Consider updating deprecated setting names to their new equivalents:
- `convolution` → `convolution_enabled`.
- `convolution_ir_file` → `convolution_ir_files`.
- `convolution_max_length` → `convolution_max_length_in_seconds`.
- `loudness` → `loudness_enabled`.