Running Asterisk on Nokia N810/N800 Internet Tablet

Summary: I got Asterisk (1.4.21.2) running on my Nokia N810 Internet Tablet. This means: Not just connecting the SIP client to a “real” Asterisk box, but rather run Asterisk on the N810 itself.
And I got it to work without major hassle or compromise!

Honestly, I am floored.

And excited - I have multiple PSTN-terminated VoIP trunks and never could access them on the go because SIP phone clients that I have seen only support a single SIP connection. In a Asterisk-on-the-N810 configuration, the SIP client now connects to Asterisk on localhost (the N810). Asterisk takes care of my VoIP trunks, voicemail etc.

And this is how I made it work (from memory, I hope I did not miss anything major):
[Configuration:

  • A Nokia N810 Internet Tablet (N800 will probably work as well)
  • A Linux (Debian Etch) development box to cross-compile Asterisk
  • The “real” Asterisk box (which is dutifully serving yours truly for several years now) to carry over configuration files.]
  1. Install Scratchbox and the associated SDK on a Linux development box. Scratchbox is a cross-compilation environment for ARM processors. Using a Debian box here is probably the best choice, as the Internet Tablet’s native OS is maemo, a Debian derivative, and the guys at Nokia/maemo seem to work on Debian. Download the Scratchbox and SDK installer scripts here: maemo.org/development/sdks/maemo-4-1-diablo-sdk/
    You will also need to gain root access and install openssh on the Internet Tablet for ssh and scp support. I followed this advise: arachnoid.com/linux/nokia/

  2. On the Linux development box, login to the Scratchbox environment:
    $ /scratchbox/login
    This emulates a Debian/maemo box in a sandbox, i.e. building Asterisk in this environment does not affect the native Linux installation.

  3. In Scratchbox, switch to the ARMEL target (I use the sb-menu command for that)

  4. Download Asterisk sources from within Scratchbox and go through the usual steps to build Asterisk, including $ make install. Remember, /etc/asterisk and all other directories are created in the sandbox environment, not the native environment of the Linux box. BTW: I tried
    $ make install on the N810 but could not get it to work. This would make this procedure even more elegant. So the next step is not exactly exciting:

  5. From the Scratchbox environment, (manually) copy all relevant Asterisk files and directories to the Internet Tablet:
    /usr/sbin/asterisk
    /etc/asterisk/
    /usr/lib/asterisk/modules/
    /var/lib/asterisk/
    /var/spool/asterisk/
    /var/run/
    /var/log/asterisk/
    And subdirectories.
    Remember: you’ve compiled the binaries in the Scratchbox ARM cross-compilation environment, i.e. they can execute on the Internet Tablet.

  6. Copy extensions.conf, sip.conf and other relevant configuration files from your “real” Asterisk environment. Also carry over any special sound files you might have, such as German language announcements. I have a few calls to Monitor() in my dialplan; I commented those out to reduce resource requirements, but left everything else untouched. Due to the limits of the environment, you might also have to switch to a “cheap” codec such as alaw if you use G.729.

  7. Now check out Asterisk on the Tablet. First, stop Asterisk on your “real” Asterisk box. This is necessary to avoid multiple connections to your VoIP provider(s) when you start Asterisk on the N810. Log on to the Internet Tablet as root, and start Asterisk as usual.

asterisk -cvvvvv

Asterisk should start up, and reassuringly fast at that. Once you get to the CLI prompt, you can let it sit there (and monitor logs)

  1. Reconfigure the SIP client on the Internet Tablet. If it pointed to your “real” Asterisk box, simply switch the host to “localhost”; that did it for me because the extensions and other settings were just carry-overs from the “real” Asterisk box.

  2. Now Test and enjoy. I verified multiple times that indeed the “real” box was down and I am connecting to Asterisk on localhost - I even pulled the “real” box’s power cord to make absolutely sure - it worked that well.

  3. If you want Asterisk to start automatically when the Internet Tablet boots, create a shell script which starts Asterisk (i.e.: /usr/sbin/asterisk) in /etc/init.d and use update-rc.d to set it to the desired runlevel when the Internet Tablet boots. If you’re used to Debian you will feel right at home when using maemo.

Note: Due to the isolation of the Scratchbox environment from the rest of the system, you’ll probably get away building the ARM binaries on your “real” Asterisk box as well, without interfering with your Asterisk installation there.

Happy hacking!

BTW: If you’re in Chicago, Baltimore or DC: Perhaps consider the N810 WiMax edition… I would love to hear how well everything works on Sprint/Nextel’s WiMax pilot there.
dmwmedia.com/news/2008/06/18 … -september
Perhaps it also works in Portland, OR on Clearwire’s installation.