ntroduction
As a lot of owners of Asus WL500g routers know, one of the main advantages of this box is that you can get a standard Linux kernel running on it which you can use to extend the functionality of the box by installing more software. I am actually currently using the router also as fileserver (using an external USB harddisk), website backup server, local webserver, and binary newsgrabber. In fact this last function is where SABnzbd comes in. SABnzbd is actually a binary newsgrabber (written in Python) which is fully web-based. This means that you can run it as a server on any Windows/Linux machine and then access it's functionality from anywhere else using a normal webbrowser. This means that you can start and stop binary news downloads at any time from anywhere (as long as you have access to a webbrowser). An important restriction is that SABnzbd only accepts NZB files, but as this is what I am using 95% of the times I download something this is not an issue for me.
The ability of running SABnzbd on my WL500gP router is one of the reasons I actually bought it, and as there is no guide available today to explain step-by-step how to get it working I created this page so that other people could benefit from my experience.
Prerequisites
So what do you need to get SABnzbd working:
* An Asus WL500G or WL500gP router with Oleg's firmware installed on it. This firmware basically provides you the same functionality as the Asus standard firmware (almost) but on top also provides you a means of installing additional software. If you do not have the Oleg firmware installed yet I strongly recommend to read the article "General information about Olegs Firmware", and also have a look at the Firmware forums for the WL500g and WL500gP at
http://wl500g.info. Although I have been running the firmware without major issues for several months it is still important that you are aware of the possible risks of upgrading your firmware!
* An external harddisk or USB flash drive. This is where you will install SABnzbd and it's related files (cache, downloads, etc...). For a tutorial to get this working you can read the article "IPKG package system Tutorial"
* A text editor to adapt your configuration. You can use "vi", or another option is to install "nano" (using the command "ipkg install nano").
Before we start: the two options to get it running
Now before we start digging into the details an important remark to make: SABnzbd offers some features which are not absolutely required for it to function but which do make life a lot easier. In particular I consider the PAR verifications and unpacking features here. These allow your router not only to download binaries but also to verify them (and fix them if required) in case PAR2 info is available, and additionaly it can also unzip or unrar the file. This means in the end you get the complete file verified and unpacked on your harddisk, ready for use. This is definitely preferable over having to still verify and unpack them on your PC (except in cases where you need it done real fast in which case the PC is better - but you can still choose this per download). In order to use this functionality however we need to have some additional software available on the router (unzip, unrar and par2cmdline). Now the problem is that these are not all working out-of-the-box on the WL500g (especially the unrar one). So this means you have two options: you either install SABnzbd "the easy way" which is fast but doesn't allow you to use the unpack and verify functionalities, or otherwise you take some more time to get things working completely and then you can really benefit from SABnzbd to its fullest. Both options are described below, it's up to you to make the choice! For the easy way perform steps 1 and 3, for the not-so-easy way perform steps 2 and 3.
Step 1: Preparing your router for the bare SABnzbd
The easy way to get it working is really easy. Just perform the following steps:
* Install python with the command "ipkg install python". This will install python version 2.4 on your box.
* Install the python cherrypy package with the command "ipkg install py-cherrypy".
* Install the python cheetah package with the command "ipkg install py-cheetah".
* Install the python elementtree package with the command "ipkg install py-elementtree".
That's all there is to it. Now you can go to step 3 to install the actual SABnzbd application.
Step 2: Preparing your router for a full SABnzbd installation
As mentioned above due to some issues with the standard firmware we need to do some slightly more complicated setup to get all the SABnzbd functionality working on the router. Here
* Install the updated uClibc library and reinstall all your other packages to make sure they use this new version. This is actually the most complex part of the process. I will not detail it here, step-by-step instructions are available in the section "So what do I have to do to start using this new version of the uClibc library?" of the article "Installing and using the updated uClibc library on your Asus WL-500g router". It will probably be useful for you to read the sections that preceed that one also just to get an idea why this step is required. Although the execution of this step is not so difficult (mainly time consuming) it does include reinstalling all your IPKG packages, so it's definitely worth taking a backup of your current setup before proceeding, just in case something doesn't work afterwards anymore.
* Next step is to install python. For some reason I could not get python 2.4 to work with the new uClibc (although I'm not sure whether that is a common problem). Anyway I just decided to install python 2.5. You can do this with the command "ipkg install python25" (make sure you have removed the packaged python and python24 first in case these were installed on your box!)
* Next to python itself we also need a number of python packages. The elementtree package is since version 2.5 included in the core python package so we don't need to care about that one. The cherrypy and cheetah packages still need to be installed however. As the IPKG packages for these are based on python v2.4 we cannot use them. Instead we will install them using the standard python installer.
o First install the python "Easy Install" package:
cd /opt/tmp
wget
http://peak.telecommunity.com/dist/ez_setup.py
python2.5 ez_setup.py
o Next install the cherrypy package:
cd /opt/tmp
wget
http://surfnet.dl.sourcef...ypy/CherryPy-2.2.1.tar.gz
tar -xvzf CherryPy-2.2.1.tar.gz
cd CherryPy-2.2.1
python2.5 setup.py install
o Next download and unpack the cheetah package (but don't install it yet):
cd /opt/tmp
wget
http://surfnet.dl.sourcef...ate/Cheetah-2.0rc7.tar.gz
tar -xvzf Cheetah-2.0rc7.tar.gz
cd Cheetah-2.0rc7
o Now open the file SetupConfig.py in your preferred editor and change the line "if os.name == 'posix':" into "if os.name == 'losix':" (this will avoid that Cheetah tries to compile the namewrapper module - which doesn't work as we don't have a C compiler on the router. Although this has an influence on performance it is not an issue if you just use it for SABnzbd, if however you use it also for other purposes you may need to try and get the namewrapper compiled also, that's however not in the scope of this article).
o Now you can install cheetah:
python2.5 setup.py install
* With all python packages install we can now install the programs for unpacking:
ipkg install unzip
ipkg install unrar
* The final step of the preparations is to install the par2cmdline program. Now I am trying to get this working as a standard IPKG module that can be fed through the standard IPKG feed but I haven't succeeded yet. Therefore in the meantime I have made a specific IPKG package that you can download from this website:
cd /opt/tmp
wget
http://www.freewebs.com/ptnemot/wl500g/par2cmdline.ipk
ipkg install par2cmdline.ipk
That's it! You have gone through all the necessary steps to prepare your router for running SABnzbd. You can now go to section 3 which will explain how the install and configure SABnzbd itself.