Phones

Menu: (Apps-Phones)

This section of FusionPBX is used for automatic phone provisioning.
 * it allows you to automatically configure phone functionality and set up the phone as a specific extension on your FusionPBX phone system\
 * it is useful when you have a large number of phones to configure with common settings and the only difference between them being the mac address and the extension details (saves you having to use the phones' own web administration pages)
 * enables you to at any time in the future, edit the configuration template on the FusionPBX server in order to make a change to all the phones next time they reboot, rather than having to manually change each one
 * it is useful only if your phone models support automatic provisioning
 * it relies on you having a DHCP server that supports supplying options 66 or 43 to DHCP clients
 * depending on the model of phone you are using it will require either a TFTP server or an FTP server or an HTTP or HTTPS server to provide the provisioning files. Note that if the phone supports http or https then you are in luck since your FusionPBX already has a web server and so you can put the files there.

Before going into detail about the functionality on this screen of the FusionPBX GUI it may be helpful to provide an overview of provisioning first.

Provisioning overview (untested)
1. setup a DHCP server where you can set options 66 and 43 to point to an HTTP or TFTP server (most phones capable of auto-provisioning support TFTP, but some also support HTTP) - dnsmasq is an example of a DHCP server that can do this

2. point the URL in option 66 and 43 to a directory on your FusionPBX server. An example using dnsmasq syntax and assuming Yealink phone would be: log-dhcp dhcp-range=192.168.1.100,192.168.1.149,12h dhcp-host=00:15:65:aa:bb:cc,net:YEA,192.168.1.101,yealink_ext101 dhcp-option=YEA,66,"http://fusionpbx/provisioning/yealink" Note that normally option 66 will only be a hostname or IP address, but it is possible that some phones might be smart enough to have a URL there and work out the server type from it.

3. the phone will theoretically then request two files from the server - one is a config file specific to the phone model (for the Yealink T-20 this is y000000000007.cfg) and a file specific to the mac address of your phone. The former file should be provided on your webserver at the URL you specify, and will set all the standard parameters of your phones. The latter file is provided in the next few steps below by the FusionPBX server and allows the setting of the settings specific to each phone eg. the extension to connect to.

4. add a rewrite rule to your web server so that http://fusionpbx/provisioning/yealink/001565aabbcc.cfg gets rewritten to the fusionpbx provisioning URL eg. The rewrite rule should forward the request to http://fusionpbx/mod/provision/index.php?mac=001565aabbcc. FusionPBX uses apache as a web server by default in the iso, but you might be using a different web server so you'll need to work this out for the server you are using. There are some Apache rewrite rule examples in the FusionPBX .htaccess file. An example for Nginx is: location / { rewrite "^/provisioning/[a-z]+/([A-Fa-f0-9]{12})(\.(xml|cfg))$" /mod/provision/index.php?mac=$1 last; }

5. when the phone requests that URL FusionPBX will add the MAC address of the phone to the database and it will show up in the phones database (and therefore on the phones screen in FusionPBX). However at this time it will not have a template assigned to it. So now you go to the phones screen and add an entry for the new phone's mac address and fill in the missing template, model and description values. Then apply your changes

6. reboot the phone

7. when the phone boots after the template has been set the http request to http://fusionpbx/mod/provision/index.php?mac=001565aabbcc should give the phone a real configuration file. Theoretically then the phone will re-configure itself from that config file and then register with freeswitch.

There are many things that can go wrong in automated provisioning. When you are first setting it up you might want to set your DHCP server to provide you with verbose logging so you can diagnose it. You also might want to set your phone to use verbose logging too.

As an example of what will happen when your phone makes a request to FusionPBX for provisioning you can try this URL (changing fusionpbx to the IP address of your server): http://fusionpbx/mod/provision/index.php?mac=00085daabbcc. You can then go to the phones page and you'll see a new phone with this mac address added. Press the X to delete it since it was just an experiment anyway!

Provisioning simple (untested)
Theoretically, if you don't have a DHCP server capable of sending additional information, you can still use provisioning if your phone is capable of it using http (for example a Yealink phone). You can put the provisioning URL on the upgrade tab of the Yealink and you can do steps 4 onwards above to configure the web server and the fusionpbx provisioning. This way, you only have to make one change to your phones manually - to make it look for the provisioning server. Note that with the Yealink phones though, it looks like you have to make one change to the phone anyway - by default "check new config" is disabled, and it appears that it will not work without that set.