Skip to content

Diet Pi Installation Extension Manager

pluggemi edited this page Oct 13, 2018 · 6 revisions

This is intended to be an installation walkthrough to install the Roon Extension Manager on a Diet Pi based Raspberry Pi connected to a Raspberry Pi touchscreen. This will also setup Chromium to run in kiosk mode running the Roon Web Controller.

Please Note: This documentation is provided "as is", without warranty of any kind, express or implied. No endorsement is intended express or implied.

Assumptions:

Global

  1. Install should be a minimal as possible

Server

  1. The Node.js instance for Roon Extension Manager starts on system boot
  2. The Node.js instance does NOT run as root!

Client

  1. Chromium runs in full screen kiosk mode without a mouse cursor at system boot
  2. Chromium does not run until the Roon Web Controller application is running
  3. Chromium points to the server

Roon Bridge

  1. The Roon Bridge software starts at system boot

Diet Pi prep

  1. Download and install Diet Pi from http://dietpi.com/ For a Raspberry Pi, the downloaded filename should be DietPi_RPi-ARMv6-Stretch.7z

  2. Log in using the provided username and password (default is root / dietpi). On the inital login, this will automatically start a configuration utility.

  3. Accept the GPL license notification. Assuming you have network connectivity, this will run a connection test.

  4. Assuming the connection test passes, this will begin an automatic update of the system which may prompt for a reboot. Go ahead and let it reboot.

  5. Log back in with the provided username and password. This will automatically resume the configuration utility.

  6. Accept the GPL license notification. This will show the DietPi software utility.

  7. At this time, do not select any packages for installation. Use the "Install Software" option with nothing selected to get a minimal install of DietPi.

  8. Log in as root and change the password for both root and the dietpi user

passwd

passwd dietpi

  1. Get the IP address of the dietpi system:

ip add

  1. On the device eth0, look for the line that says Inet for the IPv4 address or Inet6 for the IPv6 address.

  2. From your desktop, SSH to the dietpi system as the dietpi user using the password you set above.

Mac or Linux, open a terminal and run:

ssh dietpi@(IP Address)

Windows users can use putty

Roon Extension Manager

This will configure your system to run the Roon Extension Manager software.

Install Software

  1. As root, run the software configuration

dietpi-software

  1. Select Chromium and Roon Extension Manager

Software Optimized -> Chromium

Software Optimized -> Roon Extension Manager

  1. Install the software, then exit

  2. The Raspberry Pi will reboot at this point.

Roon Extension Manager is now installed and running. Select Settings->Extensions on your Roon Remote to manage your extensions.

Roon Web Controller Client

This will configure Chromium to be a Roon Web Controller client.

Roon Remote

  1. On the Roon Remote, go to Settings->Extensions
  2. For "Category", select "Web / Connectivity"
  3. For "Extensions", select "Web Controller"
  4. For "Actions", select "Install"
  5. Select Save

Once the install is complete, "Web Controller" will show up in the extension list. Select "Enable"

Console boot up

  1. As root, run the autostart configuration:

dietpi-autostart

  1. Select Custom - /var/lib/dietpi/dietpi-autostart/custom.sh

  2. Save and exit.

System configuration

  1. As root, install additional required software

apt install fonts-noto openbox

  1. Modify the custom.sh startup script

nano /var/lib/dietpi/dietpi-autostart/custom.sh

  1. Add this to the bottom of the file:
# Wait until the application is listening on port 8080
PORT=$(ss -l | grep ':8080')
while [ -z "$PORT" ] ; do
        echo "Roon Web Controller not running..."
        sleep 1
        PORT=$(ss -l | grep ':8080')
done

# Run the custom kiosk script
xinit /root/kiosk.sh -- -nocursor
  1. Save and exit

  2. Make the custom.sh script executable

chmod +x /var/lib/dietpi/dietpi-autostart/custom.sh

  1. Create the kiosk.sh script

nano /root/kiosk.sh

  1. Paste this as the content
#######################################
#
# Start up script for running the
# Chromium web browser full screen
#
#######################################

# Set the X display
export DISPLAY=":0"

# tune the screen blanking time - time in seconds (standby, suspend, off)
# All numbers are time in seconds
# default value
# xset dpms 600 600 600 &
# 1 minute blank time
xset dpms 60 60 60 &

# start the window manager - needed for the kiosk to fill the entire screen
/usr/bin/openbox &

# start full screen web app
# change the URL if Roon Web Controller is running on a different system
/usr/bin/chromium-browser --kiosk http://localhost:8080

  1. Save and exit

  2. Make the kiosk.sh executable

chmod +x /root/kiosk.sh

Display configuration

  1. As root, run the hardware configuration

dietpi-config

  1. Set the screen resolution to be optimized for the RPi Touchscreen

Display Options -> Change Resolution -> RPi Touchscreen 800 x 480

  1. Set the screen rotation if your Touchscreen display is upside down

Display Options -> Rotation (LCD) -> 180 degrees

  1. Set the GPU/RAM Memory Split

Display Options -> GPU/RAM Memory Split -> Desktop 128MB GPU

  1. Save and exit. Reboot when you are prompted.

Roon Bridge configuration

This will configure the system to be a Roon music playback endpoint.

Install the software

  1. As root, run the software configuration

dietpi-software

  1. Select Roon Bridge

Software Optimized -> Roon Bridge (listed under Media Systems)

  1. Install the software, then exit

  2. Set Roon Bridge to run at boot time and start it immediately

systemctl enable roonbridge.service
systemctl start roonbridge.service

Configure the soundcard

  1. As root, run the hardware configuration

dietpi-config

  1. Adjust your soundcard selection under Audio Options

  2. Save and exit. If prompted, reboot.

At this point, you can go to an Official Roon client to enable and configure the endpoint.