
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 updateUpgrade packages
sudo apt-get upgrade -y
Install libmono-cil-dev (Thanks to Raijmond)
sudo apt-get install libmono-cil-dev -yIf 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/preferencesAdd these lines, if you are on wheezy replace jessie with wheezy
Package: *
Pin: release n=jessie
Pin-Priority: 998Save with Ctrl+X, Y and Enter
Now update packages and install
sudo apt-get update
sudo apt-get install libmono-cil-dev -yInstall 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.debIf Sourceforge is down you can use a mirror (thanks Hermi)
wget http://www.frickelzeugs.de/mono_3.10-armhf.debHere is yet another mono mirror
wget https://www.dropbox.com/s/k6ff6s9bfe4mfid/mono_3.10-armhf.debInstall the Mono 3.10 package for Raspbian
sudo dpkg -i mono_3.10-armhf.debYou can check your mono version
mono --versionIt 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.comEven 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-yesAdd 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.listUpdate packages
sudo apt-get updateInstall Sonarr (NzbDrone)
sudo apt-get install nzbdrone sqlite3-dev -yTake ownership of the Sonarr installation so updates will work properly
sudo chown -R pi:pi /opt/NzbDroneAutostart 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/nzbdronePaste 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 0Ctrl+X, Y and Enter to save
Make the Sonarr init.d script executable
sudo chmod +x /etc/init.d/nzbdroneUpdate the Sonarr init.d to start on boot
sudo update-rc.d /etc/init.d/nzbdrone defaults 98If the above command gives an error try
sudo update-rc.d nzbdrone defaults 98Reboot 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.listNote 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



