2020 Q1 (plus part of Q2) in Review for FreePBX

Hey All,

We haven’t done anything like this thus far (at least since I have been with the project) but as FreePBX project lead I thought it might be good to summarize and cover a few notable achievements this year in FreePBX land. While we as a project are continually working to fix bugs and improve functionality, sometimes those day to day efforts are missed unless you follow issues.freepbx.org or git.freepbx.org closely. This hopefully will provide a way for people to see what’s happening not just at the time we make major releases (FreePBX 14 to FreePBX 15, for example), but incrementally as we progress towards the next major release.

Items of note:

  • Support for Improved Module Signing Key
  • 911 Improvements
  • Release of the Call Accounting Module
  • Follow-Up 911 Improvements
  • Chan_sip to Chan_pjsip Conversion Tool
  • Ongoing Investment to FreePBX 15 Backup and Restore Functionality
  • EPM Firmware Management
  • Asterisk 17
  • Dedicated QA team
  • PBXact 15 – coming up

Support for Improved Master Signing Key

As mentioned in our blog post at the beginning of the year, we added support for a new module signing key for FreePBX modules. The previous key was created a few years ago and we felt it would be good to add support for a new version of the master key with a key length that better aligns with current best practices (4096 bits). This does not mean that the old key has been deprecated, only that we allow module signing with both keys for the time being. If for some reason the original key becomes compromised, this also allows us to more easily migrate to the newer key without significant technical hurdles.

911 Improvements

There also has been a lot of work done to support new laws and regulations around the Ray Baum Act and Kari’s Law. This included the ability to have location data associated with specific SIP extensions and making the 911 notification support in the Paging Pro freely available to FreePBX users so that they can better comply with the terms of those pieces of legislation. A best practices wiki page was also added to help FreePBX administrators to configure their FreePBX instances to make them better compliant and can be found at https://wiki.freepbx.org/display/FOP/Set+up+Emergency+Service%28E911%29+calling+requirements

Release of the Call Accounting Module

We also just recently released the new Call Accounting module for FreePBX. This module has been a long time in the works, but we’re finally ready to go to release with it. It adds functionality to FreePBX to better track inbound and outbound call usage across trunks, users, and user groups. You can find more information on the freepbx wiki at: https://wiki.freepbx.org/display/FPG/PBX+Call+Accounting+Module

Follow-Up 911 Improvements

There were a number of goals we had wanted to hit as part of the original 911 feature set at the beginning of the year, but one or two items missed our initial target dates. One of those was the ability to do email notifications on specially marked outbound routes (presumably routes that would match emergency numbers in your local area). We already had functionality to make a call to notify an administrator that an emergency number had been dialed, but with this, an administrator can also send out an email notification to inform a designated point of contact that an emergency call had been dialed. This gives FreePBX administrators more options in how they can do emergency call notifications and how they can better meet their respective local telecommunications requirements. You can read more about this improvement here: https://www.freepbx.org/freepbx-features-add-email-notifications-to-your-outbound-routes/

chan_sip to chan_pjsip Conversion Tool

In addition to the above, we’ve recently added support for a new bulk conversion tool to help administrators convert their extensions from chan_sip to chan_pjsip. As mentioned on the forums and in other places, it is very important that users make the transition from chan_sip to chan_pjsip. From an Asterisk perspective, chan_sip was marked as deprecated in Asterisk 17 and has no current maintainer. This means that bug fixes and improvements are not being made to that channel driver. Chan_pjsip is the newer SIP stack in Asterisk used to talk to SIP endpoints. It is multithreaded and much more scalable compared to chan_sip and has become quite mature and is very actively maintained. It is important for these reasons to start migrating any legacy chan_sip endpoints over to chan_pjsip. If there are any issues in that process, feel free to raise a bug at issues.freepbx.org (for FreePBX issues) and issues.asterisk.org (for Asterisk issues). You can read more about using the conversion tool at https://www.freepbx.org/new-tool-to-assist-converting-from-sip-to-pjsip/

Ongoing Investment to FreePBX 15 Backup and Restore Functionality

Rewritten Backup and Restore functionality was a major part of the FreePBX 15 release and a highly sought after feature from a community perspective. This functionality allows migration from FreePBX 14 or FreePBX 13 (and in many cases even older versions of FreePBX) to FreePBX 15. While we put quite a bit of effort into making things run well in preparation for the FreePBX 15 release, there have been some great follow up issues that have been reported since that time that we have continued to invest time and effort to further solidify this code and make the functionality more robust. We will continue to invest effort into making this feature robust and trustworthy.

EPM Firmware Management

We have also added support to be able to do custom firmware management within EPM. Previously this had a few manual steps and was generally a less than pleasant experience. Now this can be done directly from the UI in a more supportable manner. This will allow administrators who wish to test firmware versions that haven’t been QA’d yet by the FreePBX QA team and deploy them to phones as desired. More information can be found about this feature here: https://community.freepbx.org/t/epm-custom-firmware-in-endpoint-manager/65012

Asterisk 17

We also added support for Asterisk 17 to FreePBX. This allows FreePBX module developers to take advantage of some of the new ARI and video functionality in Asterisk 17 within the context of FreePBX. It also allows users to be able to to test and use the latest standard release of Asterisk, giving them the opportunity to provide valuable feedback upstream to the Asterisk development team about how their system runs when using that version of Asterisk.

Dedicated QA Team

Prior to this, there was a common QA team that was shared across all groups of Sangoma products and services. Now, there is a dedicated QA team that exclusively works on the needs and interests of FreePBX. This allows them to more intently focus on testing FreePBX (and PBXAct) with the goal to keep trying to raise the bar with release quality.

PBXAct 15

The release of PBXAct 15 has not been announced yet, but it is nearly finished with the approximately 6 month testing process that takes place prior to release. Due to some differences with FreePBX 15, there were some changes that had to be made to infrastructure and other pieces specifically in preparation for a full PBXAct 15 release. These changes as well as the general testing mentioned above are nearly complete and we should see the release of PBXAct 15 soon.


I hope that you all have enjoyed reading this overview and perhaps gained insight into some of the FreePBX development team’s more recent efforts. There were many more possibilities to choose from in terms of topics, but I had to pick just a few to keep this post from being too long. As project lead of the FreePBX project, I am continually humbled by the amount of time and effort that people put into helping the project be successful. I want to also thank all of you that work to contribute to the FreePBX project at the many different levels necessary to sustain a strong and successful open source project – code contributors, helpers on the community forums, those that submit wiki documentation, and any other areas that I have not mentioned.

For any questions about the project or any of the information above, feel free to post a question to the community forums at community.freepbx.org.

Best wishes to you all,
Matthew Fredrickson
FreePBX Project Lead

FreePBX Features: Add Email Notifications to your Outbound Routes

Hello Everyone,

I’d like to share a new feature that will be available soon, which is Email Notifications for Outbound Routes.  This will allow admins to set an email address to receive notification emails when a call is placed over an Outbound Route.  We recommend utilizing this feature to help meet the Kari’s Law E911 notification requirement, but it will be available for all Outbound Routes for admins to set up as needed.  

To use this feature, first you’ll want to make sure your system is properly configured to send out emails, including any required SMTP setup.  When adding or modifying an Outbound Route, go to the Notifications tab to find the Email Notification options. The email’s subject, and body text will be in a template format, with a list of call information variables available.  Admins can modify these to tailor the email text as they see fit.  Leaving the “Email To” field blank will disable email notifications for this Outbound Route.

In this example, the “Email Subject” and “Email Body” fields are set to the default values. 

Based on the example setup above, the email that admin@testpbxco.com receives from PBX@testpbxco.com will look like:


PBX: A call has been placed via outbound route: Long Distance


Call Details:
Call Time: 04-08-2020 10:11:51 AM EST
Caller: "Amy Smith" <101>
Call to: 18585551212
CallerID Sent: "TESTPBXCO" <8880001234>
Outbound Route: Long Distance
CallUID: 1586380311.14 

This feature will be available on FreePBX 13, 14, and 15 based systems. It is part of the Core module as of the following versions which are currently on EDGE, and should make their way to Stable soon: ,, and 15.0.12.


Framework changes related to module auto update functionality

To FreePBX Users,


Recently we have noticed a couple of concerns in the community, and on the open source bug tracking system about the “module auto update” functionality.

As of today, if the module auto-update feature is enabled for “modules updates”, then FreePBX will download and install all the modules including the ones which were previously removed or uninstalled intentionally by users. This is an annoying behavior because the user has to uninstall/remove the unintended modules again and again.

This functionality has been present in FreePBX for a very long time, and has been a pain point for a while.  We would like to ensure that users are able to use their choice of modules without this happening.

To accomplish this, we are changing the “auto-update” functionality in the framework module to use the “upgradeall” method instead of “installall”.  This will avoid unintended/unwanted modules from being installed during auto-update.

Please find details below of “upgradeall” vs “installall” fwconsole commands for anyone who is not familiar with the difference:

fwconsole ma installall”   -> This will fetch the module list from the mirror server and install all modules – even if that module is not currently installed.

fwconsole ma upgradeall” ->  This will upgrade the modules which are currently installed. This will not download or install any new modules and should give a more pleasant user experience.

We are always happy to hear feedback about any problems that may inadvertently arise, so please feel free to create a jira issue at issues.freepbx.org, or refer to https://wiki.freepbx.org/display/SUP/How+to+open+a+Feature+Request to see how to raise feature requests to suggest further improvements.


Framework versions and, both of which are currently in EDGE.



  1. FREEPBX-21321
  2. https://community.freepbx.org/t/iotserver-module-cron-and-license 
  3. https://wiki.freepbx.org/display/FPG/Updates


FAQs –

What are the results of these changes to the FreePBX system?

The primary advantage of these new changes is that users are now free to use their choice of modules without unintentional installs of new modules.

“Auto-update” will not install new or uninstalled/removed modules automatically.

Users have better control over which modules are present on his/her system via module admin.

Apart from the above, there should not be any changes to the system behavior.

I am not using the “auto update” feature, so will it affect my manual upgrade process? 

These changes are purely applicable to the “auto-update” functionality and will not affect the way manual updates work, either via “Module admin -> Check online “, or via “fwconsole” commands.

How will I get newly created module updates if “auto update” is not installing them automatically?

“Check Online” functionality, as described in https://wiki.freepbx.org/display/FPG/Module+Admin+User+Guide#ModuleAdminUserGuide-CheckingforAvailableUpgrades, will show you the list of available modules on the mirror servers.  This will include any newly launched modules as well so you can install them manually, if you wish to try them.

Will these changes affect PBXact as well ?

Yes, PBXAct behavior will be the same as FreePBX when these framework versions are pushed to PBXAct.

When will this change be pushed to the STABLE release? 

We have completed some initial testing with positive results but still have more in depth testing to be done before pushing to the STABLE release.

Please refer to https://wiki.freepbx.org/display/FPG/Edge+vs+Stable to know the difference between EDGE vs STABLE.

We will try our best to ensure that these fixes are pushed to the STABLE release as soon as possible.

Thank you for using FreePBX

Best Regards,

Kapil Gupta



New tool to assist converting from SIP to PJSIP

Today, FreePBX has two options for setting up SIP connectivity, chan_sip and chan_pjsip. But, this won’t always be the case as Asterisk and FreePBX move closer to removal of chan_sip.

On the Asterisk front, chan_sip has already been marked as deprecated within the latest release. This is due to the fact that the older chan_sip channel driver was built in a way that makes it hard to make changes without breaking existing functionality. Deprecation does not mean that it has been removed, but it does mean that no bug fixes or security fixes are being added to the chan_sip channel driver. The chan_pjsip channel driver, on the other hand, does receive direct attention from Sangoma. If the chan_pjsip channel driver is used, you can rest assured that bugs will be worked on, security fixes will be applied, and new features will be added.

As FreePBX ages, the FreePBX team can not guarantee that the chan_sip channel driver will be as reliable as it is today. And if issues start to occur with chan_sip, there is also no guarantee that the FreePBX team will fix them. If you’re currently running chan_sip, save yourself some future headache and convert to chan_pjsip!

Luckily, the FreePBX team has created a couple of tools to help make the conversion process from chan_sip to chan_pjsip easy!

PJSIP Conversion Using the GUI

If you don’t have a lot of extensions that need to be converted, then the PJSIP conversion tool found in the GUI is the perfect solution for converting a single extension.

To convert an extension from chan_sip to chan_pjsip in the GUI, first open the extensions page (found under the Applications -> Extensions menu) and select the extension to edit.

Next click on the Advanced tab to show the advanced settings.

Click on the “Change To PJSIP Driver” button to start the conversion process to PJSIP.

Note: A warning should be displayed after clicking the button. Please read and understand the warning to decide if you wish to continue with the conversion.

Finally, click on the ‘Apply Config’ button to apply the change to the live system.

And that’s it! Just repeat this process for each extension you want to convert.

PJSIP Conversion Using the CLI

For systems that have several extensions that need to be converted, the ‘convert2pjsip’ command can be used. The ‘convert2pjsip’ command is available in FreePBX 15 running the core module version and higher.

Command Options:
fwconsole convert2pjsip [-a|–all] [-r|–range RANGE]

To convert all chan_sip extensions to chan_pjsip:

[root@freepbx ~]# fwconsole convert2pjsip -a
Converted extension 6040 to PJSIP
Converted extension 6041 to PJSIP
Converted extension 6042 to PJSIP
Converted extension 6043 to PJSIP
Converted extension 6044 to PJSIP
Converted extension 6045 to PJSIP
Converted extension 6969 to PJSIP
Converted extension 6970 to PJSIP
Converted extension 7070 to PJSIP
Converted extension 7071 to PJSIP
Converted extension 906969 to PJSIP
Converted extension 906970 to PJSIP
Extensions converted successfully!
Run ‘fwconsole reload’ to reload config


To convert a specific chan_sip extension to chan_pjsip:

[root@freepbx ~]# fwconsole convert2pjsip -r 6040
Converted extension 6040 to PJSIP
Extensions converted successfully!
Run ‘fwconsole reload’ to reload config


To specify a range of extensions to convert to chan_pjsip:

[root@freepbx ~]# fwconsole convert2pjsip -r 6000-6100
Converted extension 6040 to PJSIP
Converted extension 6041 to PJSIP
Converted extension 6042 to PJSIP
Converted extension 6043 to PJSIP
Converted extension 6044 to PJSIP
Converted extension 6045 to PJSIP
Extensions converted successfully!
Run ‘fwconsole reload’ to reload config


To specify multiple chan_sip extensions or ranges for conversion to chan_pjsip, use a comma:

[root@freepbx ~]# fwconsole convert2pjsip -r 7070,7071,6000-6100
Converted extension 6040 to PJSIP
Converted extension 6041 to PJSIP
Converted extension 6042 to PJSIP
Converted extension 6043 to PJSIP
Converted extension 6044 to PJSIP
Converted extension 6045 to PJSIP
Converted extension 7070 to PJSIP
Converted extension 7071 to PJSIP
Extensions converted successfully!
Run ‘fwconsole reload’ to reload config


I hope this article shows you the conversion tools available in FreePBX that can help assist in the conversion of extensions from the legacy chan_sip channel driver to the chan_pjsip channel driver.

Get to Know: Members of the FreePBX team

Hey All,

As part of my earlier effort to introduce you to some new members of the FreePBX development team at Sangoma, I wanted to also highlight some of the existing members of the team so that you can get to know them better.

The first person this week is Philip Joseph from our Bangalore office:

Q: Where are you from and where did you grow up?

A: I am from Kerala, also known as “gods own country” in India.  Once I completed my basic education, I moved to Bangalore in 2004 to do my higher studies in computer science.
I completed my master in computer science from Christ University, Bangalore (2009).

Q: How did you get into working in the telephony industry?

A: As a part of my internship I joined a company called astTECS in 2009, who does business with open source software (mainly Asterisk).

There I put my feet in the Asterisk world and I start playing with most of the Asterisk based applications such as A2Billing, asterCC, Vicidial, FreePBX(2.9), and custom applications on Asterisk. I continued to expose myself to it however possible until mid 2015. Then I started doing freelancing work with Asterisk applications where I have made cloud telephony applications and IP based communication (for factories). In this project I used FreePBX 2.11 and customized FreePBX in many ways and implemented many new features. Some of the features included extension priority overriding and passcode for dialing while doing paging with a DTMF response from paging device, turning paging to private communication, as well as dial out conferencing (scheduled/dynamic).

All of these FreePBX experiences helped me to get into Sangoma in 2017 Feb.

Q: What is your favorite part about working on FreePBX?

A: I like the Queue Callback module which I have spent a lot of time making more reliable and stable. Also Paging, Paging Pro, and other modules.  Warm spare backup in 15. And many more.

Q: Is there an area you’d like to see improved in the project?

A: Yes, generally there is some room for each module to improve.  From a new module point of view, I think we should add dial-out scheduled conference support.

Q: What do you like to do when you’re not working?

A: Apart from work, I love spending time with my family. Also, wine making, horse racing, and driving are some of the hobbies.

Our second is Franck Danard, who works in France (he is on the right):

Q: Where are you from and where did you grow up?

A: My name is Franck Danard and I’m 53 years old. I come from France and I grew up in Nantes, close to the west cost in south Britany. Now, I live in the countryside about 30 km from Nantes.

Q: How did you get into working in the telephony industry?

A: I worked at Tandy France and one day I found another job. So I started to work in telephony in 1989, and not only with telephony systems. I worked on alarm systems, video surveillance systems, and fire alarm systems. I grew up not only with Alcatel PBX systems, but also with other telecom systems, fax systems…etc.  And finally, I worked in the support team online for NXO before working fully on Asterisk systems for IT’TEK, which led me to eventually working at Sangoma.

Q: What is your favorite part about working on FreePBX?

A: I don’t have a specific part I like to work on in FreePBX more than any other. All the modules are different. I like the diversity.

Q: Is there an area you’d like to see improved in the project?

A: Maybe high availability, GUI themes. I don’t know. Just a few ideas like that.

Q: What do you like to do when you’re not working?

A: I like cooking everything and even for 50 people. I make bread homemade. I compose some music and I make arrangements for my father, I have my home studio, and I
mix bands in small concerts. I just need to get out my telescope, I haven’t used it since our daughter was born (for 11 years). I like stars. Also, I like to sail by boat on the river. It’s very quiet and wonderful. Sometimes I like to code personal apps for home automation systems.

That’s all for this week, but be on the lookout for more posts introducing other members of the team.  Thanks to both Philip and Franck for taking the time to answer my questions 🙂

Best wishes,

Matthew Fredrickson