Today we are pleased to introduce a third 2018 update for Incredible PBX® and the Raspberry Pi® to celebrate the arrival of SRTP encrypted communications thanks to the Herculean efforts of @qtlnx of PIAF Forum fame. And, of course, this new build supports the new RasPi 3B+ which features all-new wireless networking, a new USB/Ethernet hub with gigabit Ethernet support, new on-board power supplies, a new BCM2837 chip, and POE support using an upcoming PoE HAT. In addition to a 17% clock speed bump for the 64-bit quad-core ARM Cortex-A53 CPU, the hardware upgrades represent almost all of the circuitry on the board. On the PBX side, in addition to Asterisk® 13 with preconfigured Google Voice OAuth 2 support, this new build includes most of the FreePBX® 13 GPL modules plus dozens of Incredible PBX applications for Asterisk. It’s one terrific platform! For Cisco phone buffs, it also includes SCCP support as well as chan_mobile for those wishing to interconnect a cellphone to your PBX. By popular request, you now can run Incredible PBX from an external USB hard drive as well. And, of course, Incredible PBX is and always will be FREE.

We originally had planned to move up from Raspbian 8 Jessie to the Raspbian 9 Stretch platform with this build, but we hit some major stumbling blocks since FreePBX depends upon PHP 5.6. For the pioneers, we have produced a Raspbian 9 version which runs with a Raspbian emulator that includes PHP 5.6 under VirtualBox on almost any desktop PC or Mac. It also showcases the entire collection of RasPi goodies including LibreOffice. You’ll find it in the SourceForge repo together with the new Raspbian 8 version supporting all of the Raspberry Pi hardware including the 3B+.

Raspberry Pi 3 Performance. Gone are the days of worrying about Raspberry Pi performance. Both the user interface and call quality now match what you’d expect to find on a $300-$500 VoIP server. Even with a Raspberry Pi 2, we have detected no performance degradation thanks to the latest Raspbian 8 OS and a virtually flawless Asterisk 13 platform. For best results, we recommend 32GB Class 10 microSD cards which now are plentiful for under $15.1

Raspberry Pi 3 Shopping List. Before you can install Incredible PBX, you’ll need a compatible Raspberry Pi 3 platform. Here’s the short list:

  • $35* Raspberry Pi 3B+ from Newark or Amazon
  • $10 Power Adapter (2.5 amps minimum!)
  • $13 32GB microSDHC Class 10 card
  • £12.95 Rainbow Pibow case or $6.99 Official RasPi3 case
  • About That Asterisk. We write about Asterisk® regularly, but the asterisk we’re talking about is the one accompanying the $35* price tag for the Raspberry Pi 3. Yes, that’s the advertised price. And, no, you’re probably not going to pay that. There are the marked up shipping prices, the bundled add-on’s that you don’t need or want, and the must-have accessories like a power adapter. We’re assuming you already own a USB keyboard and an HDMI-compatible monitor. If so, just plan on $100 and consider yourself lucky if you get all the pieces for less.

    Incredible PBX Feature Set. Where to begin? Let’s start with the Alphabet Stew: IAX, SIP, GVSIP, SMS, Opus, and SRTP functionality. Voice Recognition and Text-to-Speech VoIP application support using FLITE, GoogleTTS, and PicoTTS. Free calling with Google Voice, Simonics SIP gateway, or RingPlus cellular service. And all of your Nerd Vittles favorites: Fax, AsteriDex, Click-to-Dial, News, Weather, Reminders, and Wakeup Calls. Plus hundreds of features that typically are found in commercial PBXs: Conferencing, IVRs and AutoAttendants, Email Delivery of Voicemail, Voicemail Blasting, and more…

    10-Layer Network Security Model. Most phone calls cost money. Unlike many of the other "free" VoIP solutions, our most important criteria for VoIP is rock-solid security. If your free server ends up costing you thousands of dollars in phone bills due to fraud, guess what? It isn’t free at all. Once you plug in that network cable, you’ve painted a bullseye on your checkbook.

    No single network security system can protect you against zero-day vulnerabilities that no one has ever seen. Deploying multiple layers of security is not only smart, it’s essential with today’s Internet topology. It works much like the Bundle of Sticks from Aesop’s Fables. The more sticks there are in your bundle, the more difficult it is to break them apart. If a vulnerability suddenly appears in the Linux kernel, or in Asterisk, or in Apache, or in your favorite web GUI, you can continue to sleep well knowing that other layers of security have your back. No one else in the telecommunications industry has anything close. Ours is all open source GPL code so we would encourage everyone to get on board and do their part to make the Internet a safer place!

    Do your part and do your homework. Comparison shop as if your phone bill matters! 😉 Incredible PBX provides:

    1. Preconfigured IPtables Linux Firewall
    2. Preconfigured Travelin’ Man 3 WhiteLists
    3. Randomized Port Knocker for Remote Access
    4. TM4 WhiteListing by Telephone (optional)
    5. Fail2Ban Log Monitoring for SSH, Apache, Asterisk
    6. Password Customization
    7. Automatic Update Utility for Security & Bug Fixes
    8. Asterisk Manager Lockdown to localhost
    9. Apache htaccess Security for Vulnerable Web Apps
    10. Security Alerts via RSS Feeds in the Incredible PBX GUI

    Installation Tutorial. Here’s everything need to know about installation and setup. "Automatic" means you just watch.

    1. Download and unzip Incredible PBX 13-13 image from SourceForge (with GV OAuth)
    2. Transfer Incredible PBX image to microSD card
    3. Boot Raspberry Pi from new microSD card (8GB or larger)
    4. Login to RasPi console as root:password to initialize your server (Automatic)
    5. In raspi-config Advanced Options, Expand FileSystem to fill your SD card
    6. Reboot after writing down your server IP address (Automatic)
    7. Login via SSH or Putty as root:password to set passwords & setup firewall (Automatic)
    8. Install Incredible Fax: /root/ (Credentials: admin:password)
    9. Enjoy!

    Upgrading to RasPi 3B+ Platform

    If you have an existing Incredible PBX server running on a Raspberry Pi 3, it’s easy to upgrade your setup so that you can swap out the hardware and use the newer RasPi 3B+. The trick is to perform the following upgrade steps on the Raspberry Pi 3 before moving the microSD card to a 3B+. Otherwise, the 3B+ will not boot. Here are the commands to issue after logging into your Raspberry Pi 3 as root:

    apt-get update
    apt-get dist-upgrade
    apt-get clean
    rpi-update ef7621d91cb58ccc856c3c17ddda28685edd23f3
    cd /root
    dpkg -i firmware-brcm80211_20161130-3+rpt3_all.deb

    After completing the upgrade, be sure to run raspi-config and set the proper WiFi locale, or attempts to connect to your server via WiFi will fail.

    Running PBX from External USB Drive

    CAUTION: If you wish to use an external USB-powered drive with your Raspberry Pi to get better performance and enhanced reliability, then you’ll want to stick with the Raspberry Pi B for the time being because the B+ does not yet support booting from an external drive that lacks an independent power source. See this thread for details.

    With older versions of the Raspberry Pi, you may wish to consider an external USB drive to supplement your Incredible PBX for Raspberry Pi setup. If this is a production system on which you depend for important calls, we would highly recommend it. Begin by formatting the USB drive as a DOS FAT32 drive. Then install the Incredible PBX image on the USB drive using the same procedure outlined above for your microSD card. Be sure you choose the correct drive! Now boot your Raspberry Pi with the USB drive plugged in. Login as root and issue the command: mount /dev/sda2 /mnt. Using nano, edit /mnt/etc/fstab. Change /dev/mmcblk0p2 to /dev/sda2 and save the file. Edit /boot/cmdline.txt and change /dev/mmcblk0p2 to /dev/sda2. Then add the following to the end of the line: rootdelay=5. Save the file and reboot your server leaving the microSD card in place.

    As configured, your server will now boot to the external USB drive, but the usable space on the drive will be the original 4GB partition. To expand it, do the following carefully. Log back into your server as root. Issue the command: fdisk -cu /dev/sda. List the partitions on your external drive by typing p. Write down the starting sector number for the sda2 partition. For example, on a 1 terabyte drive, it will be something like 131072. Now delete the sda2 partition by typing d and then choosing 2. Create a new primary partition by typing n then p then 2. When prompted for the starting sector, enter the number you wrote down for the sda2 partition above. Press ENTER. When prompted for the ending sector, just press ENTER to accept the default. Now type w to write your changes to the drive. Reboot. Log back into your server as root and issue the following command to expand the primary partition to use the entire disk: resize2fs /dev/sda2. You can verify the new size of your drive by running pbxstatus.

    Configuring Trunks with Incredible PBX

    Before you can actually make and receive calls, you’ll need to add one or more VoIP trunks with providers, create extensions for your phones, and add inbound and outbound routes that link your extensions to your trunks. Here’s how a PBX works. Phones connect to extensions. Extensions connect to outbound routes that direct calls to specific trunks, a.k.a. commercial providers that complete your outbound calls to any phone in the world. Coming the other way, incoming calls are directed to your phone number, otherwise known as a DID. DIDs are assigned by providers and you register your trunks using credentials handed out by these providers. Incoming calls are routed to your DIDs which use inbound routes telling the PBX how to direct the calls internally. A call could go to an extension to ring a phone, or it could go to a group of extensions known as a ring group to ring a group of phones. It could also go to a conference that joins multiple people into a single call. Finally, it could be routed to an IVR or AutoAttendant providing a list of options from which callers could choose by pressing various keys on their phone.

    We’ve done most of the prep work for you with Incredible PBX. We’ve set up an Extension to which you can connect a SIP phone or softphone. We’ve set up an Inbound Route that, by default, sends all incoming calls to a Demo IVR. And we’ve built a dozen trunks for some of the best providers in the business. Sign up with the ones you prefer, plug in your credentials, and you’re done. Or follow this tutorial to add 300 wholesale trunk providers instantly.

    Unlike traditional telephone service, you need not and probably should not put all your eggs in one basket when it comes to telephone providers. In order to connect to Plain Old Telephones, you still need at least one provider. But there is nothing wrong with having several. And a provider that handles an outbound call (termination) need not be the same one that handles an incoming call (origination) and provides your phone number (DID). We cannot recommend Vitelity highly enough, and it’s not just because they have financially supported our projects for almost a decade. They’re as good as VoIP providers get, and we use lots of them. If you’re lucky enough to live in the U.S., you’d be crazy not to set up a Google Voice account. It’s free as are all phone calls to anywhere in the U.S. and Canada. The remaining preconfigured providers included in Incredible PBX are equally good, and we’ve used and continue to use almost all of them. So pick a few and sign up. You only pay for the calls you make with each provider so you have little to lose by choosing several. The PIAF Forum includes dozens of recommendations on VoIP providers if you want additional information.

    With the preconfigured trunks in Incredible PBX, all you need are your credentials for each provider and the domain name of their server. Log into Incredible PBX GUI Administration as admin using a browser. From the System Status menu, click Connectivity -> Trunks. Click on each provider you have chosen and fill in your credentials including the host entry. Be sure to uncheck the Disable Trunk checkbox! Fill in the appropriate information for the Register String. Save your settings by clicking Submit Changes. Then click the red Apply Config button.

    Incredible PBX Wholesale Providers Access

    Nerd Vittles has negotiated a special offer that gives you instant access to 300+ wholesale carriers around the globe. In lieu of paying the $650 annual fee for the service, a 13% wholesale surcharge is assessed to cover operational costs of TelecomsXchange. In addition, TelecomsXchange has generously offered to contribute a portion of the surcharge to support the Incredible PBX open source project. See this Nerd Vittles tutorial for installation instructions and signup details.

    Configuring a Softphone for Incredible PBX

    We’re in the home stretch now. You can connect virtually any kind of telephone to your new PBX. Plain Old Phones require an analog telephone adapter (ATA) which can be a separate board in your computer from a company such as Digium. Or it can be a standalone SIP device such as ObiHai’s OBi100 or OBi110 (if you have a phone line from Ma Bell to hook up as well). SIP phones can be connected directly so long as they have an IP address. These could be hardware devices or software devices such as the YateClient softphone. We’ll start with a free one today so you can begin making calls. You can find dozens of recommendations for hardware-based SIP phones both on Nerd Vittles and the PIAF Forum when you’re ready to get serious about VoIP telephony.

    We recommend YateClient which is free. Download it from here. Run YateClient once you’ve installed it and enter the credentials for the 701 extension on Incredible PBX. You’ll need the IP address of your server plus your extension 701 password. Choose Applications _> Extensions -> 701 and write down your SIP/IAX Password. You can also find it in /root/passwords.FAQ. Fill in the blanks using the IP address of your Server, 701 for your Username, and whatever Password you assigned to the extension when you installed Incredible PBX. Click OK to save your entries.

    Once you are registered to extension 701, close the Account window. Then click on YATE’s Telephony Tab and place some test calls to the numerous apps that are preconfigured on Incredible PBX. Dial a few of these to get started:

    DEMO - Apps Demo
    123 - Reminders
    947 - Weather by ZIP Code
    951 - Yahoo News
    *61 - Time of Day
    TODAY - Today in History

    If you are a Mac user, another great no-frills softphone is Telephone. Just download and install it from the Mac App Store.

    Google Voice Setup on the Google Side

    Overview. If you’re new to Google Voice, here’s how the installation scenario goes. First, you set up a Gmail account at Next, you create a Google Voice account. Then, you configure Google Voice for use with Asterisk®. Next, you obtain your Google Voice OAuth 2 Refresh Token which becomes your password to use in configuring Google Voice on the Incredible PBX platform. Log into the Incredible PBX GUI with a browser and choose Connectivity:Google Voice to set up your Google Voice trunk. Finally, set up your incoming and outgoing routes for your Google Voice calls. To add more Google Voice trunks, you simply repeat the drill. You now should have a perfectly functioning, free VoIP platform compliments of Google.

    If you’re one of the five people on Earth that does not yet have a Gmail account, start there. Once you’ve set up your Gmail account and logged in, open a new browser tab to access the Google Voice site. Accept the Google Terms and Privacy Policy. Then choose a new Phone Number in your favorite area code. NOTE: Before Google will assign you a number, you must enter an existing U.S. phone number to verify your identity and location as well as to use for initially forwarding calls. Once your account is set up, you will get an email asking that you verify your email address. Once you’ve done that, you’ll be prompted to login to your Google Voice account again. When you do so, you’ll be prompted to Install the Hangouts Dialer app to make VoIP calls from Android. Do NOT install the dialer! Instead, click X to close the dialog box.

    Be advised that Google continues to tighten up the ability to obtain more than one Google Voice number from the same computer or the same IP address. If this is a problem for you, here’s a workaround. From your smartphone, install the Google Voice app from iPhone App Store or Google’s Play Store. Then open the app and login to your new Google account. Choose your new Google Voice number when prompted and provide a cell number with SMS as your callback number for verification. Once the number is verified, log out of Google Voice. Do NOT make any calls. Now head back to your PC’s browser and login to You will be presented with the new Google Voice interface which does not include the Google Chat option. But fear not. At least for now there’s still a way to get there. After you have set up your new phone number and opened the Google Voice interface, click on the 3 vertical dots in the left sidebar (it’s labeled More). When it opens, click Legacy Google Voice in the sidebar. That will return you to the old UI. Now click on the Gear icon (upper right) and choose Settings. Make sure the Google Chat option is selected and disable forwarding calls to whatever default phone number you set up.

    Next, click on the Calls tab. Make sure your settings match these:

    • Call ScreeningOFF
    • Call PresentationOFF
    • Caller ID (In)Display Caller’s Number
    • Caller ID (Out)Don’t Change Anything
    • Do Not DisturbOFF
    • Call Options (Enable Recording)OFF
    • Global Spam FilteringON

    Under the Voicemail tab, plug in your email address so you get notified of new voicemails. Then click Save Settings. Down the road, receipt of a Google Voice voicemail will be a big hint that something has come unglued on your PBX.

    One final word of caution is in order regardless of your choice of providers: Do NOT use special characters in any provider passwords, or nothing will work!

    Now it’s time to obtain your OAuth 2 credentials. Even though it’s a bit more work on the front end, the good news is you won’t have to worry about your Google Voice trunks failing when Google phases out plain-text passwords. The other good news is you won’t be passing your plain-text Google Voice credentials across the Internet for everyone in the world to see.

    Obtaining Your Google Voice OAuth 2 Credentials

    While you’re still logged into your Google Voice account, you need to obtain a refresh_token which is what you’ll use instead of a password when setting up your Google Voice account with XiVO. Here’s how.

    1. Be sure you are still logged into your Google Voice account. If not, log back in at

    2. Go to the Google OAUTH Playground using your browser while still logged into your Google Voice account.

    3. Once logged in to Google OAUTH Playground, click on the Gear icon in upper right corner (as shown below).

      3a. Check the box: Use your own OAuth credentials
      3b. Enter Incredible PBX OAuth Client ID:

      3c. Enter Incredible PBX OAuth Client secret: 4ewzJaCx275clcT4i4Hfxqo2
      3d. Click Close

    4. Click Step 1: Select and Authorize APIs (as shown below)

      4a. In OAUTH Scope field, enter:
      4b. Click Authorize APIs (blue) button.

    5. Click Step 2: Exchange authorization code for tokens

      5a. Click Exchange authorization code for tokens (blue) button

      5b. When the tokens have been generated, Step 2 will close.

    6. Reopen Step 2 and copy your Refresh_Token. This is the "password" you will need to enter (together with your Gmail account name and 10-digit GV phone number) when you add your GV trunk in the Incredible PBX GUI. Store this refresh_token in a safe place. Google doesn’t permanently store it!

    7. Authorization tokens NEVER expire! If you ever need to remove your authorization tokens, go here and delete Incredible PBX Google Voice OAUTH entry by clicking on it and choosing DELETE option.

    Switch back to your Gmail account and click on the Phone icon at the bottom of the window to place one test call. Once you successfully place a call, you can log out of Google Voice and Gmail.

    If you have difficulty finding the Google Chat option after setting up a new Google Voice account, follow this tutorial.

    Yes, this is a convoluted process. Setting up a secure computing environment often is. Just follow the steps and don’t skip any. It’s easy once you get the hang of it. And you’ll sleep better.

    Another option is to use an inexpensive SIP Gateway to Google Voice. The Simonics trunk in the Incredible PBX GUI is preconfigured for this purpose. All you’ll need is your Google Voice credentials. Get started with this tutorial.

    Google Voice Setup on the Incredible PBX Side

    Now you’re ready to set up your Google Voice trunk in the Incredible PBX GUI. After logging in with your browser, click the Connectivity tab and choose Google Voice/Motif. To Add a new Google Voice account, just fill out the form. Do NOT check the third box or incoming calls will never ring!

    IMPORTANT LAST STEP: Google Voice will not work unless you restart Asterisk from the Linux command line at this juncture. Using SSH, log into your server as root and issue the following command: amportal restart.

    If you have trouble getting Google Voice to work (especially if you have previously used your Google Voice account from a different IP address), try this Google Voice Reset Procedure. It usually fixes connectivity problems. If it still doesn’t work, enable Less Secure Apps using this Google tool.

    An Outbound Route for Google Voice calling is automatically configured as part of the Google Voice trunk setup. The only other piece you need is to create an Inbound Route to tell Incredible PBX where to route incoming calls from your Google Voice DID. In Connectivity:Inbound Routes, add a new Incoming Route specifying your 10-digit Google Voice number as the DID Number. Choose whether to listen for fax calls if you have installed the fax module. Then enable CallerID Superfecta to add CallerID names to your incoming calls. Finally, designate a Destination for the incoming calls. This could be an extension, a ring group, or an IVR depending upon your own PBX setup.

    Speech Recognition with Incredible PBX

    To support many of our applications, Incredible PBX has included Google’s speech recognition service for years. These applications include Weather Reports by City (949), AsteriDex Voice Dialing by Name (411), and Wolfram Alpha for Asterisk (4747), all of which use Lefteris Zafiris’ terrific speech-recog AGI script. Unfortunately (for some), Google now has tightened up the terms of use for their free speech recognition service. Now you can only use it for "personal and development use." If you meet those criteria, keep reading. Here’s how to activate speech recognition on Incredible PBX. Don’t skip any steps!

    To use Wolfram Alpha by phone, you first must obtain a free Wolfram Alpha APP-ID. Then issue the following command replacing APP-ID with your actual ID. Do NOT change the yourID portion of the command:

    sed -i "s|yourID|APP-ID|" /var/lib/asterisk/agi-bin/4747

    Now you’re ready to try out the speech recognition apps. Dial 949 and say the name of a city and state/province/country to get a current weather forecast from Yahoo. Dial 411 and say "American Airlines" to be connected to American.

    To access Wolfram Alpha by phone, dial 4747 and enter your query, e.g. "What planes are overhead." Read the Nerd Vittles tutorial for additional examples and tips.

    Enabling WiFi on the Raspberry Pi

    With the Raspberry Pi 3, wi-fi hardware is included. With the Raspberry Pi 2, you’ll need to add an inexpensive wifi dongle. The next step is connecting to your WiFi router. Simply open /etc/wpa_supplicant/wpa_supplicant.conf with your favorite editor and insert or edit the following code using the actual SSID name and password to access your local, password-protected WiFi router or any open WiFi network:


    Finally, stop and restart the wlan0 interface, count to 15, and check the status of your server to decipher the new IP address for your WiFi connection:

    ifdown wlan0
    ifup wlan0

    If you want to run your Raspberry Pi exclusively off the WiFi connection, simply unplug the network cable from your RasPi and reboot your server.

    On some systems, Wi-Fi connectivity to unprotected wireless networks is enabled by default. If this causes problems for you because of neighbors’ networks, remove the key_mgmt-NONE section of code from /etc/wpa_supplicant/wpa_supplicant.conf before restarting your network. Or you can disable WiFi and/or Bluetooth entirely by issuing one or both of the following commands and rebooting your server:

    echo "dtoverlay=pi3-disable-wifi" >> /boot/config.txt
    echo "dtoverlay=pi3-disable-bt" >> /boot/config.txt

    Lessons Learned with the Raspberry Pi 3

    As with all new devices, you learn some things as you go along. So we’re providing an update to our original article to offer a couple of additional tips and tricks for those that want to travel with a RasPi…

    Alternative Power Sources. If you’re like us, you have a number of devices around the house or office that all require 5V power adapters of various amperages. The Raspberry Pi has traditionally been one of the most temperamental when it came to power adapters and, with the Raspberry Pi 3, the developers specifically mention a 2.5 amp minimum. If you travel and want to take devices such as the Raspberry Pi with you, the last thing you want to do is approach airport security with a bunch of wires hanging out of your carry-on bag. Well, there’s good news. The Anker device shown in the Amazon ad in the right column of Nerd Vittles can supply power to 6 devices including a Raspberry Pi 3. And we’ve given the RasPi a healthy workout with no adverse effects.

    Deciphering the RasPi IP Address. As we mentioned, we travel a lot so obtaining a DHCP address for your RasPi in WiFi mode is not always the easiest thing to accomplish. If your smartphone supports tethering, that’s the easiest way to get connectivity on the road. A better way is to stick a WiFi HotSpot in your luggage and it, too, can be powered using the Anker device. See our recent article for WiFi HotSpot choices. Regardless of which option you choose, it will require some planning to use your RasPi sans monitor and keyboard. First, you need to preconfigure /etc/wpa_supplicant/wpa_supplicant.conf with the SSID of the device you’ll be using to hand out DHCP addresses. You’ll note from the discussion above that each entry in this file has a priority with higher numbers having higher priority. The way we typically do this is to assign our home network as the highest priority. Below that, we set up credentials for our MiFi Hotspot, then our smartphones, and finally open networks. So it looks like this:

    • Home Network – 6
    • MiFi HotSpot – 5
    • Android phone – 4
    • iPhone (AT&T) – 3
    • Open Network – 1

    Keep in mind that the Incredible PBX firewall probably will block you from accessing the RasPi from a computer on the public network. So you also must connect your computer to the same private WiFi network because private LAN addresses are whitelisted in the firewall by default.

    Once you have connectivity for your RasPi and your laptop, the other wrinkle is figuring out the IP address of the Raspberry Pi. Our recommended approach goes like this. First, configure SendMail on the RasPi to use a Gmail account that you own as an SMTP smarthost to send emails. That should work almost anywhere you go. Second, modify /etc/rc.local to automatically send you an email with the IP address and SSID of your wireless network whenever the RasPi boots. Again, this takes some advance planning because you need to set all of this up and test it before you go on the road.

    Here are the steps to modify SendMail to use an existing Gmail account as a SmartHost. Log into your RasPi as root and issue the following commands:

    cd /etc/mail
    hostname -f > genericsdomain
    touch genericstable
    makemap -r hash genericstable.db < genericstable
    mkdir -p auth
    chmod 700 auth
    cd auth
    echo \"U:smmsp\" \"I:user_id\" \"P:password\" \"M:PLAIN\" > client-info
    echo \"U:smmsp\" \"I:user_id\" \"P:password\" \"M:PLAIN\" >> client-info
    echo \"U:smmsp\" \"I:user_id\" \"P:password\" \"M:PLAIN\" >> client-info
    nano -w client-info

    When the nano editor opens the client-info file, change the 3 user_id entries to your Gmail account name without and change the 3 password entries to your actual Gmail password. Save the file: Ctrl-X, Y, then ENTER.

    Now issue the following commands. In the last step, press ENTER to accept all of the default prompts:

    chmod 600 client-info
    makemap -r hash client-info.db < client-info
    cd ..
    sed -i 's|sendmail-cf|sendmail/cf' /etc/mail/
    sed -i 's|sendmail-cf|sendmail/cf|' /etc/mail/
    sed -i 's|sendmail-cf|sendmail/cf|' /etc/mail/Makefile
    sed -i 's|sendmail-cf|sendmail/cf|' /etc/mail/
    sed -i 's|sendmail-cf|sendmail/cf|' /etc/mail/databases
    sed -i 's|sendmail-cf|sendmail/cf|' /etc/mail/
    sed -i 's|sendmail-cf|sendmail/cf|' /etc/mail/

    Finally, stop and restart SendMail and then send yourself a test message. Be sure to check your spam folder!

    /etc/init.d/sendmail stop
    /etc/init.d/sendmail start
    apt-get install mailutils -y
    echo "test" | mail -s testmessage

    Check mail success with: tail /var/log/mail.log. If you have trouble getting a successful Gmail registration (especially if you have previously used this Google account from a different IP address), try this Google Voice Reset Procedure. It usually fixes connectivity problems. If it still doesn’t work, enable Less Secure Apps using this Google tool.

    The last step is to add the following command to /etc/rc.local to send you an email with your IP address and SSID whenever the RasPi is rebooted. Insert the following commands just above the exit 0 line at the end of the file. Use an email address to which you have access on the road!

    echo "IP address(es) for your Raspberry Pi: $(hostname -I) plus wireless network, if any: `iwconfig`" | mail -s "RaspberryPi3 IP Address"

    GoogleTTS has been hit-and-miss for many years as Google continues to "improve things." Lefteris Zafiris has worked his usual magic and updated the scripts for Asterisk once again. These are required to use Incredible PBX features such as Yahoo News. To install the latest GoogleTTS updates, simply log out of your server and log in once again as root. The Incredible PBX Automatic Update Utility will put all of the new pieces in the correct places.

    WebMin: Wherefore Art Thou?

    Some of you may have noticed that WebMin is missing in this new release. For newcomers, WebMin is the Swiss Army Knife of Linux. You can do almost anything to Linux from the convenience of a browser. Unfortunately, in the PBX environment, WebMin is a two-edged sword. You can also permanently ruin your PBX in a matter of seconds if you don't know what you're doing because WebMin hides most of its magic under the covers so you really can't decipher what's been changed. Our best advice to those wanting to use WebMin is to use it as a tool to look (but don't touch) the Linux setup. The other major dilemma for us was that the current Incredible PBX build comes perilously close to filling a 4GB microSD card. And moving to an 8GB card to build a PBX would have doubled the size of the download image. Once you have installed Incredible PBX on a larger microSD card and expanded the filesystem to fill the new card, the commands below will get WebMin installed. Once installed, you can access WebMin with a browser pointed to https://ip-address:9001 using the same root credentials used to login with SSH.

    echo "Installing WebMin..."
    echo "deb sarge contrib" > /etc/apt/sources.list.d/sarge.list
    cd /root
    apt-key add jcameron-key.asc
    apt-get update
    apt-get install webmin -y
    sed -i 's|10000|9001|g' /etc/webmin/miniserv.conf
    service webmin restart

    Enabling Bluetooth on the Raspberry Pi

    Incredible Fax Returns for the Raspberry Pi

    Where To Go Next...

    With any major new software release, invariably there are a few bugs that creep into the mix. This PIAF Forum thread is the place to visit to get the latest patches and updates. Then explore the Incredible PBX applications here.

    Originally published: Monday, February 6, 2017  Updated: Saturday, June 2, 2018

    Support Issues. With any application as sophisticated as this one, you're bound to have questions. Blog comments are a difficult place to address support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forum. It's the best Asterisk tech support site in the business, and it's all free! Please have a look and post your support questions there. Unlike some forums, the PIAF Forum is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won't have to wait long for an answer to your question.

    NEW YEAR'S TREAT: If you could use one or more free DIDs in the U.S. with unlimited inbound calls and unlimited simultaneous channels, then today's your lucky day. TelecomsXChange and Bluebird Communications have a few hundred thousand DIDs to give away so you better hurry. You have your choice of DID locations including New York, New Jersey, California, Texas, and Iowa. The DIDs support Voice, Fax, Video, and even Text Messaging (by request). The only requirement at your end is a dedicated IP address for your VoIP server. Once you receive your welcome email with your number, be sure to whitelist the provider's IP address in your firewall. For Incredible PBX servers, use add-ip to whitelist the UDP SIP port, 5060, using the IP address provided in your welcoming email.

    Here's the link to order your DIDs.

    Your DID Trunk Setup in your favorite GUI should look like this:

    Trunk Name: IPC
    Peer Details:
    host={IP address provided in welcome email}

    Your Inbound Route should specify the 10-digit DID. Enjoy!

    Need help with Asterisk? Visit the PBX in a Flash Forum.


    Special Thanks to Our Generous Sponsors

    FULL DISCLOSURE: RentPBX, Amazon, Vitelity, DigitalOcean, Vultr, Digium, Sangoma, 3CX, TelecomsXchange and others have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and their pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

    Awesome Vitelity Special. Vitelity has generously offered a terrific discount for Nerd Vittles readers. You now can get an almost half-price DID from our special Vitelity sign-up link. If you're seeking the best flexibility in choosing an area code and phone number plus the lowest entry level pricing plus high quality calls, then Vitelity is the hands-down winner. Vitelity provides Tier A DID inbound service in over 3,000 rate centers throughout the US and Canada. When you use our special link to sign up, Nerd Vittles gets a few shekels down the road to support our open source development efforts while you get an incredible signup deal as well. The going rate for Vitelity's DID service is $7.95 a month which includes up to 4,000 incoming minutes on two simultaneous channels with terminations priced at 1.45¢ per minute. Not any more! For our users, here's a deal you can't (and shouldn't) refuse! Sign up now, and you can purchase a Tier A DID with unlimited incoming calls and four simultaneous channels for just $3.99 a month. To check availability of local numbers and tiers of service from Vitelity, click here. NOTE: You can only use the Nerd Vittles sign-up link to order your DIDs, or you won't get the special pricing! Vitelity's rate is just 1.44¢ per minute for outbound calls in the U.S. There is a $35 prepay when you sign up. This covers future usage. Any balance is refundable if you decide to discontinue service with Vitelity.

    RentPBX, a long-time partner and supporter of PIAF project, is offering generous discounts for Nerd Vittles readers. For all of your Incredible PBX hosting needs, sign up at and use code NOGOTCHAS to get the special pricing. The code will lower the price to $14.99/month, originally $24.99/month. It's less than 50¢/day.

    Be Sociable, Share!

    1. Many of our purchase links refer users to Amazon when we find their prices are competitive for the recommended products. Nerd Vittles receives a small referral fee from Amazon to help cover the costs of our blog. We never recommend particular products solely to generate Amazon commissions. However, when pricing is comparable or availability is favorable, we support Amazon because Amazon supports us. []

    This article has 11 comments

    1. Will this work for the Beaglebone Black?

      [WM: No.]

    2. Can this also be installed on a Raspberry Pi 2? What is it using, Wazo or FreePBX?

      [WM: RasPi2 should be fine, but slow. This image includes FreePBX 12 GPL modules in the modified GUI, not Wazo. There’s a separate image here for XiVO on the RasPi3 platform. Wazo and XiVO are not well-suited for use on a microSD platform because of the realtime implementation of Asterisk.]

    3. I love your site! It is such a goldmine! I am a programmer and I always wanted to try getting my hand dirty with VOIP, especially on the PI. Thank you so much for all those great info, images and the hard work!
      I have a beginner question. I made some research but didn’t find anything satisfying. How do I connect and make call from outside my place? I understand that PortKnock allows only my Public IP and my local network to access the PBX.
      I am using a SIP application called Softphone from Acrobits, and inside my private network, it works great! But from outside, no luck. It only works when I am on my VPN.
      I believe that this is the expected behavior for security, but is there a solution for users on their mobile with no VPN?

      Thank you in advance for pointing me in the right direction!

      [WM: Here’s a tutorial that will walk you through whitelisting remote phones with Incredible PBX. The PIAF Forum also is an excellent resource when you hit a snag. Good luck.]

    4. Hi there. the script that runs on this is missing sudo prefixes throughout the second half and fails miserably. Just thought I’d let you know.

      [WM: If you follow the tutorial, you won’t have the problem. You forgot to login as root in step #6.]

    5. Thanks for the GREAT work – you and your team. I’ve been with you since the AAH days.

      Is it possible to make it support either/both gvoauth and no oauth in the same release. I always have problems getting oauth to work but no oauth seems to work the first time?

      I have a RPi-2 working with no auth and do not want to mess up the GV side of things.

      [WM: Hi, Tom. Thanks for the kind words. We’ve heard your suggestion from a number of folks, and we’re reconsidering although I hasten to add that Google is going to discontinue support for plain-text passwords sooner rather than later so… you might as well learn how to obtain one. A link is provided in the article to show you how. It’s not hard, and it’s much safer.]

    6. I don’t seem to get opus working. It says it is installed, but I can’t figure out how to enable it. Could you please elaborate?

      [WM: Please head over to the PIAF Forum for tech support on Opus. Thanks.]

    7. Is it possible to install this on an existing Pi image? I’d prefer to download scripts (I found reference an older version: incrediblepbx11guiPi.tar.gz ) as opposed to imaging an SD card. I have a few minor apps running I would like to keep in the background.

      [WM: Sorry, but it’s gotten too complicated to provide an upgrade script.]

    8. I love running my home Asterisk pbx on pi but having serious troubles with data corruption, database errors, and so forth which leads me to rebuild it every few months. Any recommendations before i migrate away from pi?

      [WM: Easiest solution is to add a USB Drive to your RasPi and run everything from there. This tutorial will show you how.]

    9. Great stuff on this site! I was just wondering what is the difference between this version of Incredible PBX and Incredible PBX for XiVO?

      [WM: The two products use different GUIs. XiVO takes considerably more horsepower to run because it implements Asterisk Real Time.]

    10. Wondering whether Incredible PBX will work with a $5 Raspberry Pi Zero W? Wonder no more. Setup instructions using WiFi available here.

    11. Hi Ward,

      Just wondering if you ever stress tested the P3 with external drive configuration. I am wondering if you have any guesstamates as to how many simultaneous calls it will handle. I am itching to use this at that festival we discussed.

      [WM: Haven’t tested it personally. But I think you’ll probably run out of bandwidth before you run out of processor capacity.]

    Leave a comment

    Your email address will not be published. Required fields are marked *