Setting Up a Polycom IP 430 Phone with FreePBX

I want to use a true SIP phone for my office phone. I was initially attracted to the Polycom SoundPoint IP 430 because of its support for electronic hookflash with my Jabra GN9350 wireless headset. By using a special adapter cable, I can answer the phone from the wireless headset without the need for a mechanical handset lifter.

Things I Wish I’d Known

Here are some things that would have helped me:

  • Every time a Polycom phone powers up, it attempts to contact a “boot server” where it looks for BootRom software, the phone software, and then generic and phone-specific configuration files. If it can’t find a boot server, it uses the configuration information stored from the previous boot.
  • I bought my phone on eBay and was stuck with having to clear the old configuration without knowing the previous owner’s password. Pressing and holding 1357 during boot prompted me for a password. Entering the MAC address of the phone as the password worked, and the phone did a factory reset. But as soon as the phone finished booting, it re-loaded its old, custom configuration files from flash memory, locking me out again. I finally got around this by setting up a local boot server and downloading a blank 000000000000.cfg configuration file during boot. Since I was initially having trouble getting the phone to see the Trivial FTP (tftp) server on the PBX in a Flash (PiaF) machine, I did this part by setting up an FTP server on my Windows Small Business Server 2003. I got the phone to connect to the server as user “anonymous” with the password “guest”. This Trixbox thread has the rest of the information I needed to reset the phone. I went ahead and updated to the latest BootRom (4.1.2.0037) and phone software (3.1.1.0137), downloaded from the Polycom support site.
  • Because my DHCP server can’t respond to Type 66 requests, I had to manually set a Fixed address in the phone to look for the tftp server on the PiaF machine. I went ahead and set the gateway and DNS as well. This allowed the phone to successfully connect to tftp on the the PiaF machine.

If all you want to do is configure one phone, you might just want to use the phone’s web interface. This post has helpful instructions.

However, if you have a lot of phones to configure, or even if you just want to have the configurations stored on your server, you’ll need to set up a boot server (we’ll use tftp) and create configuration files.

Setting Up tftp

Although the Polycom phones default to using FTP, all we need for our basic purposes is Trivial FTP (tftp).

By default, PiaF comes with tftp not installed. to install it, type setup-tftp. This creates the /tftpboot directory and starts the tftp service.

Allow Writing via tftp

By default, tftp is set up to disallow file creation and overwrites. This is a good thing, since you usually don’t want your server to allow anonymous users to create and change files. However, the Polycom phone will, if permitted, upload some log files and create backups of locally-configured settings on the tftp server. We also would like more detailed tftp logging in /var/log/messages than is provided by default. (This post explains how to do that.) To allow writing and enhance logging, I made the following changes.

  1. Change permissions to allow any user to write to the tftpboot folder:
    chmod 777 /tftpboot
  2. Edit the file /etc/xinetd.d/tftp, changing the server-args line to read as follows (-c to allow creating files, -vv to increase logging):
    server_args = -c -s /tftpboot -vv
  3. Restart tftp:
    /etc/init.d/xinetd restart
  4. Optionally monitor the log in real time:
    tail -0f /var/log/messages
    (Press Ctrl-C to exit the real-time monitoring.)

When you’ve finished the Polycom setup, and especially if your PiaF machine is exposed to the Internet, you may want to disable writing and verbose logging as follows:

  1. Change tftpboot permissions back to disallow writing my users other than the owner (root):
    chmod 755 /tftpboot
  2. Edit the file /etc/xinetd.d/tftp, changing the server-args line back to the default:
    server_args = -s /tftpboot
  3. Restart tftp:
    /etc/init.d/xinetd restart

Setting Up the Phone

Once I had a “clean” phone (reset to factory defaults), I followed these steps to get the phone set up and “linked” to the tftp boot server on my PiaF machine:

  1. The phone gets its IP address using DHCP. I used the phone’s MAC address (printed on the back of the phone) to assign it an IP address in my router.
  2. Copy the default configuration files (that come with the firmware) to the /tftpboot directory on the PiaF machine. You don’t need all the files, just the ones relevant to your phone. My /tftpboot directory has these files:
    SoundPointIPLocalization (directory; contains only the English_United_States subdirectory)
    000000000000.cfg
    000000000000-directory~.xml
    2345-11402-001.sip.ld
    (the phone software for the IP 430)
    phone1.cfg
    sip.cfg
    sip.ld
    sip.ver
  3. Power up the phone. While the phone is booting, press Setup. Enter 456 as the password. Then make these changes:
    – In the DHCP menu, change Boot Server to Static.
    – In the Server menu, set Server Type to TrivialFTP and Server Address to the IP address of your PiaF machine. You can set Server User and Server Password to empty but leaving them as their defaults works too.
    Exit from the setup, choosing Save & Reboot. The phone will get its IP address from your router (DHCP server) and then download configuration information from the tftpboot directory on the PiaF machine. You may want to watch the /var/log/messages file as described in the previous section.

Once you know the phone is talking to the tftp server, set up the custom configuration files. Note that we use these custom files only to define exceptions. That means that they must appear first in the CONFIG_FILES list (in 000000000000.cfg), followed by the generic files that were included with the firmware package. The idea is that when you update the firmware, you replace the sip.cfg and phone1.cfg files with the files from the new firmware package, but you use the same custom exception files. For more information, see this 5-page Polycom white paper.

  1. Change 000000000000.cfg so that the first non-commented line reads as follows :
    <APPLICATION APP_FILE_PATH="sip.ld" CONFIG_FILES="phone1_[PHONE_MAC_ADDRESS].cfg, phone1.cfg, sip_custom.cfg, sip.cfg" MISC_FILES="" MISC_FILES="" LOG_FILE_DIRECTORY="" OVERRIDES_DIRECTORY="" CONTACTS_DIRECTORY="" LICENSE_DIRECTORY="">
    Note that we are using the new Variable Substitution supported as of BootRom 4.0. [PHONE_MAC_ADDRESS] will be replaced when the phone looks for its custom file.
  2. Create a sip_custom.cfg file. This specifies how to get SNTP (time) values. The attached example uses a local Windows Small Business Server 2003 as a time server, and sets the offset to GMT-8 (that is, -28800 minutes).
  3. Create a phone1_<mac_address>.cfg file, substituting the phone’s MAC address in the file name. This file contains the setup for the phone’s extensions, i.e. these are the settings that let the phone find your PiaF machine and register with Asterisk.  The attached example configures two extension and *97 for message retrieval.

Now, when you reboot the phone, it should come up with the correct time and its extensions registered. If the user makes changes to the configuration (ring tones, headset settings, etc.), and if the tftp server allows writing, the phone will upload a file named <mac_address>-phone.cfg to the /tftpboot directory. This file contains user-specified configuration overrides. If the user creates speed-dial contacts, those are uploaded as <mac_address>-directory.cfg to the /tftpboot directory. Using these files, even if a phone is completely wiped (including its flash memory), it should be able to reboot to its fully-configured state as long as it can access the boot server.

sip_custom.cfg (459.00 bytes)

phone1_mac_address.cfg (1.96 kb)

3 thoughts on “Setting Up a Polycom IP 430 Phone with FreePBX

  1. Pingback: Polycom phones cannot dial anything past 211 when our extensions go to 2111, 2112, 2113 and so on. | Linux Admins

  2. seth

    Oh wow. Maybe the Polycom VVX 400 second hand off ebay phones can have a few quirks crushed with the enlightenment you have provided.

  3. seth

    My plan is to use Raspberry Pi Zero W for tftp to store user’s ringtone files. I hope I can export the line configurations I made via the phone webUI to files to store on tftp two make small tweaks to extension names for the other phones. I am not using home PBX but connecting from phone to ‘cloud’ IP PBX services like voipMS or voisip.

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.