Category: Raspberry Pi

Asterisk on a Raspberry Pi – which distribution is best?

Portions of this article were UPDATED July 20, 2016, mostly to include information about Raspivo.

To the best of our knowledge there are five projects that will allow you to run a PBX on a Raspberry Pi. They are:

In this discussion we are only going to consider the first four, because FusionPBX runs on top of FreeSWITCH, not Asterisk. And we have nothing against FreeSWITCH, but it’s never been big among home users and experimenters. Perhaps that should change, but for now we just want to consider the Asterisk-based distributions.

It does not seem as though µElastix ever really caught on with a significant group of English-speaking users, and therefore it would be difficult to offer any sort of opinion. But we will note that new users and those not all that familiar with Linux may have a bit more trouble with the installation process, since there is no image file provided as is the case for some other distributions. One potential advantage of µElastix is that it will run on a Raspberry Pi, PicoSam, or Mcuzone, though you are not likely to run into the latter two boards anywhere in North America.

As for Incredible PBX, this takes the typical Nerd Vittles/PBX in a Flash “throw in everything but the kitchen sink” approach, but then offers this ominous-sounding advice:

Here’s everything you need to know about security for Incredible Pi:

1. ALWAYS RUN INCREDIBLE PI BEHIND A SECURE HARDWARE-BASED FIREWALL/ROUTER
2. NEVER EXPOSE ANY INCREDIBLE PI PORTS DIRECTLY TO THE INTERNET
3. NEVER MAP INBOUND INTERNET PORTS FROM YOUR FIREWALL TO INCREDIBLE PI

What this basically means is that you can’t have any off-site extensions that register with your Asterisk server, if you heed their warning.  Well, you CAN, but not in any way that’s convenient for end users.  The problem apparently is that a few years ago someone connected with that project got hold of an article or two where someone got a huge phone bill by having an unsecured PBX, and had a major freakout about it.  There were probably several security failures associated with those incidents, but here is our question:  Since nobody in ANY other PBX project we’ve ever encountered gives advice like this, does this mean that Incredible PBX is incredibly insecure by design, and the only way to properly secure it is to take extraordinary steps such as these?

We’re not saying that all of this advice is out of line – the first point is probably a very good idea whenever possible – but most home users will be doing that anyway.  But it’s #3 we particularly take issue with.  If you want to have any external extensions, you pretty much need to forward UDP ports 5060 and 10000-20000 to your Asterisk server.  And the Incredible PBX people specifically tell you not to do that, rather than recognizing that for some users that is simply not a viable option.

The other issue we have with Incredible PBX is that it includes a lot of what we would consider frivolous add-ons.  The main reason people generally install a PBX is because they want to use it to make phone calls, and perform a few other basic functions such as record voicemail, let callers select a destination from an auto-attendant, and so on.  All of these basic functions are provided by FreePBX, and all the other add-ons are pretty much useless unless you are just installing a PBX to play with features.  We can just about guarantee you that 99 percent of your users will not care that they can dial a code and get tide reports, or some similar nonsense.  On a regular server that has a lot of CPU power and storage space, having a bunch of extras may not be a problem.  On a Raspberry Pi, however, you are probably going to want a lean, trim installation that doesn’t get in the way of the basic functionality of a PBX.

I’ve seen reports in mid-2016 that Incredible PBX will soon (and perhaps already does) offer a menu at installation where you can select which features you want. However you will need to choose carefully because if you reject an option and then later decide you want it, you might need to reinstall from scratch to get it. New users might not know which features are actually useful and which are needless bloat, but at least it appears some effort is underway to stop forcing users to take all or nothing.

Raspivo is based on XiVO, which has been around for a while but was relatively unknown in the English-speaking world until fairly recently. However it has generated a lot of interest due to users desiring an alternative to FreePBX, which seems to be getting less “free” (in all senses of that word) as time goes by. There is a discussion about XiVO on DSLReports that you may wish to read, which in turn contains several other useful links. My understanding is that the “official” English language translation of the installation instructions are somewhat out of date, so you may find that RonR’s instructions on DSLReports are easier to follow. Like FreePBX, XiVO is a GUI interface for Asterisk, so any custom dialplan you have written for another build of Asterisk should be usable (perhaps with minor modification) in Raspivo. It appears that you must have at least a Raspberry Pi 2 or newer to run Raspivo.

If you have no experience at all with software PBX’s and are just getting your feet wet, but you are not unfamiliar with programming, XiVO is the one I’d suggest. It makes repetitive tasks easier but doesn’t get in your way when you want to customize your system to the same degree that FreePBX does. However if you just want everything to be as easy as possible, and you never want to do any dialplan customizations (or only very limited ones), then you may want to consider Asterisk for Raspberry Pi, also known as RasPBX.

The RasPBX distribution includes Asterisk and FreePBX, with additional scripts that will optionally let you install HylaFAX and/or Fail2Ban. There is also a related version of this software for the BeagleBone Black. This software is relatively easy to install, comes with no ominous security warnings, and doesn’t include a lot of “bloatware”, which we think is a definite advantage. They also have a semi-active discussion forum where you can find several installation and usage tips. And it is possible to run RasPBX from an External USB HDD or Thumb Drive, in case you are worried that running a PBX off of an SD card might not be reliable, although there are ways to minimize writes to the SD card if you prefer not to have the added power drain of another device.

We realize that none of these distributions are absolutely perfect, and everyone will have their own reasons for picking one over another. The PBX in a Flash forum used to include a Raspberry Pi board, but it was apparently lost in their “Great server crash of 2013”, and they never bothered to reinstate it. So it seems that for them, the Raspberry Pi is just one of many platforms they are attempting to support, and it does not appear to us that they are making much of an attempt to optimize their software specifically for the Raspberry Pi. We might receive a few less than gracious comments for saying that, but that’s simply our observation, and others are free to disagree – we just recall the old saying, “Jack of all trades, master of none” and feel it might apply in the case of putting out a version of Incredible PBX for the Raspberry Pi that includes pretty much everything that the versions intended for larger servers include. For performance reasons, we’d prefer to stick with a distribution designed for the Raspberry Pi from the ground up, and therefore our preference has always been Asterisk for Raspberry Pi / RasPBX, though nowadays we’d suggest that anyone that wants to have complete control over their system might also consider Raspivo. Just be aware that the learning curve with Raspivo might be a bit steeper.

If you disagree, feel free to try any of the other distributions mentioned. That’s the nice thing about having choices – you can try various programs until you find one that meets your needs, and maybe even your wants.

One final point – since this article was originally written in 2013, new versions of the Raspberry Pi have appeared, and some of the above-mentioned software may have been updated to only run on newer models. Or they may run, but only painfully slowly, if you have an original Raspberry Pi. In particular, it appears that Raspivo will only run on the Raspberry Pi 2 or newer. So if you have a first-generation Raspberry Pi, pay attention to the system requirements for the software you are downloading, because you might need to seek out an alternate or older version of the software.

Links: How to extend the life of the SD card on a Raspberry Pi (or similar device)

People are using the Raspberry Pi for many applications these days, including as a VoIP PBX server based on Asterisk. One thing that many people forget is that you can only write to an SD card a limited number of times before it fails. Asterisk in particular likes to write a LOT of information to log files, and let’s face it, if you are honest and you are like 99% of Asterisk system administrators, you will admit you never read them unless perhaps you suspect there is a problem with your system. Yet every one of those many writes reduces your SD card’s lifespan by a small amount.

So with that in mind, here are links to a few threads that may or may not be helpful, in no particular order:

How can I extend the life of my SD card? (Raspberry Pi Stack Exchange)
How can I use a USB HDD to extend the life of my SD Card? (Raspberry Pi Stack Exchange)
Read/Write cycles of a SD card (RaspberryPi.org)
Extending the life of the SD card (RasPBX – Asterisk for Raspberry Pi/Sourceforge)
How to add ‘noatime’ to fstab? (AYK solutions)

Know of any other good links on the subject? Please leave a comment!

Cubieboard2 open single board computer ships, Cubietruck model revealed

This comes to us from LinuxGizmos:

The forthcoming Cubietruck will have additional I/O ports
The forthcoming Cubietruck will have additional I/O ports

The Cubieboard open SBC project began shipping a faster Cubieboard2 version of its open source Linux and Android SBC, and revealed prototypes of a new, larger, enhanced Cubietruck model. Like the $59 Cubiboard2, the Cubietruck uses an Allwinner A20 dual-core Cortex-A7 SoC instead of the original’s single-core Allwinner A10, and adds a 2GB RAM option, WiFi, Bluetooth, gigabit Ethernet, VGA, and SPDIF ports.

Read the full article here.

Note that the abbreviation “SBC” in the above-linked article stands for “single board computer”. In our opinion, if the Cubietruck works reliably it could relegate the BeagleBoard Black to also-ran status, and could even give the Raspberry Pi a run for its money among those who’d like just a bit more power and a wider selection of outputs. For Home Theater PC builders, the inclusion of a SPDIF Toslink optical port is no small thing. We’ll definitely be keeping an eye on this one!

How To Use The Raspberry Pi As A Wireless Access Point/Router, and other Raspberry Pi tricks

Just some quick links for the Raspberry Pi fans out there, from a multi-part series of articles on “How To : Use The Raspberry Pi As A Wireless Access Point/Router” via a blog called The Rantings and Ravings of a Madman:

Part 1 — How to create a Wireless Network On Your RPi
Part 2 — How to make your RPi into a Wireless Access Point
Part 3 — How to make your RPi into a Router
Part 3B – Issues with HostAPD ? Click here!

But the author of this blog didn’t stop there. Here are a few of his more recent articles, in a similar vein:

Script : WiFi Checker Script
Script : Starting hostapd when WiFi goes down
How To : Turn the Raspberry Pi Into a Shaping WiFi Router
Script : Web Configuration Page for Raspberry Pi
RaspAP WebGUI
How To : Use A RT5370 USB WiFi NIC In A Bridge

And in case you are thinking that the only things he knows how to do with a Raspberry Pi involve WiFi, guess again! Here is a link to all his Raspberry Pi related posts.

If you have an RSS newsreader, you might want to add his feed, or follow him on Twitter to get notifications of his latest blog posts.

If you know of any other great blogs for Raspberry Pi users that are of the same caliber as this one, please feel free to let us know in the comments!

Link: Build Your Own Raspberry Pi Case from Cardboard or Cardstock

From a company that sells Raspberry Pi’s in North America comes this:

One of our top selling accessories for the Raspberry Pi is the case. Cases for the Pi come in a multitude of styles, sizes and colors, but if you’re like us, you’re the type of person who loves to build it yourself. Today we’re going to build a bare-bones case out of cardboard with supplies you may already have laying around the house.

Read the rest of the article here:
Build Your Own Raspberry Pi Case from Cardboard or Cardstock (MCM Electronics)

In case you are wondering, the finished enclosure looks something like like this (depending on what you make it out of). Just be sure to use a non-conductive material:

An alternative way to power a Raspberry Pi

Did you know that you can use a $20 USB hub (but not just any old USB hub) to power a Raspberry Pi AND use the SAME hub to add additional USB ports to the Pi? Well, you can, as demonstrated in this video:

 

Direct YouTube Link

Apparently not all USB hubs will work, because many only put out something close to the 500 mA that is the specification for USB 2.0, whereas the Raspberry Pi Model B requires 700 mA. So, the hub has to put out a bit of extra current or it won’t power the Raspberry Pi properly.

There is a list of USB hubs that will work with the Raspberry Pi, but pay special attention to the comments in the rightmost column. Only a few of the USB hubs shown are known to be able to power the Raspberry Pi reliably. The one shown in the video is the Plugable 7 Port High Speed USB Hub, model USB2-HUB-AG7 (Amazon affiliate link – we make a small commission if you click on it and purchase a unit).

EDIT: A few weeks after we originally posted this article, the device described in the following article was released:

PiHub from Cyntech and Pimoroni – a new powered USB Hub for the Raspberry Pi

Unless you really don’t need that many USB ports, and you absolutely fall in love with the Raspberry-shaped case of the PiHub, we suggest you stick with the Plugable 7 Port hub mentioned above. Not only are you getting more USB ports, and a hefty 3 Amp power supply, but if you’re in the U.S.A. or Canada it’s actually available here and has mostly 4 and 5 star reviews on Amazon. And if you go with the PiHub, by the time you do the currency conversion (and let your credit card company take a small bite on the exchange rate), and pay for the shipping, you’ll be paying more and getting less (only four ports rather than the seven offered in the Plugable unit). But, you will be getting that lovely Raspberry-shaped case, so there’s that.

Video: Turning the Raspberry Pi into an FM transmitter with PiFM

Direct link to YouTube video

Link to page that describes how it’s done: Turning the Raspberry Pi Into an FM Transmitter

The interesting thing about this: Other than the Raspberry Pi and its power supply, the only external hardware required is a piece of wire to act as an antenna, and a way to connect it to the correct pin on the device!

Notes on setting up Raspbmc on a Raspberry Pi

A couple of days ago we published Notes on setting up OpenELEC on a Raspberry Pi. One thing we found a bit frustrating about OpenELEC was touched upon in that article:

OpenELEC is very fast but much of the file system is read only, and even if you SSH in as root you cannot edit many of the configuration files as you could on a normal Linux system. Sometimes there are ways around that.

Now if you are setting up a system for your grandparents, maybe not having a writable file system, nor access to tools like apt-get for installing additional software won’t bother you. But we found it did bother us. For example, we missed having access to Midnight Commander. While there is an unofficial way to install it on on OpenELEC, the developers apparently would prefer you don’t do that. Well, sorry, but that kind of thinking is not acceptable to us. It’s our system, and we want to be able to control it. In fact, it kind of goes against the whole spirit in which the Raspberry Pi was created to make an “untinkerable” distribution, although we can certainly understand why some people like it. Different strokes for different folks*, and all that.

So we decided to again try Raspbmc. We had tried it once before, but found the interface a bit slow and clunky. However, just a few days ago a new version was released, and reports were that it was faster. So, we decided to give it another try. This time, we installed it using the instructions found here, which are for users that will be writing to the SD card using an OS X or Linux system. If you were using Windows for this task, you’d use these instructions instead. This only writes an installer to the card, and when you place the card into the Raspberry Pi and boot it up it will complete the installation. You must have an active Internet connection for the installation to complete.

The interface in the new version of Raspbmc does seem faster than in the previous version we’d tried. Some things may still be a bit slower than in OpenELEC – we particularly noticed that it took a bit longer for fanart to appear after we’d made a selection.

One thing that had bothered us about OpenELEC was that you could not change the Samba password. In Raspbmc it is easy, you simply SSH into the device (as user pi, default password raspberry) and enter:

sudo smbpasswd -a pi

Also if you want to change the SSH password, which we highly recommend, you simply do:

sudo passwd pi

In either case you will be prompted for the new password.

You can install Midnight Commander in the normal way, using apt-get install mc and it seems to work fine. Another thing we had an issue with in OpenELEC was changing the Samba share name. It’s easier to do this in Raspbmc, but still perhaps a bit non-obvious. The easiest way to do it is simply edit /etc/hostname and change name in that file – this is also picked up by Samba, though you may need to reboot and wait some time before the new share name appears and the old one disappears – it took about 20 minutes on our systems.

One thing we noticed about Raspbmc is that XBMC’s RSS feed is turned off by default. This was a major contributor to high CPU usage in OpenELEC. Not that higher CPU usage is really all that bad, but some people like to see a lower figure. Note that you cannot get an accurate reading from the XBMC GUI – to see an accurate representation of CPU usage you must SSH into the system and use the top command.

Speaking of SSH, one weird thing about RaspBMC is that the first time you SSH into the device, you’ll be asked to select a language and timezone. Always select at least the UTF-8 version of your preferred language – that is probably the only one you need. That’s the first time we’ve ever seen this information requested on an initial SSH login to a system.

* A line from “Everyday People” by Sly and the Family Stone (1968)

Notes on setting up OpenELEC on a Raspberry Pi

First, before you go out an buy a Raspberry Pi for this purpose, keep in mind that it does not have any type of digital audio output (such as a TOSLINK connector), other than the HDMI output – see discussion here. This may or may not be an issue in your installation, but you should be aware of that going into the project.

While you could use NOOBS to set up OpenELEC, you may not get the latest version. You are better off using these installation instructions and downloading the latest build.

OpenELEC is very fast but much of the file system is read only, and even if you SSH in as root you cannot edit many of the configuration files as you could on a normal Linux system. Sometimes there are ways around that. For example, Samba by default is controlled by the file /etc/samba/smb.conf. But you can’t edit that file. However, if you navigate to the /storage/.config directory you will find a file called samba.conf.sample. If you copy or rename that file to samba.conf in the same directory, then that becomes the file that controls Samba, and you can edit that file. For example, you can change the share name by editing the line server string = OpenELEC and changing OpenELEC to something else, and then find the line netbios name = %h and change the %h to the same thing you used as the value for the server string.

Also if you don’t want your Raspberry Pi acting as a Master Browser for your local network, you can comment out the following lines in samba.conf, as shown here:

# domain master = yes
# local master = yes
# preferred master = yes

When you are in XBMC you may notice that the CPU usage seems high. This is apparently because of two things. First, the act of measuring the usage in XBMC and drawing the usage bar on the GUI actually consumes significant CPU power. You can confirm this by using SSH and then the top command to view actual actual usage. When you are on screens that are completely static, with nothing being continually redrawn, the CPU usage will be lower. But also, if you go into XBMC’s settings (System | Appearance | Skins) and turn off the RSS feed, your CPU usage will drop considerably. Note that actually playing video content actually causes CPU usage to decrease since the work of drawing the screen is transferred to the GPU. On the other hand, leaving the XBMC GUI parked on certain pages may cause CPU usage to increase – for example, we found that if we went to a page that displayed large size thumbnails and fanart, the CPU usage shot up considerably.

To get a PVR plugin to work, you must first enable Live TV. Only then will you be given the option to pick a PVR frontend, But note that even if you set it up properly, you might get audio only and no video. As best I can determine, the reason is that neither the Raspberry Pi nor OpenELEC contains a license to play MPEG2 video. The Raspberry Pi folks will be happy to sell you a license, but we didn’t bite so have no idea if it works or not, and we have read where others have had mixed results. Keep in mind that MythTV, and probably other PVR backends, have the ability to transcode recorded programs to another format that does not require a license, so if all you want to do is watch previously recorded content and not actual live TV, you could just set up the backend to transcode everything to a format that the Raspberry Pi will play after it is recorded.

OpenELEC and the Raspberry Pi will output 1080p, however it appears that on some TV’s you need to go into XBMC’s setting and explicitly specify playback at 1080p, otherwise it will default to 720p. This happened for us on one TV set but not on another.

One question remains, some older TV’s need a “CVT reduced blank” signal before they will offer a Dot-by-Dot mode that has no overscan issues. In normal systems you can change this by using specific software, or in Linux, a specific ModeLine in the xorg.conf file. But it appears that OpenELEC has no support for this. This might make OpenELEC a poor choice for those users. Fortunately, you can also try other distributions for the Pi, such as Raspbmc, XBian, or GeeXboX.

Some people are gluttons for Pi: Mounting multiple Raspberry Pi devices

Some fans of the Raspberry Pi just can’t get enough, it seems, and have devised various ways to mount multiple Pis. In fact, when this idea occurred to us, we thought we had the perfect name for such a device – the Pi Rack – until we found out that name was taken by hydroponic growing systems that are sometimes used to grow medical marijuana, and other types of plants. So, guess that idea was only half-baked.

(We’ll pause a moment while you groan at that bad pun, realizing it works two ways. You know, baked pi(e), and baked from… do we really need to spell it out?)

Anyway, we came across this clever way to mount multiple Raspberry Pis, using a block of plywood and the audio and video jacks as mounts:

DSC04761

For more photos, and details on construction and the components used, see this article and the comments underneath:
Simple Pi Rack (raspberrypi.org)

Recent Posts

Recent Comments

Archives

Categories

Meta

GiottoPress by Enrique Chavez

%d bloggers like this: