Asterisk for Raspberry Pi on ArchLinux

From KlavoWiki
(Redirected from Asterisk for Raspberry Pi)
Jump to navigationJump to search

If you don't want to follow these instructions and would prefer to download an image you can do so by downloading the image from Asterisk for Raspberry Pi Image.

The following instructions are based on Arch Linux ARM (

Write Image to SD Card

Using Win32DiskImager and the latest version of Arch Linux ARM from Raspberry Pi write the image to the SD card.

Once the image is written insert the SD card into the Raspberry Pi and boot. The device will get an IP address from DHCP.

Update OS

pacman-key --init
pacman -Syu --noconfirm


Install utilities to help with setup/administration

pacman -S --noconfirm vim mlocate zip unzip

vi to vim

pacman -R --noconfirm vi
ln -s /usr/bin/vim /usr/bin/vi

Create ll alias

vi /root/.profile

Add the following line

alias ll="ls -la --color --group-directories-first --time-style=\"+%Y-%m-%d %H:%M\""

Time Synchronisation

cp -f /usr/share/zoneinfo/Australia/Brisbane /etc/localtime

Set IP Address

vi /boot/cmdline.txt

Add the following text. Make sure there is no carriage return at the end of the file and that everything is located on one line


Set DNS Servers, DNS suffix and DNS search.

vi /etc/resolv.conf

add the lines


After reboot check network settings

ip addr show dev eth0

other useful commands

ip addr add dev eth0
ip route add via dev eth0

ip addr delete dev eth0
ip route delete via dev eth0

Expand Partition

Now that the device has booted log on and change the default partition from 2 GB to the maximum partition of your SD card.

fdisk /dev/mmcblk0
d (delete)
2 (partition 2)
n (new)
p (primary partition)
2 (partition 2 as previously deleted)
enter (accept default start sector)
enter (accept default end sector)
w (write changes)


Once the rPi has rebooted

resize2fs /dev/mmcblk0p2

Swap File

As the rPi has limited RAM, either 256 or 512 depending on your version we'll create a swap file to allow application to use higher memory if required.

I would recommend allocating the size of the swap file to be that equal to the RAM size.

fallocate -l 512M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

The swap file is now active. We now need to ensure that it is used at boot.

vi /etc/fstab

add the line to the file

/swapfile none swap defaults 0 0

Enable Sound Card

vi /etc/rc.conf

add the line

pacman -S --noconfirm alsa-utils

Test with

aplay /usr/share/sounds/alsa/Front_Left.wav && aplay /usr/share/sounds/alsa/Front_Center.wav && aplay /usr/share/sounds/alsa/Front_Right.wav

Regional settings

Enable AU or country specific entries.

vi /etc/locale.gen
vi /etc/rc.conf


vi /etc/hostname

Asterisk Packages

Asterisk uses initscripts to start, stop and manage the asterisk service. This causes a conflict with network and ntpdate. We need to install initscripts but remove the networking and clock functions.

pacman -S --noconfirm initscripts 
vi /etc/rc.conf

Remove ntpdate, networking and sshd from DEAMONS=()

Install prerequisites for Asterisk.

pacman -S --noconfirm gcc make hgsvn libxml2 libnewt sqlite subversion mysql spandsp speex
systemctl enable mysqld.service
systemctl start mysqld.service

Secure mysql


Install Asterisk

Download and install Asterisk. You can refer to Asterisk Install if required, but only Asterisk is required.

Set Asterisk to Automatic

vi /etc/rc.conf

and add asterisk to DEAMONS



add the following lines to the file

/var/log/asterisk/messages /var/log/asterisk/*log {
   rotate 12
   create 0640 root root
       /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null


vi /etc/asterisk/logger.conf

change from:

;dateformat=%F %T


dateformat=%F %T %Z


pacman -R --noconfirm heirloom-mailx
rm /etc/mail.rc.pacsave
pacman -S --noconfirm ssmtp
vi /etc/ssmtp/ssmtp.conf

and add the lines


Edit aliases if required

vi /etc/ssmtp/revaliases

Install Apache

pacman -S --noconfirm apache php-apache php php-gd 
vi /etc/httpd/conf/httpd.conf

and modify the following

AllowOverride All
DirectoryIndex index.php index.html index.htm index.html.var
systemctl enable httpd.service

Configure php

vi /etc/php/php.ini


Locate date.timezone and change accordingly.

date.timezone = Australia/Brisbane

For a list of time zones

vi /etc/httpd/conf/httpd.conf

add the following lines in thier respective sections

LoadModule php5_module modules/
Include conf/extra/php5_module.conf
AddHandler application/x-httpd-php .php

uncomment the following lines

TypesConfig conf/mime.types
MIMEMagicFile conf/magic
vi /etc/httpd/conf/mime.types

add the following line

application/x-httpd-php5		php php5

systemctl start httpd.service

Note: The web root is /srv/http/


Refer to the Call Detail Records page which will allow Asterisk to write the CDR records to the database.


aCDR is a web appliction that allows you to search throught your CDR records. View the aCDR page on installation.

Backup Script

Refer to Asterisk Backup Shell Script for the script itself.

pacman -S --noconfirm smbclient


NOTE: To install the perl module requires more RAM that what is available on the 256MB model of the rPi. Make sure you have a swap file otherwise this section will fail.

pacman -S --noconfirm perl perl-yaml libyaml perl-libwww sox mpg123

Text to Speech

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Bundle::LWP"
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install CGI::Util"
mv googletts.agi /var/lib/asterisk/agi-bin/
chmod 755 /var/lib/asterisk/agi-bin/googletts.agi


cd /usr/src
tar xzvf mime-construct-1.11.tar.gz
rm -f mime-construct-1.11.tar.gz
cd mime-construct-1.11
perl Makefile.PL
make install 
cd ..
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Bundle::LWP"
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Proc::WaitStat"
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install MIME::Types"
mv fax2mail /usr/sbin/
chmod 755 /usr/sbin/fax2mail
mkdir /var/spool/asterisk/fax