Group Details Private

Global Moderators

Forum wide moderators

Member List

  • How to Upgrade from FreePBX 15 to FreePBX 16

    Always do this upgrade via the command line over SSH. This prevents HTTP/PHP timeouts from affecting you. You can use the console if you want, but SSH is normal.

    1. Login with your non-root user. Because you never allow root to log in over ssh right?
    2. Update the system
    sudo yum upgrade -y
    1. Upgrade the current modules.
    sudo fwconsole ma upgradeall
    1. Fix permissions, as module upgrades can leave some files owned by root.
    sudo fwconsole chown
    1. Reload the system to rewrite the config files.
    sudo fwconsole reload
    1. Reboot, to make sure everything in in a pristine state, or at least should be.
    sudo reboot
    1. Log back in and then switch to root. If you run the versionupgrade with sudo instead of as root, it fails to properly do everything, even though it says the upgrade succeeds.
    sudo su -
    1. Download the versionupgrade module
    fwconsole ma downloadinstall versionupgrade
    1. Fix permissions again as it messes up file permissions in /var/www/html after you install it.
    fwconsole chown
    1. Reload
    fwconsole reload
    1. Run the version upgrade check
    fwconsole versionupgrade --check
    • If you have an error about a deprecated module remove them and them reload.
    fwconsole ma delete campon
    fwconsle reload
    • Then run the version check again.
    1. It should be clean, so upgrade.
    fwconsole versionupgrade --upgrade
    1. Log back into the web interface
    • Make sure everything looks normal
    • Make a couple test calls, in, out, internal, etc.
    1. Once everything looks good, hop back to your SSH session and reboot. Sure everything is runing now, but how do you know it will reboot correctly if you don't try it now?
    1. Assuming everything come sup normally, you are done.
    • The most common thing I find here is that I sometimes need to run fwconsole restart before the GUI shows a connection to Asterisk, even though everything is running.
    posted in FreePBX Guides
  • Create the Skyetel Outbound Trunk for International

    To enable your system to make international calls, you will need a third trunk. This time duplicate the outbound trunk.

    1. Click the edit icon 📝 to the right of the Skyetel_Outbound_NA trunk.

    2. Click the Duplicate at the bottom of the screen.

    3. Now you can click on the edit icon 📝 of the duplicated trunk, currently named Skyetel_Outbound_NA_copy_3.

    4. On the General tab, change the Trunk Name to Skyetel_Outbound_International.

    5. Switch to the PJSIP Settings -> General sub tab and change the SIP Server to

    6. Click on the Submit button.

    7. Click on the Apply Config button.

    8. You will see your trunk listed in the list and show as Enabled.

    posted in FreePBX Guides
  • Create the Skyetel Outbound Trunk for North America

    After setting up the inbound trunk, you might want to just be done with all of this, but all of the hard work is done. For the outbound trunk we can duplicate and edit, saving much time.

    1. Click the edit icon 📝 to the right of the trunk.

    2. Click the Duplicate at the bottom of the screen.

    3. Now you can click on the edit icon 📝 of the duplicated trunk, currently named Skyetel_Inbound_copy_2.

    4. On the General tab, change the Trunk Name to Skyetel_Outbound_NA.

      • NA stands for North America. You will duplicate this trunk after it is done and that trunk up for International and High cost NA calls.
    5. Change Continue if Busy to Yes.

    6. Switch to the PJSIP Settings -> General sub tab and change the SIP Server to

    7. Switch to the Advanced sub tab and remove the list of IP addresses and CIDR blocks from Match (Permit).

    8. Click on the Submit button.

    9. Click on the Apply Config button.

    10. You will see your trunk listed in the list and show as Enabled.

    posted in FreePBX Guides
  • Create the Skyetel Inbound Trunk

    Now that you have Skyetel setup to deliver calls to your PBX, it is time to setup FreePBX to accept those calls. This is done by creating a Trunk.

    1. Sign in to your FreePBX instance

    2. Click on Connectivity and then Trunks

    3. Click on the Add Trunk button to show a list of options and then click on Add SIP (chan_pjsip) Trunk

      • Be certain it says chan_pjsip or you will not have a working system.
      • Depending on your FreePBX configuration, you may still see the legacy chan_sip option. This will not work.
    4. You will get the Add Trunk screen with 3 tabs, we will start on the General tab.

    5. Trunk Name is a descriptive name for the trunk.

      • Name this one Skyetel_Inbound
      • It cannot have spaces, and FreePBX will auto populate an underscore (_) if you press space.
    6. Hide CallerID should be set to No by default. Leave it that way.

    7. Outbound CallerID should always be populated on all trunks as whatever your main number is with Skyetel.

      • This value is the default to use if a call goes out this trunk without any other Caller ID defined.
      • We will use the E.164 format for the number
      • + then Country Code then Number
      • The name section should be limited to 15 characters, the maximum for legacy POTS Caller ID.
      • Also, do not expect the name portion to be seen by most recipients. Skyetel will pass along whatever name is entered here, but it is up the the other side to accept it.
    8. CID Options should be left on the default of Allow Any CID. You can read the help text to learn more about how this works.

    9. Maximum Channels should be set to at least one higher than you set in the Fraud Alert for the Endpoint in Skyetel.

      • Only outbound calls are counted towards this maximum.
    10. Asterisk Trunk Dial Options should never be changed from System

    11. Continue if Busy can be left at No for the Skyetel_Inbound trunk as this only applies if the trunk is used in an Outbound Route

    12. Disable Trunk must be set to No or the system will not use the trunk.

    13. Monitor Trunk Failures is an advanced setting and does not mean what most people think. Leave it set to No.

    14. Moving on to the Dialed Number Manipulation Rules tab, is easy as you will leave this all blank.

      • You do not do anything on this tab for a trunk, unless there are special circumstances.
      • More detail on this will be discussed in the Outbound Route setup.

    15 On to the pjsip Settings tab, which has three sub tabs.

    1. The General sub tab is where you tell the trunk what it is connecting to. You will leave Username, Auth username, and Secret empty.

    2. Authentication will be changed to None, which cause the priors three fields to become disabled.

    3. Registration is also set to None. This also gets changed automatically when Authentication was changed.

    4. Language Code should be left on Default.

      • Trunk specific languages is an advanced task.
    5. Sip Server will be set to

      • Prior to October 8, 2021 this was
    6. SIP Server Port is 5060.

      • This is Skyetel's listening SIP port, not yours.
    7. Context should be changed to from-pstn-e164-us, which matches the fact that our phone number in Skyetel will be sent in the E.164 standard.

    8. Transport defaults to and should be left that way.

    9. Moving to the Advanced sub tab, most settings will be left at their default values.

    10. Match (Permit) is the first that needs changed.

      • On this Skyetel_Inbound route, we need to enter the full list of IP addresses or CIDR blocks that Skyetel could ever send a call from. Skyetel maintains that list on the Skyetel IP Addresses article.
      • You need to add the 4 Standard IP addresses that resolves to, as well as the list of Emergency IPs
      • This must be added as a single comma separated line, here is a copy/paste version for you.,,,,,,,,,,,


    1. Trust RPID/PAI should be changed to Yes

    2. Send RDPI/PAI should be changed to Both

    3. Inband Progress, Direct Media, Rewrite Contact, and RTP Symmetric should be the correct value by default, but verify that they are No, No, No, and Yes respectively.

    4. Final tab! Go to the Codecs tab and ensure that ulaw is in the list. By default it should be first.

      • Updating codecs is an advanced task not covered here.
    5. Click on the Submit button.

    6. Click on the Apply Config button.

    7. You will see your trunk listed in the list and show as Enabled. Inbound calls will now hit your PBX.

    posted in FreePBX Guides
  • Set the phone numbers in your Skyetel portal to route to your PBX

    Now that you have an Endpoint Group and Endpoint setup, you can setup your phone number(s) to point to so calls will be delivered to your PBX.

    Setup a number to route to your PBX

    1. Expand Phone Numbers
    2. Click on either Local Numbers or Toll Free Numbers depending on what type of number you bought or ported in.
      • You will see a list of the phone numbers of that type that you own through Skyetel.
    3. Click on the gear ⚙ to the far right to edit the number

    Number Editing

    • There are up to 5 tabs of information you need to edit for each number, depending on what feature you need or want for a number. This guide will only be covering the General tab.

    The General tab is where you choose how a number routes and what you want it to do in a failure to route to that selection.


    1. Phone Number is obvious, and not editable. This is the phone number you are editing.

    2. SIP Format is the way that Skyetel will deliver calls to this number, to your PBX.

      • By default Skyetel uses an 11 digit number format familiar to people in North America. This is called the NANPA or NANP format. I always recommend to change this to the E.164 format as it is an international standard, either format can work for FreePBX.
      • This guide and others related to FreePBX will assume the E.164 format.
    3. Call Routing is where you choose your normal destination for calls. In most cases, you will be using Endpoint Group.

      • There are use cases for the other options, but those are not covered in this guide.
    4. Once you select Endpoint Group in Call Routing you get two new options inserted before Call Failure Routing.

    5. Endpoint Group is here you select the Endpoint Group you previously created.

      • I have other Groups (obfuscated), you should only have the one at this point, Select it.
    6. Endpoint Choice will not be used by most users as they only have one Endpoint in their Endpoint Group.

      • But if you have more than one, you can chose how this number chooses one. The default is By priority, and the priority is set in the Endpoint Group.
    7. Call Failure Routing is what you want to happen to the call is Skyetel cannot reach your PBX. Leave it at the default until you go read the guide on this feature.

    8. Tenant is an advanced need. If you have these set up, then you would select it here.

    9. Description is useful when you have a lot of phone numbers. It lets you know at a glance what the purpose of that number is. If you only have one or two numbers, it is less important.

    10. Click Save and the number will begin routing to your PBX. Typically within seconds, but it can take up to a minute to fully propagate.

    posted in FreePBX Guides
  • How to setup your system to use Skyetel as your SIP trunk provider

    Bundy & Associates uses Skyetel as their go to SIP trunk provider because of the high quality of service and the low cost.

    Setting up a FreePBX or PBXact system to use Skyetel is a very easy process, but does have a few steps that can confuse the inexperienced.

    1. Create an Endpoint Group in Skyetel to point to your PBX.
    2. Set the phone number(s) in your Skyetel portal to route to your PBX.
    3. Create the Skyetel Inbound Trunk
    4. Create the Skyetel Outbound Trunk for North America
    5. Create the Skyetel Outbound Trunk for International
    posted in FreePBX Guides
  • Create an Endpoint Group in Skyetel to point to your PBX

    Create the Endpoint Group

    1. Log in and expand Endpoints.
    2. Click on Endpoint Groups.
    3. Click on Add Endpoint Group.

    Enter your PBX information, this creates an Endpoint Group and the first Endpoint inside the group.

    1. Name is the name you will see for the endpoint group.
    2. IP Address is the public IP address of your PBX.
    3. Description is the description of the actual endpoint.
    4. Click Add to finish.

    Now you want to click on Endpoint Health to see your new group and set some alerts for it.

    • Note, it will show your system down. This is because you have not yet set anything up in FreePBX to listen for it. One step at a time.

    Click on Set under Fraud Alerts

    1. Enter a value that is equal to the maximum number of simultaneous call you expect to have.
      • For example, if you used to have six lines from AT&T or Spectrum, then put 6 here to start.
    2. Read what is highlighted!! It is not going to be Skyetel's fault if you have a bad actor on your system. It is your responsibility to keep an eye on your system.
    3. Click Save

    Now click on the toggle to enable uptime alerts.

    • This is useful as Skyetel will then send you an email and text message (if you have a number in your profile) when two or more regions cannot reach your Endpoint.
      • It will use the Description from the Endpoint as set above. So make sure you populate that to something you understand.

    Finally click on View more to see some advanced features.

    • For now, the only thing to do is click in the circle in front of Network QOS. This will have Skyetel's system being to collect metrics from the "Hello, are you alive?" packets it sends to your Endpoint.
    • There is a second section on this page for SNMP Metrics, but that is an advanced topic that will have its own guide.

    Once it has been enabled and your PBX has been on line for a while, you will begin to see very useful data on this page. Here is a sample from a different Endpoint.


    posted in FreePBX Guides
  • Resetting an lost admin password on Ubuntu/Linux Mint

    If your IT department is doing things right, then the user account that you log in to a computer with will not have administrative access.

    In the Linux ecosystem this is called sudo access.

    Normally an accout is made with sudo rights that is only used as needed.

    If the password for this account is lost, then there is no longer a way to administer the computer.

    In the Windows world, you shutdown the system and then boot to a specially crafted USB boot disk that you can read the Windows information and then reset the admin password.

    For Linux, it is easier. You simply need to reboot and interrupt the normal grub boot sequence to get into single user mode.

    1. Reboot the system.
      • As soon as it powers back on begin tapping the ESC key.
        Technically, we are only wanting to stop grub from automatically booting. but with modern SSD or NVMe drives, this can go by so fast you never knew it was available to interrupt.
    2. The first grub entry should be highlighted by default and is normally the one you want. Press e to edit that entry.
    3. Find the line beginning with linux
    4. Go to the end of the line and add init=/bin/bash
    5. Press F10 to boot to this modified file without permanently saving it.
    6. The system will boot to a command prompt similar to [email protected](none):/#
    7. Enter mount -o remount,rw / and press Enter.
    8. Now you can reset the admin account password with the passwd command: passwd YOURADMINNAME.
    9. Enter the new password, then again to confirm it.
    10. Type exit and then use the power button to reboot the computer.
    posted in Guides & Walkthroughs
  • Creating an ed25519 SSH key in Windows 10

    There are many reasons that you may need an SSH key setup on your system. Some of the most common reasons are connecting to git repository and connecting to a Linux server.

    This used to be a painful process, as Microsoft did not include OpenSSH in the operating system. Thankfully they rectified that over a year ago.

    As long as you are running an up to date version of Windows 10, you will have no problems following along.

    1. Right click on the start button and choose Windows PowerShell

      • If your system says Command Prompt you are either not up to date, or you intentionally changed it back.
    2. In the powershell windows, run the ssh-keygen command as follows:

      • The -t ed25519 tell it which algorithm to use.
      • The -C "Work Computer" is a comment that makes it easy to know what a key was created on. Update appropriately.
    ssh-keygen -t ed25519 -C "Work Computer"
    1. It will prompt where to save the file. You will almost always want to use the default. Just press enter to accept the default.
    2. It will ask for a passphrase. Generally, I do not set a passphrase on my SSH keys, but there are valid reasons to do so depending on your environment. Press enter again for no passphrase.
    3. It will ask you to confirm the passphrase, even if you left it blank. Press enter again.
    4. It will then create your key and spit out some information about the key. Congratulations, you now have an SSH keypair available for use.

    This is why I recommend the -C command in the key generation. It puts whatever was in the comment out at the end of the public key string.

    This useful when you add the key to things like GitLab. It will automatically title the key with that comment.

    posted in Guides & Walkthroughs
  • Decide where you want your PBX

    Once you have done your initial discovery and know how your current PBX operates, you can then figure out the best place to put your new FreePBX system.

    This will be different for every organization and has to be based on what works best for the business.

    You have two choices.

    1. Host it on your internal virtualization infrastructure
    2. Host it on a public virtualization platform

    Can it be installed on a physical appliance? Sure, but you would not want to run your main line of business application on random hardware, so why would you run your phone system that way?

    You have to base this decision on a number of things.
    Below is a general guideline to think about.

    • Do you have a solid virtualization platform in place locally
      • if no, make the PBX hosted
      • if yes, make the PBX hosted or local
    • Do you have more than one site needing to register phone to this PBX
      • make the PBX hosted
    • Do you have solid backups locally
      • if no, make the PBX hosted
      • if yes, make the PBX hosted or local
    • Do you have solid internet for the total concurrent call volume and well as extension to extension volume
      • if yes, make the PBX hosted
      • if no, make the PBX local
    • What Needs to survive the most when the internet goes down
      • extension to extension calling
        • make the PBX local
      • inbound customer calls getting handled
        • make the PBX hosted

    There are always more things to consider, but those are the key factors.

    Each of them need thought about without emotion to determine what is best for the business.

    posted in FreePBX Guides