Thursday, May 26, 2011

How to Configure a Polycom Soundpoint IP 330

This is another tutorial in my VoIP phone system series, specifically for configuring the Polycom Soundpoint IP 330 SIP phone.  This is one of several models of SIP phone made by Polycom, all of which are very simple, low-cost SIP VoIP phones.  The difficulty with using Polycom phones compared to the Grandstream Handytone series is that these are designed to be used with a provisioning server in addition to the SIP server.

What provisioning means is that in addition to the option of configuring the device through its web interface, you can instead point the phone at some kind of file transport server on the network (TFTP, HTTP(S), FTP(S)), where the phone will first try and download a device specific configuration file (based on its MAC address), then failing that, download a generic 000000000000 configuration file to setup defaults.

These configuration files need to do a couple basic things.  First of all, they need to define the phone's application; which will pretty much always just be the SIP application which Polycom provides on their product download page.  Second, the configuration files all point to a single config file with the SIP server details, which is common between all the phones.  Lastly, each config file points to a unique config file per user with their login credentials for the SIP server.  All of this together means you can easily reconfigure all of your phones by editing all of the config files on the provisioning server and then rebooting all of the phones, including updating the BootROM and SIP firmware on each phone.  This is great in large installations, but does tend to be another hurdle for personal use.

Luckily, at least on the 330 model, the phone has its own filesystem on-board such that once it successfully boots from the provisioning server once, it'll be able to boot independently from it, and you can reconfigure it through its web interface, so once you load the SIP firmware on the phone it CAN act like a normal SIP phone and this provisioning hubbub can be completely ignored.




This guide is assuming you're using the sip2sip.info SIP provider for the examples, so if you're using someone else or setting up your own SIP server, just change the sipserver.cfg file to fit your needs.
  • First step is downloading the needed files from Polycom's server.  The two zip files you'll need is the latest Split Polycom UC software (currently 3.3.1RevF[Split]), and the latest BootROM files (currently 4.3.0).  The difference between the split and combined packages is that the SIP firmware is either a bunch of 3MB files, or one giant 70MB blob.  The significance isn't particularly clear to me.
  • Now start copying files to your provisioning server.  Between TFTP, FTP, FTPS, HTTP, and HTTPS, you have plenty of different options as to what file transport you want to use.  I happen to already have an HTTP and TFTP server running on my Chumby, so I got both of those working, both with identical files:
    •  bootrom.ld & lots of 2345-#####-###.bootrom.ld files - These are the latest BootROM firmware images, which then load the SIP application.  I wasted a lot of time before updating the BootROM, so you probably want to load these, unless you enjoy having a schizophrenic telephone.  The phone will always try and download these from the provisioning server, so it they're not there this will just fail and the phone will happily move on to downloading config files.
    • sip.ld & sip.ver - sip.ld is the SIP firmware which the config files tells the BootROM to load to act like a SIP phone.  The sip.ver file is just a text file with the version number.
    • 000000000000.cfg - This is the default config file from the UC zip file which will have the phone load the sip.ld file and wait for you to configure the phone manually on the web interface.  At this point, you have enough files together to get the phones to turn on, download new BootROM images, download sip.ld, and sit there happily as unconfigured SIP phones.  The rest of the files are for bringing each phone up already configured as to its SIP identity instead of configuring them through your browser.
    • 0004f2175b35.cfg - Create a new text file with the specific phone's MAC address as its file name.  The MAC address is on a barcode on the back of the phone, and this file will point to sip.ld, sipserver.cfg, and x7653.cfg
    • sipserver.cfg - This file contains the location of the SIP server and outbound proxy, which is the same between all of your phones.  The example contents below is for sip2sip.info
    • x7653.cfg - This is the configuration file per extension, so x8835.cfg is for extension #8835, x7653.cfg is for #7653, etc.  This has the specific username and passwords for the SIP server.
    • log/ - Make this directory if you plan on giving the phones write permission to your provisioning server to post their log files, which is handy.  For TFTP, this means just configuring the TFTP server to allow PUTs, but for FTP and HTTP you can give the phones usernames and passwords to authenticate with the server to get access instead.
Now lets talk about these new config files you're making.  It's all pretty basic XML, so hopefully they can make some sense on their own.


Now there really is SO much more that CAN be done with these config files, like setup speed dials, directory listings, time servers, etc, but this will hopefully get you started.
  • At this point you should have some sort of file server, with all of those files available on it, and ideally some way to get write access to it either with a username and password (FTP, HTTP) or without (TFTP).  (I left my files on my webserver at http://kwf.dyndns.org:5821/polycom, which you might try and use, though it can be painfully slow downloading stuff from a home DSL line.)  Now we just need to point the phones at your setup provisioning server and hope like hell it works.
  •  Plug in your phone.  The PC Ethernet jack is just switched through the phone to the LAN jack, but since I have 12 ports on a switch under my desk, I didn't bother using the PC jack at all.
  •  When you first plug it in, you'll see this pre-boot screen.  Press the center soft-button to go to setup, and hope the default password "456" works.  If that doesn't work, start searching online about how to reset the phone, I haven't quite figured that out...
  • Make sure the DHCP client is enabled to automatically get a good IP address from your router, and then go down three lines and enter the "Server Menu" sub-menu.
  • Select the transport method, enter the server URL / IP address, user name, and password.  When entering text, the left soft-button will toggle between numbers and abc mode, "*" will enter ".", and "#" will cycle through symbols (/:~_@?=\+-&)
  • Press "exit," enter an SNTP URL if you care (i.e. time.nist.gov), and exit again to save & reboot.
  • At this point, the phone should hopefully download all the firmware images from your provisioning server, display its IP address, and end up on its home screen.
  • At this point, you can visit the phone's configuration page through its IP address (i.e. http://192.168.1.193/), log in with user "Polycom" password "456" for any more configuration you want to do, instead of through cfg files.
  • At least the 330 model is smart enough to store all of this locally, so you now have the option of shutting down the provisioning server, and in the future the phone will boot entirely internally if it can't reach the provisioning server.
Hopefully most of this makes sense.  There are some better tutorials out there on writing the XML for the config files, and however painfully long they are, admin guides will always be your friend.

6 comments:

  1. Great post this lead me into the right direction. I had to use bootrom 2345-12375-001.bootrom.ld and 2345-12375-001-sip.ld then rename them and I got it to work. The rest I followed and it worked great. Thanks for your help!!!

    Here is how to reset to factory defaults:

    Restoring Factory Defaults
    For the key combination, press and hold certain key combinations (depending
    on the phone model) simultaneously during the countdown process in the
    bootROM until the password prompt appears:
    • IP 301, 501, 550, 600, 601, and 650, and 670: 4, 6, 8 and * dial pad keys
    • IP 320, 330, and 430, 560, 7000: 1, 3, 5, and 7 dial pad keys
    • IP 4000 and 6000: 6, 8 and * dial pad keys

    I had a RingCentral IP 335 and had to use 1,3,5 and 7. I then entered the Phone MAC address because I did not know the password. Be sure to enter the letters you have to change the input type when putting in the password. I used the CAPs letters. This reset my phone password to 456.

    ReplyDelete
  2. I thought I should also share about the SNTP setup. I am sure if you statically set the GMT zone it will work but when doing it from a config file it was a headache for me anyway. I had to enable Option 002 Time Offset on my Microsoft DHCP server and set the value as 0xffffaba0 for Central time. Here are the other GMT zones near the middle of the page:

    http://www.cisco.com/en/US/tech/tk86/tk804/technologies_tech_note09186a0080093d76.shtml

    I also set this in the config file in the TCP_IP Section:

    When putting this code alone the time was 6 hours ahead even when putting in the GMT offset code it would always use the DHCP server instead. I even tried adding the following code to the phone file and to the sipserver file and no go:



    Good Luck!!!

    ReplyDelete
  3. This is really great stuff sharing . Actually i am here to grabs knowledge about polycom product like Polycom IP 335 and Polycom IP 650 . In your knowledge can we enhanced the sound quality and other features of these product or available any other product with superior features.

    ReplyDelete
  4. I work for a company who uses many of these phones, but our phone inventory/tracking has become out-of-control.

    How do I check what phone number is assigned to which phone? Either from a central database, or just going to each phone and accessing the information.

    Thanks!

    ReplyDelete
  5. If you use the network provisioning to assign phone numbers automatically, your provisioning server will have a MACADDRESS.cfg file for each phone, which will have the account details in it. If not, but you can use your DHCP server to figure out what each phone's IP address is, you can log into each phone's web config interface and read off the account details there.

    ReplyDelete
  6. Very helpful article, thanks Kenneth!

    ReplyDelete