Foreword
I spent a couple of hours trying to configure Yealink phones via the End Point Manager in FreePBX 2.9.
Finally I get it working well and thought I should share this experience (nightmare ☺ ) with you guys.
I’m using Yealink phones in this tutorial but other brands should work just as well.
This is not a step-by-step guide but you should get enough information to setup a similar system after you went trough the steps.
1. Requirements (or what I used for this tutorial)
Debian 5.x Operating System (netinstall)
Asterisk 1.6.21.4
FreePBX 2.9.0.7
TFTP:
Make sure you installed tftpd.
On Debian you do : apt-get install tftpd
Then you create a new directory and set the rights:
mkdir /tftpboot
chmod 777 /tftpboot
After this you need to change your default tftp directory to /tftpboot by editing the file: /etc/inited.conf

And restart you tftpd server with:
cd /etc/init.d
./openbsd-inetd restart
If you have a DHCP server accessible you can configure option 66 in the DHCP server (basically add the TFTP server IP address to the DHCP settings).
If you don’t have a DHCP server you can still continue and add the TFTP server IP manually at a later state directly in the phone settings.
2. Install the End-Point Manager Module in FreePBX
After installing a basic FreePBX make sure you install the Endpoint Manager in the FreePBX Module Admin section.

This module will install a new sub-menu in under the Tools-Tab in FreePBX.

3. Configure the Main-Settings
First you need to configure some settings in the “Endpoint Advanced Settings” menu.

The section IP address of phone server refers actually to your TFTP. FTP or HTTP server where the Endpoint manager will store its files and phones connect to download their provisioning information.
In my case it’s the IP address of the Asterisk server.
Then you need to choose the protocol you like to use for your provisioning, since I installed tftpd on my Debian I choose TFTP/FTP.
After this you need to set the “Default Final Configuration Directory” in my case I set it to /fttpboot/.
This path depends on your TFTP setup; therefore you need to change the path accordingly.
4. Add phone brands and models to the Endpoint Manager
Next you go into the Endpoint Configuration Menu and Install your respective phone types. In my case all the Yealinks.
To do this select “Check for updates”. You should get a list of all supported phones.

Click the green “Install” button(s) for each brand of phone you like to install.
For each of the installations you will see a orange box displaying the installation activities. At the end of each installation you need to hit “Return”

After the installation you need to enable the phone models which you like to administrate with the Endpoint-Manager by enabling each of them.

In case you have no Internet connection to download the various phone brand XML files as described above you can download the files also from:
http://provisioner.net/releases

and then upload them via “Endpoint Advanced Settings” and then click on “Manual Endpoint Modules Upload/Export”. You will see following screen:

Here you can upload the Provisoner as well as the brand package, which you download from the above website (http://provisioner.net/releases)
5. Add a first Device
Make sure you created a working FreePBX extension before you do the following steps.
Now it’s time configure our first device (in this tutorial I use a Yealink T38P).
To do so select “Endpoint Device List” from the FreePBX menu. You have two main options to add a new device:
- Manually by entering the MAC-Address of the device
- Automatically by scanning the your network for all un-managed phones
In this tutorial I scan our network by clicking the “Go” button.
(make sure you have nmap installed on your Linux server).
The scan can take a couple of minutes, therefore just hang in there.

After a while you should see a list similar to this:

I choose the phone with the IP 192.168.2.174 and select the model T38 and assign extension 1000.
Attention: the drop down list will only show the installed and enabled phone models. So if you need other phones just go back to the step where we downloaded and enabled various phone brands and models.
After clicking “Add selected phone(s) you will see a screen like this:

Now you need to create/build the new configuration files (basically creating the files in your TFTP directory) by clicking “Rebuild Configuration for selected phones”).

This will create / update the files in your TFTP directory.
6. Configure your phone
Since I don’t have a DHCP server at my hand to configure the option 66 (basically add the TFTP server location into the DHCP communication) I need to add my TFTP server IP-Address manually into the Yealink phone.
On a T38 click on the “Phone” tab followed by “Auto Provisioning”.

In the Server URL you need to key in the TFTP server IP address.
Attention: the tftpboot directory is the default directory. Therefore you only need to key in the protocol and the IP address of your tftp server.
In my case: tftp://192.168.2.175
Make sure that “Check new config” and “Repeatly” are “On”.
Choose the frequency of the check in minutes.
Attention: the phone will only re-configure itself if there is a change in the downloaded configuration files.
Click the “Autoprovision Now” button and your phone will get the configuration files immediately or just wait until the phone connects to your TFTP server as per your Interval settings.
7. Enabling ARI module for Endpoint Manager
You can allow your users to manage certain aspects of the phone settings via the FreePBX ARI module.
The end-user can change his speed-dials, BLF, etc directly on the ARI (Recordings-Panel) in FreePBX.
This feature allows you to protect the IP phones WEB-GUI with a strong not known password.
In the “End Point Advanced Settings” you select “Enable FreePBX ARI Module” and click “Update Globals”
Then you can go to your respective Template and select which features you like to enable for self-service configuration in the ARI (Recordings Tab).

The user can now login into the Recordings module. There will be a new Menu-Point “ Phone-settings”

Attention there is a bug (spelling error in one file), which you need to change.
In most cases you will only see a blank screen after you select “Phone Settings”
Edit this file and make sure to set the paths correctly:
/var/www/html/admin/modules/endpointman/ari/modules/phonesettings.module
function action($args) {
global $endpoint, $global_cfg;
$doc_root = $_SERVER["DOCUMENT_ROOT"] .”html/admin/modules/endpointman/”;
require($doc_root . “includes/functions.inc”);
and
function display($args) {
if (!isset($_SESSION['dbh_asterisk'])) {
die(‘No Database?’);
}
$doc_root = $_SERVER["DOCUMENT_ROOT"] .”html/admin/modules/endpointman/”;
require($doc_root . “includes/functions.inc”);
You can download the PDF-Tutorial from here: Endpoint-Manager with FreePBX and Yealink.pdf
Cheers
Daniel
Hayibo! fully supports dynamic agents and users login and logoff.

After an agent has logged into te queue, the pause / aux code feature is available. The agent can easily select between 10 different pause codes, which you can individually configure in the hayibo settings.