I'm a big fan of Asterisk on router -- imho, it's the perfect platform for anyone want to try Asterisk at home -- 24x7, fanless and even the cheapest router can handle at least 2-3 concurrent conversation. Before this WZR-HP-G300NH, I had Asterisk running on a WRT54G-TM for over a year with lots of fun.
Installing Asterisk on the router is easier now as current OpenWrt trunk build(the one we use) includes prebuilt Asterisk binaries. As always, since OpenWrt is designed to work with / not /opt, some adjustment is required to get Asterisk working properly.
- Install Asterisk 1.6
Believe it or not, DD-WRT MEGA also has Asterisk included -- it's an old ver1.4 and some important files are missing -- I have no idea why DD-WRT decided to do so, too much flash ROM? Anyway, to install Asterisk 1.6 on our opkg enabled router, run
opkg install asterisk16
You may also want to install some additional modules like:
opkg install asterisk16-res-agi
opkg install asterisk16-res-musiconhold
To view a full list of Asterisk packages(lots of them!), run
opkg list | grep asterisk16 - The configuration file: asterisk.conf
With our installation, the asterisk.conf is in /opt/etc/asterisk/asterisk.conf. Change it to the contents below:
[directories] ; remove the (!) to enable this
astetcdir => /opt/etc/asterisk
astmoddir => /opt/usr/lib/asterisk/modules
astvarlibdir => /opt/usr/lib/asterisk
astdbdir => /opt/usr/lib/asterisk
astkeydir => /opt/usr/lib/asterisk
astdatadir => /opt/usr/lib/asterisk
astagidir => /opt/usr/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk - Asterisk configuration
By default, asterisk loads lots of modules, you can change the settings to fit your needs and reduce memory usage.
Below is a sample of /opt/etc/asterisk/modules.conf with reduced modules:
[modules]
autoload=no ; only load explicitly declared modules
load => app_dial.so
load => app_echo.so
load => app_macro.so
load => app_playback.so
load => chan_sip.so
load => codec_ulaw.so
load => pbx_config.so
load => format_pcm.so
load => format_wav.so
load => func_callerid.so
load => func_strings.so
load => res_musiconhold.so
load => res_agi.so
For SIP users, other important files including /opt/etc/asterisk/extensions.conf and /opt/etc/asterisk/sip.conf. These are not covered here, please refer to website about Asterisk like asteriskguru and voip-info.org. Also, here is a must-read ebook: Asterisk: The Future of Telephony Second Edition(download the PDF book) - Run it as service
Create file /opt/etc/init.d/asterisk with below(delete previous contents if its not empty)
source /mnt/root/.profile
mkdir -p /var/run/asterisk
mkdir -p /var/spool/asterisk
mkdir -p /var/log/asterisk/cdr-csv
/opt/usr/sbin/asterisk -C /opt/etc/asterisk/asterisk.conf
And run
chmod a+x /opt/etc/init.d/asterisk
ln -s /opt/etc/init.d/asterisk /opt/etc/init.d/S95asterisk
[compat]
pbx_realtime=1.6
res_agi=1.6
app_set=1.6
As you can see, by modifying this file, we tell Asterisk to look for files at /opt/etc/asterisk and /opt/usr/lib/asterisk instead of default locations, which fits our installation.
Now try to launch asterisk by running:
asterisk -vvvvvc
Exit by pressing ctrl+c
That's all. Enjoy Asterisk and happy VoIP!