Installing Roon on Linux

Installing Roon on Linux

Overview

Two packages are available for Linux: Roon Bridge and Roon Server. There is no real purpose to running Roon Server and Roon Bridge on the same machine, since both provide identical access to audio devices. That said, doing so should not cause any problems.

Roon Server for Linux runs on x86_64 platforms. Roon Bridge for Linux runs on x86_64 and armv7hf and armv8 platforms. In all cases, our objective is to support releases of Linux distributions going back to roughly early 2014, but there may be exceptions. Distribution-specific feedback is welcome.

We have had the strongest positive experiences with Ubuntu 15.10, and up-to-date Arch machines, but testing has also taken place on Ubuntu releases going back to 14.04, as well as Fedora 22 and 23. The arm builds are intended for relatively recent hard-float capable devices like the Raspberry Pi 2, iMX6-based products like CuBox and Wandboard, Allwinner A20s, Odroid C2's, Allwinner H3's, etc. Depending on the exact use case, they might run on weaker hardware, too.

Be sure to check out Audio On Linux for some hardware-specific notes if you plan to go that way.

Downloads

Easy Installer

Use The Easy Installer which installs Roon Bridge with our recommended settings and minimal hassle. Download the easy install scripts below (Recommended):
  1. Roon Server (x64)
  2. Roon Bridge (x64)
  3. Roon Bridge (armv7hf)
  4. Roon Bridge (armv8)

Manual Install

Download and install the package manually according to your preferences. Either way, you will need to install the required Dependencies before installing `RoonServer` or `RoonBridge`.

Packages for manual installations (See Below):
  1. Roon Server (x64)
  2. Roon Bridge (x64)
  3. Roon Bridge (armv7hf)
  4. Roon Bridge (armv8)

Dependencies

ffmpeg or avconv (Roon Server only)

`ffmpeg` or `avconv` must be installed and available in your `PATH`. Roon Server will fail to start if it can't find one or the other. You only need one or the other, not both. If both are present, Roon Server uses `ffmpeg`. On Debian, Ubuntu, and other distributions that use `apt-get` for package management, generally one of the following commands will meet this dependency: For `ffmpeg`:
$ sudo apt-get install ffmpeg

For `avconv`:
$ sudo apt-get install libav-tools

If your distribution supports neither option, and you're staring down the barrel of building one of these things from source code, you can always grab statically linked copy of `ffmpeg` here and drop it into `/usr/local/bin` as a last resort.

Roon depends on ALSA, the Advanced Linux Sound Architecture. Most distributions have a package called `alsa-lib` or `libasound2` that satisfies this dependency. In order to support Native DSD playback, you need a kernel that supports your device ( see here--you may need to patch your kernel) as well as ALSA 1.0.29+. We have not tested Roon against older ALSA libraries--they may work, may not.

cifs-utils (Roon Server only)

If you intend to use Roon's network folders feature, the `mount.cifs` command must be available in your `PATH`. Generally this comes from a package called `cifs-utils`. ### glibc 2.14 or higher We target `glibc` versions going back to version 2.14. If you use an alternative libc, and your libc claims binary compatibility with glibc 2.14 or higher, we would be interested to hear how it goes for you.

Recent Linux Kernel

We test with recent (4.x) kernels. It's likely that older ones will work too. A bunch of relevant ALSA work was merged in around 3.19, so going back further than that might be asking for trouble if you intend to run audio devices with DSD support.

Firewall Settings

Note that Multicast and Broadcast traffic must be allowed in the firewall. For more information, see this post: https://community.roonlabs.com/t/android-roon-remote-looses-connection-to-core-daily/61650/46

The easy installer is a simple way to install Roon Server or Roon Bridge on Linux with our recommended settings. The installer will identify missing dependencies and/or compatibility issues before attempting to install the package. If you run into compatibility issues, see the **Dependencies** section above. Our recommended settings are:
  1. Installation in `/opt/RoonBridge` or `/opt/RoonServer`
  2. Data is stored in `/var/roon/RoonBridge` or `/var/roon/RoonServer`
  3. The app will run as `root` 
  4. The app is launched immediately, and will relaunch automatically at boot
We've tested this installer on several recent distributions including:
  1. Arch (current)
  2. Fedora 23
  3. Ubuntu 15.10

Roon Server x86_64

$ curl -O https://download.roonlabs.net/builds/roonserver-installer-linuxx64.sh
$ chmod +x roonserver-installer-linuxx64.sh
$ sudo ./roonserver-installer-linuxx64.sh

Roon Bridge x86_64

$ curl -O https://download.roonlabs.net/builds/roonbridge-installer-linuxx64.sh
$ chmod +x roonbridge-installer-linuxx64.sh
$ sudo ./roonbridge-installer-linuxx64.sh

Roon Bridge armv7hf

$ curl -O https://download.roonlabs.net/builds/roonbridge-installer-linuxarmv7hf.sh
$ chmod +x roonbridge-installer-linuxarmv7hf.sh
$ sudo ./roonbridge-installer-linuxarmv7hf.sh

Roon Bridge armv8

$ curl -O https://download.roonlabs.net/builds/roonbridge-installer-linuxarmv8.sh
$ chmod +x roonbridge-installer-linuxarmv8.sh
$ sudo ./roonbridge-installer-linuxarmv8.sh

Log File Location

If you used the easy installer, log files can be found in `/var/roon/RoonServer/Logs`, `/var/roon/RAATServer/Logs`, and `/var/roon/RoonBridge/Logs`.

Uninstalling

You can reverse the steps of the easy installer by running it with 'uninstall' as a command line parameter. For example:
$ sudo ./roonbridge-installer-linuxarmv7hf.sh uninstall

Manual Installation (Advanced)

Manual installations are a bit more involved, and it is not difficult to end up with a broken or poorly functioning install. We will try to support these as best as possible, but we recommend that people who are not already experienced Linux users go with the easy install.

Roon Server and Roon Bridge each ship as a self-contained tarball. The layout and procedures associated with each package is the same, so we will use Roon Server as an example.

Privileges

We recommend running Roon Server and Roon Bridge as root. Our distribution-specific packages are going to work this way, once released. You are free to run Roon Server/Roon Bridge under other user accounts. If you do this, please make sure:
  1. The user account needs to be able to create directories in `/mnt` in order to mount networked folders. We use `mount.cifs` to do the mounts.
  2. The user account must have access to audio devices. Often this is accomplished by adding that account to the `audio` group.
  3. The user account must be allowed to raise their `ulimit -n` value to `8192`.
  4. The user account must be allowed to write to the directory where `RoonServer` is installed, so the software can self-update.  

Package Layout

After un-tarring the archive, you'll see two interesting scripts inside:
RoonServer/
RoonServer/...
RoonServer/check.sh
RoonServer/start.sh

The `check.sh` script pokes around your system to try to confirm that all of the needed dependencies are met. It is meant to be run under the same user account that you intend to use when running the actual package. 
Missing dependencies can cause confusing failures later on, so confirm that `check.sh` succeeds before opening a support issue 
`start.sh` is a long-running script that launches and manages `RoonServer` or `RoonBridge`. You can exit `RoonServer` or `RoonBridge` by sending a `TERM` signal to the `PID` of the `start.sh` script. The package will self-update within its installation directory just like it does on Mac and Windows.

Configuring the Data Location

By default, Roon Server creates hidden directories called `.RoonServer` and `.RAATServer` inside of `$HOME`. Roon Bridge also uses the `.RAATServer` directory. You can tell Roon Server and Roon Bridge to put that data someplace else using the `$ROON_DATAROOT` environment variable. For example, if you were installing this is a "traditional" system service on unix, you might want Roon's data to live in `/var/roon`. You could run Roon Server that way like this:
$ ROON_DATAROOT=/var/roon ./start.sh
If you are running both Roon Server and Roon Bridge on a single machine, they must have the same value for this environment variable. 

By default, Logs are located in $HOME/.RoonServer/Logs and $HOME/.RAATServer/Logs. If you've customized `$ROON_DATAROOT`, then they will be located in `$ROON_DATAROOT/RoonServer/Logs` and `$ROON_DATAROOT/RAATServer/Logs`

Configuring Roon Server or Roon Bridge to run at boot

Our easy installers do this for you. If you are curious about how to do this by hand, feel free to poke around in the scripts--the information is in there. Otherwise, follow your distribution's instructions, keeping in mind that `start.sh` is a long-running script that you will need to start + terminate at the appropriate times.



    • Related Articles

    • Audio On Linux

      Overview Roon uses ALSA to speak to audio devices on Linux. We only support situations where we have direct and exclusive access to the hardware (in ALSA terms, we are using `hw:X,X` device identifiers). For an in-depth overview of the Audio ...
    • Installing Roon

      Operating Systems covered in this article: macOS Windows Linux iOS and Android Minimum Requirements See the FAQ: What are the minimum requirements? for more information about the hardware and software platforms supported by Roon. Installing Roon on ...
    • Roon Server not running

      If you’re seeing an error telling you Roon Server is not running, there are some simple troubleshooting steps you can try. Click "Start Roon Server" If you run Roon Server on Windows or Mac, you may see a “Start Roon Server” button, which will start ...
    • Upcoming Linux Performance Improvements

      What’s happening? In an effort to increase performance on Linux platforms, our engineers have been working on moving Roon from its current Mono runtime environment to Microsoft’s .NET runtime. These changes should result in performance improvements ...
    • Roon Bridge

      What is Roon Bridge? Roon Bridge is a software package that extends Roon's audio playback capabilities to other devices or computers in your home. It runs on Windows, Mac OS X, and Linux, including inexpensive embedded platforms like the Raspberry ...
    Visit the Roon Community!
    Need help? Thousands of Roon subscribers and audio enthusiasts are chatting over on our community site right now, join them! You don't even need a Roon subscription to sign up.