This is my experience setting up a Polycom VVX 250 to provision to a TFTP server.
Install Debian 11 then run the following command:
sudo apt install tftpd-hpa
Next I modified the config file located here:
sudo nano /etc/default/tftpd-hpa
I added an ip to the address location and a –create on the options line and saved (Change the directory if you like.)
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="192.168.0.100:69"
TFTP_OPTIONS="--secure --create"
Change the rights on the tftp directory:
sudo chown tftp:tftp /srv/tftp
Then restart the tftp server
sudo systemctl restart tftpd-hpa
The service would not start because I removed the username because I wanted it to be blank. I added it back and the service started.
Next on a windows machine I installed TFTP Client and tested connection to the server like so (Put a test file in the tftp directory on the server):
tftp 192.168.0.100 GET test.txt
This connected and downloaded the file to my %userprofile% (C:\User\Username)
Setting up a Polycom vvx 250
From what I read this should work on all vvx model phones
In this example I will create a config file that does the following:
- Sets ringtone
- Sets time zone
- Sets up lines 1-4
- Sets SIP cloud server
- Sets a default phone password
The root of my TFTP directory looks like this:
- /Polycom/exts
- I put config files for my extensions in here
- /Polycom/log
- A place for Polycom logs to upload
- /Polycom/mac.cfg
- lower case spelling of my phones mac address
- /Polycom/phonesettings.cfg
- Settings to apply to all phones
- /Polycom/3111.48840.001.411.sip.ld
- Firmware to load on the phone
Create a file that is the name of the phone MAC address and put it in the root of the tftp server (e.g. 0012345678af.cfg)
<?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="3111-48840-001-411.sip.ld"
DECT_FILE_PATH=""
CONFIG_FILES="/exts/x340.cfg, phonesettings.cfg"
SERVICE_FILES=""
MISC_FILES=""
LOG_FILE_DIRECTORY="/log"
OVERRIDES_DIRECTORY=""
CONTACTS_DIRECTORY=""
LICENSE_DIRECTORY=""
USER_PROFILES_DIRECTORY=""
CALL_LISTS_DIRECTORY=""
COREFILE_DIRECTORY=""
CERTIFICATE_DIRECTORY=""
FLK_DIRECTORY=""
/>
So when the phone boots it looks for a config filed named its macaddress.cfg and the above config will tell the phone what firmware to load and where to go for the extension config files and where to go for server settings.
Here is the information inside phonesettings.cfg:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- PlcmConversionCreatedFile version=1.2 converted=Tue Jul 19 15:35:20 2011 --> <!-- Our local phone system common configuration in this file --> <polycomConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="polycomConfig.xsd"> <device device.set="1"> <device.auth device.auth.localAdminPassword.set="1" device.auth.localAdminPassword="8888" /> </device> <tcpIpApp> <tcpIpApp.sntp tcpIpApp.sntp.address="pool.ntp.org" tcpIpApp.sntp.gmtOffset="-21600" tcpIpApp.sntp.gmtOffset.overrideDHCP="1" tcpIpApp.sntp.resyncPeriod="43200" /> </tcpIpApp> <voIpProt> <voIpProt.SIP> <voIpProt.SIP.alertInfo voIpProt.SIP.alertInfo.2.class="ringAutoAnswer" voIpProt.SIP.alertInfo.2.value="Ring Answer" /> <voIpProt.SIP.outboundProxy voIpProt.SIP.outboundProxy.address="cloud.sipprovider.net" /> </voIpProt.SIP> <voIpProt.server voIpProt.server.1.address="cloud.sipprovider.net" /> <server> voIpProt.server.1.expires="30" voIpProt.server.1.expires.overlap="5" </server> </voIpProt> <nat> nat.keepalive.interval="7" nat.signalPort="5060" nat.mediaPortStart="10000" </nat> </polycomConfig>
This sets the phone admin password to 888:
<device device.set="1">
<device.auth device.auth.localAdminPassword.set="1" device.auth.localAdminPassword="8888" />
</device>
This is the time zone information and clock server:
<tcpIpApp>
<tcpIpApp.sntp tcpIpApp.sntp.address="pool.ntp.org" tcpIpApp.sntp.gmtOffset="-21600" tcpIpApp.sntp.gmtOffset.overrideDHCP="1" tcpIpApp.sntp.resyncPeriod="43200" />
</tcpIpApp>
The information here is from your cloud service provider:
<voIpProt>
<voIpProt.SIP>
<voIpProt.SIP.alertInfo voIpProt.SIP.alertInfo.2.class="ringAutoAnswer" voIpProt.SIP.alertInfo.2.value="Ring Answer" />
<voIpProt.SIP.outboundProxy voIpProt.SIP.outboundProxy.address="cloud.sipprovider.net" />
</voIpProt.SIP>
<voIpProt.server voIpProt.server.1.address="cloud.sipprovider.net" />
<server>
voIpProt.server.1.expires="30"
voIpProt.server.1.expires.overlap="5"
</server>
</voIpProt>
Once the server and config files are created correctly you can then provision the phone from the startup screen by entering your TFTP server.
If you have trouble there are very good diagnostic logs from the web interface. From the menu you can get the network status and then enter the IP into the address bar and navigate to Diagnostics>View & Download Logs
Some good Polycom References:
[FAQ] What is the relevance of the 000000000000.cf… – Poly Community
Using the Master Configuration File (spectralink.com)
Lastest Releases:
Latest Poly UC Software Release | Poly, formerly Plantronics & Polycom
References:
How to install tftp server on Debian 11 (linuxhint.com)
TFTP – Debian Wiki
How to test TFTP server from a Client system in Windows – GUNNALAG