{"id":13815681,"url":"https://github.com/eizedev/AirConnect-Synology","last_synced_at":"2025-05-15T09:33:12.508Z","repository":{"id":37902337,"uuid":"256467168","full_name":"eizedev/AirConnect-Synology","owner":"eizedev","description":"Updated AirConnect packages for Synology NAS and Synology Router","archived":false,"fork":false,"pushed_at":"2024-09-20T08:34:15.000Z","size":7051,"stargazers_count":315,"open_issues_count":2,"forks_count":14,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-10-12T21:06:19.383Z","etag":null,"topics":["airconnect","airconnect-application","airconnect-configuration","airplay","apple","bridge","chromecast","dlna","dlna-player","dlna-upnp","dsm7","google","sonos","sonos-audio","synology","synology-devices","synology-nas","synology-package","synology-router","upnp"],"latest_commit_sha":null,"homepage":"https://github.com/philippe44/AirConnect","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eizedev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"eizedev"}},"created_at":"2020-04-17T10:02:13.000Z","updated_at":"2024-10-06T12:29:52.000Z","dependencies_parsed_at":"2023-12-11T18:31:23.612Z","dependency_job_id":"3f974163-1594-4164-8fe9-ad24738a4aed","html_url":"https://github.com/eizedev/AirConnect-Synology","commit_stats":null,"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eizedev%2FAirConnect-Synology","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eizedev%2FAirConnect-Synology/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eizedev%2FAirConnect-Synology/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eizedev%2FAirConnect-Synology/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eizedev","download_url":"https://codeload.github.com/eizedev/AirConnect-Synology/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225342813,"owners_count":17459480,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airconnect","airconnect-application","airconnect-configuration","airplay","apple","bridge","chromecast","dlna","dlna-player","dlna-upnp","dsm7","google","sonos","sonos-audio","synology","synology-devices","synology-nas","synology-package","synology-router","upnp"],"created_at":"2024-08-04T04:03:52.599Z","updated_at":"2024-11-19T11:30:53.600Z","avatar_url":"https://github.com/eizedev.png","language":"Shell","funding_links":["https://github.com/sponsors/eizedev"],"categories":["Shell"],"sub_categories":[],"readme":"# AirConnect package for Synology NAS and Synology Router\n\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/eizedev/AirConnect-Synology)](https://github.com/eizedev/AirConnect-Synology/releases/latest)\n[![GitHub All Releases](https://img.shields.io/github/downloads/eizedev/AirConnect-Synology/total)](https://github.com/eizedev/AirConnect-Synology/releases)\n[![GitHub issues](https://img.shields.io/github/issues-raw/eizedev/AirConnect-Synology)](https://github.com/eizedev/AirConnect-Synology/issues)\n[![Security Scan](https://github.com/eizedev/AirConnect-Synology/actions/workflows/codacy-analysis.yml/badge.svg)](https://github.com/eizedev/AirConnect-Synology/actions/workflows/codacy-analysis.yml)\n[![CodeFactor](https://www.codefactor.io/repository/github/eizedev/airconnect-synology/badge)](https://www.codefactor.io/repository/github/eizedev/airconnect-synology)\n[![GitHub Super-Linter](https://github.com/eizedev/AirConnect-Synology/actions/workflows/linter.yml/badge.svg)](https://github.com/marketplace/actions/super-linter)\n[![GitHub discussions](https://img.shields.io/badge/Discussions-Check%20latest%20community%20posts-lightgrey)](https://github.com/eizedev/AirConnect-Synology/discussions)\n\n![AirConnect-Synology Logo](doc/res/header.png)\n\n\u003e Compatible with DSM 7.x (also 7.2)! Please download the package with the name beginning with `AirConnect-dsm7-`\n\u003e\n\u003e Updated packages for `AirConnect 1.8+` available!\n\u003e\n\u003e Problems with playback after sonos update 15.2? Please update to 15.3 (or latest available version).\n\u003e If the problem still exists, please check \u003chttps://github.com/philippe44/AirConnect/issues/458\u003e\n\u003e\n\u003e If you have problems on older synology NAS devices, this could be related to the old device kernel (old kernel, old glibc).\n\u003e Please read the comments in the following [issue](https://github.com/eizedev/AirConnect-Synology/issues/63)\n\nA minimal Synology package for [AirConnect](https://github.com/philippe44/AirConnect).  \nIt allows you to use [AirPlay](https://en.wikipedia.org/wiki/AirPlay)\nto stream to **UPnP/Sonos** \u0026 **Chromecast** devices that do not natively support AirPlay.  \n\n- [AirConnect package for Synology NAS and Synology Router](#airconnect-package-for-synology-nas-and-synology-router)\n  - [Information](#information)\n  - [How to install](#how-to-install)\n    - [Download the pre-build Synology package](#download-the-pre-build-synology-package)\n      - [Synology Router SRM](#synology-router-srm)\n      - [Static packages](#static-packages)\n    - [Upgrade from DSM6 to DSM7](#upgrade-from-dsm6-to-dsm7)\n    - [Install via GUI (Package Center)](#install-via-gui-package-center)\n      - [DSM 7](#dsm-7)\n      - [DSM 6](#dsm-6)\n    - [Logfiles](#logfiles)\n  - [airconnect.conf](#airconnectconf)\n    - [Editing airconnect.conf using your PC](#editing-airconnectconf-using-your-pc)\n  - [How it works](#how-it-works)\n    - [Supported UPnP Speakers](#supported-upnp-speakers)\n      - [How to detect UPnP speakers on your network](#how-to-detect-upnp-speakers-on-your-network)\n      - [List of supported UPnP Speakers](#list-of-supported-upnp-speakers)\n    - [Configuration](#configuration)\n    - [Command-Line Arguemts](#command-line-arguemts)\n      - [airupnp](#airupnp)\n      - [aircast](#aircast)\n    - [airupnp and aircast configuration](#airupnp-and-aircast-configuration)\n      - [Editing config files using your PC](#editing-config-files-using-your-pc)\n    - [Player specific settings, hints and tips](#player-specific-settings-hints-and-tips)\n      - [Sonos](#sonos)\n      - [Bose SoundTouch](#bose-soundtouch)\n      - [Pioneer/Phorus/Play-Fi](#pioneerphorusplay-fi)\n  - [Build](#build)\n    - [Set AirConnect Version](#set-airconnect-version)\n    - [Download AirConnect and extract to /bin](#download-airconnect-and-extract-to-bin)\n    - [Run shellcheck (optional)](#run-shellcheck-optional)\n    - [Build a package for a specific architecture](#build-a-package-for-a-specific-architecture)\n    - [Build a package for all architectures](#build-a-package-for-all-architectures)\n  - [Troubleshooting](#troubleshooting)\n    - [Cannot be installed or upgrade from an older version](#cannot-be-installed-or-upgrade-from-an-older-version)\n    - [Issues](#issues)\n    - [Multicast and IGMP Snooping/Proxy](#multicast-and-igmp-snoopingproxy)\n    - [Debugging](#debugging)\n      - [Debug DSM 7](#debug-dsm-7)\n      - [DSM 5 and 6](#dsm-5-and-6)\n  - [License](#license)\n  - [Credits](#credits)\n\n## Information\n\nHere is some more information to get you started.\n\n- AirConnect-Synology is a package for your synology devices to automate the installation and usage of [AirConnect](https://github.com/philippe44/AirConnect).\n  - AirConnect-Synology releases will use the official AirConnect version + the current build date as tag/version (f.e. `0.2.25.0-20200511`)\n  - AirConnect-Synology is compatible for almost all synology devices starting from DSM 5.0-4458 up to the newest and latest release of DSM 7\n- Starting with DSM7 AirConnect, so both programs, `aircast` and `airupnp` will now run under the airconnect user (no root anymore!).\n  And the complete package will now fully managed from DSM (Before some parts were managed in the startup scripts).\n\nI own multiple Synology NAS devices and the current Synology Router. As long as that is the case, I will also update the releases regularly.\n\nIf a release is missing or does not work on your device, please open an [issue](https://github.com/eizedev/AirConnect-Synology/issues),\nthen I will check this and deliver it to.\n\n## How to install\n\nEvery pre-build synology package in the [releases](https://github.com/eizedev/AirConnect-Synology/releases) section are including these two programs:\n\n- `airupnp`\n  - For **UPnP/Sonos players**\n- `aircast`\n  - For **Chromecast**\n\nSo you only need one package to support **UPnP**, **Sonos** and **Chromcast** devices.\n\n### Download the pre-build Synology package\n\nYou can find the available packages under [releases](https://github.com/eizedev/AirConnect-Synology/releases)\nfor the following synology DSM distributions (DSM 5, 6 and 7) and the different architecture groups of the synology NAS/Router devices.\n\n| DSM Firmware Version                              | Package Naming                                                                         |\n| ------------------------------------------------- | -------------------------------------------------------------------------------------- |\n| DSM 5.0-xxxx AND DSM 6.0-xxxx (f.e. DSM 6.0-7321) | `AirConnect-x86_64-${VERSION}` (f.e. AirConnect-x86_64-0.2.50.5-20210630.spk)          |\n| DSM 7.0-xxxx (f.e. DSM 7.0-40000)                 | `AirConnect-dsm7-x86_64-${VERSION}` (f.e. AirConnect-dsm7-86-64-0.2.50.5-20210630.spk) |\n\nThe minimum firmware version for the DSM7 packages is **DSM 7.0-40000**.  \nThe minimum firmware version for the x86_64 package `AirConnect-x86_64-${VERSION}` is **DSM 6.0-7321**.  \nFor **all** other package the minimum firmware version is DSM **5.0-4458**.\n\nIf the `x86` (32-bit) package is not working on your device, please download the `x86_64` (64-bit) package instead.\n\n| Architecture Group                       | Architecture                                                                                                                                                                           | Package to download                           |\n| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- |\n| **ARMv5**                                | 88f6282, 88f6281, 88f628x                                                                                                                                                              | `AirConnect-(dsm7-)armv6-${VERSION}`          |\n| **ARMv5 Static**                         | 88f6282, 88f6281, 88f628x                                                                                                                                                              | `AirConnect-(dsm7-)armv6-static-${VERSION}`   |\n| **ARMv6**                                | use is armv5 does not work - 88f6282, 88f6281, 88f628x                                                                                                                                 | `AirConnect-(dsm7-)armv5-${VERSION}`          |\n| **ARMv6 Static**                         | use is armv5 does not work - 88f6282, 88f6281, 88f628x                                                                                                                                 | `AirConnect-(dsm7-)armv5-static-${VERSION}`   |\n| **ARMv7**                                | ipq806x, ipq806x, armada370, armadaxp, armada375, armada38x, alpine, alpine4k, monaco, comcerto2k, hi3535, dakota, ipq806x, northstarplus                                              | `AirConnect-(dsm7-)arm-${VERSION}`            |\n| **ARMv7 Static**                         | noarch, ipq806x, ipq806x, armada370, armadaxp, armada375, armada38x, alpine, alpine4k, monaco, comcerto2k, hi3535, dakota, ipq806x, northstarplus                                      | `AirConnect-(dsm7-)arm-static-${VERSION}`     |\n| **ARMv8**                                | rtd1296, armada37xx                                                                                                                                                                    | `AirConnect-(dsm7-)aarch64-${VERSION}`        |\n| **ARMv8 Static**                         | noarch, rtd1296, armada37xx                                                                                                                                                            | `AirConnect-(dsm7-)aarch64-static-${VERSION}` |\n| **PowerPC**                              | qoriq, Ppc853x                                                                                                                                                                         | `AirConnect-(dsm7-)powerpc-${VERSION}`        |\n| **PowerPC Static**                       | noarch, qoriq, Ppc853x                                                                                                                                                                 | `AirConnect-(dsm7-)powerpc-static-${VERSION}` |\n| **Intel - 32-bit**                       | x86, cedarview, bromolow, evansport, braswell, broadwell, dockerx64, kvmx64, denverton, grantley, broadwellnk, Broadwellntbap                                                          | `AirConnect-(dsm7-)x86-${VERSION}`            |\n| **Intel - 32-bit Static**                | x86, cedarview, bromolow, evansport, braswell, broadwell, dockerx64, kvmx64, denverton, grantley, broadwellnk, Broadwellntbap                                                          | `AirConnect-(dsm7-)x86-static-${VERSION}`     |\n| **Intel/AMD - 64-bit (DSM 6.0+)**        | x86_64 x64 cedarview bromolow avoton braswell broadwell apollolake dockerx64 epyc7002 r1000 kvmx64 denverton grantley broadwellnk broadwellnkv2 Broadwellntbap v1000 geminilake purley | `AirConnect-(dsm7-)x86_64-${VERSION}`         |\n| **Intel/AMD - 64-bit (DSM 6.0+) Static** | x86_64 x64 cedarview bromolow avoton braswell broadwell apollolake dockerx64 epyc7002 r1000 kvmx64 denverton grantley broadwellnk broadwellnkv2 Broadwellntbap v1000 geminilake purley | `AirConnect-(dsm7-)x86_64-static-${VERSION}`  |\n\nYou can check which architecture you have in the `Package Arch` column on the Synology\n[What kind of CPU does my Synology NAS have?](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Compatibility_Peripherals/What_kind_of_CPU_does_my_NAS_have)\nsite.\n\n#### Synology Router SRM\n\nFor all the Synology **Routers** running Synology SRM you should use the **ARM** (ARMv7 - dakota, ipq806x, northstarplus) version.\nIf the normal ARM package is not working on your device, please try **ARM Static** (ARMv7 Static) instead.\n\n#### Static packages\n\nOn some devices, dependencies that are necessary to run `airupnp` or `aircast` are not available (mostly on older devices).\nThese dependencies are included in the static version of the packages.\nThis is the reason why the static packages are bigger than the normal versions.\n\nSo in general you should always use the normal package (without static in the name).\nOnly when the normal package does not work on your device, please test the static package instead.\n\n\u003e If the above **ARMv7** package will not work on your device, please download the latest `arm-static` package.\n\u003e The static package includes \"static\" binaries, that means, it includes binaries that have no external library dependencies and\n\u003e **should** be run on your ARMv7 device if the normal ARMv7 package fails.\n\u003e\n\u003e If the above **PowerPC** package will not work on your device, please download the latest `ppc-static` package.\n\u003e The static package includes \"static\" binaries, that means, it includes binaries that have no external library dependencies and\n\u003e **should** be run on your PPC device if the normal PPC package fails.\n\n### Upgrade from DSM6 to DSM7\n\nIf you upgrade your NAS from DSM6 to DSM7, you should just download the new dsm7 package for your device.\nThe old package and new DSM6 packages will not work anymore, since DSM7 changes a lot under the hood (no more root permissions for packages,\nminimum package version 7.0, etc.).  \nJust download the DSM7 package and install it from the Package Center as usual.\n\nIf, after upgrading to DSM 7, the old package is still installed, please uninstall it and install it again.\n\nIf you encounter any problems, please read the [troubleshooting](#troubleshooting) section first.\n\n### Install via GUI (Package Center)\n\n#### DSM 7\n\n- Open the Package Center app.\n- Click on **Manual Install** and upload the package you just downloaded.\n  - Select AirConnect packages that should be installed\n    - ![AirConnect-Installation-Selection](doc/res/installation_selection.png)\n  - Insert IP (defaults to the synology primary ip) and the port for airupnp\n    - ![AirConnect-Installation-Connection](doc/res/installation_connection.png)\n\n#### DSM 6\n\n\u003e Please use the older release for DSM 5 \u0026 6: [0.2.50.5-20210706](https://github.com/eizedev/AirConnect-Synology/releases/tag/0.2.50.5-20210706)\n\n- Open the Package Center app.\n- Click on **Manual Install** and upload the package you just downloaded.\n\n\u003e On DSM5 and some DSM6 devices: As this package is not an official Synology package you may have to **Allow packages from any publisher**\n\u003e (Go to **Settings** and set the **Trust Level** to \"**Any publisher**\".)  \n\u003e\n\u003e Do not forget to **change back** the **Trust level** to \"Synology Inc.\" for additional security.  \n\n### Logfiles\n\n- **AirConnect-Synology and AirConnect Log File**\n  - The *AirConnect application logfile* is located at `/volume1/airconnect/log/airconnect.log` (default location)\n    - This is a symlink of `/volume1/@appstore/AirConnect/log/airconnect.log`\n  - You can open it using the Synology **FileStation** by navigating to `airconnect` - `log`\n    - You can also open it after login with ssh to your NAS/Router: `sudo /usr/syno/bin/synopkg log AirConnect`\n    - or by using a command-line utility like\n      - **more** (`more /volume1/airconnect/log/airconnect`)\n      - **tail** (`tail -100 /volume1/airconnect/log/airconnect`)\n    - If you get a `permission denied`, you should use the full path, f.e. `more /volume1/@appstore/AirConnect/log/airconnect.log`\n  - This log file is written by the AirConnect-Synology package.\n    - All log entries of the AirConnect application (airupnp + aircast) are also written into this log file.\n  - This is the first place to look for errors.\n- **Synology Service Log File**\n  - The *synology dsm package logfile* ist located at `/var/log/packages/AirConnect.log`\n  - This logfile is used from DSM/Synology for all installation/uninstallation/update purposes\n  - In general you will only use it for debugging purposes\n\n\u003e Since Version `1.8.3-20240403` The airconnect.log file will now be deleted if it exceeds a size of 50MB\n\u003e A one time backup in the same directory will be created named `airconnect.1.log`\n\u003e This backup will be deleted on the next start (useful if someone needs the old log for debugging).\n\n## airconnect.conf\n\n\u003e Only available for DSM 7 packages!\n\u003e\n\u003e You cannot view/edit the file with FileStation due to a limitation in synology DMS (Symbolik links) by default\n\u003e\n\u003e Please keep in mind, that if you upgrade your existing AirConnect-Synology package no changes will be made to the `airconnect.conf` file.\n\u003e If you want to overwrite your `airconnect.conf` configuration with the default one, please uninstall and install the package again.\n\u003e You can also copy the default values found below to your configuration file.\n\nStarting with release `0.2.50.5-20210801` you can customize the configuration of AirConnect-Synology by using the config file at\n`/volume1/airconnect/airconnect.conf`.  \nPlease **stop** the package **before** changing the configuration.  \nIf you have edited the configuration while AirConnect is running please **restart** the AirConnect package.\n\nThe configuration options and default values are:\n\n```bash\nAIRCAST_ENABLED=1\nAIRCAST_LATENCY=\"50:500\"\nAIRCAST_LOGLEVEL=\"all=info\"\nAIRUPNP_ENABLED=1\nAIRUPNP_LATENCY=\"50:500\"\nAIRUPNP_LOGLEVEL=\"all=info\"\nAIRUPNP_CONTENTLENGTH_MODE=0\nAIRUPNP_PORT=49154\nFILTER_AIRPLAY2_DEVICES=\"\u003cNULL\u003e,S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,ZP120,1.0,LibreWireless,Fitzwilliam,2.2.6,AllShare1.0\"\nSYNO_IP=\"\u003cyour synology ip\u003e\"\n```\n\n| Configuration Option       | Values                                           | Mandatory     | Description                                                       |\n| -------------------------- | ------------------------------------------------ | ------------- | ----------------------------------------------------------------- |\n| AIRCAST_ENABLED            | `0` or `1`                                       | Yes           | Enables or disables AIRCAST                                       |\n| AIRCAST_LATENCY            | `[rtp][:http][:f]`                               | No            | RTP and HTTP latency (ms), ':f' forces silence fill               |\n| AIRCAST_LOGLEVEL           | `\u003clog\u003e=\u003clevel\u003e`                                  | Yes           | log=all,raop,main,util,cast -- level=error,warn,info,debug,sdebug |\n| AIRUPNP_ENABLED            | `0` or `1`                                       | Yes           | Enables or disables AIRUPNP                                       |\n| AIRUPNP_LATENCY            | `[rtp][:http][:f]`                               | No            | RTP and HTTP latency (ms), ':f' forces silence fill               |\n| AIRUPNP_LOGLEVEL           | `\u003clog\u003e=\u003clevel\u003e`                                  | Yes           | log=all,raop,main,util,upnp -- level=error,warn,info,debug,sdebug |\n| AIRUPNP_CONTENTLENGTH_MODE | `-3`or `-1`or `0`                                | Yes           | HTTP content-length mode (-3:chunked, -1:none, 0:fixed)           |\n| AIRUPNP_PORT               | `49154`                                          | Yes (airupnp) | Port on which airupnp should be started                           |\n| FILTER_AIRPLAY2_DEVICES    | `\u003cNULL\u003e,S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,...` | No            | See [Supported UPnP Speakers](#supported-upnp-speakers)           |\n| SYNO_IP                    | `192.168.1.100`                                  | Yes           | The ip on which aircast/airupnp will be started                   |\n\nConfiguration options with `Mandatory = Yes` must exist in the configuration. Options with `Mandatory = No` are optional.\n\n\u003e Please do not remove the optional configuration options you do not want to use, just set no value (empty value/string). Example: `FILTER_AIRPLAY2_DEVICES=`\n\n### Editing airconnect.conf using your PC\n\nIf you want to edit your `airconnect.conf` file from your computer using a network share (SMB),\nyou need to `allow symlinks` in your SMB configuration on your synology NAS device.\n\n`Settings/Control Panel` - `File Services` - `SMB` - `Advanced Settings`\n\nPlease activate both options:\n\n![AirConnect-Installation-Connection](doc/res/smb_symlink.png)\n\n## How it works\n\nIt runs the AirConnect processes with the following options by default tuned for sonos:\n\n```bash\n/volume1/@appstore/AirConnect/airupnp -b [synology device local ip]:49154 -l 50:500 -g 0 -x \"/volume1/@appstore/AirConnect/config.xml\" -o \"\u003cNULL\u003e,S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,ZP120,1.0,LibreWireless,Fitzwilliam,2.2.6,AllShare1.0\" -z -f \"/volume1/@appstore/AirConnect/log/airconnect.log\" -d all=info\n```\n\n```bash\n/volume1/@appstore/AirConnect/aircast -b [synology device local ip] -l 50:500 -x \"/volume1/@appstore/AirConnect/config-cast.xml\" -z -f \"/volume1/@appstore/AirConnect/log/airconnect.log\" -d all=info\n```\n\n### Supported UPnP Speakers\n\n\u003e On **DSM7** you can just change the parameter `FILTER_AIRPLAY2_DEVICES` in the configuration file [airconnect.conf](#airconnectconf).\n\u003e You could also remove these configuration parameter to allow all airplay2 devices.\n\nTo speed up the detection of Sonos/UPnP/DLNA speakers and to not discover speakers which natively supports airplay,\nthis synology package will only include the devices mentioned in the [List of supported UPnP Speakers](#list-of-supported-upnp-speakers).\n\n\u003e If you have another UPnP based speaker that you want to be supported by this package which is not in the list below,\n\u003e please open an [issue](https://github.com/eizedev/AirConnect-Synology/issues) and let me know (Please tell me the product name\n\u003e (**model name**, **model number** etc.)), then i will include it to the default configuration.\n\u003e\n\u003e With\n\u003e\n\u003e `-o \u003cNULL\u003e,S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,ZP120,1.0,LibreWireless,Fitzwillian,2.2.6,AllShare1.0`\n\u003e\n\u003e the sonos/UPnP speakers that\n\u003e are natively supporting AirPlay or AirPlay2 will be ignored from AirConnect/airupnp and only the ones listed with `-o` will be used.\n\u003e\n\u003e Since no new \"non airplay\" speakers (from sonos) will be released in the future, that should work in any case.\n\u003e So they will be not displayed twice in the list.\n\n#### How to detect UPnP speakers on your network\n\nTo find UPnP speakers, their device_description URL and the model number, follow the following steps.\n\nIf you are familiar with linux commands you could use `tcpdump` to discover upnp devices on your network.\nYou can install tcpdump on any synology NAS by using he integrated synology diagnostic tools.\n\nJust execute as root via SSH `synogear install` to install the diagnostic tools.\nSee documentation here: [FAQ-synogear](https://github.com/SynoCommunity/spksrc/wiki/FAQ-synogear).  \nSynogear also installs a few other useful linux/busybox commands.\nI have installed the diagnostic tools (synogear) on every synology device that i own.\n\n**Change en0 to your network adapter name** (wait a few seconds until the devices get discovered)\n\n`sudo tcpdump -vv -A -s 0 -i en0 host 239.255.255.250 and port 1900 | grep LOCATION`\n\n![image](https://user-images.githubusercontent.com/6794362/118552071-bd8ee700-b75e-11eb-94a5-9190d62ee5a7.png)\n\nThen you need to find your device ip and catch the location URL.\n\nWith the `curl` command (or the browser of your choice) you can then search for the `modelNumber` in the device xml configuration:\n\n`curl http://192.168.1.122:1400/xml/device_description.xml | grep modelNumber`\n\n![image](https://user-images.githubusercontent.com/6794362/118552462-473eb480-b75f-11eb-9156-54e96ab5bd8b.png)\n\nS12 is a Sonos Play:1 in this example.\n\nThis modelNumber is the number that i need to extend the following [List of supported UPnP Speakers](#list-of-supported-upnp-speakers).\n\n#### List of supported UPnP Speakers\n\n| Model Number  | Friendly Name                       | Comment (Sonos seriesid, etc.) |\n| ------------- | ----------------------------------- | ------------------------------ |\n| S1            | Sonos Play:1 (old model)            | A101                           |\n| S3            | Sonos Play:3                        | A100                           |\n| S5            | Sonos Play:5                        | P100                           |\n| S9            | Sonos Playbar                       | A100                           |\n| S12           | Sonos Play:1                        | A200                           |\n| S15           | Sonos Connect                       | S100                           |\n| ZP80          | Sonos Connect (old model)           | C100                           |\n| ZP90          | Sonos Connect                       | C100                           |\n| ZP100         | Sonos Connect:Amp (old model)       | P100                           |\n| ZP120         | Sonos Connect:Amp                   | P100                           |\n| 1.0           | LibreWireless based Speakers        | LibreSyncDMR                   |\n| LibreWireless | LibreWireless based Speakers        | LibreSyncDMR                   |\n| Fitzwilliam   | Fitzwilliam                         | Fitzwilliam                    |\n| 2.2.6         | Devialet Expert Pro 140             | Devialet Export Pro            |\n| AllShare1.0   | Samsung HW-N950                     | Samsung HW-N950 Soundbar       |\n| `\u003cNULL\u003e`      | All speakers without a model number |                                |\n\nSee [Command-Line Arguemts](#command-line-arguemts) for more information about these arguments.\n\nThese default options should work for most of you but can also be changed by using a [configuration file](#configuration).\n\nBoth processes are running with the low-privilege user `airconnect`.\n\n### Configuration\n\nIf you would like to tweak the AirConnect configuration you can also use the AirConnect configuration file.\n\u003e Before continuing please check the [official readme](https://github.com/philippe44/AirConnect#config-file-parameters) for more information.\n\u003e I'm not going to explain how it generally works here.\n\n### Command-Line Arguemts\n\n#### airupnp\n\n```markdown\nv1.6.3 (Jan  8 2024 @ 18:24:27)\nSee -t for license terms\nUsage: [options]\n  -b \u003cip|iface\u003e[:\u003cport\u003e] network interface or interface and UPnP port to use\n  -a \u003cport\u003e[:\u003ccount\u003e] set inbound port and range for RTP and HTTP\n  -c \u003cmp3[:\u003crate\u003e]|flac[:0..9]|wav|pcm\u003e audio format send to player\n  -g \u003c-3|-1|0\u003e  HTTP content-length mode (-3:chunked, -1:none, 0:fixed)\n  -u \u003cversion\u003e set the maximum UPnP version for search (default 1)\n  -x \u003cconfig file\u003e read config from file (default is ./config.xml)\n  -i \u003cconfig file\u003e discover players, save \u003cconfig file\u003e and exit\n  -I    auto save config at every network scan\n  -l \u003c[rtp][:http][:f]\u003e RTP and HTTP latency (ms), ':f' forces silence fill\n  -r    let timing reference drift (no click)\n  -f \u003clogfile\u003e  write debug to logfile\n  -p \u003cpid file\u003e  write PID in file\n  -N \u003cformat\u003e  transform device name using C format (%s=name)\n  -m \u003cn1,n2...\u003e  exclude devices whose model include tokens\n  -n \u003cm1,m2,...\u003e exclude devices whose name includes tokens\n  -o \u003cm1,m2,...\u003e include only listed models; overrides -m and -n (use \u003cNULL\u003e if player don't return a model)\n  -d \u003clog\u003e=\u003clevel\u003e Set logging level, logs: all|raop|main|util|upnp, level: error|warn|info|debug|sdebug\n  -z    Daemonize\n  -Z    NOT interactive\n  -k    Immediate exit on SIGQUIT and SIGTERM\n  -t    License terms\n  --noflush  ignore flush command (wait for teardown to stop)\n\nBuild options: LINUX\n```\n\n#### aircast\n\n```markdown\nv1.6.3 (Jan  8 2024 @ 18:24:45)\nSee -t for license terms\nUsage: [options]\n  -b \u003cip|iface\u003e  network address or interface to bind to\n  -a \u003cport\u003e[:\u003ccount\u003e] set inbound port and range for RTP and HTTP\n  -c \u003cmp3[:\u003crate\u003e]|aac[:\u003crate\u003e]|flac[:0..9]|wav\u003e audio format send to player\n  -v \u003c0..1\u003e   group MediaVolume factor\n  -x \u003cconfig file\u003e read config from file (default is ./config.xml)\n  -i \u003cconfig file\u003e discover players, save \u003cconfig file\u003e and exit\n  -I    auto save config at every network scan\n  -N \u003cformat\u003e  transform device name using C format (%s=name)\n  -l \u003c[rtp][:http][:f]\u003e RTP and HTTP latency (ms), ':f' forces silence fill\n  -r    let timing reference drift (no click)\n  -f \u003clogfile\u003e  Write debug to logfile\n  -p \u003cpid file\u003e  write PID in file\n  -d \u003clog\u003e=\u003clevel\u003e Set logging level, logs: all|raop|main|util|cast, level: error|warn|info|debug|sdebug\n  -z    Daemonize\n  -Z    NOT interactive\n  -k    Immediate exit on SIGQUIT and SIGTERM\n  -t    License terms\n  --noflush  ignore flush command (wait for teardown to stop)\n\nBuild options: LINUX\n```\n\n### airupnp and aircast configuration\n\n\u003e You cannot view/edit the file with FileStation due to a limitation in synology DMS (Symbolik links) by default\n\u003e\n\u003e Hint: If you want to filter/include/exclude speakers in the configuration file or `airupnp`\n\u003e you need to disable the default filter in `airconnect.conf` using `FILTER_AIRPLAY2_DEVICES=`.\n\u003e See also [airconnect.conf](#airconnectconf). The default filter will overwrite any filter in the `config.xml` file of airupnp.\n\nBy default the config file will **not** being used as long as the file is not created (And you are not running on debug log level).\n\nThe file is **not** created by default.  \n\n- Config File location for airupnp\n  - `/volume1/airconnect/config.xml`\n- Config File location for aircast\n  - `/volume1/airconnect/config-cast.xml`\n\nYou can create each of these files manually or a reference version can be generated using the `-i [config file name]` command-line parameter.\nFor the following example i am using the default configuration you can find above in the [How it works](#how-it-works) section.\nI am just change the `-x` parameter with the `-i` parameter.\n\nChange the ip and parameters for your needs:\n\nExample:\n\n```bash\n/volume1/@appstore/AirConnect/airupnp -b 192.168.1.249:49154 -l 50:500 -g 0 -i \"/volume1/@appstore/AirConnect/config.xml\" -o \"\u003cNULL\u003e,S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,ZP120,1.0,LibreWireless,Fitzwilliam,2.2.6,AllShare1.0\" -z -f \"/volume1/@appstore/AirConnect/log/airconnect.log\" -d all=info\n```\n\nAfter running this command, airupnp will be started until all needed information and devices are gathered,\nstopped and the resulted configuration will be written to the defined config file.\n\n#### Editing config files using your PC\n\nIf you want to edit your `config.xml` or `config-cast.xml` file from your computer using a network share (SMB) you need to\n`allow symlinks` in your SMB configuration on your synology NAS device.\n\n`Settings/Control Panel` - `File Services` - `SMB` - `Advanced Settings`\n\nPlease activate both options:\n\n![AirConnect-Installation-Connection](doc/res/smb_symlink.png)\n\n### Player specific settings, hints and tips\n\n\u003e Please check the original [Player specific hints and tips](https://github.com/philippe44/AirConnect#player-specific-hints-and-tips)\n\u003e from [philippe44](https://github.com/philippe44) for more information.\n\n#### Sonos\n\nThe upnp version is often used with Sonos players. When a Sonos group is created,\nonly the master of that group will appear as an AirPlay player and others will be removed if they were already detected.\nIf the group is later split, then individual players will re-appear.\n\nYou need to use the Sonos native application for grouping / ungrouping.\n\nWhen changing volume of a group, each player's volume is changed trying to respect the relative values.\nIt's not perfect and still under test now.\nTo reset all volumes to the same value, simply move the cursor to 0 and then to the new value.\nAll players will have the same volume then.\nYou need to use the Sonos application to change individual volumes.\n\nTo identify your Sonos players, pick an identified IP address, and visit the Sonos status page in your browser,\nlike `http://192.168.1.126:1400/support/review`.\n\nClick `Zone Players` and you will see the identifiers for your players in the `UUID` column.\n\n#### Bose SoundTouch\n\n[@chpusch](https://github.com/chpusch) has found that Bose SoundTouch work well including synchronisation\n(as for Sonos, you need to use Bose's native application for grouping / ungrouping).\nI don't have a SoundTouch system so I cannot do the level of slave/master detection I did for Sonos\n\n#### Pioneer/Phorus/Play-Fi\n\nCheck the [Configuration](#configuration) section on how to apply the below tuning to the configuration.\n\nSome of these speakers only support mp3 and require a modified `ProtocolInfo` to stream correctly.\n\nThis can be done by editing the [config file](#configuration) and changing `\u003ccodec\u003eflac\u003c/codec\u003e` to `\u003ccodec\u003emp3\u003c/codec\u003e`\nand replacing the `\u003cmp3\u003e..\u003c/mp3\u003e` line with:\n\n```c++\n\u003cmp3\u003ehttp-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=00;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=0d500000000000000000000000000000\u003c/mp3\u003e\n```\n\n## Build\n\nThe build steps are done using GitHub Actions CI/CD. So it will be build automatically.  \nIn case you want to build it locally, you can also use the following steps.\n\nYou need to install the following packages on your distribution:\n\n- make\n- shellcheck\n- clone/download this repository\n\nAfter that you can start the build process by running `shellcheck` or directly with the build steps.\n\n### Set AirConnect Version\n\nGrab version of your needed AirConnect package and set in variable `RELEASE_VERSION`\n\n```bash\nexport RELEASE_VERSION=1.8.3\n```\n\n### Download AirConnect and extract to /bin\n\nGo to the [releases](https://github.com/philippe44/AirConnect/releases) page and grab the latest release or the version you want.  \nDownload it and extract to `src/dsm7/bin` folder\n\nExample for AirConnect `1.8.3`\n\n```bash\nwget https://github.com/philippe44/AirConnect/releases/download/1.8.3/AirConnect-1.8.3.zip -O src/dsm7/bin/AirConnect.zip\ncd src/dsm7/bin\nunzip AirConnect.zip\n```\n\n### Run shellcheck (optional)\n\n```bash\ncd src/dsm7\nmake shellcheck\n```\n\n### Build a package for a specific architecture\n\n```bash\ncd src/dsm7\nARCH=arm make clean build\n```\n\nPossible values for **ARCH**: `arm arm-static armv6 armv6-static aarch64 aarch64-static x86 x86-static x86_64 x86_64-static powerpc powerpc-static`\n\n### Build a package for all architectures\n\n```bash\ncd src/dsm7\nmake clean build-all\n```\n\nYou can find the built packages in the **dist** directory.\n\n## Troubleshooting\n\n### Cannot be installed or upgrade from an older version\n\nIf you get an error message that the package **cannot be installed** or **updated** or **started** when updating AirConnect-Synology,\nplease **uninstall the old version** first (`Package Center -\u003e AirConnect -\u003e Uninstall`) and then install the new version.\n\nUninstalling also removes the old scripts, references and configurations (only the logfile remains).\nSometimes it can happen that the problem is already fixed with this.  \n\nIf the normal uninstallation also does not work, please cleanup the old package using SSH with root permissions:\n\n- Delete old package (directory)\n  - `rm -rf /var/packages/AirConnect`\n- Delete old airconnect configuration directory\n  - `synoshare --del TRUE airconnect`\n- Delete old airconnect user(s) from a previous installation\n  - `synouser --del airconnect`\n  - `synouser --del airconnect__PKG_`\n- Delete old airconnect group from a previous installation\n  - `synogroup --del airconnect`\n\n- After that please install the new package as found in [how-to-install](#how-to-install)\n\n### Issues\n\nIf you have a problem installing or using one of these packages and/or are stuck, please open an [issue](https://github.com/eizedev/AirConnect-Synology/issues).\n\nIt would be very helpful for me if you tell me the synology device you are using,\nthe package you have downloaded and upload the two logfiles mentioned in the [Logfiles](#logfiles) section\nor include the important parts from the logfiles in the issue.\n\nIf the package was installed successfully and `airupnp` and `aircast` are running and no strange problems will be shown in the logfile\nbut for you it is not working as excpeted,\nplease consider opening an [issue](https://github.com/philippe44/AirConnect/issues) at the officiall AirConnect Repository.\n\n### Multicast and IGMP Snooping/Proxy\n\nMost of the problems with AirConnect are related to the local network configuration.\nAirConnect (and therefore Sonos/Chromecast) require **Multicast** to function properly.\nYou must ensure that the communication within your network supports multicast. Especially important is the communication:\n\n\u003e Chromecast/Sonos speakers \u003c-\u003e (WLAN)-Router \u003c-\u003e (Switch/Firewall \u003c-\u003e) Smartphone which is used\n\nSo make sure that multicast is allowed on your router,\nyour switches and your firewall and configure settings like IGMP snooping + IGMP proxy so that the communication is guaranteed.\n\nFor testing, please deactive igmp snooping everywhere if you have activated it.  \n\nI have activated but properly configured igmp snooping and igmp proxy + different VLANs. It will work with AirConnect, if properly configured.\n\n- When players disappear regularly, it might be that your router is filtering out multicast packets.\n  - For example and testing, for a Asus AC-RT68U, you have to login by ssh and run\n    - `echo 0 \u003e /sys/class/net/br0/bridge/multicast_snooping` but it does not stay after a reboot.\n- Lots of users seems to have problems with Unify and broadcasting / finding players.\n  - Here is a guide [ubnt-sonos](https://www.neilgrogan.com/ubnt-sonos/) made by somebody who fixes the issue for his Sonos environment\n\nFor additional information, please check the following issues in the official AirConnect Repository:\n\n- [Best Practises for getting AirUPnP working in networks?](https://github.com/philippe44/AirConnect/issues/270)\n- [Troubleshooting Steps for airupnp AirPlay Devices not Appearing?](https://github.com/philippe44/AirConnect/issues/217)\n- [Devices disappear after ~1-2 Minutes](https://github.com/philippe44/AirConnect/issues/189)\n- [Devices found, but not being added](https://github.com/philippe44/AirConnect/issues/160)\n- [Unable to Connect to \"device\"](https://github.com/philippe44/AirConnect/issues/246)\n\n### Debugging\n\n#### Debug DSM 7\n\nIf you want to see more logs then change the AIRCAST_LOGLEVEL or AIRUPNP_LOGLEVEL from\n`all=info` in `/volume1/airconnect/airconnect.conf` to `all=debug` and restart the package.\n\n#### DSM 5 and 6\n\nIf you want to see more logs then change the `-d all=info` parameter in `scripts/start-stop-status` to `-d all=debug` and rebuild the package,\nthen [install it again](#install-via-gui-package-center).\n\n## License\n\n- AirConnect: See [LICENSE](https://github.com/philippe44/AirConnect/blob/master/LICENSE).\n- AirConnect-Synology: See [LICENSE](./LICENSE)\n\n## Credits\n\nCredits go to [@bandesz](https://github.com/bandesz) for the initial work and idea of a Synology package for AirConnect\nand of course to [philippe44](https://github.com/philippe44) for this great AirConnect application.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feizedev%2FAirConnect-Synology","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feizedev%2FAirConnect-Synology","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feizedev%2FAirConnect-Synology/lists"}