I’ve had a Raspberry Pie for a while now, and recently picked up a Beaglebone Black. Unlike the Pi, the BBB has onboard memory and a reasonably fast 1GHz processor. That means that when I was contemplating setting up a new phone switch, rather than using a computer or the Pi, I bought a new BBB to run it on. I also got a transparent case for the BBB.
The usual freeware VoIP phone system software is Asterisk. I run a production Asterisk system for one of my customers with a call center. I’ve traditionally run my own business’s phone system using Asterisk. Recently, I’ve been playing more with Freeswitch though. The main issue with Asterisk is the call logging. A call comes in to the system with an ID, but it doesn’t keep the same ID- for instance if a call is forwarded between extensions, it gets a new ID, which isn’t related to the old one. Same thing with going into a call queue- new ID, no relation. That makes call reporting a bit of a mess if you’re not simply dialing directly into an extension. Freeswitch by comparison is much, much more logical.
Initially, I tried to build Freeswitch on the default BBB install, but I got some very wonky linker errors. Rather than spending a few hours trying to track down the issues, I decided to install Debian and follow the instructions at http://www.bobjectsinc.com/tinycomputers/raspberry-pi-vs-beaglebone-black-building-freeswitch/ instead.
Installing Debian was a matter of downloading an install image onto an MMC card, pressing a button and rebooting the BBB. That installed the OS to the built-in flash, after which I changed the root password. Then I went to install Freeswitch, and ran out of storage. So that required mounting the MMC card and using it. I decided to mount the card on /usr/local since that’s where Freeswitch installs by default.
First, make a partition on the MMC card
# fdisk /dev/mmcblk1
n [for new partition]
p [for primary]
<enter> [default start]
<enter> [default end]
w [write the partition table]
q [quit fdisk]
Next, format the new partition
# mkfs.ext4 /dev/mmcblk1p1
Next, mount the partition on /usr/local
# mount /dev/mmcblk1p1 /usr/local
Then go to that directory
# cd /usr/local
Then we get the Freeswitch source code
# git clone -b v1.2.stable git://git.freeswitch.org/freeswitch.git
After that, we set up the build environment
#apt-get -y install g++ make
#apt-get -y install autoconf automake libtool libncurses5-dev libjpeg-dev liblzo2-2 libpkcs11-helper1 git gawk python-dev libtiff4-dev libperl-dev libgdbm-dev libdb-dev gawk bzip2
Then we build the software
# cd freeswitch
# sh -c './bootstrap.sh && ./configure && make all && make install'
# make cd-sounds-install
# make cd-moh-install
Then we add the following to /etc/fstab
/dev/mmcblk1p1 /usr/local ext4 defaults 0 2
Turn Freeswitch into a service (don’t remember how I did that.)
cp -pr rtl* /lib/firmware/rtlwifi/
add the line optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
This will disable the HDMI port allowing enough power for the USB WiFi dongle (EDIMAX.)
Looks like a NAT interface for a VM can cause the VM to die if you push too much traffic through it, while a pass-through interface handles the same load just fine.
I’m glad Apple added the ability to have multiple email signatures in IOS 6. I’m starting to use multiple accounts seriously again, and it’s useful!