Sonarr is an alternative to SickBeard and SickRage for Usenet video automation. It works well with NZBGet and Sabnzbd. Sonarr has changed name because it will be supporting torrents in the near future so NzbDrone was no longer an appropriate name. It is written in C# which requires Mono on Linux based systems. Using this guide will get automatically install Mono 3.2.8 on Raspbian. The recommended Mono version is 3.10 but building mono on the Raspberry Pi is not recommended because of its low spec hardware.
At A Glance: Our Top 4 Picks For Usenet Providers
- Our Top Pick: UsenetServer
- Newshosting
- Frugal Usenet
- Usenetlink
- Free Zero-Log VPN Included
- Free Unlimited Usenet Search
- 4319 Days Binary & Text Retention
I managed to compile a working mono 3.10 armhf deb package so all you have to do is download it and install it. If you already have Sonarr installed on your Raspberry Pi and Pi 2 you can either remove the old mono or try and install the deb package over the existing installation. When you are done Sonarr (NzbDrone) will use mono 3.10.
I recommend only using this on headless machines, if you are on Raspbmc you will notice Sonarr is a bit slow, that is because Raspbmc is using a lot of GPU and RAM to create the graphical interface. That said, Sonarr will still work on Raspbmc, but expect the interface to not be super snappy.
Raspberry Pi 2 and Pi 3 users use the Raspberry Pi 2 guide
Our Top Pick | UsenetServer |
| VIEW LATEST PRICE → |
Newshosting |
| VIEW LATEST PRICE → | |
Frugal Usenet |
| VIEW LATEST PRICE → | |
Usenetlink |
| VIEW LATEST PRICE → |
If you are trying to figure out which hardware would work best for you, consider reading the Pi benchmarks.
Install Sonarr Raspberry Pi with Mono 3.10
Update packages
sudo apt-get update
Upgrade packages
sudo apt-get upgrade -y
Install libmono-cil-dev (Thanks to Raijmond)
sudo apt-get install libmono-cil-dev -y
If you get a libmono-cil-dev will not be installed you hold broken packages do this extra step
Lower the pin preference
sudo nano /etc/apt/preferences
Add these lines, if you are on wheezy
replace jessie
with wheezy
Package: *
Pin: release n=jessie
Pin-Priority: 998
Save with Ctrl+X, Y and Enter
Now update packages and install
sudo apt-get update
sudo apt-get install libmono-cil-dev -y
Install Mono 3.10 Raspberry Pi armhf Package
Download the precompiled mono 3.10 arm deb package
wget http://sourceforge.net/projects/bananapi/files/mono_3.10-armhf.deb
If Sourceforge is down you can use a mirror (thanks Hermi)
wget http://www.frickelzeugs.de/mono_3.10-armhf.deb
Here is yet another mono mirror
wget https://www.dropbox.com/s/k6ff6s9bfe4mfid/mono_3.10-armhf.deb
Install the Mono 3.10 package for Raspbian
sudo dpkg -i mono_3.10-armhf.deb
You can check your mono version
mono --version
It should read
Mono JIT compiler version 3.10.0 (mono-3.10.0-branch/ce003f4 Wed Nov 26 20:10:31 CET 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Even if it doesn't show 3.10.0 don't worry, there is a workaround for the init.d script
Install Sonarr Raspberry Pi
Enable apt-get to install from https sources or you will get this error
The method driver /usr/lib/apt/methods/https could not be found.
To solve it install the https package
sudo apt-get install apt-transport-https -y --force-yes
Add sources to install Sonarr on Raspbian
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FDA5DFFC
echo "deb https://apt.sonarr.tv/ master main" | sudo tee -a /etc/apt/sources.list.d/sonarr.list
Update packages
sudo apt-get update
Install Sonarr (NzbDrone)
sudo apt-get install nzbdrone sqlite3-dev -y
Take ownership of the Sonarr installation so updates will work properly
sudo chown -R pi:pi /opt/NzbDrone
Autostart Sonarr
There are two methods, the init.d script and upstart script. Upstart can conflict with your system so attempt the init.d method first.
Sonarr init.d Script
Create the init.d script file
sudo nano /etc/init.d/nzbdrone
Paste this long code, change DAEMON
to DAEMON=/usr/local/bin/mono
if mono shows 3.2.8 instead of 3.10
#! /bin/sh
### BEGIN INIT INFO
# Provides: NzbDrone
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Should-Start: $NetworkManager
# Should-Stop: $NetworkManager
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts instance of NzbDrone
# Description: starts instance of NzbDrone using start-stop-daemon
### END INIT INFO
############### EDIT ME ##################
# path to app
APP_PATH=/opt/NzbDrone
# user
RUN_AS=pi
# path to mono bin
DAEMON=$(which mono)
# Path to store PID file
PID_FILE=/var/run/nzbdrone/nzbdrone.pid
PID_PATH=$(dirname $PID_FILE)
# script name
NAME=nzbdrone
# app name
DESC=NzbDrone
# startup args
EXENAME="NzbDrone.exe"
DAEMON_OPTS=" "$EXENAME
############### END EDIT ME ##################
NZBDRONE_PID=`ps auxf | grep NzbDrone.exe | grep -v grep | awk '{print $2}'`
test -x $DAEMON || exit 0
set -e
#Look for PID and create if doesn't exist
if [ ! -d $PID_PATH ]; then
mkdir -p $PID_PATH
chown $RUN_AS $PID_PATH
fi
if [ ! -d $DATA_DIR ]; then
mkdir -p $DATA_DIR
chown $RUN_AS $DATA_DIR
fi
if [ -e $PID_FILE ]; then
PID=`cat $PID_FILE`
if ! kill -0 $PID > /dev/null 2>&1; then
echo "Removing stale $PID_FILE"
rm $PID_FILE
fi
fi
echo $NZBDRONE_PID > $PID_FILE
case "$1" in
start)
if [ -z "${NZBDRONE_PID}" ]; then
echo "Starting $DESC"
rm -rf $PID_PATH || return 1
install -d --mode=0755 -o $RUN_AS $PID_PATH || return 1
start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
else
echo "NzbDrone already running."
fi
;;
stop)
echo "Stopping $DESC"
echo $NZBDRONE_PID > $PID_FILE
start-stop-daemon --stop --pidfile $PID_FILE --retry 15
;;
restart|force-reload)
echo "Restarting $DESC"
start-stop-daemon --stop --pidfile $PID_FILE --retry 15
start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
;;
status)
# Use LSB function library if it exists
if [ -f /lib/lsb/init-functions ]; then
. /lib/lsb/init-functions
if [ -e $PID_FILE ]; then
status_of_proc -p $PID_FILE "$DAEMON" "$NAME" && exit 0 || exit $?
else
log_daemon_msg "$NAME is not running"
exit 3
fi
else
# Use basic functions
if [ -e $PID_FILE ]; then
PID=`cat $PID_FILE`
if kill -0 $PID > /dev/null 2>&1; then
echo " * $NAME is running"
exit 0
fi
else
echo " * $NAME is not running"
exit 3
fi
fi
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
exit 0
Ctrl+X, Y and Enter to save
Make the Sonarr init.d script executable
sudo chmod +x /etc/init.d/nzbdrone
Update the Sonarr init.d to start on boot
sudo update-rc.d /etc/init.d/nzbdrone defaults 98
If the above command gives an error try
sudo update-rc.d nzbdrone defaults 98
Reboot and then configure Sonarr.
Sonarr on OSMC Update and Raspbian Fix
If you are using OSMC you should remove the sonarr repo from the sources.list (source here). The repository is not necessary for updating Sonarr and can cause mono dependency issues.
sudo rm /etc/apt/sources.list.d/sonarr.list
Note that Sonarr takes a minute or two to start up on boot so if you can't access the Sonarr web interface, be patient, it will be accessible when the Pi finishes loading it. This has been tested on a Raspbian fresh install at least 5 times and it does work. On the first run it can take 5 minutes, after the first run it will automatically start faster on boot.
You can access Sonarr on its default port at http://ip.address:8989
Now you can configure NzbDrone. An updated guide to include Sonarr's torrent abilities will be published when the updates make it to the master branch.
Get UsenetServer for only $7.95/mo. and save 60% lifetime discount