Polycom

Overview of Polycom's Phones

Polycom makes a very popular series of SIP phones that work with Asterisk and FreePBX.  

The VVX Business Media Phones are the latest models.  The VVX300 is an inexpensive fully featured phone.  The VVX400 is a mid-line version with more buttons and a color screen.  Both phones can have additional buttons using the VVX Expansion Module or the VVX Color Expansion Module.

The Soundpoint IP Series is a more mature series.  The IP335 and IP550 are the most popular phones in this series.

Using a Polycom Phone with FreePBX/Asterisk

To use a Polycom phone with FreePBX, you must set-up an Extension in FreePBX using the Extensions Module Module.  When you do so, you will select an extension number and password which the phone will use to register to your FreePBX system.

Next you must configure the Polycom phone to connect to your FreePBX system.

Configuring a Polycom Phone using the web interface

The easiest way to configure a single Polycom phone is to connect to the phone using it's web interface.  When you connect a Polycom phone to your network and power it up, it will obtain an IP address from your DHCP Server (in most cases, your router).

To find out the IP address, hit Home/Settings/Status/Network/TCPIP Parameters on your phone.

Using a web browser, type in the IP address.  You will be asked to select between admin and user, and for a password.  The default admin password is 456.  The default user password is 123. Select "admin" and enter the admin password.

 

ClickSettings and then SIP at the top of the page.  

Then click Lines on the left side of the page.

Click on the + to the left of Identification, Authentication, Server 1, and Message Center to expand those areas.

Change the following entries.  These instructions assume that you are configuring extension 100 to connect to FreePBX running on 192.168.1.50.

 

Identification:

Address:  100

Label:  

Number of Line Keys:  2

Calls Per Line:  10

 

Authentication:

User ID:  100

Password:  extensionpassword

 

Server 1:

 

Special Interop:  Standard

Address: 192.168.1.50

Port:  0

Expires:  300

Register:  Yes

 

Message Center:

Subscription Address:  Extension#

Callback Mode:  Contact

Callback Contact:  *98100

Then click "Save" at the bottom.

 

Now, click Preferences and then Additional Preferences at the top of the page.

Click on the + to the left of Auto Answer to expand those areas.

Auto Answer SIP Calls:  Disable

Ring Class:  Ring Auto Answer

Then click "Save" at the bottom.

Configuring a Polycom Phone to download configuration files

If you want to make advanced configuration changes or configure a large number of phones, you may find it easier to configure the phones either using the EndPoint Manager Module (a commercial module available for purchase from FreePBX) or by creating your own configuration files in the /tftpboot directory of your FreePBX.

When a Polycom phone first boots up, it will query your DHCP server for an IP address to use.  It will also ask your DHCP server if it supports "Option 66."  If your DHCP Server does, the Polycom phone will obtain the information set in Option 66 and use it to attempt to download a configuration file from the source designated.  In most cases, you'll want to configure your DHCP Server to supply the following:

tftp://192.168.1.50

Note:  Replace 192.168.1.50 with the IP address of your FreePBX machine.

Now, reboot each of your phones and during boot stage, they should obtain an IP address and automatically configure themselves to download configuration data from the configuration files.

If your router does not support DHCP Option 66, then you'll need to manually configure each Polycom to download the configuration files from you FreePBX install.  Follow the instructions above to gain access to the web interface and then click on Settings, Provisioning Server.  In the Provisioning Server page, make the following changes:

 

Server Type:  TFTP

Server Address:  192.168.1.50

Note:  Replace 192.168.1.50 with the IP address of your FreePBX machine.

Now click "Save" at the bottom.

Creating Configuration Files

Most distros that include FreePBX and Asterisk (including the FreePBX Distro) includes a TFTP server that will respond to TFTP requests by supplying files contained in the /tftpboot folder.  

When a Polycom phone attempts to download configuration files, it looks for one file:

000000000000.cfg

That file contains information telling the phone where to look for other configuration related files.  Typically, that file will be configured to cause the phone to look for generic file used by all phones, a phone specific file, and a directory file.

In the sample configuration files listed below, the phones will look for the following files:

polycom.cfg

macaddress-ph.cfg

macaddress-directory.xml

(where macaddress is the MAC address of the phone in LOWER case, such as 00085d2cffff.cfg).

These files are HTML files that contain configuration parameters that are used to configure the phones.  You can place any configuration parameter into either polycom.cfg or the macaddress-ph.cfg file. Parameters contained in polycom.cfg will be loaded by every phone, while parameters in macaddress-ph.cfg will be loaded only by the phone that has that particular mac address.  If a parameter is duplicated in both files, the parameter in the macaddress-ph.cfg file will control.  Changes made using the phone interface will control over any configuration file parameter, until the phone is reset.  A phone will not load any configuration parameters unless it finds the 000000000000.cfg file.

To create the configuration files, login to your PBX's command prompt and type the following:

cd /tftpboot

nano polycom.cfg

cd /tftpboot

nano polycom.cfg

Now insert whatever information you want to appear in the configuration file, and then hit CTRL-X and then Y to save and exit.  Repeat the above commands with the macaddress-ph.cfg in place of polycom.cfg in order to create a phone specific configuration file.

Create configuration files from the web interface

You can create a configuration file (or find the proper value for a particular configuration entry) from the web interface.  Start by configuring your Polycom phone from the web interface.  When you're done, click on "**".  Scroll down to "**," and then click the "**".  This will download a file to your computer called ** with all the entries that you configured using the web interface.

Sample Configuration Files

000000000000.cfg

<?xml version="1.0" standalone="yes"?> <!-- Default Master SIP Configuration File--> <!-- For information on configuring Polycom VoIP phones please refer to the --> <!-- Configuration File Management white paper available from: --> <!-- http://www.polycom.com/common/documents/whitepapers/configuration_file_management_on_soundpoint_ip_phones.pdf --> <!-- $RCSfile$  $Revision: 135829 $ --> <APPLICATION APP_FILE_PATH="sip.ld" CONFIG_FILES="[PHONE_MAC_ADDRESS]-ph.cfg,polycom.cfg" MISC_FILES="" LOG_FILE_DIRECTORY="" OVERRIDES_DIRECTORY="" CONTACTS_DIRECTORY="" LICENSE_DIRECTORY="" USER_PROFILES_DIRECTORY="" CALL_LISTS_DIRECTORY="">    <APPLICATION_SPIP300 APP_FILE_PATH_SPIP300="sip_213.ld" CONFIG_FILES_SPIP300="phone1_213.cfg, sip_213.cfg"/>    <APPLICATION_SPIP500 APP_FILE_PATH_SPIP500="sip_213.ld" CONFIG_FILES_SPIP500="phone1_213.cfg, sip_213.cfg"/>    <APPLICATION_SPIP301 APP_FILE_PATH_SPIP301="sip_318.ld" CONFIG_FILES_SPIP301="phone1_318.cfg, sip_318.cfg"/>    <APPLICATION_SPIP320 APP_FILE_PATH_SPIP320="sip_334.ld" CONFIG_FILES_SPIP320=""/>    <APPLICATION_SPIP330 APP_FILE_PATH_SPIP330="sip_334.ld" CONFIG_FILES_SPIP330=""/>    <APPLICATION_SPIP430 APP_FILE_PATH_SPIP430="sip_327.ld" CONFIG_FILES_SPIP430="phone1_327.cfg, sip_327.cfg"/>    <APPLICATION_SPIP501 APP_FILE_PATH_SPIP501="sip_318.ld" CONFIG_FILES_SPIP501="phone1_318.cfg, sip_318.cfg"/>    <APPLICATION_SPIP600 APP_FILE_PATH_SPIP600="sip_318.ld" CONFIG_FILES_SPIP600="phone1_318.cfg, sip_318.cfg"/>    <APPLICATION_SPIP601 APP_FILE_PATH_SPIP601="sip_318.ld" CONFIG_FILES_SPIP601="phone1_318.cfg, sip_318.cfg"/>    <APPLICATION_SPIP670 APP_FILE_PATH_SPIP670="sip_403.ld" CONFIG_FILES_SPIP670=""/>    <APPLICATION_SSIP4000 APP_FILE_PATH_SSIP4000="sip_318.ld" CONFIG_FILES_SSIP4000="phone1_318.cfg, sip_318.cfg"/>    <APPLICATION_SSIP7000 APP_FILE_PATH_SSIP7000="sip_403.ld" CONFIG_FILES_SSIP7000=""/> </APPLICATION>

 

polycom.cfg

<polycomConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="polycomConfig.xsd">    <!-- This is a comment.  Anything that appears between the arrows like this will be ignored by the phone. The phone will load configuration changes when you reboot. -->   <!-- These lines enable you to set the Admin and User Passwords in the configuration files -->   <device device.set="1" > </device> <device.auth.localAdminPassword device.auth.localAdminPassword.set="1" > </device.auth.localAdminPassword> <device.auth.localUserPassword device.auth.localUserPassword.set="1" > </device.auth.localUserPassword>   <!-- These lines set the Admin Password to 12345 and the user password to 4321. -->   <device.auth device.auth.localAdminPassword="12345" device.auth.localUserPassword="4321" > </device.auth>     <!-- These lines set the dialplan to what is typical for North America. -->     <dialplan dialplan.digitmap="[2-9]11|0T|011xxx.T|1[2-9]xxxxxxxxx|[2-9]xxxxxxxxx|[2-9]xT|*x.T" > </dialplan> <dialplan.digitmap dialplan.digitmap.timeOut="0|1|3|3|3|2|2" > </dialplan.digitmap>     <!-- These lines allow the phone to get the time and date via ntp Change gmtOffset to match your location (in seconds) -->   <tcpIpApp.sntp tcpIpApp.sntp.address="pool.ntp.org" tcpIpApp.sntp.gmtOffset="-28800" tcpIpApp.sntp.resyncPeriod="86400" > </tcpIpApp.sntp>   <!-- These lines tell the phone NOT to get the time and date via DHCP -->   <tcpIpApp.sntp.address tcpIpApp.sntp.address.overrideDHCP="1" > </tcpIpApp.sntp.address>   <!-- Various call options For Directed Call Pickup to work, notifycid=yes must be added to the end of the Asteisk SIP Settings Module. -->   <call call.dialtoneTimeOut="60" call.directedCallPickupMethod="legacy" call.directedCallPickupString="**" call.enableOnNotRegistered="1" call.lastCallReturnString="*69" call.localConferenceCallHold="1" call.localConferenceEnabled="1" call.offeringTimeOut="60" call.parkedCallRetrieveMethod="" call.parkedCallRetrieveString="" call.rejectBusyOnDnd="1" call.ringBackTimeOut="120" call.singleKeyPressConference="0" call.stickyAutoLineSeize="1" call.transferOnConferenceEnd="1" call.urlModeDialing="0" > </call> <feature.urlDialing feature.urlDialing.enabled="0" > </feature.urlDialing> <call.transfer call.transfer.blindPreferred="1" > </call.transfer> <call.callWaiting call.callWaiting.enable="1" call.callWaiting.ring="beep" > </call.callWaiting> <up up.simplifiedSipCallInfo="1" > </up>   <!-- Log and notify of missed calls on each registration -->   <call.missedCallTracking call.missedCallTracking.1.enabled="1" call.missedCallTracking.2.enabled="1" > </call.missedCallTracking>   <!-- Add missed calls that are picked up by other extensions to the received calls list. Change "1" to "0" if you prefer no logging of such calls. Leave 1 as is and change "200" to "" if you prefer that such calls show up as missed calls. -->   <call.advancedMissedCalls call.advancedMissedCalls.addToReceivedList="1" call.advancedMissedCalls.reasonCodes="200" > </call.advancedMissedCalls>     <!-- Reminders about calls left on hold -->     <call.hold.localReminder call.hold.localReminder.enabled="1" call.hold.localReminder.period="30" call.hold.localReminder.startDelay="30" > </call.hold.localReminder>    <!-- Sets QOS to current standards -->   <qos.ip.rtp qos.ip.rtp.dscp="46" > </qos.ip.rtp> <qos.ip.callControl qos.ip.callControl.dscp="24" > </qos.ip.callControl>   <!-- Enable Powersaving mode (display goes off completely when phone not used) -->   <powerSaving powerSaving.enable="1" > </powerSaving>   <!-- Sets powersaving timeouts (in minutes) -->   <powerSaving.idleTimeout powerSaving.idleTimeout.offHours="1" powerSaving.idleTimeout.officeHours="120" powerSaving.idleTimeout.userInputExtension="1" > </powerSaving.idleTimeout>     <!-- Sets starting hour (8:00 a.m.) and number of hours after start hour that constitute office hours -->     <powerSaving.officeHours powerSaving.officeHours.startHour.monday="8" powerSaving.officeHours.duration.monday="9" powerSaving.officeHours.startHour.tuesday="8" powerSaving.officeHours.duration.tuesday="9" powerSaving.officeHours.startHour.wednesday="8" powerSaving.officeHours.duration.wednesday="9" powerSaving.officeHours.startHour.thursday="8" powerSaving.officeHours.duration.thursday="9" powerSaving.officeHours.startHour.friday="8" powerSaving.officeHours.duration.friday="9" powerSaving.officeHours.startHour.saturday="8" powerSaving.officeHours.duration.saturday="0" powerSaving.officeHours.startHour.sunday="8" powerSaving.officeHours.duration.sunday="0" > </powerSaving.officeHours>   <!-- Delete the section below if you want the light to blink while the phone is in power saving mode -->   <ind.pattern.powerSaving.step ind.pattern.powerSaving.step.1.state.VVX300="0" ind.pattern.powerSaving.step.1.state.VVX310="0" ind.pattern.powerSaving.step.1.state.VVX400="0" ind.pattern.powerSaving.step.1.state.VVX410="0" ind.pattern.powerSaving.step.1.state.VVX500="0" ind.pattern.powerSaving.step.1.state.VVX600="0" > </ind.pattern.powerSaving.step>   <!-- Enables auto answer for Intercom Calls on Asterisk Set class to "ringAutoAnswer" for longer beep and "autoAnswer" for shorter beep -->   <voIpProt.SIP.alertInfo voIpProt.SIP.alertInfo.18.class="autoAnswer" voIpProt.SIP.alertInfo.18.value="Auto Answer" > </voIpProt.SIP.alertInfo> <se.rt.ringAutoAnswer se.rt.ringAutoAnswer.callWait="callWaiting" se.rt.ringAutoAnswer.micMute="0" se.rt.ringAutoAnswer.name="Ring Answer" se.rt.ringAutoAnswer.ringer="ringer2" se.rt.ringAutoAnswer.timeout="500" se.rt.ringAutoAnswer.type="ring-answer" > </se.rt.ringAutoAnswer> <se.rt.autoAnswer se.rt.autoAnswer.callWait="ringer2" se.rt.autoAnswer.micMute="0" se.rt.autoAnswer.name="Auto Answer" se.rt.autoAnswer.ringer="ringer2" se.rt.autoAnswer.timeout="2000" se.rt.autoAnswer.type="answer" > </se.rt.autoAnswer>     <!-- Enables setting ringer using Alert-Info <Bellcore-dr1>, <Bellcore-dr2>, and <Bellcore-dr3> <ringer1> to <ringer9> and <ringerA> to <ringerE> For some reason <ringer10> to <ringer14> did not work, so they are RingerA to RingerE. ringer1- silent ringer2- single ring, low pitch (default) ringer3- double ring, low pitch ringer4- single ring, medium pitch ringer5- double ring, medium pitch ringer6- single ring, high pitch ringer7- double ring, high pitch ringer8- single ring, highest pitch ringer9- double ring, highest pitch ringerA- double ring, medium (but not warbling) ringerB- triple ring, medium and high pitch ringerC- double ring, sounds like you're making an outgoing call on speakerphone ringerD- long ring, low pitch ringerE- Sounds like you're making a call, but only half a ring and then stops Bellcore-dr1- ringer2 Bellcore-dr2- ringer3 Bellcore-dr3- ringerB -->   <voIpProt.SIP.alertInfo voIpProt.SIP.alertInfo.1.class="custom1" voIpProt.SIP.alertInfo.1.value="ringer1" voIpProt.SIP.alertInfo.2.class="custom2" voIpProt.SIP.alertInfo.2.value="ringer2" voIpProt.SIP.alertInfo.3.class="custom3" voIpProt.SIP.alertInfo.3.value="ringer3" voIpProt.SIP.alertInfo.4.class="custom4" voIpProt.SIP.alertInfo.4.value="ringer4" voIpProt.SIP.alertInfo.5.class="custom5" voIpProt.SIP.alertInfo.5.value="ringer5" voIpProt.SIP.alertInfo.6.class="custom6" voIpProt.SIP.alertInfo.6.value="ringer6" voIpProt.SIP.alertInfo.7.class="custom7" voIpProt.SIP.alertInfo.7.value="ringer7" voIpProt.SIP.alertInfo.8.class="custom8" voIpProt.SIP.alertInfo.8.value="ringer8" voIpProt.SIP.alertInfo.9.class="custom9" voIpProt.SIP.alertInfo.9.value="ringer9" voIpProt.SIP.alertInfo.10.class="custom10" voIpProt.SIP.alertInfo.10.value="ringerA" voIpProt.SIP.alertInfo.11.class="custom11" voIpProt.SIP.alertInfo.11.value="ringerB" voIpProt.SIP.alertInfo.12.class="custom12" voIpProt.SIP.alertInfo.12.value="ringerC" voIpProt.SIP.alertInfo.13.class="custom13" voIpProt.SIP.alertInfo.13.value="ringerD" voIpProt.SIP.alertInfo.14.class="custom14" voIpProt.SIP.alertInfo.14.value="ringerE" voIpProt.SIP.alertInfo.15.class="custom2" voIpProt.SIP.alertInfo.15.value="Bellcore-dr1" voIpProt.SIP.alertInfo.16.class="custom3" voIpProt.SIP.alertInfo.16.value="Bellcore-dr2" voIpProt.SIP.alertInfo.17.class="custom11" voIpProt.SIP.alertInfo.17.value="Bellcore-dr3" > </voIpProt.SIP.alertInfo> <se.rt.default se.rt.default.callWait="callWaiting" se.rt.default.micMute="0" se.rt.default.name="Default" se.rt.default.ringer="ringer2" se.rt.default.timeout="2000" se.rt.default.type="ring" > </se.rt.default> <se.rt.custom1 se.rt.custom1.callWait="callWaiting" se.rt.custom1.micMute="0" se.rt.custom1.name="custom1" se.rt.custom1.ringer="ringer1" se.rt.custom1.timeout="2000" se.rt.custom1.type="ring" > </se.rt.custom1> <se.rt.custom2 se.rt.custom2.callWait="callWaiting" se.rt.custom2.micMute="0" se.rt.custom2.name="custom2" se.rt.custom2.ringer="ringer2" se.rt.custom2.timeout="2000" se.rt.custom2.type="ring" > </se.rt.custom2> <se.rt.custom3 se.rt.custom3.callWait="callWaiting" se.rt.custom3.micMute="0" se.rt.custom3.name="custom3" se.rt.custom3.ringer="ringer3" se.rt.custom3.timeout="2000" se.rt.custom3.type="ring" > </se.rt.custom3> <se.rt.custom4 se.rt.custom4.callWait="callWaiting" se.rt.custom4.micMute="0" se.rt.custom4.name="custom4" se.rt.custom4.ringer="ringer4" se.rt.custom4.timeout="2000" se.rt.custom4.type="ring" > </se.rt.custom4> <se.rt.custom5 se.rt.custom5.callWait="callWaiting" se.rt.custom5.micMute="0" se.rt.custom5.name="custom5" se.rt.custom5.ringer="ringer5" se.rt.custom5.timeout="2000" se.rt.custom5.type="ring" > </se.rt.custom5> <se.rt.custom6 se.rt.custom6.callWait="callWaiting" se.rt.custom6.micMute="0" se.rt.custom6.name="custom6" se.rt.custom6.ringer="ringer6" se.rt.custom6.timeout="2000" se.rt.custom6.type="ring" > </se.rt.custom6> <se.rt.custom7 se.rt.custom7.callWait="callWaiting" se.rt.custom7.micMute="0" se.rt.custom7.name="custom7" se.rt.custom7.ringer="ringer7" se.rt.custom7.timeout="2000" se.rt.custom7.type="ring" > </se.rt.custom7> <se.rt.custom8 se.rt.custom8.callWait="callWaiting" se.rt.custom8.micMute="0" se.rt.custom8.name="custom8" se.rt.custom8.ringer="ringer8" se.rt.custom8.timeout="2000" se.rt.custom8.type="ring" > </se.rt.custom8> <se.rt.custom9 se.rt.custom9.callWait="callWaiting" se.rt.custom9.micMute="0" se.rt.custom9.name="custom9" se.rt.custom9.ringer="ringer9" se.rt.custom9.timeout="2000" se.rt.custom9.type="ring" > </se.rt.custom9> <se.rt.custom10 se.rt.custom10.callWait="callWaiting" se.rt.custom10.micMute="0" se.rt.custom10.name="custom10" se.rt.custom10.ringer="ringer10" se.rt.custom10.timeout="2000" se.rt.custom10.type="ring" > </se.rt.custom10> <se.rt.custom11 se.rt.custom11.callWait="callWaiting" se.rt.custom11.micMute="0" se.rt.custom11.name="custom11" se.rt.custom11.ringer="ringer11" se.rt.custom11.timeout="2000" se.rt.custom11.type="ring" > </se.rt.custom11> <se.rt.custom12 se.rt.custom12.callWait="callWaiting" se.rt.custom12.micMute="0" se.rt.custom12.name="custom12" se.rt.custom12.ringer="ringer12" se.rt.custom12.timeout="2000" se.rt.custom12.type="ring" > </se.rt.custom12> <se.rt.custom13 se.rt.custom13.callWait="callWaiting" se.rt.custom13.micMute="0" se.rt.custom13.name="custom13" se.rt.custom13.ringer="ringer13" se.rt.custom13.timeout="2000" se.rt.custom13.type="ring" > </se.rt.custom13> <se.rt.custom14 se.rt.custom14.callWait="callWaiting" se.rt.custom14.micMute="0" se.rt.custom14.name="custom14" se.rt.custom14.ringer="ringer14" se.rt.custom14.timeout="2000" se.rt.custom14.type="ring" > </se.rt.custom14> </polycomConfig>

 

macaddress-ph.cfg

<polycomConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="polycomConfig.xsd"> <!-- Registration Options Change 192.168.1.50 to the IP address of your PBX Change 100 to the extension number change password to the actual password used by your extension To set the phone up to use multiple registrations, duplicate the lines below and change "reg.1" to "reg.2" --> <reg reg.1.server.1.address="192.168.1.50" reg.1.server.1.expires="300" reg.1.address="100" reg.1.auth.password="password" reg.1.auth.userId="100" reg.1.label="X. 100" reg.1.displayName="" reg.1.lineKeys="2" reg.1.ringType="ringer2" > </reg> <!-- Calls per line key --> <call call.callsPerLineKey="8" > </call> <!-- Message Waiting Options Change *98 to match the code used to access voicemail Change 100 to whatever extension number you are configuring If you set the phone up to use multiple registrations, duplicate the lines below and change "msg.mwi.1" to "msg.mwi.2" --> <msg.mwi msg.mwi.1.callBackMode="contact" msg.mwi.1.callBack="*98100" msg.mwi.1.subscribe="100" > </msg.mwi> <msg msg.bypassInstantMessage="0" > </msg> <up up.oneTouchVoiceMail="1" up.mwiVisible="0" > </up> <!-- These lines set the Busy Lamp Fields. They will appear immediately after the line buttons. --> <attendant.resourceList attendant.resourceList.1.address="101" attendant.resourceList.1.callAddress="" attendant.resourceList.1.label="Michelle" attendant.resourceList.1.proceedingIsRecipient="0" attendant.resourceList.1.type="normal"   attendant.resourceList.2.address="102" attendant.resourceList.2.callAddress="" attendant.resourceList.2.label="John" attendant.resourceList.2.proceedingIsRecipient="0" attendant.resourceList.2.type="normal"     attendant.resourceList.3.address="103" attendant.resourceList.3.callAddress="" attendant.resourceList.3.label="Dave" attendant.resourceList.3.proceedingIsRecipient="0" attendant.resourceList.3.type="normal"     attendant.resourceList.4.address="104" attendant.resourceList.4.callAddress="" attendant.resourceList.4.label="Mike" attendant.resourceList.4.proceedingIsRecipient="0" attendant.resourceList.4.type="normal"     attendant.resourceList.5.address="105" attendant.resourceList.5.callAddress="" attendant.resourceList.5.label="Sally" attendant.resourceList.5.proceedingIsRecipient="0" attendant.resourceList.5.type="normal"     attendant.resourceList.6.address="106" attendant.resourceList.6.callAddress="" attendant.resourceList.6.label="Lucy" attendant.resourceList.6.proceedingIsRecipient="0" attendant.resourceList.6.type="normal"     attendant.resourceList.7.address="107" attendant.resourceList.7.callAddress="" attendant.resourceList.7.label="Abraham" attendant.resourceList.7.proceedingIsRecipient="0" attendant.resourceList.7.type="normal"     attendant.resourceList.8.address="108" attendant.resourceList.8.callAddress="" attendant.resourceList.8.label="Rick" attendant.resourceList.8.proceedingIsRecipient="0" attendant.resourceList.8.type="normal"     attendant.resourceList.9.address="109" attendant.resourceList.9.callAddress="" attendant.resourceList.9.label="Bill" attendant.resourceList.9.proceedingIsRecipient="0" attendant.resourceList.9.type="normal"     attendant.resourceList.10.address="110" attendant.resourceList.10.callAddress="" attendant.resourceList.10.label="Sean" attendant.resourceList.10.proceedingIsRecipient="0" attendant.resourceList.10.type="normal" > </attendant.resourceList> <!-- These lines set the Busy Lamp Field Options.  ringer14 is a splash.  ringer1 is silent. --> <attendant attendant.reg="1" attendant.ringType="ringer1" attendant.uri="" > </attendant> <attendant.behaviors.display.remoteCallerID attendant.behaviors.display.remoteCallerID.automata="1" attendant.behaviors.display.remoteCallerID.normal="1" > </attendant.behaviors.display.remoteCallerID>     <!-- These lines indicate whether phones monitored via BLF will show the Caller ID when they ring. With these off, you can still obtain the information by pressing and holding the BLF key while it is flashing. -->     <attendant.behaviors.display.spontaneousCallAppearances attendant.behaviors.display.spontaneousCallAppearances.automata="0" attendant.behaviors.display.spontaneousCallAppearances.normal="0" > </attendant.behaviors.display.spontaneousCallAppearances>     <!-- This enables advanced feature keys, which is necessary in order to customize the softkeys (keys at the bottom) -->     <feature.enhancedFeatureKeys feature.enhancedFeatureKeys.enabled="1" > </feature.enhancedFeatureKeys>     <!-- These lines set the custom softkeys. Note:  For softkeys, it's easiest if you put them in order of which postion you want, and then set the position (insert=) to 0.  Position 0 simply locates the first empty space and puts the key there. All other insert= will put the key in that space, and then push everything else to the right, including empty spaces and other keys that were put in those spaces prior to them. In the first softkey:  Change *98 to match the code used to access voicemail.  Change 100 to whatever extension number you are configuring -->    <softkey softkey.1.action="*98100$Tinvite$$Cwaitconnect$$Cpause2$1234#$Tdtmf$" softkey.1.enable="1" softkey.1.insert="0" softkey.1.label="Voicemail" softkey.1.precede="0" softkey.1.use.active="0" softkey.1.use.alerting="0" softkey.1.use.dialtone="0" softkey.1.use.hold="0" softkey.1.use.idle="1" softkey.1.use.proceeding="0" softkey.1.use.setup="0"     softkey.2.action="140$Trefer$" softkey.2.enable="1" softkey.2.insert="0" softkey.2.label="Xfer x. 140" softkey.2.precede="0" softkey.2.use.active="0" softkey.2.use.alerting="0" softkey.2.use.dialtone="0" softkey.2.use.hold="0" softkey.2.use.idle="1" softkey.2.use.proceeding="0" softkey.2.use.setup="0"     softkey.3.action="*78$Tinvite$" softkey.3.enable="1" softkey.3.insert="0" softkey.3.label="Pickup" softkey.3.precede="0" softkey.3.use.active="1" softkey.3.use.alerting="0" softkey.3.use.dialtone="1" softkey.3.use.hold="1" softkey.3.use.idle="0" softkey.3.use.proceeding="0" softkey.3.use.setup="0"     softkey.4.action="$FDirectories$" softkey.4.enable="1" softkey.4.insert="0" softkey.4.label="Directory" softkey.4.precede="0" softkey.4.use.active="1" softkey.4.use.alerting="0" softkey.4.use.dialtone="0" softkey.4.use.hold="1" softkey.4.use.idle="1" softkey.4.use.proceeding="0" softkey.4.use.setup="0"     softkey.5.action="*78$Tinvite$" softkey.5.enable="1" softkey.5.insert="3" softkey.5.label="Pickup" softkey.5.precede="0" softkey.5.use.active="0" softkey.5.use.alerting="0" softkey.5.use.dialtone="0" softkey.5.use.hold="0" softkey.5.use.idle="1" softkey.5.use.proceeding="0" softkey.5.use.setup="0"     softkey.6.action="150$Trefer$" softkey.6.enable="1" softkey.6.insert="5" softkey.6.label="Xfer x. 150" softkey.6.precede="0" softkey.6.use.active="1" softkey.6.use.alerting="0" softkey.6.use.dialtone="0" softkey.6.use.hold="0" softkey.6.use.idle="0" softkey.6.use.proceeding="0" softkey.6.use.setup="0"     softkey.7.action="160$Trefer$" softkey.7.enable="1" softkey.7.insert="6" softkey.7.label="Xfer x. 160" softkey.7.precede="0" softkey.7.use.active="1" softkey.7.use.alerting="0" softkey.7.use.dialtone="0" softkey.7.use.hold="0" softkey.7.use.idle="0" softkey.7.use.proceeding="0" softkey.7.use.setup="0" > </softkey> <!-- These lines enable and disable various default softkeys --> <softkey.feature softkey.feature.buddies="0" softkey.feature.callers="0" softkey.feature.callers.SPIP235T="1" softkey.feature.callers.SPIP321="1" softkey.feature.callers.SPIP331="1" softkey.feature.callers.SPIP335="1" softkey.feature.directories="1" softkey.feature.directories.SPIP235T="1" softkey.feature.directories.SPIP321="1" softkey.feature.directories.SPIP331="1" softkey.feature.directories.SPIP335="1" softkey.feature.endcall="1" softkey.feature.forward="0" softkey.feature.join="1" softkey.feature.mystatus="1" softkey.feature.newcall="0" softkey.feature.split="1" > </softkey.feature> <softkey.feature.basicCallManagement softkey.feature.basicCallManagement.redundant="1" > </softkey.feature.basicCallManagement>     <!-- These lines enable and disable various softkeys that will appear at the bottom of the phone.  Note that the Directed Call Pickup Entry does not actually enable or disable the feature, but just the presence of a button for Pickup.  BLF keys will perform Directed Call Pickup regardless of how this is set. -->     <feature.presence feature.presence.enabled="0" > </feature.presence> <feature.directedCallPickup feature.directedCallPickup.enabled="0" > </feature.directedCallPickup> <feature.lastCallReturn feature.lastCallReturn.enabled="0" > </feature.lastCallReturn>     <!-- These lines set the backlight options -->     <up.backlight up.backlight.onIntensity="3" up.backlight.timeout="5" up.backlight.idleIntensity="0" > </up.backlight>     <!-- Is the local directory read only?  0=no, 1=yes. -->     <dir.local dir.local.readonly="0" > </dir.local>     <!-- Turn off the message waiting beep.  Remove these lines to turn it back on. -->     <se.pat.misc.messageWaiting.inst se.pat.misc.messageWaiting.inst.1.value="0" se.pat.misc.messageWaiting.inst.2.value="0" se.pat.misc.messageWaiting.inst.3.value="0" > </se.pat.misc.messageWaiting> </polycomConfig>

 

macaddress-directory.xml

Updating the firmware

Polycom refers to its firmware as "UC Software."  It is distributed in a .zip file that contains the actual firmware file and a set of sample configuration files.

The firmware files end in .ld and the configuration files end in .cfg

Polycom has a variety of firmware versions (3.x, 4.x, and 5.x).  

To find which versions of firmware work for which phones, check these links:

VVX Phones:

UC Software Matrix for VVX Phones Phones

Soundpoint IP Phones:

UC Software Matrix for SPIP & SSIP Phones

Firmware is distributed in a combined version (a single .ld file that supports all of the phones that work with that version) and a split version (a separate .ld file for each supported phone).  Generally, you want to use the split version (because they are smaller and will load faster), but the combined version is sometimes required to upgrade from one major version to another (i.e., from version 3 to 4).  If you choose the split versions, consult the Administrator's Guide to find the specific file that works with each phone.  For example,

  • For the VVX 300: 3111-46135-002.sip.ld 

  • For the VVX 310: 3111-46161-001.sip.ld 

  • For the VVX 400: 3111-46157-002.sip.ld 

  • For the VVX 410: 3111-46162-001.sip.ld

Polycom provides firmware files for download here:

http://support.polycom.com/PolycomService/support/us/support/voice/polycom_uc/index.html

and here (latest):

http://support.polycom.com/PolycomService/support/us/support/voice/polycom_uc/polycom_uc_software_release.html

Firmware updates can be installed by placing the firmware files into the /tftpboot folder, configuring the phones to obtain configuration files from your PBX (see above), and then rebooting the phones.

Rebooting the phones

To reboot most Polycom phones, pull the power, or enter the menu screen and find the appropriate option.

For the VVX3xx/VVX4xx series, you can pick up the handset and then press and hold 0, 1, and 3 at the same until the phone reboots.

For other phones, see the Administration Guide for the appropriate reboot combination.

For more information 

Polycom's community forums have a frequently asked questions section that answers many questions regarding the use of Polycom phones:

[FAQ] VoIP frequently asked questions

You can find more information about configuration file options in the Polycom Administration Guide for your phone and firmware:

http://support.polycom.com/PolycomService/support/us/support/voice/index.html

For Polycom phones that require paper labels on buttons, you can find a label template in the section for the phone at this link:

http://support.polycom.com/PolycomService/support/us/support/voice/index.html

Return to Documentation Home I Return to Sangoma Support