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):
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):
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.
libasound2 (1.0.27+ required, 1.0.29+ recommended)
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
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
The Easy Installer (Recommended)
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:
- Installation in `/opt/RoonBridge` or `/opt/RoonServer`
- Data is stored in `/var/roon/RoonBridge` or `/var/roon/RoonServer`
- The app will run as `root`
- The app is launched immediately, and will relaunch automatically at boot
We've tested this installer on several recent distributions including:
- Arch (current)
- Fedora 23
- Ubuntu 15.10
Roon Server x86_64
$ curl -O -L https://download.roonlabs.com/builds/roonserver-installer-linuxx64.sh
$ chmod +x roonserver-installer-linuxx64.sh
$ sudo ./roonserver-installer-linuxx64.sh
Roon Bridge x86_64
$ curl -O -L https://download.roonlabs.com/builds/roonbridge-installer-linuxx64.sh
$ chmod +x roonbridge-installer-linuxx64.sh
$ sudo ./roonbridge-installer-linuxx64.sh
Roon Bridge armv7hf
$ curl -O -L https://download.roonlabs.com/builds/roonbridge-installer-linuxarmv7hf.sh
$ chmod +x roonbridge-installer-linuxarmv7hf.sh
$ sudo ./roonbridge-installer-linuxarmv7hf.sh
Roon Bridge armv8
$ curl -O -L https://download.roonlabs.com/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:
- 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.
- The user account must have access to audio devices. Often this is accomplished by adding that account to the `audio` group.
- The user account must be allowed to raise their `ulimit -n` value to `8192`.
- 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.