Cisco IP Communicator


I am running Asterisk version 6 and trying to run IP Communicator. I cannot get it working. Any ideas?


Hi there,

I assume you are trying to use chan_skinny to register the phone.

When I tried to do the same thing in my lab, I noticed that IP Communicator seemed to have trouble downloading the necessary XML file from a standard TFTP server. The TFTP transaction was invalid because IP Communicator did not set the data type. (In fact, you can see in the network traces that it in fact does try to set it; so… it must be malformed somehow.) Cisco’s TFTP server on the CUCM is a proprietary thing, and I’m sure they are not concerned if their software will not work on third party TFTP servers.

I was not able to fix this issue. Well, to be honest, I didn’t care enough to figure it out beyond this. :smile:

If you try to use Wireshark or tcpdump and filter for TFTP, maybe you will see the same issue on your system and perhaps you can figure out why.


I had the exact same issue with the terminal release of IP Communicator. I fired up Wireshark and got to the bottom of it. There is an extra 0x00 following the filename (or preceding the octet mode, depending on your point of view)

Just because I found it annoying, I got the source for tftpd-hpa, which Centos uses and have located the section where the change needs to be made. I am not a C programmer, but I think I can muddle through incrementing the pointer if this case occurs. If anyone is interested, the change needs to be made in the vicinity of line 1024 in tftpd.c

When I get it to work I’ll post it…somehow. I know how to cross compile for other target architectures, but I don’t know how to package (.rpm, .deb,etc)

I am planning to name it in.tftp-cisco, so that the process can be easily identified and to make sure you running the right program when you try it out.

From my reading, this is an issue with post ver 7.1 IP Communicator. The changes I am making should not break compliant tftp transfers from compliant clients.

What I did to make it work on a Centos system:

  1. Download the .src.rpm for the system build that you have.

  2. install the rpm

  3. locate the rpmbuild/SOURCES/tftp-{version} directory

  4. edit ./tftpd/tftpd.c (I used nano)

  5. search for argn++; or scroll down to around line number 1024

  6. insert the line between the comment from the snippet below

  7. save the file and exit

  8. execute make and make install

  9. execute service xinetd stop

  10. execute ps ax|more

  11. type /tftp

  12. if the message says skipping… find the process number then execute kill {process number}

  13. repeat from step 10 until all (if any) tftp server processes are stopped

  14. execute service xinetd start


/* begin Tad’s playing with the stupid zero that Cisco’s tfpd ignores */
if ( (cp+1) == 0) { ++cp;}
end Tad’s playing with the stupid zero that Cisco’s tfpd ignores */
if (argn == 1) {
mode = ++cp;

the above is the snippit of the addon I did. Only the if statement between the comments is inserted. Probably not elegant C++ style but it unambiguously compiled and executed correctly.

The SEPxxxxxxxx.cnf.xml for IP Communicator now loads. IP Communicator Version

Does it work after loading its configuration? for me it is registering forever and no sip packets are sent to server :frowning: