Moode Forum

Full Version: Installing Roon Bridge on Moode (updated for Moode 7.1.0+)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
Updated 18/03/2021 for Moode 7.1.0 which includes some support for handling Roon Bridge in Moode's UI yet still requires Roon Bridge to be installed manually by the user

Roon Bridge is really simple to install on Moode but out here in forum-land installing things on computers often seems scary for some people, so I though I'd outline the installation and setup process here.

Roon is a proprietary, in-depth music library and lossless music server/playback suite of software which has a ton of great features and is quite brilliant (but relatively expensive). Roon is a client/server model and once you have a Roon Core (the server) setup on your LAN, Roon automatically sees Moode as a playback endpoint if Moode's Airplay renderer is enabled. Airplay isn't ideal though if you like that music to be bit-perfect and in it's native format.
Thankfully Roon has Roon Bridge which can turn any compatible computer into a Roon endpoint and it's available for Linux on ARMv7 computers like the Raspberry Pi.

Let's begin...

Login to a terminal
So to begin login to a terminal on Moode, either over SSH or using Moode's built-in terminal emulator accessible from the system configuration menu.
To access the built-in, web based terminal emulator go to the Moode menu and select Configure >  System;

Scroll down and ensure SSH term server is on and select the OPEN button;
[attachment=1934]
Your browser should open a new tab with a prompt to login.

Login as the user pi with the default password moodeaudio.


Download and install Roon Bridge
Assuming your Pi has internet access, download Roon's Easy Installer script for armv7hf systems with wget;
Code:
wget http://download.roonlabs.com/builds/roonbridge-installer-linuxarmv7hf.sh

Make the downloaded file executable;
Code:
chmod +x roonbridge-installer-linuxarmv7hf.sh

Run the installer and enter y when prompted to continue.;
Code:
sudo ./roonbridge-installer-linuxarmv7hf.sh
The installer will then download and install the latest version of Roon Bridge for your Raspberry Pi.
[attachment=1935]

Reboot;
Code:
sudo reboot

Once Moode has rebooted navigate to the Moode menu and select Configure > Audio, find the RoonBridge Renderer in the Audio Renderers section, switch it on and select the SET button.
[attachment=2212]

That's it! Moode is now a Roon endpoint.


In Roon...
Now go to Settings > Audio in Roon Remote (Android version shown here).
You should now see your Raspberry Pi as a proper endpoint called moode (mine's called hifi in the screenshot) and its available audio devices.
Here you can see the Pi's onboard headphone jack, onboard HDMI output and my Topping D50s DAC.
[attachment=1936]

Enable the desired audio output device and if you want, give it name.
[attachment=1937]

Now you can select your new device in Roon's zones...
[attachment=1938]

... and get bit-perfect output from Roon.
[attachment=1939]

Do note that Roon Bridge will lock the audio device whilst playing so other audio software that comes with Moode like mpd, shairport-sync, librespot etc. will not be able to play whilst Roon is playing to the Pi and vice-versa.
Simply stop whatever is playing from Roon to use the rest and vice-versa.

From Moode release 7.1.0 the Moode UI will blank out when Roon Bridge is active and provides a button to force-stop Roon playback directly from Moode's UI.
[attachment=2213]
As noted at the end of the post...

Quote:Do note that Roon Bridge will lock the audio device whilst playing so other audio software that comes with Moode like mpd, shairport-sync, librespot etc. will not be able to play whilst Roon is playing to the Pi and vice-versa.

Simply stop whatever is playing from Roon to use the rest and vice-versa.

If for some reason you've tried to use more than one audio player on the Pi simultaneously and you don't know which program has the lock on the alsa device it might be easier to just reboot the Pi, the Roon Core will have nothing to do with it.
@vinnn ,

How does RoonBridge know what ALSA device to use?

Does it have a config file like Squeezelite, etc?
Hi Tim yes if you see screenshots 3-5 in the op the available ALSA devices are picked up by the Roon Bridge client, any local alsa device the Roon Bridge can use and if enabled, show up as a "zones" in Roon Remote.

Each zone can then be chosen as an output device in Roon, you can also transfer already-playing music between zones and certain types of zones can be grouped for simultaneous synced output, for multiroom playback for example.

So whatever zone/device you choose in Roon's remote is the playback device that Roon Bridge will use on the Pi. In my case the only device on my Moode Pi enabled in Roon is the Topping DAC.
I see. it doesn't detect the configured audio output, it just enumerates the available audio outputs and user chooses the correct one in the Roon client. Simple enough.

I'm considering adding "RoonBridge renderer to Audio config to make it easier to to turn it ON/OFF or restart it, and have it participate in the Renderer Active mechanism.
Good news.

Yep, any config is done in Roon's in-app settings (on a mobile or desktop device), everything is managed through the Core/server.
All that is needed to setup Roon Bridge on the Pi is to install it, the easy install script shown above also creates the systemd unit and starts the service.
Due to licensing restrictions the RoonBrodge code can't be bundled and redistributed, it has to be installed by end user. What I'm able to do is add the framework and hooks in moOde to detect the presence of RoonBridge software and then turn on the feature in Audio Config and other parts of moOde so it can be easier to operate
.
@vinnn, With your permission I'd like to add you to the Test Team sub-forum which would allow you to test out and help debug the planned RoonBridge integration.

I don't have Roon myself so not able to test on my end.

-Tim
Yeah no worries.

Of course you couldn't redistribute their software in the Moode image but functions to install/remove/enable/disable Roon Bridge should be possible.
The Roon Bridge package is basically downloaded & installed with;

Code:
curl http://download.roonlabs.com/builds/RoonBridge_linuxarmv7hf.tar.bz2 | tar -xjf - -C /opt


... and the systemd unit is done with;

Code:
echo '[Unit]
Description=RoonBridge
After=network-online.target

[Service]
Type=simple
User=root
Environment=ROON_DATAROOT=/var/roon
Environment=ROON_ID_DIR=/var/roon
ExecStart=/opt/RoonBridge/start.sh
Restart=on-abort

[Install]
WantedBy=multi-user.target' >/etc/systemd/system/roonbridge.service

systemctl enable roonbridge.service

... then of course started, stopped & restarted with systemctl.

Roon's installer script expects to do all this as root but Roon Bridge can be run as another user, in case there is a preference to make this a user unit instead of a system unit. In that case the user needs to be able to write to /opt/RoonBridge to auto-update the software, have access to the audio devices and to set their ulimit -n value to 8192 (although I think that last one is for RoonServer) all is outlined here, their documentation is quite good.
Does it automatically uses Hardware volume if the device supports it?

If your audio device supports Hardware volume the way to check what the renderer is using is to open alsamixer and if the mixer volume is at 100% then the renderer uses Software volume. If on the other hand the mixer volume changes in step with the volume on the Roon app then it's using Hardware volume.
Pages: 1 2 3