TL;DR FreePBX and Polycom VVX provisioning

This guide will quickly give you very important information you need on provisioning VVX phones with FreePBX

When a phone is factory reset, it will get a DHCP lease.

Polycom VVX phones have a mac address starting with 0004F2. You can create a policy in Windows DHCP server to allocate specific IPs to the phones

Polycom phones utilize DHCP option 160 to find a provisioning server. The contents of option 160 must be in string format. (e.g. tftp://192.168.1.10)

For time synchronization, DHCP option 42 must be set.

They also use DHCP option 002 to get the time offset. 

I use software called Tftpd64 to create a tftp server on my windows PCs. I tell it which folder I dump all my config files into.

when the phone boots, it will look for [mac address].cfg, if it can’t find that, it will look for [mac address]-web.cfg, then 000000000000.cfg.

000000000000.cfg is supposed to be the catchall for phone provisioning. It should not contain any actual phone provisioning commands, it only helps the phone point to other configuration files.

Example 000000000000.cfg here

Polycom recommends using XML Notepad by Microsoft to edit these files.

000000000000.cfg defines the following settings before the phone boots:

  • the firmware update file location
  • which config files to load (I recommend setting up a generalize.cfg file, then a [PHONE_MAC_ADDRESS]-sip.cfg file for each individual phone)
  • where to store boot logs (polycom phones will write its boot logs back to the TFTP server)
  • where to store call history logs (polycom phones will write this back to the TFTP server)

This is an example deployment scenario:

  1. The phone reads 000000000000.cfg because it couldn’t find [phone mac].cfg or [phone mac]-web.cfg
  2. Phone will check for firmware updates defined in the file, if none are found it will continue
  3. 000000000000.cfg points to generalize.cfg and [PHONE_MAC_ADDRESS]-sip.cfg
  4. generalize.cfg is read and applied (these settings apply to all phones)
  5. [PHONE_MAC_ADDRESS]-sip.cfg is substituted for the phones MAC, and then is read. (these settings contain passwords, and settings specific to that phone)
  6. The phone boots

The following settings are important for a FreePBX Deployment

generalize.cfg – Settings that don’t change, used by all phones.

msg.mwi.1.callBackMode=”contact” – This is part of the fix for the voicemail button. By default it is set to “register”, but FreePBX requires SIP phones to call a number to get voicemail

voIpProt.SIP.AlertInfo.1.value=”Auto Answer” – When a user dials *80[ext], typically the phone will autoanswer. This is known as page/intercom mode. Special SIP headers are sent by FreePBX so the phone recognizes a page from a regular call. Setting this will make the phone aware of a page

voIpProt.SIP.AlertInfo.1.class=”ringAutoAnswer” – your polycom phone has profiles that define what ringtone to use, how many times to ring, and to auto answer. This setting will tell the phone to auto answer if the SIP.AlertInfo field equals “Auto Answer”

attendant.resourceList.1.label=”Page All” – I have my main page group set to 900 in FreePBX -> Applications -> Paging and Intercom -> Page Group. These commands will create a softkey button to page all phones in page group 900.

attendant.resourceList.1.address=”900″

attendant.resourceList.1.type=”normal”

[PHONE_MAC_ADDRESS]-sip.cfg – you will need one of these per phone, since the attributes defined in this file are specific to each phone

msg.mwi.1.subscribe=”[ext]” – enter your sip extension here to get the mailbox to work

msg.mwi.1.callBack=”*98[ext]” – enter *98 and your sip extension here. This is the number that is called when the voicemail button is pressed.

 

Other notes:

  • Web interface changes:
    • Whenever you manually go into the web interface and make a phone setting change, the phone will write a file [phonemac]-web.cfg to the TFTP server
    • This will prevent it from loading 000000000000.cfg in the future.
  • Web browser:
    • The VVX phones have a full featured web browser, good for internal company resources, or in my case, garage door openers, door buzzers, etc.
    • see mb.main.home for more info