NSLU2-Linux
view · edit · print · history

The Open Source VoIP PBX System

http://www.asterisk.org/

Download the O'Reilly book "Asterisk: The Future of Telephony" http://astbook.asteriskdocs.org/(approve sites)

Installation

From the root prompt, type:

ipkg install asterisk

Optionally install the additional sound package:

ipkg -force-overwrite install asterisk-sounds

Configuration:

The original sample configuration files are in /opt/etc/asterisk/sample

Take a look at it, consult the voip-info.org Asterisk wiki and create your configuration files in /opt/etc/asterisk

Because the NSLU has only 32MB of RAM I'll recommend you to use a slim configuration (modules.conf).

I have tested it with the second Asterisk slim configuration with the iLBC codec disabled as it requires a floating point unit which isn't present on the IXP420.

You have to configure the path to the various asterisk component in asterisk.conf:

 [directories]
 astetcdir => /opt/etc/asterisk
 astmoddir => /opt/lib/asterisk/modules
 astvarlibdir => /opt/var/lib/asterisk
 astagidir => /opt/var/lib/asterisk/agi-bin
 astspooldir => /opt/var/spool/asterisk
 astrundir => /opt/var/run
 astlogdir => /opt/var/log/asterisk

Use the voip-info.org Asterisk wiki to find out how to configure:

 extensions.conf
 iax.conf
 sip.conf
 voicemail.conf

Performance expectations

The slug's IXP420 should have enough horse power for a home PBX with up to 4 lines, when less CPU intensive codecs (like GSM, G711u, G711a or G726) are used.

The CPU intensive codecs (iLBC, G729, Speex) are not working, but it should be possible to rewrite them using the DSP extended instruction set supported by the IXP4xx. The Intel(R) IXP4XX DSP Software Library contains efficient implementations of all codecs including G729 and other VoIP goodies, but it looks that it cannot be used by asterisk: http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm

Flash installation

To install on a USB flash disk, 128Mb or more is recommended to allow room for voicemail files etc.. See Ext3flash. It has been reported to run on 64Mb.

Asterisk sample configuration for Slug

If you want to try the Asterisk VoIP PBX without going trough the hassle of configuring it from the scratch, you can start with this sample configuration and you will have Asterisk running on the Slug in minutes.

Starting and stopping Asterisk

If you have just installed and configured Asterisk, you can try running it for the first time in console mode with some debugging applied with this command:

   /opt/sbin/asterisk -vvvc 

Use the command "stop now" to shut down Asterisk from the CLI console.

If run with no arguments, Asterisk is launched as a daemon process:

   /opt/sbin/asterisk 

You can get a CLI console to an already-running daemon by typing:

   /opt/sbin/asterisk -r 

on the same computer on which Asterisk is running. More than one console CLI can connect to Asterisk simultaneously.

You can list all the available CLI commands by entering "help", or get information on a particular command by entering "help <command>".

To start asterisk at boot time, create a script whose name starts with S[number][number] in /opt/etc/init.d/ that executes asterisk:

   /opt/etc/init.d # cat S99asterisk
   #!/bin/sh

   if [ -f /opt/var/run/asterisk.pid ] ; then
     kill `cat /opt/var/run/asterisk.pid`
   else
     killall asterisk
   fi

   rm -f /opt/var/run/asterisk.pid

   umask 077

   /opt/sbin/asterisk

Asterisk GUI

There is a simple Asterisk GUI for Unslung (Optware): http://www.fivn.com/products/asterisk.html

How to connect a standard phone and to a PSTN phone line

An Analog Telephone Adaper (ATA) like Sipura SPA-3000 can be used to connect a standard analog phone and to connect Asterisk to a PSTN phone line.

How to use a Gizmo Project account with asterisk

How to configure music on hold

Playing MP3 on the slug will not work. You will have to convert your MP3 files to native format GSM and/or ULAW (using for example the free sound conversion software from http://www.nch.com.au/switch ) and configure asterisk to use the native format.

Your musiconhold.conf file should look like this:
; Music on hold class definitions
;
;[native-random]
[default]
mode=files
directory=/opt/var/lib/asterisk/moh-native ; Change to path of actual files
random=yes ; Play the files in a random order

No volume or other sound adjustments are available (but you can use the WavePad sound editor from http://www.nch.com.au to do that or add effects).
If the file is available in the same format as the channel's codec, then it will be played without transcoding.
Files can be present in as many formats as you wish, and the 'best' format will be chosen at playback time.

NOTE:
If you are not using "autoload" in modules.conf, then you must ensure that the format modules for any formats you wish to use are loaded _before_ res_musiconhold. If you do not do this, res_musiconhold will skip the files it is not able to understand when it loads.

To transcode to ULAW (for example) using the 'switch' sound conversion software:

  • set the output format to .raw
  • in the encoder setings select:
    • Format: G711 ULAW
    • Sample: 8000
    • Channels 1 - Mono
  • put the transcoded files in the directory specified in musiconhold.conf
  • change the .raw extension to .ulaw

How to configure the voicemail system to send messages by email

I was not able to make Asterisk to work with the email client that came with the Linksys firmware (the voicemail message showed up appended to the text, instead of being attached as .wav file). I've installed esmtp which has a sendmail compatible syntax:

> ipkg install esmtp

Then, I created /opt/etc/esmtprc where I configured esmtp to use my ISP outgoing email server: hostname=smtp.my_outgoing_mail_server.net:25
username=yourusername
password=yourpassword
* note - the username/password should be the same account as used in the serveremail entry in the voicemail.conf file

In /opt/etc/asterisk/voicemail.conf I configured the following:

  • in [general] section I configured the 1st recording format to be wav49 because it can be played by windows media player.

format=wav49

  • enabled voicemail to send messages as email attachment

attach=yes

  • the serveremail line forms the 'From' part of the email header and will (most likely) be matched by your ISP against the username and password in the esmtprc file. (anti-spam etc)

serveremail=youusername@youremaildomain

  • the fromstring line forms the display portion of the 'From' email address - and as such an email from 'you' to 'you' could still bear the display name of 'myvm', and thus be sortable/filterable etc.

fromstring=emailfromdisplayname

  • configured the command used to send email

mailcmd=/opt/sbin/sendmail -t

  • note: the -t option allows esmtp to retreive the mailing information from the headers within the body (provided to esmtp by asterisk)
  • added the email address to each mailbox

400 => 1234,John Smith,my_email@address.com

Useful dialplan macros

Here are some useful asterisk dialplan macros I create based on examples posted on www.voip-info.org:

Useful features

Here are the recipes for some useful features:

Provisioning a Cisco 79XX series IP phone

The TFTP and HTML server capability of the NSLU2 can be used in conjunction with Asterisk to provision a Cisco 79XX series IP phone. For further information see: http://www.ambor.com/public/home_pabx/home_pabx.html

How to connect a YeaLink USB phone

This article describes how to connect and use a YeaLink USB-P1K handset with the NSLU2 as a standalone SIP VoIP phone.

How to make SIP work if NAT firewall is involved

  • in sip.conf, set nat=yes to the client definition:

[xlite1]
type=friend
regexten=401
username=xlite1
secret=passwd
context=default
callerid="John Smith" <401>
host=dynamic
nat=yes ; X-Lite is behind a NAT router
canreinvite=no
disallow=all
allow=ulaw
allow=gsm
mailbox=401@default

  • in the general section of sip.conf, provide either your domain or external IP if you don't have a domain:

externhost=yourdomain.net
externip = 200.201.202.203

  • configure your NAT router to forward the following ports to your NSLU2:

UDP 5060 for SIP (signalling)
UDP 10000-20000 for RTP (voice)

Make calls to/from IM clients

Call your sip address from your favorite IM client

Now thanks to gtalk2voip you can call your SIP address from your favorite IM client (yahoo messenger, windows live messenger, gtalk, or gizmoproject):

  • Setup:
    • from the gtalk2voip web page send yourself an invitation to join
    • add the gtalk2voip buddy to your buddies list
  • Make a call
    • open a chat window with the gtalk2voip buddy and send the following IM to it: CALL sip_address
    • gtalk2voip will first call the messenger (originating party) and after you accept the call it will call the sip address.

Call your favorite IM client from asterisk

Here is an example of how to setup asterisk to be able to call yahoo buddies:

  • define the following peer in sip.conf
    [yahoo-proxy-out]
    type=peer
    host=yahoo.com
    outboundproxy=yahoo.gtalk2voip.com
    fromuser=YourYahooID
    fromdomain=yahoo.com
    nat=yes
    canreinvite=no
    disallow=all
    allow=ulaw
    allow=gsm
    dtmfmode=rfc2833
  • create an extension for every yahoo ID you want to be able to call in your extensions.conf:
    exten => ExtensionForYahooBuddy,1,Dial(SIP/YahooBuddyID@yahoo-proxy-out,120,T)

gTalk

Here is an example of how to use asterisk 1.4 with Google Talk.

app_notify

Starting with asterisk14_1.4.13-2 app_notify is available (it can send notifications over the network to announce the callers name and telephone number to a desktop PC). For how to configure, check out [http://www.mezzo.net/asterisk/app_notify.html].

nslu2-asterisk group

For more information on using Asterisk on NSLU2 join the nslu2-asterisk group:
http://groups.yahoo.com/group/nslu2-asterisk/

PlugComputers - Asterisk and FreePBX

For PlugComputers (Pogoplug V1, V2, Pro, Biz, Seagate Dockstar, Goflex) the instructions previously, actually, work pretty well.
There may be some step I forgot but there was always a work around (e.g. let ln -s be your friend), check permissions
Don't do this unless you feel like thrashing a system and spending a lot of time. I can only give the highlights. I may have missed some steps. But Plug Computers definitely can run Asterisk and FreePBX using Optware, my setup has been rock solid for 3 months straight.
The setup I was able to try involved Asterisk 1.6, FreePBX 2.8, using Lighttpd
Make sure that you have a fair sized drive, I use a minimum of a 4 Gb USB flash.
Basically, follow the instructions previously and http://blog.hoopycat.com/2009/08/asterisk-freepbx-ubuntu-lighttpd-linode
Here is a summary from that article:
Install lighttpd with PHP and MySQL
Modules: php, phpmyadmin, php-fcgi, php-pear, php-mysql, fcgi, mysql.
Two things about the php package in Optware:

 1.  You will get errors if you do not initialize pear "pear install DB".  Make sure to place "/opt/share/pear" in your php.ini include_path.
Note: I get the question that when you run info.php, you get pear not installed. That's ok just as long as you downloaded pear-php.
2. More irritating was that that the repository php did not have gettext (can now download from nslu2-asterisk yahoo group file section).
This was actually easy to solve but was tedious:
Download the version of php source that you are using and build for just that module:
./configure --with-gettext=shared,/opt/bin
make
cp modules/gettext.so /opt/lib/php/extensions/
in php.ini
[extension section]
extension=gettext.so

Install Asterisk16 and Asterisk16-addons.
Also the Asterisk14 core and extra sounds with alaw and ulaw.
Install esmtp as above.
Create an asterisk user and group.
Download FreePBX "http://mirror.freepbx.org/freepbx-2.8.0.tar.gz"
Extract the file and go into the subdirectory

 mysqladmin -p create asterisk
mysqladmin -p create asteriskcdrdb
mysql -p asterisk < SQL/newinstall.sql
mysql -p asteriskcdrdb < SQL/cdr_mysql_table.sql
mysql -p
mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'secret';
mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'secret';
mysql> flush privileges;
mysql> \q
./install_amp --username=asteriskuser --password=secret

Follow the prompts and use the values in the previous part of this page (above), remember the file structure of this system is based on /opt.
Wherever you have asterisk or freepbx, make sure the files and directory are owned by asterisk user and group.
Make sure you have this start script in /opt/etc/init.d with a name like S99asterisk (just like above with a few modifications).

 #!/bin/sh

mount -o rw,remount /
if [ -f /opt/var/run/asterisk.pid ] ; then
kill `cat /opt/var/run/asterisk.pid`
else
killall asterisk
fi

rm -f /opt/var/run/asterisk.pid

umask 077

#/opt/sbin/asterisk
/opt/sbin/amportal start
mount -o ro,remount /

In "/etc", you need to make links to /opt/etc/asterisk and amportal.conf.
If you haven't done it, you need to change your var link from /tmp/var to /opt/var.
There should be links in /usr/sbin for amportal and safe_asterisk.
Also there should be a link from /opt/include to /usr/include.
So restart your system and make sure that asterisk starts.

Typing "ps -w" should get you:

  602 root       2344 S   /bin/sh /usr/sbin/safe_asterisk -U asterisk -G asterisk
609 asterisk 35840 S /opt/sbin/asterisk -f -U asterisk -G asterisk -vvvg -c

You should see if you can load the FreePBX web page.
Assuming everything went well, If you want to upgrade you FreePBX modules, now is the time before you set up your trunks and routes.
FOP tends to take up some memory so you might need to disable it in amportal.conf with FOPDISABLE=true
You can save some memory (somewhat necessary with a Dockstar) by shutting down my.pogoplug.com with a script in rcS that includes:

 /usr/bin/killall hbwd
/usr/bin/killall udhcpc
/usr/bin/killall hbplug
/usr/bin/killall dropbear (Make sure you install openssh if you do this.)

You can run "asterisk -r" to run cli (Asterisk Command Line Interface). Finally, if you want to install only Asterisk and not FreePBX, it is a lot quicker and fits nicely into a Dockstar (Remember, above, they did it with an NSLU2 with only 32Mb instead of the Dockstar's 128Mb or Pogoplug with 256Mb. FreePBX and Asterisk with all the trimmings is about 94 Mb). If you are a good Google jockey, you can actually search for a script and howto to send mp3 recordings of messages. A final caveat is to make sure your router firewall allows port 5060 to 5080 and port forwarding.

These instructions also works with a Pogoplug Pro with Asterisk 1.8 and FreePBX 2.8. In manager.conf, make sure that enable=yes. There may be symlink errors that can be fixed manually. Use Asterisk 1.8 in place of previous versions. Add-ons are included already. Use ulaw and alaw files from previous version.

Page last modified on April 16, 2011, at 06:54 AM