Asterisk@Home Handbook Wiki Chapter 7

VoIP Hardware Solutions
Provider Solution Details
VoIP Hardware Zycoo UC Solutions
  • Modular Design IP PBX for SMB
  • Remote office Centralized Management solution
  • 3rd party app integration, Enterprise Billing, Android & iOS client
Details


Page Contents


Chapter 7 Phones

VOIP phones vary widely in price, features, and sound quality. Phones support either SIP or IAX protocol. For simple testing a free soft phone like X-ten is good. For day to day use a good hard phone is the best. Grandstream makes a cheap easy to configure phone with good quality and feature. Polycom and Cisco make the best phones with the highest sound quality and feature. If you have and existing analog phone like a cordless that you want to use and ATA will convert an analog phone to SIP.


7.1 Soft phones

Soft Phones run on a host computer and use the computer speaker and mic or a headset for voice. Soft phones are available for most operating system.


7.1.1 X-Ten Lite


One of the easiest to setup is X-Lite. X-Lite is available for free from http://www.xten.com. Plus its VERY NAT friendly! (sends out tiny NAT keepalives every 10 seconds to the server)

If X-Lite cannot connect, the setup screen should open, if not, click on the "drop down" icon just to the left of the green Off-Hook icon.

Under System Settings, select the SIP Proxy settings, then double-click on the first entry. You will see the SIP Proxy settings as shown here. The settings I changed are as follows:

Username: 200 (my extension)

Authorization User: 200 (my extension again)

Password: abc123 (my extension password)

DomainRealm: 192.168.5.50 (PBX IP address)

SIP Proxy: 192.168.5.50 (PBX IP address)


7.1.2 sipXphone

The sipXphone project, formerly known as Pingtel's instant xpressa soft phone, is a fully functional SIP soft phone that runs on Microsoft Windows and Linux. The Pingtel's xpressa phone (no longer a Pingtel product) is based on this same source base. Windows Download from http://www.sipfoundry.org/pub/sipXphone/win32/

7.1.3 Express Talk

http://www.nch.com.au/talk/ (they have a freeware version)


7.1.4 Yate

GPL SIP Softphone
http://yate.null.ro/pmwiki/index.php/Main/YateClient

7.1.5 Idefisk

Idefisk Softphone - A softphone that supports the Inter-Asterisk Exchange (IAX2) protocol.
http://asteriskguru.com/idefisk/



7.2 Hard phones


7.2.1 Cisco 7960/7940

The Cisco SIP IP Phone software allows businesses and service providers to use the Cisco 7940 and 7960 IP Phone platforms in any standard SIP network. The SIP software provides for both on-board traditional desktop services such as Caller-ID, Call Hold, Call Transfer, 3-Way Calling, and Call Waiting as well as an XML interface to allow for enhanced web based services. The XML interface allows the phone to transcend the traditional phone paradigm and become a true Internet appliance. By supporting web browsing type functionality as well as allowing for application developers to directly control the user interaction on the phone and integrate tightly with the Cisco SIP phone, the Cisco SIP phone is a key enabler of enhanced and rapid application deployment in any SIP customer's network.

Type setup-cisco from the command line to set up a basic SIPDefault.cnf in the /tftpboot directory.

Copy your Cisco 7.4 SIP firmware into the /tftpboot directory using WinSCP.

using the Cisco config tool in the maint menu to set up your phone.



7.2.1.1 Setting up a Cisco phone step by step

Connecting a Cisco 7960/7940 to your Asterisk@Home. The easiest way to use these phones with Asterisk@Home is with the SIP firmware.

Power on your phone and connect it to your network. You will need to change the IP address of your phone to a free one on your network or enable DHCP is you have a DHCP server.

Unlock your phone by pressing **# (for old firmware) or selecting unlock config from the config menu and type in the password (default is 'cisco')

Change the IP address or enable DHCP. Enter the IP address of your Asterisk@Home box in the TFTP server field. If DHCP is enabled you will have to select alternate TFTP server = yes so you can edit the TFTP field.


Get the latest firmware for the Cisco phone (7.4) and copy the files firmware files to your Asterisk@Home box. Put them in the /tftpboot directory.

Create a SIPDefault.cnf file by using the setup-cisco command and change the file permissions on the firmware files that you uploaded in the last step. Type the following.


setup-cisco
chmod 777 /tftpboot/*


Add a Cisco config file for your phone. Use the web GUI and click maintenance -> Cisco Config -> Create a new phone configuration file.

Type in the mac address of your phone. It’s located on the bottom of your phone. (starts with 00) Enter a name for your phone in the Phone Label box. Enter 200 in the Line Name and the Display Name fields for Line 1. Click add.

Click on Edit phone configuration files and click edit next to your phone. Go to Line 1 and type 200 in the Auth Name box. Then enter a password like abc123 in the password box. Click change.

Create extension 200. setup -> extensions use abc123 for the extension password.

Reboot your phone by disconnecting the power or pressing *-6-settings.

Your phone should upload the new firmware and extension. Make a test call like *65.

Trouble shooting: The Cisco phone can be difficult to upgrade. If your phone does not seem to upload the firmware try this. From command line.

cp /tftpboot/cisco_util/* /tftpboot

Then reboot the phone. After the phone has upgraded the firmware. Type the following so the phone will boot normally.


rm /tftpboot/xmlDefault.CNF.XML
rm /tftpboot/XMLDefault.cnf.xml



7.2.1.3 Configuring Services


The Services button is configured by default to point to /var/www/html/cisco/services/index_cisco.php

The 4th item on that list, RSS feeds is configured to point to rssfeeds.php in the same directory. This is an XML list of sites than can be accessed from the phone. RSS sites can, in theory, be translated to XML by xml.rssparse.php though in practice most of those I tried don't work well giving junky displays or XML parsing errors. YMMV.

7.2.1.3 Configuring Directories


By default the "External Directory" ships integrated with SugarCRM. Just log into Sugar and add your contact information. Don't use any funny symbols though: an ampersand will cause an XML parsing error. Accented characters and ñ are ok though.

7.2.2 Polycom

According to Polycom's site:

Founded in 1990, Polycom is the only company today delivering end-to-end rich media collaborative applications for voice, video, data and the web from desktop and mobile personal systems to room systems to the network core. Our vision is to enable people to connect anytime, anyplace and with any device in a virtual experience as natural as being there.

In addition to being the worldwide leader in market share for best in class group and personal video systems, video and voice collaboration infrastructures and conference phones, Polycom also has the only solution for delivering Unified Collaborative Communications – the convergence of voice, video, data and web – known as The Polycom Office.

Polycom is at the center of the industry shift to broadband networks. IP networks enable the proliferation and convergence of richer communications, including video, which enhance the quality of our lives, create new opportunities, and are fast becoming the foundation for how we work.

Our full range of high-quality, easy to deploy, manage and use voice and video communications endpoints, video management software, web conferencing software, multi-network gateways and multipoint conferencing enable organizations of all sizes to increase productivity and agility. Polycom delivers business value by cutting costs, simplifying system management, fostering real time collaboration and decision making, and improving relationships with employees, customers and partners.

EDITOR'S NOTE: The above is marketing fluff. Polycom has some great phones, but the "real-time
collaboration" does NOT include making its current software and configuration files available to
its customers. Further, their website gives no indication as to which sellers of their phones are certified
resellers who can provide that software. See below.


7.2.2.1 Why choose Polycom VOIP Phones?

Polycom has a few VOIP phones (or just called IP phones). It's better to visit these links to see the differences.

Polycom SoundPoint IP Phones
http://www.polycom.com/products_services/0,1443,pw-34-182,00.html

Polycom VoIP Products - Family Brochure (nice chart of the differences between the phones).
http://www.polycom.com/common/pw_item_show_doc/1,1276,4884,00.pdf

I've chosen the 501 for my company because it is relatively cheap (compared to those Ciscos!), have some very nice features (provisioning!!!), and a nice big old LCD display, a great speaker phone. The following instructions can be used for other Polycoms but don't just blindly follow them. Check to be sure you UNDERSTAND what is occuring before just cutting and pasting everything.


7.2.2.2 How to get Polycom Firmware and SIP Updates


Please note that Polycom tech support as of November 2006 recommends the use of SIP firmware 1.6.7 with Asterisk based systems. Until Asterisk can solve its RFC compliance issues, SIP firmware 2.x.x is not going to work well. 1.6.7 IS available on the Polycom web site.

Right now Polycom doesn't allow just anyone to download the latest software updates from their sites. Only CERTIFIED resellers can distribute the software updates. You could also only call these resellers for support. Polycom only offers email support but I hope you have a LOT of patience. They take a long time to reply. I believe Polycom will allow you to download the old updates, just not the new ones.

What I did was buy a bunch of phones, but on 2 of them I purchased 3 year maintenance contracts so I will have access to their latest updates and tech support. I then put those 2 phones aside and used them for troubleshooting and testing and calling in for questions.

Polycom Voice Products Download List
http://www.polycom.com/resource_center/1,,pw-492,00.html

Polycom Resource Web Site
http://extranet.polycom.com/csnprod/signon.html

New Zeland Polycom website has the files available for download!
http://www.polycomnz.co.nz/software.html

This is the site everyone used to grab the files when Polycom didn't allow downloads:
http://www.freedomphones.net/polycom/files

Note that, as of November 2006, Polycom does NOT allow downlaods of their current software and configuration files.


7.2.2.3 Polycom and NATS. Welcome to hell (at least as of 01/20/06)

Polycoms are just not made with NATS in mind. Yeah sure, they have a couple of settings you can try but simply put, they suck on a NAT. These phone were made to exist on the same network as the PBX. In that case, they work great. The second you have to go over a NAT, whamo. Welcome to hell. These phones are IP phones. No matter where in the world I plug these guys in, they should work. Period. With 98% of businesses and 100% of homes with cable/dsl routers using NAT, you'd think Polycom would have tried harder. Unfortunately, that is not the case.

The options the polycoms need are:

  1. STUN Server setting
  2. NAT Keep Alive setting (note — this is included in SIP version 2)
  3. IAX Support

Most users (like me) have been forced to make the Polycom Re-register SIP to their servers every 30-60 seconds. This way, the NAT holes that are created stay open. By way of contrast, Xten's (now called CounterPath) softphone sends out this tiny little NAT keep alive message to the server that does a great job of keeping those NAT holes open. Unfortunately, there is no option to do this on the Polycom. Obviously this isn't a perfect solution but for now, it is the ONLY solution other than forcing the Polycom and the A@H server to communicate over a pre-configured port. Pre-configuring ports on the server and the polycom phones are not what I would call a smart idea when you have a large roll out. Individual configurations should be seriously frowned upon when you have lots of phones to deal with. Provisioning exists to minimize the amount of administration, not increase it.

The funny thing is, when you force the phone to re-register every 30-60 seconds, it checks the voicemail right after SIP registration. When it sees you have voicemail, it will give a voice mail "Chirp". I can assure you, a room full of polycom phones chirping every 30-60 seconds will drive you nuts. Thank goodness there's a way to turn off the voicemail chirp.


7.2.2.4 How to use Provisioning (Central Boot Server) to deploy Polycom Phones

If you are planning to deploy even one or two polycom phones, you will save yourself a great deal of wasted effort and time by setting up central provisioning for them.

These instructions have been updated, simplified, and made more comprehensive for the 2006 Polycom recommendations in November 2006. The previous instructions are retained below.

Polycom's current central provisioning recommendations specifically recommend you NOT follow the previously-posted instructions. As Polycom points out, whenever they issue an application upgrade, you will have to completely re-perform the configuration unless you follow their current recommendations. Also, the previously-posted instructions do not address actually setting up the DHCP and FTP servers you need. Since it is actually quite easy, and for convenience, I have put everything in one place. This will result in only moderate security (it will still be possible to read the ftp user password on the phone), and many more options are available, but this will get you started, and probably meet the needs of most small office. Polycom's Administrator's Guide will take you from here.

7.2.2.4.0 Polycom Central Provisioning Overview

Central provisioning is EASY, and definately the way to go, even if you only have one phone, because you
will need to upgrade the Bootrom and SIP software in the phone anyway (as of November 2006, a new 601 phone
shipped is a major version behind; the major version of SIP went from 1 to 2 by August 2006, but the new
phone still shipped with version 1 in November 2006)

Polycom has specific recommendations regarding how to do this, so that future upgrades will be easy as well. The following describes in some detail the simple steps needed to get this working. These are amazingly configuruable phones, and there are many ways this could be done, so consider this a starting point. When you are done you will have a no-touch install, whereby the phone can be just plugged into the network and require no manual configuration.

Resources from the Polycom.com site: Especially "Configuration File Management on SoundPoint IP Phones" which is here as of 2008-09-19 White Paper (search for "White Paper") and SoundPoint IP/SoundStation IP Administrator's Guide, Version 2.2.x (menu: Support/Audio Support/SoundPoint IP Series/SoundPoint IP 601; look at the bottom for Documentation). See more info on this page

Be warned that you will need the current SIP software, which includes the configuration files you need for this setup, but you CANNOT get that from the Polycom site, but rather will have to get it from your reseller. Verify with your vendor that they will provide the current SIP software version (and current BootRom version) if you purchase your phone from them. You can view the current version numbers from the webpage that shows the documentation above, but in spite if the "Downloads" title, you CANNOT acutally download any current software, and the version available as of November 2006 was several versions (including a major version upgrade) behind. (However, contacting Polycom and asking nicely may get you that current software).

7.2.2.4.0.1 FIRST STEP - DHCP

You will want a DHCP server on your network, to provide the phones with their IP address, subnet, Boot server, and time server information. I use a Linux Fedora dhcpd running on 192.168.1.1. I run trixbox on 192.168.1.10, which is where I keep the Polycom config files.

The /etc/dhcpd.conf file looks like:

  1. At the beginning of the file, outside any subnet definition, define the option code for the boot server:
option boot-server code 66 = string;

  1. define the settings for our subnet
subnet 192.168.1.0 netmask 255.255.255.0 {
  1. --- default gateway
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name "yourdomainname.com";
option domain-name-servers 192.168.1.1;
option time-offset -25200; # Mountain Standard, -18000 EST, 3600/hr

option ntp-servers 192.168.1.1;# time server

range 192.168.1.120 192.168.1.150; # if you want dhcp to issue IP's to other computers

  1. Polycom phones here
group { # group phones together so only they get boot server info

  1. Boot server, including protocol and username/password
  2. See Polycom SIP Adminstrative guide (v2.0, page 7); boot-server option defined above

option boot-server "ftp://polycom:yourpolycomuserpassword@192.168.1.10";


  1. Now, list the phones by network address, to give them
  2. defined IP per phone. Note that listing them here is
  3. what makes them part of the group that gets the above
  4. configuration

host x204 { # host name is optional, but may help you track extensions
hardware ethernet 00:04:f2:06:01:01; # hardware address of phone - also serial number
fixed-address 192.168.1.15; # IP you want assigned to the phone
}


  1. list more phones here with their hardware address and IP address you want assigned.

} #end of Polycom group

} # end of subnet block

restart dhcpd:

/etc/rc.d/init.d/dhcpd restart

Now, when the phone boots, it will contact the DHCP server and get its IP address, subnet, time server, gateway, and boot server information. It will then contact the boot server to download its configuration.

If you need to reset your phone to factory defaults so it uses DHCP, the sequence varies by model of phone; see section 2.2.1.4 of the Adminstartion Guide.

7.2.2.4.0.2 CREATE FILE REPOSITORY

Now, we need to set up the repository on your boot server (I use my trixbox machine for this). First, as root, create the polycom user:

useradd polycom

Now, you need to set a password for the polycom user. Be aware that anyone will be able to see this password from any polycom phone (Menu/Status/Platform/Configuration)

passwd polycom yourpolycomuserpassword

Now, limit the polycom account so it cannot be used to login. Edit /etc/passwd, find the line for the polycom user just created (probably the last line), and change the portion of that line after the last colon (which should be something like "/bin/bash", which will be used as the login shell) to "/sbin/nologin"

Now, we need to set up the ftp server for the phones to get thier updated software and configuration. We will use vsftpd. We want the polycom user to only be able to see the files in its directory, and not be able to snoop around the trixbox. Go to /etc/vsftpd/vsftpd.conf and uncomment the line like:

chroot_list_enable=YES

You will also want the following two lines:
userlist_enable=YES
userlist_deny=NO

This will provide that only users listed in the userlist_file will be allowed to login via ftp. You don't want regular users using ftp because the password is sent in clear text over the network (regular users should use secure ftp via ssh)

Now, create a file /etc/vsftpd.chroot_list with the single line with the word "polycom". This will put the polycom user in a "chroot jail"

Now, create or edit /etc/vsftpd.user_list, and list any users that you want to be able to use the insecure ftp protocol. In our case, we just need a single line with the word "polycom", so the phone will be able to
access the files, but no other users will.

Make sure vsftpd is run automatically:
chkconfig vsftpd on

And restart it:
/etc/rc.d/init.d/vsftpd restart

Now, go to the /home/polycom directory and remove write permission for the polycom user, since we don't want the phones to be able to change their configuration files:
chmod u-w .

Now, create three directories for files uploaded from the phones:
mkdir contacts
mkdir log
mkdir overrides

Now, give the polycom user permission to put files into those directories:
chown polycom log
chgrp polycom log
chown polycom contacts
chgrp polycom contacts
chown polycom overrides
chgrp polycom overrides

Now, unzip the files from the sip software zip file, and copy them into the /home/polycom directory. Also, from the SoundPointIPLocalization folder within that zip and the sub-sub directory for the language, get the SoundPointIP-dictionary.xml file for your language and put it into that directory (I think that will allow the phone to use prompts from your language). Finally, copy the bootrom.ld file from the bootrom zip into that directory. Again, you will need to get the sip zip file and bootrom zip files from your reseller or Polycom.

7.2.2.4.0.3 CREATE CONFIGURATION FILES

Now, you have to make the configuration files. Your phone will get the bootserver string from the dhcp server, Including the username and password. Because the polycom user has a chroot jail, the phone will be looking in the /home/polycom directory, but that directory will look like the root. The phone will look for a file with a name like 0004f2060101.cfg based on the MAC hardware address of the phone. MAC address configuration files *MUST* be in lower case for the phone to locate them and properly boot. I have not identified if all configuration files must be lower case.

Polycom provides a template for that file, which is also described in the white paper. This is the key to the configuration files, and is the connection between the phone and the extension configuration. They key is that this file defines a number of files in which the phone will search, in order, for every configuration entry. The phone will use the first entry found. Therefore, you should put the entries for the extension, and general configuration for your site, in this list before the general files provided by Polycom.

My 0004f2060101.cfg looks like:
<?xml version="1.0" standalone="yes"?>
<!-- Make one of these for each phone, changing only the first .cfg file with per-phone settings. -->
<APPLICATION APP_FILE_PATH="sip.ld" CONFIG_FILES="x204.cfg, aaps-settings.cfg, phone1.cfg, sip.cfg"

MISC_FILES="" LOG_FILE_DIRECTORY="/log" OVERRIDES_DIRECTORY="/overrides" CONTACTS_DIRECTORY="/contacts"/>

So, make one of these files for each phone. Change the filename to match the MAC address of the phone, change the x204.cfg to the per-phone info (I name these per-phone files by the extension number), and change the aaps-settings.cfg to the name of a file with your per-site settings. Note also the directories for the phone to store its log, overrides, and contacts info.

Note that the phone1.cfg and sip.cfg files contain default information from Polycom. You can use these to see the format of the files, but you should NOT modify these. When the SIP application is upgraded, it will come with a new phone1.cfg and sip.cfg, which you can just drop into this directory. If you modify these huge files, you will have to find all of your edits and copy them to the new versions of these new files from Polycom!

The x204.cfg would look like:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Per-phone configuration in this file -->
<reginfo>
<reg reg.1.displayName="204 Frank" reg.1.address="204" reg.1.label="204"
reg.1.auth.userId="204" reg.1.auth.password="yoursipsecrethere"/>
</reginfo>

That file contains the userid and auth.userid for the extension, along with the sip secret for the extension.

The aaps-settings.cfg looks like:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!-- Our local phone system common configuration in this file -->
<localcfg>
<server voIpProt.server.1.address="192.168.1.10"/>
<SIP>
<outboundProxy voIpProt.SIP.outboundProxy.address="192.168.1.10"/>
</SIP>
<voice>
<volume voice.volume.persist.handset="1"
voice.volume.persist.headset="1"/>
</voice>
<TCP_IP>
<SNTP tcpIpApp.sntp.daylightSavings.enable="0"/>
</TCP_IP>
<localcfg>

The settings here come from the Administrator's Guide. Note that there is no daylight savings time here in Arizona!

7.2.2.4.0.4 CREATE TRIXBOX EXTENSION

The last thing you need to do is set up the Extension in trixbox. Using FreePBX, go to Setup/Extensions, Add Extension/SIP. Extension number is 204, Display Name is the name you will see on caller ID ("Frank"), and secret is your SIP secret ("yoursipsecrethere"). Those are the only three things you need to set!

7.2.2.4.0.5 REVIEW OF CONFIGURATION PROCESS

Now, when the Polycom phone boots up, it will get it's IP address and boot server info (ftp://polycom:yourpolycomuserpassword@192.168.1.10) from DHCP. Then, it will use the boot server string to login to the ftp server and look for the main configuration file for its MAC address (0004f2060101.cfg), and get the files listed in that file (x204.cfg, aaps-settings.cfg, phone1.cfg, sip.cfg). Then, for each configuration setting, it will look through those files, in that order, and use the first setting found.

With that information (including SIP server address and extension number and secret), the phone will register with the trixbox.

Further, the phone will keep a log of all of that, and store it in the log subdirectory. You can check the log to see if anything went wrong.

If the phone user makes changes on her phone, the phone will store that info in the overrides subdirectory. If they add contact information, the contact information will be stored in the contacts subdirectory. Whenever the phone boots, the phone will look in the overrides and contacts subdirectories and load the info, so the user's edits on the phone are not lost. (Of course, if you don't like those edits, delete the overrides and contacts info, reboot the phone, and they are gone!)

Now, to add another phone, just copy the MACADDRESS.cfg file to a new file with the MACADDRESS of the new phone. Change the extension number in that new file to match the new extension number. Copy the x204.cfg to a new file for the new extension number, and change the extension numbers and display names in the new file. Don't forget to put the new MAC address in the DHCP server's configuration, and make the extension in trixbox with FreePBX. That's it!

Then, just hook up the new phone and turn it on!

Whenever one of these phones boots, it will download and upgrade the Bootrom and SIP whenever new versions are available. All you have to do to upgrade your phones is dump the new files (inlcuding the new phone1.cfg and sip.cfg files) from Polycom into /home/polycom, and reboot each phone!

I have preserved the previous instructions below, but as noted above, the following does not represent Polycom's current recommendation.

7.2.2.4.1 Previous provisioning instructions:

There are a couple sites on Voi-info.org that deal with Polycom phones. This one is more general.
http://www.voip-info.org/wiki-Polycom+Phones

This one is specifically for the 501. The more I learn though, the less I like either guide. You can use it for reference if you want.
http://www.voip-info.org/wiki/index.php?page=Polycom+Soundpoint+IP+501

Both of these pages have nice instructions, however, I found them very limited on the serious nitty-gritty of polycom configurations, especially when it comes down to Provisioning a whole lot of phones.

Even in a small deployment you want to use the provisioning capability of this phone. You'd be crazy not to. Yes its a bit complicated, but that why I'm posting this information here. Trust me, you will thank me.


7.2.2.4.1 Contents of the Polycom SIP update & Bootrom Zip file
As of the writing of this part of the Chapter, the latest SIP update version is 1.6.4 and a Bootrom version of 3.1.2. This guide should work for future updates as well.
(Note: as of November 2006, the current SIP software version is 2.0.3, and the current BootROM
version is 3.2.2) This is what you will see inside the zip files:

SIP Update Zip File Contents

\SoundPointIPLocalization\Chinese_China\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Danish_Denmark\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Dutch_Netherlands\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_Canada\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_United_Kingdom\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_United_States\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\French_France\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\German_Germany\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\talian_Italy\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Japanese_Japan\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Korean_Korea\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Norwegian_Norway\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Portuguese_Portugal\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Russian_Russia\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Spanish_Spain\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Swedish_Sweden\SoundPointIP-dictionary.xml
\000000000000.cfg
\000000000000-directory~.xml
\phone1.cfg
\sip.cfg
\sip.ld
\sip.ver
\SoundPointIPWelcome.wav

  • \SoundPointIPLocalization\LANGUAGE\SoundPointIP-dictionary.xml - dictionary files for multilingual support (some languages wont work with certain phones)
  • \000000000000.cfg - example master configuration file
  • \000000000000-directory~.xml - example per-phone local contact directory XML file
  • \phone1.cfg - example per-phone SIP configuration
  • \sip.ld - SIP application executable (always leave this in this directory)
  • \sip.ver - contains version information about the sip.ld file (always leave this in this directory)
  • \SoundPointIPWelcome.wav - start up welcome sound effect (always leave this in this directory)

BootRom Update Zip File Contents

\bootrom.ld

  • \bootrom.ld - updated bootrom.ld


7.2.2.4.2 Create an FTP site and configure your phone to connect to it

First, lets make sure your phone is completely wiped and clear. Here are some different ways of resetting your polycom. The option I want you to use is "Format File System".

  • If you hold down 4, 6, 8, and * for a few seconds you'll be asked for the admin password. If you do not know the admin password, you can use the phone's MAC address using ONLY lower cases for any letters. Please note, unfortunately this isn't a full wipe to factory default. As per the Polycom Site, 4, 6, 8, * will reset: All IP Parameters, FTP User Name and PW, Custom SSL Certificates, User and Admin Passwords. 4, 6, 8, * will NOT affect: bootROM, Application, Configuration Files, Config Overrides

  • There are 3 options in the "Reset to Default" menu. Unfortunately, I cannot find ANYTHING specificly explaining these options in the manual or the knowledgebase. I'd like to know EXACTLY what these reset. Does anyone know? To access the "Reset to Default" menu, from the keypad, press Menu, (3) settings, (2) advanced, enter the password, (1) Admin Settings, (4) Reset to Default.

    • Reset Local Config - Nothing in the knowledgebase and nothing in the manual. Tech support states: "Changes are saved to local flash and backed up to <Ethernet address>-phone.cfg on the boot server. These changes will permanently override global settings unless deleted via the Reset User Settings menu selection.

    • Reset Device Setting - Nothing in the knowledgebase and nothing in the manual. Tech support states: "Resets all the network and sever information back to factory defaults"

    • Format File System - Nothing in the knowledgebase and nothing in the manual with specific information on this option. Tech support states: "Formats the file system as formating a computers hard drive would do." Please note my experience: When I did the Format File System, the phone rebooted, did the format and then rebooted again. I saw that it could not reach the boot server. After it stated that it couldn't reach the boot server, it said "Using existing configuration" and tried to boot the MACADDRESS.CFG at which point it failed and rebooted. Since the ftp server information has been wiped, it needs to be re-inserted into the phone. Upon reboot, press "Setup" and enter the admin password (456). Then go down to server menu and enter the ftp server address, the ftp user name and ftp user password. Then reboot your polycom.

3) I'm not going to go into how to setup an FTP site. If you've come this far, I HOPE you know how already. Some people use the asterisk server as the FTP site but unfortunately, it is not graphical. You'd have to know how to set it up from the command line. It's really up to you.

Its a good idea to make sure this FTP server is reachable from your internal network and the internet. These phones should be roam-able and should be configured to check the ftp site no matter where on earth the phone is (on the other hand, you do NOT want to be downloading files containing passwords over an insecure FTP channel - later versions allow HTTPS provisioning, you should use this if you want the phone to download "from anywhere). To make your download most flexible, use a DNS name, for example: ftp.COMPANYNAME.com and have your ISP update their DNS servers to point to the correct IP address. I'm assuming that your ISP is already the official "DNS Name Server" for your domain name you are using (COMPANYNAME.com). Here is an example:

COMPANYNAME.com gets a T1 from an ISP. The company has a mail server, a vpn server and an ftp server. COMPANYNAME goes to where they registered their domain name and makes their ISP's DNS server the main "DNS Name Server" for their domain. The company then contacts their ISP and tells them the IP addresses to associate with which server inside the ISP's DNS server. Now, no matter where in the world you are, if someone tries to contact those servers, they will get the correct IP address from the ISP's DNS Server. All the company's VPN clients point to vpn.COMPANYNAME.com and all their Polycom phones point to ftp.COMPANYNAME.com etc etc.

Now lets say the ftp & vpn IP address needs to change for some reason. All that really needs to be done is call the ISP with the new IP addresses and you're done. The client settings do NOT have to be changed. You won't need to manually change that information in 100 Polycom Phones (or how many you have).

4) Dump all those files into a directory on your FTP Server that will be servicing all your Polycoms (I have the home directory as /FTProot/Polycom).

\SoundPointIPLocalization\Chinese_China\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Danish_Denmark\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Dutch_Netherlands\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_Canada\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_United_Kingdom\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_United_States\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\French_France\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\German_Germany\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\talian_Italy\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Japanese_Japan\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Korean_Korea\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Norwegian_Norway\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Portuguese_Portugal\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Russian_Russia\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Spanish_Spain\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Swedish_Sweden\SoundPointIP-dictionary.xml
\000000000000.cfg
\000000000000-directory~.xml
\phone1.cfg
\sip.cfg
\sip.ld
\sip.ver
\SoundPointIPWelcome.wav
\bootrom.ld


5) Now lets point the Polycom's FTP server address to our FTP server and give it a login and password to access the FTP server. BEWARE, after entering this information, your Polycom will reboot and log into the FTP server and download the new sip.ld and bootrom.ld files and do a complete update and wipe of your phone!

  • Press the Menu button, 3 Settings, 2 Advanced, Enter the Admin Pass, 1 Admin Settings, 1 Network Config
  • Arrow down to "Server Menu" and hit enter
    • Server Type: FTP
    • Server Address: ftp.COMPANYNAME.com (or you can just use an IP address)
    • Server Name: FTPUSERNAME
    • Server Password: FTPUSERPASSWORD
    • Prov. Method: Default

6) Save your config and reboot.

7.2.2.4.3 Updating the SIP Application and the Bootrom
1) After rebooting you can watch your ftp server and see the phone logging in and logging out. Its doing several things (checking the size of the bootrom.ld and sip.ld files and seeing if an update is necessary, etc etc) that I will go over later. It will reboot a couple of times to finish off the update.

2) After the reboots, lets be absolutely sure and lets check the bootrom and SIP versions.

  • Press the Menu button, 2 Status, 1 Platform, 1 Phone. Arrow down to view the BootRom version here.
  • Press the Menu button, 2 Status, 1 Platform, 2 Application, 1 Main. You will be able to view the "Version" number here.

If you did everything right, you should see the latest versions of the bootrom and SIP app that you had placed on your ftp site.

Now check your FTP site. You will notice that there are files being uploaded to your directory with *.log extensions. You guess it, these are just logs that the Phone dumps so you can trouble shoot when need be. If everything was done right, your phone will of seen the new bootrom.ld file and downloaded it, rebooted, and installed it. Next it will download your new sip.ld file and use it.

7.2.2.4.4 What are those MACADDRESS-*.log files in my FTP Polycom root directory?
As per the Polycom site:
The phones maintain both boot and application event log files. These files can be helpful when diagnosing problems. The event log files are stored in the phone’s flash file system and are periodically uploaded to the provisioning boot server if permitted by security policy. The files are stored in the phone’s home directory or a user-configurable directory on the boot server. Both overwrite and append modes are supported for the application event log. The boot log file is uploaded to the boot server after every reboot. The application log file is uploaded periodically or when the local copy reaches a predetermined size.

The log files are named as follows:
  • MACADDRESS-appFlash.log - Will appear if there was some problem with the flashing of the BootRom (i think). I can't find anything about this file on the Polycom site, the Polycom Admin handbook or even google. Good job polycom.
  • MACADDRESS-app.log - The application log file is uploaded periodically or when the local copy reaches a predetermined size.
  • MACADDRESS-boot.log - The boot log file is uploaded to the boot server after every reboot.
  • MACADDRESS-now-app.log - Same as the app.log but gets sent when an immeidate log request button sequence is pressed on the phone.
  • MACADDRESS-now-boot.log - Same as the boot.log but gets sent when an immeidate log request button sequence is pressed on the phone.

You can even force send the log files by pressing the following keys for 3 seconds (pretty cool huh?):

SoundPoint IP 300 and 301 - Line1, Line2, Arrow Up, Arrow Down

SoundPoint IP 500 and 501 - The four arrow keys

SoundPoint IP 600 and 601 - The four arrow keys

SoundPoint IP 4000 - Menu, exit, off-hook/hands free, redial

Obviously the root directory would turn into a nightmare if all your phones would upload these logs and files into your FTP Polycom root directory. We'll be learning how to change that later.

7.2.2.4.5 Master Configuration Files
Please note, the following files were probably named by a Polycom programmer with an IQ of 210. The programmer may glance all all those files in the ftp directory and know exactly what they are for but anyone looking at these file names would certainly have no idea. Polycom did a really crappy job in naming these files something intuitive and easy to understand by just glancing at the file name. Instead I have found them to be named in a confusing manner, making all our lives harder. Please be very careful in configuring these files. Read these instructions carefully and UNDERSTAND what you are editing.

Polycom phone configurations consist of "Master Configuration" files and "Application Configuration" files. Master configuration files is a file the phone uses to see what are the files it is required to load and if there are any specific directories to use. ALWAYS USE LOWER CASE WHEN TYPING IN YOUR MACADDRESSES. For A-F hexadecimal digits,
use lower case only, for example, 0036d20a109c.cfg


  • MACADDRESS.cfg - is a Administrator Created Per-Phone "Master Configuration File". You can specify individual file loading and ftp directory settings for your phones here. Use 000000000000.cfg as a template for these files. We'll be creating this file for each phone we have so we can point the Polycom Phones in the right direction when it looks for startup information. (They should have just called this file MACADDRESS-bootup.cfg or something of a sort).

  • 000000000000.cfg - This is your DEFAULT "Master Configuration File". Simply put, If a phone does not find its own MACADDRESS.cfg file, it will use this one, and establish a baseline configuration. It should be used as the template for the MACADDRESS.cfg file. The phone uses this file to figure out what file it needs to load. For systems in which the configuration is identical for all phones (no per-phone MACADDRESS.cfg files), the default master configuration file may be used to set the configuration for all phones. (They should have just called this file 000000000000-defaultbootup.cfg or something of a sort.).

Here is what it looks like:
<?xml version="1.0" standalone="yes"?>
<!-- Default Master SIP Configuration File-->
<!-- Edit and rename this file to <Ethernet-address>.cfg for each phone.-->
<!-- $Revision: 1.14 $ $Date: 2005/07/27 18:43:30 $ -->
<APPLICATION APP_FILE_PATH="sip.ld" CONFIG_FILES="phone1.cfg, sip.cfg" MISC_FILES="" LOG_FILE_DIRECTORY="" OVERRIDES_DIRECTORY="" CONTACTS_DIRECTORY=""/>

Ok, it's important to understand what is happening on the last line in this file.

    • APPLICATION APP_FILE_PATH="" - Tells the phone where the sip.ld file is.
    • CONFIG_FILES="" - Tells the phone where to grab the sip.cfg from. It's comma-seperated if you want to load more than 1 file. The order of the files you place on this line is important. The files are processessed in the order listed from left to right. The same parameters can be used in more than one file. The parameter FIRST found in the list of files is the one that is used. This makes it a convenient way of overriding the behavior of one or more phones without altering the baseline configuration for an entire system.

IMPORTANT NOTE TO OLD FOLKS
If your vision is like mine and is not as good as it used to be, you might not notice that there are commas between the file names in the CONFIG_FILES parameter. If you forget to put a comma in here when adding an additional config file, your phone will crash with an obscure "Error 0x10100" and then reboot. The -boot.log will not help you here, either. It took me HOURS of work and perhaps 200 reboots to figure this little bugger out.



    • MISC_FILES="" - Who knows. (As per their manual = A comma-separated list of other required files. MISC_FILES is not normally used.)
    • LOG_FILE_DIRECTORY="" - An alternative directory to use for log files if required. This is left blank by default.
(Note that on first boot, BootRom upgrade, provisioning, etc, phones will always dump their logfiles into the root directory (they haven't seen this redirection yet) WPNS)
    • OVERRIDES_DIRECTORY="" - New entry as of 1.6.3 - A place where you can specify a directory on the boot server in which configuration overrides (MACADDRESS-phone.cfg) should be stored.
    • CONTACTS_DIRECTORY="" - New entry as of 1.6.3 - A place where you can specify a directory on the boot server in which contact overrides (MACADDRESS-directory.xml) should be stored.
(Note that this does not work (in BootBlock 2.6.0, BootRom 3.1.3.0131, SIP 1.6.5.0043), per-phone directories only work in the root directory of the FTP server. Also, the phone will not pick up changes to the directory the way it will changes to the configuration file (when it checks at say 3AM), you must reboot the phone to get directory changes. WPNS)

7.2.2.4.6 Application Configuration Files
Application configuration files dictate the behavior of the phone once it loads the files that are specified in the "Master Configuration File". It has parameters that affect the basic operation of the phone like voice codecs, gains, and tones and the IP address of an application server.

  • sip.cfg - Contains parameters that affect the basic operation of the phone such as voice codecs, gains, and tones and the IP address of an application server. All phones in an installation usually share this category of files. This file would normally be modified from Polycom templates. The file contents are to large to just cut and paste here to show you what it looks like.

  • phone1.cfg - This file is normally used as a template for the Administrator Created Per-Phone Configuration files named phoneMACADDRESS.cfg. This file can be named anyway you want (I suggest naming it the extension of the phone), as long as it it pointed to by the MACADDRESS.cfg file. Here is what it looks like at SIP 1.6.4 (please note, the original file has many of the settings lumped together in big blocks and its not easy on the eyes. I've edited the following file ONLY by putting in tabs, returns, and spaces and nothing more. I would suggest doing the same for your phone1.cfg also.):


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- $Polycom Revision: 1.67 $ $Date: 2005/03/11 17:05:46 $ -->

<phone1>

<reg
reg.1.displayName=""
reg.1.address=""
reg.1.label=""
reg.1.type="private"
reg.1.thirdPartyName=""
reg.1.auth.userId=""
reg.1.auth.password=""
reg.1.server.1.address=""
reg.1.server.1.port=""
reg.1.server.1.transport="DNSnaptr"
reg.1.server.2.transport="DNSnaptr"
reg.1.server.1.expires=""
reg.1.server.1.register=""
reg.1.server.1.retryTimeOut=""
reg.1.server.1.retryMaxCount=""
reg.1.server.1.expires.lineSeize=""
reg.1.acd-login-logout="0"
reg.1.acd-agent-available="0"
reg.1.ringType="2"
reg.1.lineKeys=""
reg.1.callsPerLineKey=""

reg.2.displayName=""
reg.2.address=""
reg.2.label=""
reg.2.type="private"
reg.2.thirdPartyName=""
reg.2.auth.userId=""
reg.2.auth.password=""
reg.2.server.1.address=""
reg.2.server.1.port=""
reg.2.server.1.transport="DNSnaptr"
reg.2.server.2.transport="DNSnaptr"
reg.2.server.1.expires=""
reg.2.server.1.register=""
reg.2.server.1.retryTimeOut=""
reg.2.server.1.retryMaxCount=""
reg.2.server.1.expires.lineSeize=""
reg.2.acd-login-logout="0"
reg.2.acd-agent-available="0"
reg.2.ringType="2"
reg.2.lineKeys=""
reg.2.callsPerLineKey=""
reg.3.displayName=""
reg.3.address=""

reg.3.label=""
reg.3.type="private"
reg.3.thirdPartyName=""
reg.3.auth.userId=""
reg.3.auth.password=""
reg.3.server.1.address=""
reg.3.server.1.port=""
reg.3.server.1.transport="DNSnaptr"
reg.3.server.2.transport="DNSnaptr"
reg.3.server.1.expires=""
reg.3.server.1.register=""
reg.3.server.1.retryTimeOut=""
reg.3.server.1.retryMaxCount=""
reg.3.server.1.expires.lineSeize=""
reg.3.acd-login-logout="0"
reg.3.acd-agent-available="0"
reg.3.ringType="2"
reg.3.lineKeys=""
reg.3.callsPerLineKey=""

reg.4.displayName=""
reg.4.address=""
reg.4.label=""
reg.4.type="private"
reg.4.thirdPartyName=""
reg.4.auth.userId=""
reg.4.auth.password=""
reg.4.server.1.address=""
reg.4.server.1.port=""
reg.4.server.1.transport="DNSnaptr"
reg.4.server.2.transport="DNSnaptr"
reg.4.server.1.expires=""
reg.4.server.1.register=""
reg.4.server.1.retryTimeOut=""
reg.4.server.1.retryMaxCount=""
reg.4.server.1.expires.lineSeize=""
reg.4.acd-login-logout="0"
reg.4.acd-agent-available="0"
reg.4.ringType="2"
reg.4.lineKeys=""
reg.4.callsPerLineKey=""

reg.5.displayName=""
reg.5.address=""
reg.5.label=""
reg.5.type="private"
reg.5.thirdPartyName=""
reg.5.auth.userId=""
reg.5.auth.password=""
reg.5.server.1.address=""
reg.5.server.1.port=""
reg.5.server.1.transport="DNSnaptr"
reg.5.server.2.transport="DNSnaptr"
reg.5.server.1.expires=""
reg.5.server.1.register=""
reg.5.server.1.retryTimeOut=""
reg.5.server.1.retryMaxCount=""
reg.5.server.1.expires.lineSeize=""
reg.5.acd-login-logout="0"
reg.5.acd-agent-available="0"
reg.5.ringType="2"
reg.5.lineKeys=""
reg.5.callsPerLineKey=""

reg.6.displayName=""
reg.6.address=""
reg.6.label=""
reg.6.type="private"
reg.6.thirdPartyName=""
reg.6.auth.userId=""
reg.6.auth.password=""
reg.6.server.1.address=""
reg.6.server.1.port=""
reg.6.server.1.transport="DNSnaptr"
reg.6.server.2.transport="DNSnaptr"
reg.6.server.1.expires=""
reg.6.server.1.register=""
reg.6.server.1.retryTimeOut=""
reg.6.server.1.retryMaxCount=""
reg.6.server.1.expires.lineSeize=""
reg.6.acd-login-logout="0"
reg.6.acd-agent-available="0"
reg.6.ringType="2"
reg.6.lineKeys=""
reg.6.callsPerLineKey=""

/>



<call>

<donotdisturb

call.donotdisturb.perReg="0"/>

<autoOffHook

call.autoOffHook.1.enabled="0"
call.autoOffHook.1.contact=""
call.autoOffHook.2.enabled="0"
call.autoOffHook.2.contact=""
call.autoOffHook.3.enabled="0"
call.autoOffHook.3.contact=""
call.autoOffHook.4.enabled="0"
call.autoOffHook.4.contact=""
call.autoOffHook.5.enabled="0"
call.autoOffHook.5.contact=""
call.autoOffHook.6.enabled="0"
call.autoOffHook.6.contact=""/>

<serverMissedCall

call.serverMissedCall.1.enabled="0"
call.serverMissedCall.2.enabled="0"
call.serverMissedCall.3.enabled="0"
call.serverMissedCall.4.enabled="0"
call.serverMissedCall.5.enabled="0"
call.serverMissedCall.6.enabled="0"/>

</call>



<divert

divert.1.contact=""
divert.1.autoOnSpecificCaller="1"
divert.1.sharedDisabled="1"
divert.2.contact=""
divert.2.autoOnSpecificCaller="1"
divert.2.sharedDisabled="1"
divert.3.contact=""
divert.3.autoOnSpecificCaller="1"
divert.3.sharedDisabled="1"
divert.4.contact=""
divert.4.autoOnSpecificCaller="1"
divert.4.sharedDisabled="1"
divert.5.contact=""
divert.5.autoOnSpecificCaller="1"
divert.5.sharedDisabled="1"
divert.6.contact=""
divert.6.autoOnSpecificCaller="1"
divert.6.sharedDisabled="1">

<fwd

divert.fwd.1.enabled="1"
divert.fwd.2.enabled="1"
divert.fwd.3.enabled="1"
divert.fwd.4.enabled="1"
divert.fwd.5.enabled="1"
divert.fwd.6.enabled="1"/>

<busy

divert.busy.1.enabled="1"
divert.busy.1.contact=""
divert.busy.2.enabled="1"
divert.busy.2.contact=""
divert.busy.3.enabled="1"
divert.busy.3.contact=""
divert.busy.4.enabled="1"
divert.busy.4.contact=""
divert.busy.5.enabled="1"
divert.busy.5.contact=""
divert.busy.6.enabled="1"
divert.busy.6.contact=""/>

<noanswer

divert.noanswer.1.enabled="1"
divert.noanswer.1.timeout="60"
divert.noanswer.1.contact=""
divert.noanswer.2.enabled="1"
divert.noanswer.2.timeout="60"
divert.noanswer.2.contact=""
divert.noanswer.3.enabled="1"
divert.noanswer.3.timeout="60"
divert.noanswer.3.contact=""
divert.noanswer.4.enabled="1"
divert.noanswer.4.timeout="60"
divert.noanswer.4.contact=""
divert.noanswer.5.enabled="1"
divert.noanswer.5.timeout="60"
divert.noanswer.5.contact=""
divert.noanswer.6.enabled="1"
divert.noanswer.6.timeout="60"
divert.noanswer.6.contact=""/>

<dnd

divert.dnd.1.enabled="0"
divert.dnd.1.contact=""
divert.dnd.2.enabled="0"
divert.dnd.2.contact=""
divert.dnd.3.enabled="0"
divert.dnd.3.contact=""
divert.dnd.4.enabled="0"
divert.dnd.4.contact=""
divert.dnd.5.enabled="0"
divert.dnd.5.contact=""
divert.dnd.6.enabled="0"
divert.dnd.6.contact=""/>

</divert>


<dialplan

dialplan.1.impossibleMatchHandling="0"
dialplan.1.removeEndOfDial="1"
dialplan.2.impossibleMatchHandling="0"
dialplan.2.removeEndOfDial="1"
dialplan.3.impossibleMatchHandling="0"
dialplan.3.removeEndOfDial="1"
dialplan.4.impossibleMatchHandling="0"
dialplan.4.removeEndOfDial="1"
dialplan.5.impossibleMatchHandling="0"
dialplan.5.removeEndOfDial="1"
dialplan.6.impossibleMatchHandling="0"
dialplan.6.removeEndOfDial="1">

<digitmap

dialplan.1.digitmap=""
dialplan.1.digitmap.timeOut=""
dialplan.2.digitmap=""
dialplan.2.digitmap.timeOut=""
dialplan.3.digitmap=""
dialplan.3.digitmap.timeOut=""
dialplan.4.digitmap=""
dialplan.4.digitmap.timeOut=""
dialplan.5.digitmap=""
dialplan.5.digitmap.timeOut=""
dialplan.6.digitmap=""
dialplan.6.digitmap.timeOut=""/>

<routing>

<server

dialplan.1.routing.server.1.address=""
dialplan.1.routing.server.1.port=""
dialplan.2.routing.server.1.address=""
dialplan.2.routing.server.1.port=""
dialplan.3.routing.server.1.address=""
dialplan.3.routing.server.1.port=""
dialplan.4.routing.server.1.address=""
dialplan.4.routing.server.1.port=""
dialplan.5.routing.server.1.address=""
dialplan.5.routing.server.1.port=""
dialplan.6.routing.server.1.address=""
dialplan.6.routing.server.1.port=""/>

<emergency

dialplan.1.routing.emergency.1.value=""
dialplan.1.routing.emergency.1.server.1=""
dialplan.2.routing.emergency.1.value=""
dialplan.2.routing.emergency.1.server.1=""
dialplan.3.routing.emergency.1.value=""
dialplan.3.routing.emergency.1.server.1=""
dialplan.4.routing.emergency.1.value=""
dialplan.4.routing.emergency.1.server.1=""
dialplan.5.routing.emergency.1.value=""
dialplan.5.routing.emergency.1.server.1=""
dialplan.6.routing.emergency.1.value=""
dialplan.6.routing.emergency.1.server.1=""/>

</routing>

</dialplan>


<msg msg.bypassInstantMessage="0">

<mwi

msg.mwi.1.subscribe=""
msg.mwi.1.callBackMode="registration"
msg.mwi.1.callBack=""
msg.mwi.2.subscribe=""
msg.mwi.2.callBackMode="disabled"
msg.mwi.2.callBack=""
msg.mwi.3.subscribe=""
msg.mwi.3.callBackMode="disabled"
msg.mwi.3.callBack=""
msg.mwi.4.subscribe=""
msg.mwi.4.callBackMode="disabled"
msg.mwi.4.callBack=""
msg.mwi.5.subscribe=""
msg.mwi.5.callBackMode="disabled"
msg.mwi.5.callBack=""
msg.mwi.6.subscribe=""
msg.mwi.6.callBackMode="disabled"
msg.mwi.6.callBack=""/>

</msg>


<nat

nat.ip=""
nat.signalPort=""
nat.mediaPortStart=""/>


</phone1>



  • phoneMACADDRESS.cfg - This is an "Administrator Created Per-Phone Configuration File" that uses phone1.cfg as a template. Remember, you have to edit your MACADDRESS.cfg file to point to your newly created phoneMACADDRESS.cfg file (delete where phone1.cfg is and put in your phoneMACADDRESS.cfg entry). (They should have just called this file MACADDRESS-phoneconfig.cfg or something of a sort)

  • MACADDRESS-phone.cfg - Any changes that are made locally on the phone are uploaded to the boot server using this file. Changes made via the web server or local user interface are stored internally as overrides. These overrides take precedence over settings contained in the configuration obtained from the boot server that existed previously within the phone. If the boot server permits uploads, these override settings will be saved in this file on the boot server. Changes will permanently override global settings unless deleted via the Reset User Settings menu selection. The phone treats the boot server copy as the original when it boots. (They should have just called this file MACADDRESS-phoneoverrides.cfg or something of a sort. This is really BADLY NAMED)

I found this part kinda confusing when I first read it. Here is what it comes down to. If you make any changes on the phone or via Web Browser on the phone, those settings become "OVERRIDES". So if a user makes a change to a ring or something specific to that phone, it goes into this file. No matter what your global settings say, the settings ON THE PHONE are the settings that the phone uses. Once you make the change on the phone, those settings go into the memory of the phone and get uploaded into this file. If you want to change those settings from the FTP server, you can change the settings IN THIS FILE. Remember, the phone treats the boot server copy of this file as the original when it boots.

Here is what it looks like with no changes:

<?xml version="1.0" standalone="yes"?>
<PHONE_CONFIG>

<OVERRIDES/>

</PHONE_CONFIG>



7.2.2.4.7 Contact Directory Files
The contact directory file

000000000000-directory~.xml - is a sample file (note the extra tilde "~" in the file name) that comes with the SIP update zip file. This file can be used as a template for the Per-Phone MACADDRESS-directory.xml file. The 000000000000-directory.xml file can also be used to seed new phones with and initial directory (remember to remove the "~" from the file name). Phones without a local directory (like new Polycom phones) will download the "00000000000-directory.xml" and base their initial directory on it. You should use an XML editor to edit these files. I like to use a free one called "Open XML Editor" you can download from http://www.philo.de/xmledit/

MACADDRESS-directory.xml - is a Per-Phone contact directory file.



7.2.2.5 Suggestions on how to setup Polycom File Provisioning

Here are my goals in this Chapter.

Now that you understand what all those files are and how they work, we can begin editing the files.

  • REMEMBER to use lower case letter when naming the MACADDRESS portion of the file name.
  • Change sip.cfg to COMPANYNAME_SIP.cfg
  • Edit our COMPANYNAME_SIP.cfg to nail down several important GLOBAL settings.
  • Create for each of our phones, per phone MACADDRESS.cfg startup files to nail down file loading and ftp directories. In this file we have to point to the xEXTENSION.cfg and COMPANYNAME_SIP.cfg files.
  • Create for each of our phones, per phone xEXTENSION.cfg files to nail down several individual phone settings (extension numbers, names, etc).
  • Keep the ftp site clean by creating directories named by extensions and making the polycom dump anything individual in there.

  • our company directory contacts file
  • ability for our users to create speed dial entries without messing up the company directory
  • a directory and file listing of how the ftp site will look when we're done


As an example, lets say we have 5 Polycom HardPhones with the following extensions and MAC addresses (substitute the numbers for the phone's mac):

x1001 - 111111111111

x1002 - 222222222222

x1003 - 333333333333

x1004 - 444444444444

x1005 - 555555555555

7.2.2.5.1 Suggestions on editing the sip.cfg file
First we start with the sip.cfg file. Copy the original and put it somewhere safe. Rename your sip.cfg file to something like COMPANYNAME_SIP.cfg. This way you'll know it belongs to you. There are definately a bunch of settings in the COMPANYNAME_SIP.cfg that we want to change. These are the settings we want to be GLOBAL accross all our phones.

1) Turning off the annoying Voicemail Stutter.
That Voicemail stutter drove me nuts. That dumb stutter shot off every 30 seconds. Remember the NAT hole issue? Everytime the phone re-registered SIP, it would check voicemail and give a stutter that the user has voicemail. Since the polycom has NAT issues, we are forced to make it register every 30 seconds to keep the NAT hole open. So the stutter would occur every 30 seconds and it drove me nuts.

Go to this line

<MESSAGE_WAITING se.pat.misc.1.name="message waiting" se.pat.misc.1.inst.1.type="chord" se.pat.misc.1.inst.1.value="1" se.pat.misc.1.inst.2.type="chord" se.pat.misc.1.inst.2.value="2" se.pat.misc.1.inst.3.type="chord" se.pat.misc.1.inst.3.value="1"/>

and change it to:

<MESSAGE_WAITING se.pat.misc.1.name="message waiting"/>

That will get rid of the chirp. If you look closely you'll see that the phone is being told to chirp 3 very short times. Creating that "stutter" you hear. We are just going to remove that portion.

2) SNTP Server Setup.
SNTP stand for "Simple Network Time Protocol". Your phone contacts a "Time" server and syncronizes its own time with the time server. The time and date displayed on the LCD uses this info. You need SNTP running too if you're using secure certificates for provisioning. You need to make sure the time and date on these phones match the server's time and date.

Go to this entry:

tcpIpApp.sntp.address=""

and change it to: (I'm pointing to columbia university "sundial.columbia.edu". You should put serve that is physically close to you in this entry)

tcpIpApp.sntp.address="sundial.columbia.edu"

3) GMT Offset (Greenwich Mean Time. The time at Greenwich, England, which is used as the basis for standard time throughout the world.)
Go to this entry:

tcpIpApp.sntp.gmtOffset=""

GMT offset for New York City which is "Standard time zone: UTC/GMT -5 hours". Offset in seconds of the local time zone from GMT. Note: 3600 seconds per hour.

tcpIpApp.sntp.gmtOffset="-18000"

4) Change the SIP Expiration rate to "60" seconds. This doesn't necessarily mean that the phone will re-register every 60 seconds. The phone will re-register in half the time it negotiates (in this case 60 seconds). According to the manual: This is the phone’s requested registration period. The period negotiated with the server may be different. The phone will attempt to re-register when half the negotiated period has expired. Play with this setting as much as you need to make it work with your NATS and firewalls.

Go to this entry:

voIpProt.server.1.expires=""

and change it to:

voIpProt.server.1.expires="60"

5) Change the MediaPortStart to begin from 10000 because that what is configured on our firewall and thats what asterisk expects from its phones.

Go to this entry:

nat.mediaPortStart=""

and change it to:

nat.mediaPortStart="10000"

6) We gotta put the Internet IP address or Internet DNS name of the asterisk server.

Go to this entry:

voIpProt.server.1.address=""

and change it to:

voIpProt.server.1.address="pbx01.COMPANYNAME.com"

7) We do NOT want to force the Polycom to communicate ONLY over 5060. Yes, the default is 5060, but by putting it in there by hand, you literally force the phone to communicate ONLY over 5060 and that is BAD. We want 5060 to be the signaling port, but 10,000 and up to be the media ports. Here is what the Polycom manual has to say about it:

Local port for sending and receiving SIP signaling packets. If set to 0 or Null, 5060 is used for the local port but it is not advertised in the SIP signaling. If set to some other value, that value is used for the local port and it is advertised in the SIP signaling.

Go to this entry and make sure its blank (or in other words NULL):

voIpProt.server.1.port=""

8) Volume Persistence - The user’s selection of the receive volume during a call can be remembered between calls. This can be configured per termination (handset, headset and hands-free/chassis). In some countries regulations exist which dictate that receive volume should be reset to nominal at the start of each call on handset and headset.

Go to this entry:

<volume voice.volume.persist.handset="0" voice.volume.persist.headset="0" voice.volume.persist.handsfree="1"/>

and change it to:

<volume voice.volume.persist.handset="1" voice.volume.persist.headset="1" voice.volume.persist.handsfree="1"/>


7.2.2.5.2 Suggestions on editing the MACADDRESS.cfg file
Remember that the MACADDRESS.cfg file is just a copy of the 000000000000.cfg file. We have to do some editing to make sure the right files are being loaded and the phone is pointed to the right directories on the FTP server.

1) On the FTP server, lets create folders under FTProot\Polycom with the names of the extensions we are creating. Lets make 5 folders.

\Polycom\x1001
\Polycom\x1002
\Polycom\x1003
\Polycom\x1004
\Polycom\x1005

2) Now in the Polycom directory of the ftp server, we'll create the following files (substitute the numbers for the phone's mac):

\Polycom\111111111111.cfg
\Polycom\222222222222.cfg
\Polycom\333333333333.cfg
\Polycom\444444444444.cfg
\Polycom\555555555555.cfg

Edit these files and place the correct information in the correct entry. We're going to point the "LOG_FILE_DIRECTORY" and "OVERRIDES_DIRECTORY" to the new extension's directory too. For example 111111111111.cfg would look like:

<?xml version="1.0" standalone="yes"?>
<!-- Default Master SIP Configuration File-->
<!-- Edit and rename this file to <Ethernet-address>.cfg for each phone.-->
<!-- $Revision: 1.14 $ $Date: 2005/07/27 18:43:30 $ -->
<APPLICATION APP_FILE_PATH="sip.ld" CONFIG_FILES="x1001\x1001.cfg, COMPANYNAME_SIP.cfg" MISC_FILES="" LOG_FILE_DIRECTORY="x1001" OVERRIDES_DIRECTORY="x1001" CONTACTS_DIRECTORY="x1001"/>

3) In each extension's directory we'll use the phone1.cfg file and create the following configuration files for each phone

\Polycom\x1001\x1001.cfg
\Polycom\x1002\x1002.cfg
\Polycom\x1003\x1003.cfg
\Polycom\x1004\x1004.cfg
\Polycom\x1005\x1005.cfg


7.2.2.5.3 Suggestions on editing the x1001.cfg file
Now we need to edit the individual phone's configuration file that we've created. Lets take \Polycom\x1001\x1001.cfg as an example:

The specific settings we are concerned with are:

  • reg.1.displayName="Lipan, Ginel" - This is what is displayed on your phone. A@H's caller ID over rules this setting. As per their manual "Display name used for local user interface
as well as SIP signaling."
  • reg.1.auth.userId="1001" - The extension used on the phone. As per their manual "User ID to be used for authentication challenges for this registration."
  • reg.1.address="1001" - The extension used on the phone. As per their manual "The actual address corresponding to this registration (userPart or user- Part@polycom.com). For user part only registration (reg.x.address=”1002”), the registration will be userPart@proxyHostNameOrIPAddress where userPart is reg.x.address and proxyHostNameOrIPAddress is either reg.x.server.1.address if non-Null or voIpProt.server.1.address specified in sip.cfg."
  • reg.1.auth.password="1001" - This is the password to the extension itself. Would be a good idea to make it a random number or something. This is the "secret" entry in AMP under user extensions.
  • reg.1.lineKeys="2" - This tells the phone to use 2 out of the 3 configurable buttons on the 501 (button number 35 and 34) as extensions. So if someone calls while a user is using their extension, As per the manual "max = the number of line keys on the phone. max = 1 on SoundStation® IP 4000, max = 2 on IP 300 and 301, max = 3 on IP 500 and 501, max = 6 on IP 600, max = 24 on IP 601 (without any Expansion Modules attached, only 6 line keys are available) The number of line keys on the phone to be associated with registration ‘x’.

If you glance at your 501, you can see that there is no speed dial button. To access your speed dial button, you have to hit the "Up Arrow" which is just silly. I am reserving the 3rd button (number 33) to make into a speed dial button. The other 2 buttons will be extension buttons (with the extentions number appearing on the LCD right next to the physical button).


7.2.2.5.4 Suggestions on Speed Dial and Company Wide Contacts Directory
Wouldn't it be great if there was one file you can leave in the Polycom FTP Directory that the phone grabs and uses as a company directory? Wouldn't it be great if thats the only file you would have to update everytime there was a change? Wouldn't it be great if that one file wasn't the SAME file as the speed dial file?

Oh well. We're out of luck on this one.

Heres a good post regarding this:

Asterisk@Home & Polycom 501 directory.xml file


7.2.2.6 Polycom Cheat Sheet

I whipped a little cheat sheet up that pretty much addresses all the important parts of the Polycom Setup. This is something I would have hanging on my bulletin board by my desk that I can use to look things up whenever I may need to.


7.2.2.7 Please put in a product enhancement request at the Polycom Site


I've already put in a request (01/19/06) at polycom's web site asking for

01) Optional STUN setting - There is no option for a STUN entry on your Polycoms. Being able to point a polycom phone to a STUN server would do a lot to get around NAT issues that occur. Please consider adding this functionality to your polycom phones.

02) IAX2 support (for asterisk servers. IAX is VERY NAT friendly) - IAX2 is a VOIP protocol that Asterisk servers use. It is VERY NAT friendly and an excellent protocol all around. Please consider adding this functionality to your polycom phones.

03) NAT Heartbeat - The Polycom Phones should be globally roam-able. In other words, no matter where they are in the world, as long as the Polycoms can get onto the internet, they should work. When a phone is romaing (home users, users at hotels, etc etc), it is safe to assume that they will be behind a NAT. When a phone registers with the server, it will pass through the NAT, and communicate with the server. Unfortunately, the inbound/outbound hole that the NAT object (router) creates usually only stays open for 30-60 seconds, depending on the router and NAT implementation. If that hole closes, the server can no longer communicate with the phone to send incoming phone calls to the Polycom. To keep the NAT hole open between the phone and a VOIP server open, the Polycom should have an option to send tiny little "Keep Alive" traffic to the Voip Server. For example: XTEN (CounterPath) Softphone uses a tiny little 10 second NAT keep alive. This is an easy way to successfully keep the NAT hole open. Currently, many of your users (including me) are forced to make roaming Polycom phones re-register with the server every 30-60 seconds) to keep NAT holes open. A NAT heartbeat option is desperetaly needed for your phones. Please consider adding this functionality to your polycom phones.

04) Backlight for the LCD panel. - The Plolycom phones have a great big LCD. This is great, except if you need to work in a low light area. The LCD desperately needs some kind of back lighting. Please consider adding this functionality to your polycom phones.

05) Make rebooting OPTIONAL after 'save'ing settings (webpage, phone ui) - Is there any way to be able to make SEVERAL changes to a Polycom phone's setting and THEN be able to reset instead of resetting after 1 change? It is frustrating to have to reset several times to be able to configure phones up to a desired point.

06) Add some kind of phone status to the webpage (registration status, call log, etc) - The web console that controls your Polycom Phones can use some help. There is no way to view registration status, call logs, and other real time information. Please consider adding this functionality to your polycom phones.

07) Allow editing phone book via webpage - The web console that controls your Polycom Phones has no way to edit any contact information or edit any speed dial information. Please consider adding this functionality to your polycom phones.

08) Create a "Company Directory" contacts list that is seperate from the "Speed Dial List" - There is no way to have a "Company Directory" on your Polycoms because the same file that would have the company directory is the same file as the Speed Dial List. There needs to be some kind of change that allows for 1 file on a FTP Provisioning server that allows for easy update of the Company directory that every phone can be pointed to. That file MUST be seperate from the speed dial file because administration would be impossible if I had to change 200 phone's contact file when there is a change to my company's directory. Please consider adding this functionality to your polycom phones.

09) More intuitively named files for easier configuration. - The file names used with the polycom are not intuative. Frankly, they're downright confusing. Please make the file names more intuative. Please consider adding this functionality to your polycom phones.

10) No way to turn off speaker phone using the .cfg files (or any other method). Our company doesn't allow for speakerphones in their cubicles because often it disrupts cubicle neighbors. Please consider adding this functionality to your polycom phones.

11) Make the 2 Ethernet ports on the back of the polycoms GIGABIT ports.

12) Serious improvements need to be made to the web console. Many users feel it is a poor implementation and can be done a lot better. In my opinion, every possible option should be linked to a full explanation of the option with examples. Even more important is to tell the web user what the option translates to in your .cfg files. To many times I've been forced to make the change on the phone, and view the cfg file that is uploaded to my ftp site with the over-ride info to see which option a field points to. The web console needs to be more intuative and helpful. Right now I feel like Polycom is forcing me to wing it.

Don't hold your breath for the IAX2 support. I figure we'll be seeing the STUN setting coming soon but I have no idea about the NAT heartbeat option.

I strongly suggest EVERYONE go to the polycom feedback demand they add these options to their phones. If they add these options, the Polycoms would be the perfect choice for a VOIP roll out.

http://eknowledge.polycom.com/media/Forms/Enhancement_Requests/FER_emailform.html

7.2.3 Snom

A small tip for making the message "Retrive" button work

To get message retrieval working on Snom phones add the following line to the
extensions_custom.conf

exten => asterisk,1,VoiceMailMain(${CALLERIDNUM})



Page Contents


Chapter 7 Phones

VOIP phones vary widely in price, features, and sound quality. Phones support either SIP or IAX protocol. For simple testing a free soft phone like X-ten is good. For day to day use a good hard phone is the best. Grandstream makes a cheap easy to configure phone with good quality and feature. Polycom and Cisco make the best phones with the highest sound quality and feature. If you have and existing analog phone like a cordless that you want to use and ATA will convert an analog phone to SIP.


7.1 Soft phones

Soft Phones run on a host computer and use the computer speaker and mic or a headset for voice. Soft phones are available for most operating system.


7.1.1 X-Ten Lite


One of the easiest to setup is X-Lite. X-Lite is available for free from http://www.xten.com. Plus its VERY NAT friendly! (sends out tiny NAT keepalives every 10 seconds to the server)

If X-Lite cannot connect, the setup screen should open, if not, click on the "drop down" icon just to the left of the green Off-Hook icon.

Under System Settings, select the SIP Proxy settings, then double-click on the first entry. You will see the SIP Proxy settings as shown here. The settings I changed are as follows:

Username: 200 (my extension)

Authorization User: 200 (my extension again)

Password: abc123 (my extension password)

DomainRealm: 192.168.5.50 (PBX IP address)

SIP Proxy: 192.168.5.50 (PBX IP address)


7.1.2 sipXphone

The sipXphone project, formerly known as Pingtel's instant xpressa soft phone, is a fully functional SIP soft phone that runs on Microsoft Windows and Linux. The Pingtel's xpressa phone (no longer a Pingtel product) is based on this same source base. Windows Download from http://www.sipfoundry.org/pub/sipXphone/win32/

7.1.3 Express Talk

http://www.nch.com.au/talk/ (they have a freeware version)


7.1.4 Yate

GPL SIP Softphone
http://yate.null.ro/pmwiki/index.php/Main/YateClient

7.1.5 Idefisk

Idefisk Softphone - A softphone that supports the Inter-Asterisk Exchange (IAX2) protocol.
http://asteriskguru.com/idefisk/



7.2 Hard phones


7.2.1 Cisco 7960/7940

The Cisco SIP IP Phone software allows businesses and service providers to use the Cisco 7940 and 7960 IP Phone platforms in any standard SIP network. The SIP software provides for both on-board traditional desktop services such as Caller-ID, Call Hold, Call Transfer, 3-Way Calling, and Call Waiting as well as an XML interface to allow for enhanced web based services. The XML interface allows the phone to transcend the traditional phone paradigm and become a true Internet appliance. By supporting web browsing type functionality as well as allowing for application developers to directly control the user interaction on the phone and integrate tightly with the Cisco SIP phone, the Cisco SIP phone is a key enabler of enhanced and rapid application deployment in any SIP customer's network.

Type setup-cisco from the command line to set up a basic SIPDefault.cnf in the /tftpboot directory.

Copy your Cisco 7.4 SIP firmware into the /tftpboot directory using WinSCP.

using the Cisco config tool in the maint menu to set up your phone.



7.2.1.1 Setting up a Cisco phone step by step

Connecting a Cisco 7960/7940 to your Asterisk@Home. The easiest way to use these phones with Asterisk@Home is with the SIP firmware.

Power on your phone and connect it to your network. You will need to change the IP address of your phone to a free one on your network or enable DHCP is you have a DHCP server.

Unlock your phone by pressing **# (for old firmware) or selecting unlock config from the config menu and type in the password (default is 'cisco')

Change the IP address or enable DHCP. Enter the IP address of your Asterisk@Home box in the TFTP server field. If DHCP is enabled you will have to select alternate TFTP server = yes so you can edit the TFTP field.


Get the latest firmware for the Cisco phone (7.4) and copy the files firmware files to your Asterisk@Home box. Put them in the /tftpboot directory.

Create a SIPDefault.cnf file by using the setup-cisco command and change the file permissions on the firmware files that you uploaded in the last step. Type the following.


setup-cisco
chmod 777 /tftpboot/*


Add a Cisco config file for your phone. Use the web GUI and click maintenance -> Cisco Config -> Create a new phone configuration file.

Type in the mac address of your phone. It’s located on the bottom of your phone. (starts with 00) Enter a name for your phone in the Phone Label box. Enter 200 in the Line Name and the Display Name fields for Line 1. Click add.

Click on Edit phone configuration files and click edit next to your phone. Go to Line 1 and type 200 in the Auth Name box. Then enter a password like abc123 in the password box. Click change.

Create extension 200. setup -> extensions use abc123 for the extension password.

Reboot your phone by disconnecting the power or pressing *-6-settings.

Your phone should upload the new firmware and extension. Make a test call like *65.

Trouble shooting: The Cisco phone can be difficult to upgrade. If your phone does not seem to upload the firmware try this. From command line.

cp /tftpboot/cisco_util/* /tftpboot

Then reboot the phone. After the phone has upgraded the firmware. Type the following so the phone will boot normally.


rm /tftpboot/xmlDefault.CNF.XML
rm /tftpboot/XMLDefault.cnf.xml



7.2.1.3 Configuring Services


The Services button is configured by default to point to /var/www/html/cisco/services/index_cisco.php

The 4th item on that list, RSS feeds is configured to point to rssfeeds.php in the same directory. This is an XML list of sites than can be accessed from the phone. RSS sites can, in theory, be translated to XML by xml.rssparse.php though in practice most of those I tried don't work well giving junky displays or XML parsing errors. YMMV.

7.2.1.3 Configuring Directories


By default the "External Directory" ships integrated with SugarCRM. Just log into Sugar and add your contact information. Don't use any funny symbols though: an ampersand will cause an XML parsing error. Accented characters and ñ are ok though.

7.2.2 Polycom

According to Polycom's site:

Founded in 1990, Polycom is the only company today delivering end-to-end rich media collaborative applications for voice, video, data and the web from desktop and mobile personal systems to room systems to the network core. Our vision is to enable people to connect anytime, anyplace and with any device in a virtual experience as natural as being there.

In addition to being the worldwide leader in market share for best in class group and personal video systems, video and voice collaboration infrastructures and conference phones, Polycom also has the only solution for delivering Unified Collaborative Communications – the convergence of voice, video, data and web – known as The Polycom Office.

Polycom is at the center of the industry shift to broadband networks. IP networks enable the proliferation and convergence of richer communications, including video, which enhance the quality of our lives, create new opportunities, and are fast becoming the foundation for how we work.

Our full range of high-quality, easy to deploy, manage and use voice and video communications endpoints, video management software, web conferencing software, multi-network gateways and multipoint conferencing enable organizations of all sizes to increase productivity and agility. Polycom delivers business value by cutting costs, simplifying system management, fostering real time collaboration and decision making, and improving relationships with employees, customers and partners.

EDITOR'S NOTE: The above is marketing fluff. Polycom has some great phones, but the "real-time
collaboration" does NOT include making its current software and configuration files available to
its customers. Further, their website gives no indication as to which sellers of their phones are certified
resellers who can provide that software. See below.


7.2.2.1 Why choose Polycom VOIP Phones?

Polycom has a few VOIP phones (or just called IP phones). It's better to visit these links to see the differences.

Polycom SoundPoint IP Phones
http://www.polycom.com/products_services/0,1443,pw-34-182,00.html

Polycom VoIP Products - Family Brochure (nice chart of the differences between the phones).
http://www.polycom.com/common/pw_item_show_doc/1,1276,4884,00.pdf

I've chosen the 501 for my company because it is relatively cheap (compared to those Ciscos!), have some very nice features (provisioning!!!), and a nice big old LCD display, a great speaker phone. The following instructions can be used for other Polycoms but don't just blindly follow them. Check to be sure you UNDERSTAND what is occuring before just cutting and pasting everything.


7.2.2.2 How to get Polycom Firmware and SIP Updates


Please note that Polycom tech support as of November 2006 recommends the use of SIP firmware 1.6.7 with Asterisk based systems. Until Asterisk can solve its RFC compliance issues, SIP firmware 2.x.x is not going to work well. 1.6.7 IS available on the Polycom web site.

Right now Polycom doesn't allow just anyone to download the latest software updates from their sites. Only CERTIFIED resellers can distribute the software updates. You could also only call these resellers for support. Polycom only offers email support but I hope you have a LOT of patience. They take a long time to reply. I believe Polycom will allow you to download the old updates, just not the new ones.

What I did was buy a bunch of phones, but on 2 of them I purchased 3 year maintenance contracts so I will have access to their latest updates and tech support. I then put those 2 phones aside and used them for troubleshooting and testing and calling in for questions.

Polycom Voice Products Download List
http://www.polycom.com/resource_center/1,,pw-492,00.html

Polycom Resource Web Site
http://extranet.polycom.com/csnprod/signon.html

New Zeland Polycom website has the files available for download!
http://www.polycomnz.co.nz/software.html

This is the site everyone used to grab the files when Polycom didn't allow downloads:
http://www.freedomphones.net/polycom/files

Note that, as of November 2006, Polycom does NOT allow downlaods of their current software and configuration files.


7.2.2.3 Polycom and NATS. Welcome to hell (at least as of 01/20/06)

Polycoms are just not made with NATS in mind. Yeah sure, they have a couple of settings you can try but simply put, they suck on a NAT. These phone were made to exist on the same network as the PBX. In that case, they work great. The second you have to go over a NAT, whamo. Welcome to hell. These phones are IP phones. No matter where in the world I plug these guys in, they should work. Period. With 98% of businesses and 100% of homes with cable/dsl routers using NAT, you'd think Polycom would have tried harder. Unfortunately, that is not the case.

The options the polycoms need are:

  1. STUN Server setting
  2. NAT Keep Alive setting (note — this is included in SIP version 2)
  3. IAX Support

Most users (like me) have been forced to make the Polycom Re-register SIP to their servers every 30-60 seconds. This way, the NAT holes that are created stay open. By way of contrast, Xten's (now called CounterPath) softphone sends out this tiny little NAT keep alive message to the server that does a great job of keeping those NAT holes open. Unfortunately, there is no option to do this on the Polycom. Obviously this isn't a perfect solution but for now, it is the ONLY solution other than forcing the Polycom and the A@H server to communicate over a pre-configured port. Pre-configuring ports on the server and the polycom phones are not what I would call a smart idea when you have a large roll out. Individual configurations should be seriously frowned upon when you have lots of phones to deal with. Provisioning exists to minimize the amount of administration, not increase it.

The funny thing is, when you force the phone to re-register every 30-60 seconds, it checks the voicemail right after SIP registration. When it sees you have voicemail, it will give a voice mail "Chirp". I can assure you, a room full of polycom phones chirping every 30-60 seconds will drive you nuts. Thank goodness there's a way to turn off the voicemail chirp.


7.2.2.4 How to use Provisioning (Central Boot Server) to deploy Polycom Phones

If you are planning to deploy even one or two polycom phones, you will save yourself a great deal of wasted effort and time by setting up central provisioning for them.

These instructions have been updated, simplified, and made more comprehensive for the 2006 Polycom recommendations in November 2006. The previous instructions are retained below.

Polycom's current central provisioning recommendations specifically recommend you NOT follow the previously-posted instructions. As Polycom points out, whenever they issue an application upgrade, you will have to completely re-perform the configuration unless you follow their current recommendations. Also, the previously-posted instructions do not address actually setting up the DHCP and FTP servers you need. Since it is actually quite easy, and for convenience, I have put everything in one place. This will result in only moderate security (it will still be possible to read the ftp user password on the phone), and many more options are available, but this will get you started, and probably meet the needs of most small office. Polycom's Administrator's Guide will take you from here.

7.2.2.4.0 Polycom Central Provisioning Overview

Central provisioning is EASY, and definately the way to go, even if you only have one phone, because you
will need to upgrade the Bootrom and SIP software in the phone anyway (as of November 2006, a new 601 phone
shipped is a major version behind; the major version of SIP went from 1 to 2 by August 2006, but the new
phone still shipped with version 1 in November 2006)

Polycom has specific recommendations regarding how to do this, so that future upgrades will be easy as well. The following describes in some detail the simple steps needed to get this working. These are amazingly configuruable phones, and there are many ways this could be done, so consider this a starting point. When you are done you will have a no-touch install, whereby the phone can be just plugged into the network and require no manual configuration.

Resources from the Polycom.com site: Especially "Configuration File Management on SoundPoint IP Phones" which is here as of 2008-09-19 White Paper (search for "White Paper") and SoundPoint IP/SoundStation IP Administrator's Guide, Version 2.2.x (menu: Support/Audio Support/SoundPoint IP Series/SoundPoint IP 601; look at the bottom for Documentation). See more info on this page

Be warned that you will need the current SIP software, which includes the configuration files you need for this setup, but you CANNOT get that from the Polycom site, but rather will have to get it from your reseller. Verify with your vendor that they will provide the current SIP software version (and current BootRom version) if you purchase your phone from them. You can view the current version numbers from the webpage that shows the documentation above, but in spite if the "Downloads" title, you CANNOT acutally download any current software, and the version available as of November 2006 was several versions (including a major version upgrade) behind. (However, contacting Polycom and asking nicely may get you that current software).

7.2.2.4.0.1 FIRST STEP - DHCP

You will want a DHCP server on your network, to provide the phones with their IP address, subnet, Boot server, and time server information. I use a Linux Fedora dhcpd running on 192.168.1.1. I run trixbox on 192.168.1.10, which is where I keep the Polycom config files.

The /etc/dhcpd.conf file looks like:

  1. At the beginning of the file, outside any subnet definition, define the option code for the boot server:
option boot-server code 66 = string;

  1. define the settings for our subnet
subnet 192.168.1.0 netmask 255.255.255.0 {
  1. --- default gateway
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name "yourdomainname.com";
option domain-name-servers 192.168.1.1;
option time-offset -25200; # Mountain Standard, -18000 EST, 3600/hr

option ntp-servers 192.168.1.1;# time server

range 192.168.1.120 192.168.1.150; # if you want dhcp to issue IP's to other computers

  1. Polycom phones here
group { # group phones together so only they get boot server info

  1. Boot server, including protocol and username/password
  2. See Polycom SIP Adminstrative guide (v2.0, page 7); boot-server option defined above

option boot-server "ftp://polycom:yourpolycomuserpassword@192.168.1.10";


  1. Now, list the phones by network address, to give them
  2. defined IP per phone. Note that listing them here is
  3. what makes them part of the group that gets the above
  4. configuration

host x204 { # host name is optional, but may help you track extensions
hardware ethernet 00:04:f2:06:01:01; # hardware address of phone - also serial number
fixed-address 192.168.1.15; # IP you want assigned to the phone
}


  1. list more phones here with their hardware address and IP address you want assigned.

} #end of Polycom group

} # end of subnet block

restart dhcpd:

/etc/rc.d/init.d/dhcpd restart

Now, when the phone boots, it will contact the DHCP server and get its IP address, subnet, time server, gateway, and boot server information. It will then contact the boot server to download its configuration.

If you need to reset your phone to factory defaults so it uses DHCP, the sequence varies by model of phone; see section 2.2.1.4 of the Adminstartion Guide.

7.2.2.4.0.2 CREATE FILE REPOSITORY

Now, we need to set up the repository on your boot server (I use my trixbox machine for this). First, as root, create the polycom user:

useradd polycom

Now, you need to set a password for the polycom user. Be aware that anyone will be able to see this password from any polycom phone (Menu/Status/Platform/Configuration)

passwd polycom yourpolycomuserpassword

Now, limit the polycom account so it cannot be used to login. Edit /etc/passwd, find the line for the polycom user just created (probably the last line), and change the portion of that line after the last colon (which should be something like "/bin/bash", which will be used as the login shell) to "/sbin/nologin"

Now, we need to set up the ftp server for the phones to get thier updated software and configuration. We will use vsftpd. We want the polycom user to only be able to see the files in its directory, and not be able to snoop around the trixbox. Go to /etc/vsftpd/vsftpd.conf and uncomment the line like:

chroot_list_enable=YES

You will also want the following two lines:
userlist_enable=YES
userlist_deny=NO

This will provide that only users listed in the userlist_file will be allowed to login via ftp. You don't want regular users using ftp because the password is sent in clear text over the network (regular users should use secure ftp via ssh)

Now, create a file /etc/vsftpd.chroot_list with the single line with the word "polycom". This will put the polycom user in a "chroot jail"

Now, create or edit /etc/vsftpd.user_list, and list any users that you want to be able to use the insecure ftp protocol. In our case, we just need a single line with the word "polycom", so the phone will be able to
access the files, but no other users will.

Make sure vsftpd is run automatically:
chkconfig vsftpd on

And restart it:
/etc/rc.d/init.d/vsftpd restart

Now, go to the /home/polycom directory and remove write permission for the polycom user, since we don't want the phones to be able to change their configuration files:
chmod u-w .

Now, create three directories for files uploaded from the phones:
mkdir contacts
mkdir log
mkdir overrides

Now, give the polycom user permission to put files into those directories:
chown polycom log
chgrp polycom log
chown polycom contacts
chgrp polycom contacts
chown polycom overrides
chgrp polycom overrides

Now, unzip the files from the sip software zip file, and copy them into the /home/polycom directory. Also, from the SoundPointIPLocalization folder within that zip and the sub-sub directory for the language, get the SoundPointIP-dictionary.xml file for your language and put it into that directory (I think that will allow the phone to use prompts from your language). Finally, copy the bootrom.ld file from the bootrom zip into that directory. Again, you will need to get the sip zip file and bootrom zip files from your reseller or Polycom.

7.2.2.4.0.3 CREATE CONFIGURATION FILES

Now, you have to make the configuration files. Your phone will get the bootserver string from the dhcp server, Including the username and password. Because the polycom user has a chroot jail, the phone will be looking in the /home/polycom directory, but that directory will look like the root. The phone will look for a file with a name like 0004f2060101.cfg based on the MAC hardware address of the phone. MAC address configuration files *MUST* be in lower case for the phone to locate them and properly boot. I have not identified if all configuration files must be lower case.

Polycom provides a template for that file, which is also described in the white paper. This is the key to the configuration files, and is the connection between the phone and the extension configuration. They key is that this file defines a number of files in which the phone will search, in order, for every configuration entry. The phone will use the first entry found. Therefore, you should put the entries for the extension, and general configuration for your site, in this list before the general files provided by Polycom.

My 0004f2060101.cfg looks like:
<?xml version="1.0" standalone="yes"?>
<!-- Make one of these for each phone, changing only the first .cfg file with per-phone settings. -->
<APPLICATION APP_FILE_PATH="sip.ld" CONFIG_FILES="x204.cfg, aaps-settings.cfg, phone1.cfg, sip.cfg"

MISC_FILES="" LOG_FILE_DIRECTORY="/log" OVERRIDES_DIRECTORY="/overrides" CONTACTS_DIRECTORY="/contacts"/>

So, make one of these files for each phone. Change the filename to match the MAC address of the phone, change the x204.cfg to the per-phone info (I name these per-phone files by the extension number), and change the aaps-settings.cfg to the name of a file with your per-site settings. Note also the directories for the phone to store its log, overrides, and contacts info.

Note that the phone1.cfg and sip.cfg files contain default information from Polycom. You can use these to see the format of the files, but you should NOT modify these. When the SIP application is upgraded, it will come with a new phone1.cfg and sip.cfg, which you can just drop into this directory. If you modify these huge files, you will have to find all of your edits and copy them to the new versions of these new files from Polycom!

The x204.cfg would look like:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Per-phone configuration in this file -->
<reginfo>
<reg reg.1.displayName="204 Frank" reg.1.address="204" reg.1.label="204"
reg.1.auth.userId="204" reg.1.auth.password="yoursipsecrethere"/>
</reginfo>

That file contains the userid and auth.userid for the extension, along with the sip secret for the extension.

The aaps-settings.cfg looks like:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!-- Our local phone system common configuration in this file -->
<localcfg>
<server voIpProt.server.1.address="192.168.1.10"/>
<SIP>
<outboundProxy voIpProt.SIP.outboundProxy.address="192.168.1.10"/>
</SIP>
<voice>
<volume voice.volume.persist.handset="1"
voice.volume.persist.headset="1"/>
</voice>
<TCP_IP>
<SNTP tcpIpApp.sntp.daylightSavings.enable="0"/>
</TCP_IP>
<localcfg>

The settings here come from the Administrator's Guide. Note that there is no daylight savings time here in Arizona!

7.2.2.4.0.4 CREATE TRIXBOX EXTENSION

The last thing you need to do is set up the Extension in trixbox. Using FreePBX, go to Setup/Extensions, Add Extension/SIP. Extension number is 204, Display Name is the name you will see on caller ID ("Frank"), and secret is your SIP secret ("yoursipsecrethere"). Those are the only three things you need to set!

7.2.2.4.0.5 REVIEW OF CONFIGURATION PROCESS

Now, when the Polycom phone boots up, it will get it's IP address and boot server info (ftp://polycom:yourpolycomuserpassword@192.168.1.10) from DHCP. Then, it will use the boot server string to login to the ftp server and look for the main configuration file for its MAC address (0004f2060101.cfg), and get the files listed in that file (x204.cfg, aaps-settings.cfg, phone1.cfg, sip.cfg). Then, for each configuration setting, it will look through those files, in that order, and use the first setting found.

With that information (including SIP server address and extension number and secret), the phone will register with the trixbox.

Further, the phone will keep a log of all of that, and store it in the log subdirectory. You can check the log to see if anything went wrong.

If the phone user makes changes on her phone, the phone will store that info in the overrides subdirectory. If they add contact information, the contact information will be stored in the contacts subdirectory. Whenever the phone boots, the phone will look in the overrides and contacts subdirectories and load the info, so the user's edits on the phone are not lost. (Of course, if you don't like those edits, delete the overrides and contacts info, reboot the phone, and they are gone!)

Now, to add another phone, just copy the MACADDRESS.cfg file to a new file with the MACADDRESS of the new phone. Change the extension number in that new file to match the new extension number. Copy the x204.cfg to a new file for the new extension number, and change the extension numbers and display names in the new file. Don't forget to put the new MAC address in the DHCP server's configuration, and make the extension in trixbox with FreePBX. That's it!

Then, just hook up the new phone and turn it on!

Whenever one of these phones boots, it will download and upgrade the Bootrom and SIP whenever new versions are available. All you have to do to upgrade your phones is dump the new files (inlcuding the new phone1.cfg and sip.cfg files) from Polycom into /home/polycom, and reboot each phone!

I have preserved the previous instructions below, but as noted above, the following does not represent Polycom's current recommendation.

7.2.2.4.1 Previous provisioning instructions:

There are a couple sites on Voi-info.org that deal with Polycom phones. This one is more general.
http://www.voip-info.org/wiki-Polycom+Phones

This one is specifically for the 501. The more I learn though, the less I like either guide. You can use it for reference if you want.
http://www.voip-info.org/wiki/index.php?page=Polycom+Soundpoint+IP+501

Both of these pages have nice instructions, however, I found them very limited on the serious nitty-gritty of polycom configurations, especially when it comes down to Provisioning a whole lot of phones.

Even in a small deployment you want to use the provisioning capability of this phone. You'd be crazy not to. Yes its a bit complicated, but that why I'm posting this information here. Trust me, you will thank me.


7.2.2.4.1 Contents of the Polycom SIP update & Bootrom Zip file
As of the writing of this part of the Chapter, the latest SIP update version is 1.6.4 and a Bootrom version of 3.1.2. This guide should work for future updates as well.
(Note: as of November 2006, the current SIP software version is 2.0.3, and the current BootROM
version is 3.2.2) This is what you will see inside the zip files:

SIP Update Zip File Contents

\SoundPointIPLocalization\Chinese_China\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Danish_Denmark\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Dutch_Netherlands\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_Canada\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_United_Kingdom\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_United_States\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\French_France\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\German_Germany\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\talian_Italy\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Japanese_Japan\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Korean_Korea\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Norwegian_Norway\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Portuguese_Portugal\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Russian_Russia\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Spanish_Spain\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Swedish_Sweden\SoundPointIP-dictionary.xml
\000000000000.cfg
\000000000000-directory~.xml
\phone1.cfg
\sip.cfg
\sip.ld
\sip.ver
\SoundPointIPWelcome.wav

  • \SoundPointIPLocalization\LANGUAGE\SoundPointIP-dictionary.xml - dictionary files for multilingual support (some languages wont work with certain phones)
  • \000000000000.cfg - example master configuration file
  • \000000000000-directory~.xml - example per-phone local contact directory XML file
  • \phone1.cfg - example per-phone SIP configuration
  • \sip.ld - SIP application executable (always leave this in this directory)
  • \sip.ver - contains version information about the sip.ld file (always leave this in this directory)
  • \SoundPointIPWelcome.wav - start up welcome sound effect (always leave this in this directory)

BootRom Update Zip File Contents

\bootrom.ld

  • \bootrom.ld - updated bootrom.ld


7.2.2.4.2 Create an FTP site and configure your phone to connect to it

First, lets make sure your phone is completely wiped and clear. Here are some different ways of resetting your polycom. The option I want you to use is "Format File System".

  • If you hold down 4, 6, 8, and * for a few seconds you'll be asked for the admin password. If you do not know the admin password, you can use the phone's MAC address using ONLY lower cases for any letters. Please note, unfortunately this isn't a full wipe to factory default. As per the Polycom Site, 4, 6, 8, * will reset: All IP Parameters, FTP User Name and PW, Custom SSL Certificates, User and Admin Passwords. 4, 6, 8, * will NOT affect: bootROM, Application, Configuration Files, Config Overrides

  • There are 3 options in the "Reset to Default" menu. Unfortunately, I cannot find ANYTHING specificly explaining these options in the manual or the knowledgebase. I'd like to know EXACTLY what these reset. Does anyone know? To access the "Reset to Default" menu, from the keypad, press Menu, (3) settings, (2) advanced, enter the password, (1) Admin Settings, (4) Reset to Default.

    • Reset Local Config - Nothing in the knowledgebase and nothing in the manual. Tech support states: "Changes are saved to local flash and backed up to <Ethernet address>-phone.cfg on the boot server. These changes will permanently override global settings unless deleted via the Reset User Settings menu selection.

    • Reset Device Setting - Nothing in the knowledgebase and nothing in the manual. Tech support states: "Resets all the network and sever information back to factory defaults"

    • Format File System - Nothing in the knowledgebase and nothing in the manual with specific information on this option. Tech support states: "Formats the file system as formating a computers hard drive would do." Please note my experience: When I did the Format File System, the phone rebooted, did the format and then rebooted again. I saw that it could not reach the boot server. After it stated that it couldn't reach the boot server, it said "Using existing configuration" and tried to boot the MACADDRESS.CFG at which point it failed and rebooted. Since the ftp server information has been wiped, it needs to be re-inserted into the phone. Upon reboot, press "Setup" and enter the admin password (456). Then go down to server menu and enter the ftp server address, the ftp user name and ftp user password. Then reboot your polycom.

3) I'm not going to go into how to setup an FTP site. If you've come this far, I HOPE you know how already. Some people use the asterisk server as the FTP site but unfortunately, it is not graphical. You'd have to know how to set it up from the command line. It's really up to you.

Its a good idea to make sure this FTP server is reachable from your internal network and the internet. These phones should be roam-able and should be configured to check the ftp site no matter where on earth the phone is (on the other hand, you do NOT want to be downloading files containing passwords over an insecure FTP channel - later versions allow HTTPS provisioning, you should use this if you want the phone to download "from anywhere). To make your download most flexible, use a DNS name, for example: ftp.COMPANYNAME.com and have your ISP update their DNS servers to point to the correct IP address. I'm assuming that your ISP is already the official "DNS Name Server" for your domain name you are using (COMPANYNAME.com). Here is an example:

COMPANYNAME.com gets a T1 from an ISP. The company has a mail server, a vpn server and an ftp server. COMPANYNAME goes to where they registered their domain name and makes their ISP's DNS server the main "DNS Name Server" for their domain. The company then contacts their ISP and tells them the IP addresses to associate with which server inside the ISP's DNS server. Now, no matter where in the world you are, if someone tries to contact those servers, they will get the correct IP address from the ISP's DNS Server. All the company's VPN clients point to vpn.COMPANYNAME.com and all their Polycom phones point to ftp.COMPANYNAME.com etc etc.

Now lets say the ftp & vpn IP address needs to change for some reason. All that really needs to be done is call the ISP with the new IP addresses and you're done. The client settings do NOT have to be changed. You won't need to manually change that information in 100 Polycom Phones (or how many you have).

4) Dump all those files into a directory on your FTP Server that will be servicing all your Polycoms (I have the home directory as /FTProot/Polycom).

\SoundPointIPLocalization\Chinese_China\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Danish_Denmark\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Dutch_Netherlands\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_Canada\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_United_Kingdom\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\English_United_States\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\French_France\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\German_Germany\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\talian_Italy\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Japanese_Japan\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Korean_Korea\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Norwegian_Norway\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Portuguese_Portugal\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Russian_Russia\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Spanish_Spain\SoundPointIP-dictionary.xml
\SoundPointIPLocalization\Swedish_Sweden\SoundPointIP-dictionary.xml
\000000000000.cfg
\000000000000-directory~.xml
\phone1.cfg
\sip.cfg
\sip.ld
\sip.ver
\SoundPointIPWelcome.wav
\bootrom.ld


5) Now lets point the Polycom's FTP server address to our FTP server and give it a login and password to access the FTP server. BEWARE, after entering this information, your Polycom will reboot and log into the FTP server and download the new sip.ld and bootrom.ld files and do a complete update and wipe of your phone!

  • Press the Menu button, 3 Settings, 2 Advanced, Enter the Admin Pass, 1 Admin Settings, 1 Network Config
  • Arrow down to "Server Menu" and hit enter
    • Server Type: FTP
    • Server Address: ftp.COMPANYNAME.com (or you can just use an IP address)
    • Server Name: FTPUSERNAME
    • Server Password: FTPUSERPASSWORD
    • Prov. Method: Default

6) Save your config and reboot.

7.2.2.4.3 Updating the SIP Application and the Bootrom
1) After rebooting you can watch your ftp server and see the phone logging in and logging out. Its doing several things (checking the size of the bootrom.ld and sip.ld files and seeing if an update is necessary, etc etc) that I will go over later. It will reboot a couple of times to finish off the update.

2) After the reboots, lets be absolutely sure and lets check the bootrom and SIP versions.

  • Press the Menu button, 2 Status, 1 Platform, 1 Phone. Arrow down to view the BootRom version here.
  • Press the Menu button, 2 Status, 1 Platform, 2 Application, 1 Main. You will be able to view the "Version" number here.

If you did everything right, you should see the latest versions of the bootrom and SIP app that you had placed on your ftp site.

Now check your FTP site. You will notice that there are files being uploaded to your directory with *.log extensions. You guess it, these are just logs that the Phone dumps so you can trouble shoot when need be. If everything was done right, your phone will of seen the new bootrom.ld file and downloaded it, rebooted, and installed it. Next it will download your new sip.ld file and use it.

7.2.2.4.4 What are those MACADDRESS-*.log files in my FTP Polycom root directory?
As per the Polycom site:
The phones maintain both boot and application event log files. These files can be helpful when diagnosing problems. The event log files are stored in the phone’s flash file system and are periodically uploaded to the provisioning boot server if permitted by security policy. The files are stored in the phone’s home directory or a user-configurable directory on the boot server. Both overwrite and append modes are supported for the application event log. The boot log file is uploaded to the boot server after every reboot. The application log file is uploaded periodically or when the local copy reaches a predetermined size.

The log files are named as follows:
  • MACADDRESS-appFlash.log - Will appear if there was some problem with the flashing of the BootRom (i think). I can't find anything about this file on the Polycom site, the Polycom Admin handbook or even google. Good job polycom.
  • MACADDRESS-app.log - The application log file is uploaded periodically or when the local copy reaches a predetermined size.
  • MACADDRESS-boot.log - The boot log file is uploaded to the boot server after every reboot.
  • MACADDRESS-now-app.log - Same as the app.log but gets sent when an immeidate log request button sequence is pressed on the phone.
  • MACADDRESS-now-boot.log - Same as the boot.log but gets sent when an immeidate log request button sequence is pressed on the phone.

You can even force send the log files by pressing the following keys for 3 seconds (pretty cool huh?):

SoundPoint IP 300 and 301 - Line1, Line2, Arrow Up, Arrow Down

SoundPoint IP 500 and 501 - The four arrow keys

SoundPoint IP 600 and 601 - The four arrow keys

SoundPoint IP 4000 - Menu, exit, off-hook/hands free, redial

Obviously the root directory would turn into a nightmare if all your phones would upload these logs and files into your FTP Polycom root directory. We'll be learning how to change that later.

7.2.2.4.5 Master Configuration Files
Please note, the following files were probably named by a Polycom programmer with an IQ of 210. The programmer may glance all all those files in the ftp directory and know exactly what they are for but anyone looking at these file names would certainly have no idea. Polycom did a really crappy job in naming these files something intuitive and easy to understand by just glancing at the file name. Instead I have found them to be named in a confusing manner, making all our lives harder. Please be very careful in configuring these files. Read these instructions carefully and UNDERSTAND what you are editing.

Polycom phone configurations consist of "Master Configuration" files and "Application Configuration" files. Master configuration files is a file the phone uses to see what are the files it is required to load and if there are any specific directories to use. ALWAYS USE LOWER CASE WHEN TYPING IN YOUR MACADDRESSES. For A-F hexadecimal digits,
use lower case only, for example, 0036d20a109c.cfg


  • MACADDRESS.cfg - is a Administrator Created Per-Phone "Master Configuration File". You can specify individual file loading and ftp directory settings for your phones here. Use 000000000000.cfg as a template for these files. We'll be creating this file for each phone we have so we can point the Polycom Phones in the right direction when it looks for startup information. (They should have just called this file MACADDRESS-bootup.cfg or something of a sort).

  • 000000000000.cfg - This is your DEFAULT "Master Configuration File". Simply put, If a phone does not find its own MACADDRESS.cfg file, it will use this one, and establish a baseline configuration. It should be used as the template for the MACADDRESS.cfg file. The phone uses this file to figure out what file it needs to load. For systems in which the configuration is identical for all phones (no per-phone MACADDRESS.cfg files), the default master configuration file may be used to set the configuration for all phones. (They should have just called this file 000000000000-defaultbootup.cfg or something of a sort.).

Here is what it looks like:
<?xml version="1.0" standalone="yes"?>
<!-- Default Master SIP Configuration File-->
<!-- Edit and rename this file to <Ethernet-address>.cfg for each phone.-->
<!-- $Revision: 1.14 $ $Date: 2005/07/27 18:43:30 $ -->
<APPLICATION APP_FILE_PATH="sip.ld" CONFIG_FILES="phone1.cfg, sip.cfg" MISC_FILES="" LOG_FILE_DIRECTORY="" OVERRIDES_DIRECTORY="" CONTACTS_DIRECTORY=""/>

Ok, it's important to understand what is happening on the last line in this file.

    • APPLICATION APP_FILE_PATH="" - Tells the phone where the sip.ld file is.
    • CONFIG_FILES="" - Tells the phone where to grab the sip.cfg from. It's comma-seperated if you want to load more than 1 file. The order of the files you place on this line is important. The files are processessed in the order listed from left to right. The same parameters can be used in more than one file. The parameter FIRST found in the list of files is the one that is used. This makes it a convenient way of overriding the behavior of one or more phones without altering the baseline configuration for an entire system.

IMPORTANT NOTE TO OLD FOLKS
If your vision is like mine and is not as good as it used to be, you might not notice that there are commas between the file names in the CONFIG_FILES parameter. If you forget to put a comma in here when adding an additional config file, your phone will crash with an obscure "Error 0x10100" and then reboot. The -boot.log will not help you here, either. It took me HOURS of work and perhaps 200 reboots to figure this little bugger out.



    • MISC_FILES="" - Who knows. (As per their manual = A comma-separated list of other required files. MISC_FILES is not normally used.)
    • LOG_FILE_DIRECTORY="" - An alternative directory to use for log files if required. This is left blank by default.
(Note that on first boot, BootRom upgrade, provisioning, etc, phones will always dump their logfiles into the root directory (they haven't seen this redirection yet) WPNS)
    • OVERRIDES_DIRECTORY="" - New entry as of 1.6.3 - A place where you can specify a directory on the boot server in which configuration overrides (MACADDRESS-phone.cfg) should be stored.
    • CONTACTS_DIRECTORY="" - New entry as of 1.6.3 - A place where you can specify a directory on the boot server in which contact overrides (MACADDRESS-directory.xml) should be stored.
(Note that this does not work (in BootBlock 2.6.0, BootRom 3.1.3.0131, SIP 1.6.5.0043), per-phone directories only work in the root directory of the FTP server. Also, the phone will not pick up changes to the directory the way it will changes to the configuration file (when it checks at say 3AM), you must reboot the phone to get directory changes. WPNS)

7.2.2.4.6 Application Configuration Files
Application configuration files dictate the behavior of the phone once it loads the files that are specified in the "Master Configuration File". It has parameters that affect the basic operation of the phone like voice codecs, gains, and tones and the IP address of an application server.

  • sip.cfg - Contains parameters that affect the basic operation of the phone such as voice codecs, gains, and tones and the IP address of an application server. All phones in an installation usually share this category of files. This file would normally be modified from Polycom templates. The file contents are to large to just cut and paste here to show you what it looks like.

  • phone1.cfg - This file is normally used as a template for the Administrator Created Per-Phone Configuration files named phoneMACADDRESS.cfg. This file can be named anyway you want (I suggest naming it the extension of the phone), as long as it it pointed to by the MACADDRESS.cfg file. Here is what it looks like at SIP 1.6.4 (please note, the original file has many of the settings lumped together in big blocks and its not easy on the eyes. I've edited the following file ONLY by putting in tabs, returns, and spaces and nothing more. I would suggest doing the same for your phone1.cfg also.):


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- $Polycom Revision: 1.67 $ $Date: 2005/03/11 17:05:46 $ -->

<phone1>

<reg
reg.1.displayName=""
reg.1.address=""
reg.1.label=""
reg.1.type="private"
reg.1.thirdPartyName=""
reg.1.auth.userId=""
reg.1.auth.password=""
reg.1.server.1.address=""
reg.1.server.1.port=""
reg.1.server.1.transport="DNSnaptr"
reg.1.server.2.transport="DNSnaptr"
reg.1.server.1.expires=""
reg.1.server.1.register=""
reg.1.server.1.retryTimeOut=""
reg.1.server.1.retryMaxCount=""
reg.1.server.1.expires.lineSeize=""
reg.1.acd-login-logout="0"
reg.1.acd-agent-available="0"
reg.1.ringType="2"
reg.1.lineKeys=""
reg.1.callsPerLineKey=""

reg.2.displayName=""
reg.2.address=""
reg.2.label=""
reg.2.type="private"
reg.2.thirdPartyName=""
reg.2.auth.userId=""
reg.2.auth.password=""
reg.2.server.1.address=""
reg.2.server.1.port=""
reg.2.server.1.transport="DNSnaptr"
reg.2.server.2.transport="DNSnaptr"
reg.2.server.1.expires=""
reg.2.server.1.register=""
reg.2.server.1.retryTimeOut=""
reg.2.server.1.retryMaxCount=""
reg.2.server.1.expires.lineSeize=""
reg.2.acd-login-logout="0"
reg.2.acd-agent-available="0"
reg.2.ringType="2"
reg.2.lineKeys=""
reg.2.callsPerLineKey=""
reg.3.displayName=""
reg.3.address=""

reg.3.label=""
reg.3.type="private"
reg.3.thirdPartyName=""
reg.3.auth.userId=""
reg.3.auth.password=""
reg.3.server.1.address=""
reg.3.server.1.port=""
reg.3.server.1.transport="DNSnaptr"
reg.3.server.2.transport="DNSnaptr"
reg.3.server.1.expires=""
reg.3.server.1.register=""
reg.3.server.1.retryTimeOut=""
reg.3.server.1.retryMaxCount=""
reg.3.server.1.expires.lineSeize=""
reg.3.acd-login-logout="0"
reg.3.acd-agent-available="0"
reg.3.ringType="2"
reg.3.lineKeys=""
reg.3.callsPerLineKey=""

reg.4.displayName=""
reg.4.address=""
reg.4.label=""
reg.4.type="private"
reg.4.thirdPartyName=""
reg.4.auth.userId=""
reg.4.auth.password=""
reg.4.server.1.address=""
reg.4.server.1.port=""
reg.4.server.1.transport="DNSnaptr"
reg.4.server.2.transport="DNSnaptr"
reg.4.server.1.expires=""
reg.4.server.1.register=""
reg.4.server.1.retryTimeOut=""
reg.4.server.1.retryMaxCount=""
reg.4.server.1.expires.lineSeize=""
reg.4.acd-login-logout="0"
reg.4.acd-agent-available="0"
reg.4.ringType="2"
reg.4.lineKeys=""
reg.4.callsPerLineKey=""

reg.5.displayName=""
reg.5.address=""
reg.5.label=""
reg.5.type="private"
reg.5.thirdPartyName=""
reg.5.auth.userId=""
reg.5.auth.password=""
reg.5.server.1.address=""
reg.5.server.1.port=""
reg.5.server.1.transport="DNSnaptr"
reg.5.server.2.transport="DNSnaptr"
reg.5.server.1.expires=""
reg.5.server.1.register=""
reg.5.server.1.retryTimeOut=""
reg.5.server.1.retryMaxCount=""
reg.5.server.1.expires.lineSeize=""
reg.5.acd-login-logout="0"
reg.5.acd-agent-available="0"
reg.5.ringType="2"
reg.5.lineKeys=""
reg.5.callsPerLineKey=""

reg.6.displayName=""
reg.6.address=""
reg.6.label=""
reg.6.type="private"
reg.6.thirdPartyName=""
reg.6.auth.userId=""
reg.6.auth.password=""
reg.6.server.1.address=""
reg.6.server.1.port=""
reg.6.server.1.transport="DNSnaptr"
reg.6.server.2.transport="DNSnaptr"
reg.6.server.1.expires=""
reg.6.server.1.register=""
reg.6.server.1.retryTimeOut=""
reg.6.server.1.retryMaxCount=""
reg.6.server.1.expires.lineSeize=""
reg.6.acd-login-logout="0"
reg.6.acd-agent-available="0"
reg.6.ringType="2"
reg.6.lineKeys=""
reg.6.callsPerLineKey=""

/>



<call>

<donotdisturb

call.donotdisturb.perReg="0"/>

<autoOffHook

call.autoOffHook.1.enabled="0"
call.autoOffHook.1.contact=""
call.autoOffHook.2.enabled="0"
call.autoOffHook.2.contact=""
call.autoOffHook.3.enabled="0"
call.autoOffHook.3.contact=""
call.autoOffHook.4.enabled="0"
call.autoOffHook.4.contact=""
call.autoOffHook.5.enabled="0"
call.autoOffHook.5.contact=""
call.autoOffHook.6.enabled="0"
call.autoOffHook.6.contact=""/>

<serverMissedCall

call.serverMissedCall.1.enabled="0"
call.serverMissedCall.2.enabled="0"
call.serverMissedCall.3.enabled="0"
call.serverMissedCall.4.enabled="0"
call.serverMissedCall.5.enabled="0"
call.serverMissedCall.6.enabled="0"/>

</call>



<divert

divert.1.contact=""
divert.1.autoOnSpecificCaller="1"
divert.1.sharedDisabled="1"
divert.2.contact=""
divert.2.autoOnSpecificCaller="1"
divert.2.sharedDisabled="1"
divert.3.contact=""
divert.3.autoOnSpecificCaller="1"
divert.3.sharedDisabled="1"
divert.4.contact=""
divert.4.autoOnSpecificCaller="1"
divert.4.sharedDisabled="1"
divert.5.contact=""
divert.5.autoOnSpecificCaller="1"
divert.5.sharedDisabled="1"
divert.6.contact=""
divert.6.autoOnSpecificCaller="1"
divert.6.sharedDisabled="1">

<fwd

divert.fwd.1.enabled="1"
divert.fwd.2.enabled="1"
divert.fwd.3.enabled="1"
divert.fwd.4.enabled="1"
divert.fwd.5.enabled="1"
divert.fwd.6.enabled="1"/>

<busy

divert.busy.1.enabled="1"
divert.busy.1.contact=""
divert.busy.2.enabled="1"
divert.busy.2.contact=""
divert.busy.3.enabled="1"
divert.busy.3.contact=""
divert.busy.4.enabled="1"
divert.busy.4.contact=""
divert.busy.5.enabled="1"
divert.busy.5.contact=""
divert.busy.6.enabled="1"
divert.busy.6.contact=""/>

<noanswer

divert.noanswer.1.enabled="1"
divert.noanswer.1.timeout="60"
divert.noanswer.1.contact=""
divert.noanswer.2.enabled="1"
divert.noanswer.2.timeout="60"
divert.noanswer.2.contact=""
divert.noanswer.3.enabled="1"
divert.noanswer.3.timeout="60"
divert.noanswer.3.contact=""
divert.noanswer.4.enabled="1"
divert.noanswer.4.timeout="60"
divert.noanswer.4.contact=""
divert.noanswer.5.enabled="1"
divert.noanswer.5.timeout="60"
divert.noanswer.5.contact=""
divert.noanswer.6.enabled="1"
divert.noanswer.6.timeout="60"
divert.noanswer.6.contact=""/>

<dnd

divert.dnd.1.enabled="0"
divert.dnd.1.contact=""
divert.dnd.2.enabled="0"
divert.dnd.2.contact=""
divert.dnd.3.enabled="0"
divert.dnd.3.contact=""
divert.dnd.4.enabled="0"
divert.dnd.4.contact=""
divert.dnd.5.enabled="0"
divert.dnd.5.contact=""
divert.dnd.6.enabled="0"
divert.dnd.6.contact=""/>

</divert>


<dialplan

dialplan.1.impossibleMatchHandling="0"
dialplan.1.removeEndOfDial="1"
dialplan.2.impossibleMatchHandling="0"
dialplan.2.removeEndOfDial="1"
dialplan.3.impossibleMatchHandling="0"
dialplan.3.removeEndOfDial="1"
dialplan.4.impossibleMatchHandling="0"
dialplan.4.removeEndOfDial="1"
dialplan.5.impossibleMatchHandling="0"
dialplan.5.removeEndOfDial="1"
dialplan.6.impossibleMatchHandling="0"
dialplan.6.removeEndOfDial="1">

<digitmap

dialplan.1.digitmap=""
dialplan.1.digitmap.timeOut=""
dialplan.2.digitmap=""
dialplan.2.digitmap.timeOut=""
dialplan.3.digitmap=""
dialplan.3.digitmap.timeOut=""
dialplan.4.digitmap=""
dialplan.4.digitmap.timeOut=""
dialplan.5.digitmap=""
dialplan.5.digitmap.timeOut=""
dialplan.6.digitmap=""
dialplan.6.digitmap.timeOut=""/>

<routing>

<server

dialplan.1.routing.server.1.address=""
dialplan.1.routing.server.1.port=""
dialplan.2.routing.server.1.address=""
dialplan.2.routing.server.1.port=""
dialplan.3.routing.server.1.address=""
dialplan.3.routing.server.1.port=""
dialplan.4.routing.server.1.address=""
dialplan.4.routing.server.1.port=""
dialplan.5.routing.server.1.address=""
dialplan.5.routing.server.1.port=""
dialplan.6.routing.server.1.address=""
dialplan.6.routing.server.1.port=""/>

<emergency

dialplan.1.routing.emergency.1.value=""
dialplan.1.routing.emergency.1.server.1=""
dialplan.2.routing.emergency.1.value=""
dialplan.2.routing.emergency.1.server.1=""
dialplan.3.routing.emergency.1.value=""
dialplan.3.routing.emergency.1.server.1=""
dialplan.4.routing.emergency.1.value=""
dialplan.4.routing.emergency.1.server.1=""
dialplan.5.routing.emergency.1.value=""
dialplan.5.routing.emergency.1.server.1=""
dialplan.6.routing.emergency.1.value=""
dialplan.6.routing.emergency.1.server.1=""/>

</routing>

</dialplan>


<msg msg.bypassInstantMessage="0">

<mwi

msg.mwi.1.subscribe=""
msg.mwi.1.callBackMode="registration"
msg.mwi.1.callBack=""
msg.mwi.2.subscribe=""
msg.mwi.2.callBackMode="disabled"
msg.mwi.2.callBack=""
msg.mwi.3.subscribe=""
msg.mwi.3.callBackMode="disabled"
msg.mwi.3.callBack=""
msg.mwi.4.subscribe=""
msg.mwi.4.callBackMode="disabled"
msg.mwi.4.callBack=""
msg.mwi.5.subscribe=""
msg.mwi.5.callBackMode="disabled"
msg.mwi.5.callBack=""
msg.mwi.6.subscribe=""
msg.mwi.6.callBackMode="disabled"
msg.mwi.6.callBack=""/>

</msg>


<nat

nat.ip=""
nat.signalPort=""
nat.mediaPortStart=""/>


</phone1>



  • phoneMACADDRESS.cfg - This is an "Administrator Created Per-Phone Configuration File" that uses phone1.cfg as a template. Remember, you have to edit your MACADDRESS.cfg file to point to your newly created phoneMACADDRESS.cfg file (delete where phone1.cfg is and put in your phoneMACADDRESS.cfg entry). (They should have just called this file MACADDRESS-phoneconfig.cfg or something of a sort)

  • MACADDRESS-phone.cfg - Any changes that are made locally on the phone are uploaded to the boot server using this file. Changes made via the web server or local user interface are stored internally as overrides. These overrides take precedence over settings contained in the configuration obtained from the boot server that existed previously within the phone. If the boot server permits uploads, these override settings will be saved in this file on the boot server. Changes will permanently override global settings unless deleted via the Reset User Settings menu selection. The phone treats the boot server copy as the original when it boots. (They should have just called this file MACADDRESS-phoneoverrides.cfg or something of a sort. This is really BADLY NAMED)

I found this part kinda confusing when I first read it. Here is what it comes down to. If you make any changes on the phone or via Web Browser on the phone, those settings become "OVERRIDES". So if a user makes a change to a ring or something specific to that phone, it goes into this file. No matter what your global settings say, the settings ON THE PHONE are the settings that the phone uses. Once you make the change on the phone, those settings go into the memory of the phone and get uploaded into this file. If you want to change those settings from the FTP server, you can change the settings IN THIS FILE. Remember, the phone treats the boot server copy of this file as the original when it boots.

Here is what it looks like with no changes:

<?xml version="1.0" standalone="yes"?>
<PHONE_CONFIG>

<OVERRIDES/>

</PHONE_CONFIG>



7.2.2.4.7 Contact Directory Files
The contact directory file

000000000000-directory~.xml - is a sample file (note the extra tilde "~" in the file name) that comes with the SIP update zip file. This file can be used as a template for the Per-Phone MACADDRESS-directory.xml file. The 000000000000-directory.xml file can also be used to seed new phones with and initial directory (remember to remove the "~" from the file name). Phones without a local directory (like new Polycom phones) will download the "00000000000-directory.xml" and base their initial directory on it. You should use an XML editor to edit these files. I like to use a free one called "Open XML Editor" you can download from http://www.philo.de/xmledit/

MACADDRESS-directory.xml - is a Per-Phone contact directory file.



7.2.2.5 Suggestions on how to setup Polycom File Provisioning

Here are my goals in this Chapter.

Now that you understand what all those files are and how they work, we can begin editing the files.

  • REMEMBER to use lower case letter when naming the MACADDRESS portion of the file name.
  • Change sip.cfg to COMPANYNAME_SIP.cfg
  • Edit our COMPANYNAME_SIP.cfg to nail down several important GLOBAL settings.
  • Create for each of our phones, per phone MACADDRESS.cfg startup files to nail down file loading and ftp directories. In this file we have to point to the xEXTENSION.cfg and COMPANYNAME_SIP.cfg files.
  • Create for each of our phones, per phone xEXTENSION.cfg files to nail down several individual phone settings (extension numbers, names, etc).
  • Keep the ftp site clean by creating directories named by extensions and making the polycom dump anything individual in there.

  • our company directory contacts file
  • ability for our users to create speed dial entries without messing up the company directory
  • a directory and file listing of how the ftp site will look when we're done


As an example, lets say we have 5 Polycom HardPhones with the following extensions and MAC addresses (substitute the numbers for the phone's mac):

x1001 - 111111111111

x1002 - 222222222222

x1003 - 333333333333

x1004 - 444444444444

x1005 - 555555555555

7.2.2.5.1 Suggestions on editing the sip.cfg file
First we start with the sip.cfg file. Copy the original and put it somewhere safe. Rename your sip.cfg file to something like COMPANYNAME_SIP.cfg. This way you'll know it belongs to you. There are definately a bunch of settings in the COMPANYNAME_SIP.cfg that we want to change. These are the settings we want to be GLOBAL accross all our phones.

1) Turning off the annoying Voicemail Stutter.
That Voicemail stutter drove me nuts. That dumb stutter shot off every 30 seconds. Remember the NAT hole issue? Everytime the phone re-registered SIP, it would check voicemail and give a stutter that the user has voicemail. Since the polycom has NAT issues, we are forced to make it register every 30 seconds to keep the NAT hole open. So the stutter would occur every 30 seconds and it drove me nuts.

Go to this line

<MESSAGE_WAITING se.pat.misc.1.name="message waiting" se.pat.misc.1.inst.1.type="chord" se.pat.misc.1.inst.1.value="1" se.pat.misc.1.inst.2.type="chord" se.pat.misc.1.inst.2.value="2" se.pat.misc.1.inst.3.type="chord" se.pat.misc.1.inst.3.value="1"/>

and change it to:

<MESSAGE_WAITING se.pat.misc.1.name="message waiting"/>

That will get rid of the chirp. If you look closely you'll see that the phone is being told to chirp 3 very short times. Creating that "stutter" you hear. We are just going to remove that portion.

2) SNTP Server Setup.
SNTP stand for "Simple Network Time Protocol". Your phone contacts a "Time" server and syncronizes its own time with the time server. The time and date displayed on the LCD uses this info. You need SNTP running too if you're using secure certificates for provisioning. You need to make sure the time and date on these phones match the server's time and date.

Go to this entry:

tcpIpApp.sntp.address=""

and change it to: (I'm pointing to columbia university "sundial.columbia.edu". You should put serve that is physically close to you in this entry)

tcpIpApp.sntp.address="sundial.columbia.edu"

3) GMT Offset (Greenwich Mean Time. The time at Greenwich, England, which is used as the basis for standard time throughout the world.)
Go to this entry:

tcpIpApp.sntp.gmtOffset=""

GMT offset for New York City which is "Standard time zone: UTC/GMT -5 hours". Offset in seconds of the local time zone from GMT. Note: 3600 seconds per hour.

tcpIpApp.sntp.gmtOffset="-18000"

4) Change the SIP Expiration rate to "60" seconds. This doesn't necessarily mean that the phone will re-register every 60 seconds. The phone will re-register in half the time it negotiates (in this case 60 seconds). According to the manual: This is the phone’s requested registration period. The period negotiated with the server may be different. The phone will attempt to re-register when half the negotiated period has expired. Play with this setting as much as you need to make it work with your NATS and firewalls.

Go to this entry:

voIpProt.server.1.expires=""

and change it to:

voIpProt.server.1.expires="60"

5) Change the MediaPortStart to begin from 10000 because that what is configured on our firewall and thats what asterisk expects from its phones.

Go to this entry:

nat.mediaPortStart=""

and change it to:

nat.mediaPortStart="10000"

6) We gotta put the Internet IP address or Internet DNS name of the asterisk server.

Go to this entry:

voIpProt.server.1.address=""

and change it to:

voIpProt.server.1.address="pbx01.COMPANYNAME.com"

7) We do NOT want to force the Polycom to communicate ONLY over 5060. Yes, the default is 5060, but by putting it in there by hand, you literally force the phone to communicate ONLY over 5060 and that is BAD. We want 5060 to be the signaling port, but 10,000 and up to be the media ports. Here is what the Polycom manual has to say about it:

Local port for sending and receiving SIP signaling packets. If set to 0 or Null, 5060 is used for the local port but it is not advertised in the SIP signaling. If set to some other value, that value is used for the local port and it is advertised in the SIP signaling.

Go to this entry and make sure its blank (or in other words NULL):

voIpProt.server.1.port=""

8) Volume Persistence - The user’s selection of the receive volume during a call can be remembered between calls. This can be configured per termination (handset, headset and hands-free/chassis). In some countries regulations exist which dictate that receive volume should be reset to nominal at the start of each call on handset and headset.

Go to this entry:

<volume voice.volume.persist.handset="0" voice.volume.persist.headset="0" voice.volume.persist.handsfree="1"/>

and change it to:

<volume voice.volume.persist.handset="1" voice.volume.persist.headset="1" voice.volume.persist.handsfree="1"/>


7.2.2.5.2 Suggestions on editing the MACADDRESS.cfg file
Remember that the MACADDRESS.cfg file is just a copy of the 000000000000.cfg file. We have to do some editing to make sure the right files are being loaded and the phone is pointed to the right directories on the FTP server.

1) On the FTP server, lets create folders under FTProot\Polycom with the names of the extensions we are creating. Lets make 5 folders.

\Polycom\x1001
\Polycom\x1002
\Polycom\x1003
\Polycom\x1004
\Polycom\x1005

2) Now in the Polycom directory of the ftp server, we'll create the following files (substitute the numbers for the phone's mac):

\Polycom\111111111111.cfg
\Polycom\222222222222.cfg
\Polycom\333333333333.cfg
\Polycom\444444444444.cfg
\Polycom\555555555555.cfg

Edit these files and place the correct information in the correct entry. We're going to point the "LOG_FILE_DIRECTORY" and "OVERRIDES_DIRECTORY" to the new extension's directory too. For example 111111111111.cfg would look like:

<?xml version="1.0" standalone="yes"?>
<!-- Default Master SIP Configuration File-->
<!-- Edit and rename this file to <Ethernet-address>.cfg for each phone.-->
<!-- $Revision: 1.14 $ $Date: 2005/07/27 18:43:30 $ -->
<APPLICATION APP_FILE_PATH="sip.ld" CONFIG_FILES="x1001\x1001.cfg, COMPANYNAME_SIP.cfg" MISC_FILES="" LOG_FILE_DIRECTORY="x1001" OVERRIDES_DIRECTORY="x1001" CONTACTS_DIRECTORY="x1001"/>

3) In each extension's directory we'll use the phone1.cfg file and create the following configuration files for each phone

\Polycom\x1001\x1001.cfg
\Polycom\x1002\x1002.cfg
\Polycom\x1003\x1003.cfg
\Polycom\x1004\x1004.cfg
\Polycom\x1005\x1005.cfg


7.2.2.5.3 Suggestions on editing the x1001.cfg file
Now we need to edit the individual phone's configuration file that we've created. Lets take \Polycom\x1001\x1001.cfg as an example:

The specific settings we are concerned with are:

  • reg.1.displayName="Lipan, Ginel" - This is what is displayed on your phone. A@H's caller ID over rules this setting. As per their manual "Display name used for local user interface
as well as SIP signaling."
  • reg.1.auth.userId="1001" - The extension used on the phone. As per their manual "User ID to be used for authentication challenges for this registration."
  • reg.1.address="1001" - The extension used on the phone. As per their manual "The actual address corresponding to this registration (userPart or user- Part@polycom.com). For user part only registration (reg.x.address=”1002”), the registration will be userPart@proxyHostNameOrIPAddress where userPart is reg.x.address and proxyHostNameOrIPAddress is either reg.x.server.1.address if non-Null or voIpProt.server.1.address specified in sip.cfg."
  • reg.1.auth.password="1001" - This is the password to the extension itself. Would be a good idea to make it a random number or something. This is the "secret" entry in AMP under user extensions.
  • reg.1.lineKeys="2" - This tells the phone to use 2 out of the 3 configurable buttons on the 501 (button number 35 and 34) as extensions. So if someone calls while a user is using their extension, As per the manual "max = the number of line keys on the phone. max = 1 on SoundStation® IP 4000, max = 2 on IP 300 and 301, max = 3 on IP 500 and 501, max = 6 on IP 600, max = 24 on IP 601 (without any Expansion Modules attached, only 6 line keys are available) The number of line keys on the phone to be associated with registration ‘x’.

If you glance at your 501, you can see that there is no speed dial button. To access your speed dial button, you have to hit the "Up Arrow" which is just silly. I am reserving the 3rd button (number 33) to make into a speed dial button. The other 2 buttons will be extension buttons (with the extentions number appearing on the LCD right next to the physical button).


7.2.2.5.4 Suggestions on Speed Dial and Company Wide Contacts Directory
Wouldn't it be great if there was one file you can leave in the Polycom FTP Directory that the phone grabs and uses as a company directory? Wouldn't it be great if thats the only file you would have to update everytime there was a change? Wouldn't it be great if that one file wasn't the SAME file as the speed dial file?

Oh well. We're out of luck on this one.

Heres a good post regarding this:

Asterisk@Home & Polycom 501 directory.xml file


7.2.2.6 Polycom Cheat Sheet

I whipped a little cheat sheet up that pretty much addresses all the important parts of the Polycom Setup. This is something I would have hanging on my bulletin board by my desk that I can use to look things up whenever I may need to.


7.2.2.7 Please put in a product enhancement request at the Polycom Site


I've already put in a request (01/19/06) at polycom's web site asking for

01) Optional STUN setting - There is no option for a STUN entry on your Polycoms. Being able to point a polycom phone to a STUN server would do a lot to get around NAT issues that occur. Please consider adding this functionality to your polycom phones.

02) IAX2 support (for asterisk servers. IAX is VERY NAT friendly) - IAX2 is a VOIP protocol that Asterisk servers use. It is VERY NAT friendly and an excellent protocol all around. Please consider adding this functionality to your polycom phones.

03) NAT Heartbeat - The Polycom Phones should be globally roam-able. In other words, no matter where they are in the world, as long as the Polycoms can get onto the internet, they should work. When a phone is romaing (home users, users at hotels, etc etc), it is safe to assume that they will be behind a NAT. When a phone registers with the server, it will pass through the NAT, and communicate with the server. Unfortunately, the inbound/outbound hole that the NAT object (router) creates usually only stays open for 30-60 seconds, depending on the router and NAT implementation. If that hole closes, the server can no longer communicate with the phone to send incoming phone calls to the Polycom. To keep the NAT hole open between the phone and a VOIP server open, the Polycom should have an option to send tiny little "Keep Alive" traffic to the Voip Server. For example: XTEN (CounterPath) Softphone uses a tiny little 10 second NAT keep alive. This is an easy way to successfully keep the NAT hole open. Currently, many of your users (including me) are forced to make roaming Polycom phones re-register with the server every 30-60 seconds) to keep NAT holes open. A NAT heartbeat option is desperetaly needed for your phones. Please consider adding this functionality to your polycom phones.

04) Backlight for the LCD panel. - The Plolycom phones have a great big LCD. This is great, except if you need to work in a low light area. The LCD desperately needs some kind of back lighting. Please consider adding this functionality to your polycom phones.

05) Make rebooting OPTIONAL after 'save'ing settings (webpage, phone ui) - Is there any way to be able to make SEVERAL changes to a Polycom phone's setting and THEN be able to reset instead of resetting after 1 change? It is frustrating to have to reset several times to be able to configure phones up to a desired point.

06) Add some kind of phone status to the webpage (registration status, call log, etc) - The web console that controls your Polycom Phones can use some help. There is no way to view registration status, call logs, and other real time information. Please consider adding this functionality to your polycom phones.

07) Allow editing phone book via webpage - The web console that controls your Polycom Phones has no way to edit any contact information or edit any speed dial information. Please consider adding this functionality to your polycom phones.

08) Create a "Company Directory" contacts list that is seperate from the "Speed Dial List" - There is no way to have a "Company Directory" on your Polycoms because the same file that would have the company directory is the same file as the Speed Dial List. There needs to be some kind of change that allows for 1 file on a FTP Provisioning server that allows for easy update of the Company directory that every phone can be pointed to. That file MUST be seperate from the speed dial file because administration would be impossible if I had to change 200 phone's contact file when there is a change to my company's directory. Please consider adding this functionality to your polycom phones.

09) More intuitively named files for easier configuration. - The file names used with the polycom are not intuative. Frankly, they're downright confusing. Please make the file names more intuative. Please consider adding this functionality to your polycom phones.

10) No way to turn off speaker phone using the .cfg files (or any other method). Our company doesn't allow for speakerphones in their cubicles because often it disrupts cubicle neighbors. Please consider adding this functionality to your polycom phones.

11) Make the 2 Ethernet ports on the back of the polycoms GIGABIT ports.

12) Serious improvements need to be made to the web console. Many users feel it is a poor implementation and can be done a lot better. In my opinion, every possible option should be linked to a full explanation of the option with examples. Even more important is to tell the web user what the option translates to in your .cfg files. To many times I've been forced to make the change on the phone, and view the cfg file that is uploaded to my ftp site with the over-ride info to see which option a field points to. The web console needs to be more intuative and helpful. Right now I feel like Polycom is forcing me to wing it.

Don't hold your breath for the IAX2 support. I figure we'll be seeing the STUN setting coming soon but I have no idea about the NAT heartbeat option.

I strongly suggest EVERYONE go to the polycom feedback demand they add these options to their phones. If they add these options, the Polycoms would be the perfect choice for a VOIP roll out.

http://eknowledge.polycom.com/media/Forms/Enhancement_Requests/FER_emailform.html

7.2.3 Snom

A small tip for making the message "Retrive" button work

To get message retrieval working on Snom phones add the following line to the
extensions_custom.conf

exten => asterisk,1,VoiceMailMain(${CALLERIDNUM})

Created by: GinelLipan, Last modification: Tue 20 of Sep, 2011 (23:29 UTC) by admin
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+