Noson
A fast and smart SONOS controller for Unix platforms.
Go to project page for further details. Translations are managed by transifex at noson-translations.
Build instructions
The build can be achieved on any platform supporting Qt version 5.9. See debian/control
file for more details about dependencies.
Linux/BSD
Running Noson in "freedesktop" allows the following extra features.
- Streaming the PulseAudio output on your Sonos devices
- MPRIS2 player interface
Install the dependencies
For Ubuntu(16) / Debian(10) (qtbase5 >= 5.9)
$ apt-get install qtbase5-dev qttools5-dev qttools5-dev-tools qtdeclarative5-dev \
qtdeclarative5-dev-tools qtquickcontrols2-5-dev libqt5svg5-dev libqt5svg5 \
qml-module-qt-labs-settings qml-module-qtgraphicaleffects \
qml-module-qtqml-models2 qml-module-qtquick2 qml-module-qtquick-controls2 \
qml-module-qtquick-layouts qml-module-qtquick-particles2 \
qml-module-qtquick-templates2 qml-module-qtquick-window2 \
zlib1g-dev libssl-dev libflac-dev libflac++-dev libpulse-dev \
libdbus-1-dev libqt5dbus5
- Build tools:
build-essential
git
cmake
g++ >= 4.8.5 | clang >= 3.4
For Centos(7) / Fedora(26) (qt5-qtbase >= 5.9)
$ yum install qt5-qtbase-devel qt5-qttools-devel qt5-qtdeclarative-devel \
qt5-qtquickcontrols2-devel qt5-qtgraphicaleffects qt5-qtsvg-devel \
qt5-qtsvg zlib-devel openssl-devel flac-devel pulseaudio-libs-devel \
dbus-devel
-
Build tools:
git
cmake >= 3.8.2
gcc-c++ >= 4.8.5 | clang >= 3.4
-
As needed you have to install cmake >= 3.8.2
$ wget https://github.com/Kitware/CMake/releases/download/v3.14.7/cmake-3.14.7-Linux-x86_64.tar.gz $ tar xvfz cmake-3.14.7-Linux-x86_64.tar.gz $ export PATH=$(pwd)/cmake-3.14.7-Linux-x86_64/bin:$PATH
For FreeBSD 12.0
$ pkg install cmake git bash dbus flac pulseaudio \
qt5-buildtools qt5-core qt5-dbus qt5-declarative qt5-graphicaleffects \
qt5-gui qt5-network qt5-qmake qt5-quickcontrols2 qt5-svg qt5-widgets \
qt5-xml qt5-xmlpatterns
Build and install the application
$ git clone https://github.com/janbar/noson-app.git
$ cd noson-app && mkdir build && cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j5
$ sudo make install
- To uninstall the application type
sudo make uninstall
Others supported platforms (without extra features*)
- MacOSX (XCode >= 9.0)
- Android (SDK 21.0, Android >= 16 Lollipop)
- Windows (MSVC 2017)
(*) PulseAudio is available only with freedesktop (Linux/BSD). So on those platforms you can only stream your local music library.
Enabling debug output
Launch the Noson application from command line as follows.
noson-app --debug 2>&1 | tee noson.log
Also, that will write debug output into the file noson.log
. Please be careful to not paste debug log on public area before cleaning it from any credentials. Debugging registration of music services will log entered credentials.
Streaming my local music files
Noson will scan music files only from the standard directory containing audio media. Depending on the platform and your language, it could be "~/Music" on freedesktop. When you drop files in this location, you should be able to stream them to your Sonos device with Noson. The local library will be exposed in the page "This Device". Supported files are flac, mp3, mp4 and ogg. An additionnal music location can be configured in the general settings.
SSDP discovery fails
You must first disable the running firewall on the system where the app is running, or add extra rules for your firewall profile. The app must listen to Sonos device events to function properly.
To add the according to Sonos, required rules to ufw
you can use the following instructions :.
- Create a file named
noson
in /etc/ufw/applications.d` with the following:
[noson]
title=noson Sonos controller app
description=controls Sonos devices on the same network
ports=80,443,445,1400:1410,3400,3401,3405,3445,3500,4070,4444/tcp|136,137,138,139,1900,1901,2869,10243,10280,10281,10282,10283,10284,5353,6969/udp|35382
- Update the rules for ufw with:
sudo ufw app update noson
sudo ufw allow noson
In some circumstances your network couldn't allow broadcast/multicast traffic. To workaround the limitation you can configure the application by specifying a Sonos device endpoint.
Launch the Noson application from command line as follows.
-
noson-app --deviceurl=http://<ipaddress>:1400
for the GUI (the setting will be persistent). -
noson-app --cli --deviceurl=http://<ipaddress>:1400
for the CLI tool.
Some SONOS devices could listen on port 3400 instead 1400.