This is a short HOWTO type document on how to upgrade and use a cisco ip phone 7940 or 7960. These phones are shiped in CallManager (skinny) mode
Setting up your local network.
First things first, you will need to be running a DHCP server. This is just a matter of setting up your favourite dhcpd on your favourite operating system. You need to make sure that your phone can get the Gateway/router, DNS server and TFTP server sent with the dhcp lease.
You then will also need to set up a tftpd. This is not going to be covered here at all.
Upgrading the phone from a early call manager firmware
To start you need a “AL” firmware or above. If you don’t have this you will have to use call manager.
After this is done you will need to create your TFTP files. First file you will need is P0S30202.bin or similar. Put this file in the root of your TFTP folder. Also you will need your OS79XX.TXT.
Open this file up in your favourite editor and edit it so that it contains the flowing line
Save the file and go back to your TFTP root.
You should also put the files “Ringer1.PCM” and RINGLIST.DAT.
The Contents of ringlist.dat is similar to
Old Style ringer1.pcm
Where the first tsv is the name, and the second is the file name. Save this file as well.
I have recently been informed that this is not nescessary unless your adding more ringers to the phone
Next create two files
SIPDefault.cnf and SIP.cnf (such as SIP0006D7AA2A2E.cnf)
This file should contain the following (adjusted for your settings)
# Image Version
# Proxy Server
proxy1_address: "fwd.pulver.com" ; Can be dotted IP or FQDN
# Proxy Registration (0-disable (default), 1-enable)
# Phone Registration Expiration [1-3932100 sec] (Default - 3600)
# Codec for media stream (g711ulaw (default), g711alaw, g729a)
# TOS bits in media stream [0-5] (Default - 5)
# Inband DTMF Settings (0-disable, 1-enable (default))
# Out of band DTMF Settings (none-disable, avt-avt enable (default), avt_always - always avt )
# DTMF dB Level Settings (1-6dB down, 2-3db down, 3-nominal (default), 4-3db up, 5-6dB up)
# SIP Timers
timer_t1: 500 ; Default 500 msec
timer_t2: 4000 ; Default 4 sec
sip_retx: 10 ; Default 10
sip_invite_retx: 6 ; Default 6
timer_invite_expires: 180 ; Default 180 sec
# Dialplan template (.xml format file relative to the TFTP root directory)
# TFTP Phone Specific Configuration File Directory
tftp_cfg_dir: "" ; Example: ./sip_phone/
# Time Server (There are multiple values and configurations refer to Admin Guide for Specifics)
sntp_server: "184.108.40.206" ; SNTP Server IP Address (this is ntp1.ja.net)
sntp_mode: anycast ; unicast, multicast, anycast, or directedbroadcast (default)
time_zone: GMT ; Time Zone Phone is in
dst_offset: 1 ; Offset from Phone's time when DST is in effect
dst_start_month: April ; Month in which DST starts
dst_start_day: "21" ; Day of month in which DST starts
dst_start_day_of_week: Sun ; Day of week in which DST starts
dst_start_week_of_month: 1 ; Week of month in which DST starts
dst_start_time: 02 ; Time of day in which DST starts
dst_stop_month: Oct ; Month in which DST stops
dst_stop_day: "20" ; Day of month in which DST stops
dst_stop_day_of_week: Sunday ; Day of week in which DST stops
dst_stop_week_of_month: 8 ; Week of month in which DST stops 8=last week of month
dst_stop_time: 2 ; Time of day in which DST stops
dst_auto_adjust: 1 ; Enable(1-Default)/Disable(0) DST automatic adjustment
time_format_24hr: 1 ; Enable(1 - 24Hr Default)/Disable(0 - 12Hr)
dnd_control: 0 ; Default 0 (Do Not Disturb feature is off)
callerid_blocking: 0 ; Default 0 (Disable sending all calls as anonymous)
anonymous_call_block: 0 ; Default 0 (Disable blocking of anonymous calls)
dtmf_avt_payload: 101 ; Default 101
# Sync value of the phone used for remote reset
sync: 1 ; Default 1
proxy_backup: "" ; Dotted IP of Backup Proxy
proxy_backup_port: 5060 ; Backup Proxy port (default is 5060)
proxy_emergency: "" ; Dotted IP of Emergency Proxy
proxy_emergency_port: 5060 ; Emergency Proxy port (default is 5060)
# Configurable VAD option
enable_vad: 0 ; VAD setting 0-disable (Default), 1-enable
nat_enable: 1 ; 0-Disabled (default), 1-Enabled
nat_address: "" ; WAN IP address of NAT box (dotted IP or DNS A record only)
voip_control_port: 5060 ; UDP port used for SIP messages (default - 5060)
start_media_port: 16384 ; Start RTP range for media (default - 16384)
end_media_port: 32766 ; End RTP range for media (default - 32766)
nat_received_processing: 0 ; 0-Disabled (default), 1-Enabled
outbound_proxy: "220.127.116.11" ; restricted to dotted IP or DNS A record only (this is fwdnat.pulver.com)
outbound_proxy_port: 5082 ; default is 5060
# Allow for the bridge on a 3way call to join remaining parties upon hangup
cnf_join_enable : 1 ; 0-Disabled, 1-Enabled (default)
# Allow Transfer to be completed while target phone is still ringing
semi_attended_transfer: 1 ; 0-Disabled, 1-Enabled (default)
# Telnet Level (enable or disable the ability to telnet into the phone)
telnet_level: 2 ; 0-Disabled (default), 1-Enabled, 2-Privileged
# XML URLs
;services_url: "http://your.site/services.xml" ; URL for external Phone Services
services_url: "http://18.104.22.168/bt/" ;bt services
directory_url: "http://your.site/directory.xml" ; URL for external Directory location
logo_url: "http://your.site/logo.bmp" ; URL for branding logo to be used on phone display
# HTTP Proxy Support
http_proxy_addr: "" ; Address of HTTP Proxy server
http_proxy_port: 80 ; Port of HTTP Proxy Server (80-default)
# Dynamic DNS/TFTP Support
dyn_dns_addr_1: "" ; restricted to dotted IP
dyn_dns_addr_2: "" ; restricted to dotted IP
dyn_tftp_addr: "" ; restricted to dotted IP
# Remote Party ID
remote_party_id: 0 ; 0-Disabled (default), 1-Enabled
# Call Hold Ringback (0-disabled, 1-enabled, 2-disabled no user control, 3-enabled no user control)
call_hold_ringback: 0 ; Default 0 (Disable ringback of held call)
Save this file and open SIP.cnf
This file should contain
# Line 1 appearance
# Line 1 Registration Authentication
# Line 1 Registration Password
# Line 2 appearance
# Line 2 Registration Authentication
# Line 2 Registration Password
####### New Parameters added in Release 2.0 #######
# All user_parameters have been removed
# Phone Label (Text desired to be displayed in upper right corner)
phone_label: "Phone using " ; Has no effect on SIP messaging
# Line 1 Display Name (Display name to use for SIP messaging)
line1_displayname: " line 1"
# Line 2 Display Name (Display name to use for SIP messaging)
line2_displayname: " line2"
####### New Parameters added in Release 3.0 ######
# Phone Prompt (The prompt that will be displayed on console and telnet)
phone_prompt: "SIP Phone" ; Limited to 15 characters (Default - SIP Phone)
# Phone Password (Password to be used for console or telnet login)
phone_password: "cisco" ; Limited to 31 characters (Default - cisco)
# User classifcation used when Registering [ none(default), phone, ip ]
Save this file. And create a file called syncinfo.xml.
This file needs to contain
<IMAGE VERSION="*" SYNC="1"/>
Save this file and create dialplan.xml
This file should contain.
<TEMPLATE MATCH="*" Timeout="5"/>>
Save this file. And boot the phone.
It should say on the screen.
And then it should reboot. (after a seiers of light flashing on the headset/speaker and mute buttons.)
This is you phone now upgraded to SIP v2.2 firmware. You can now proceded to the next step.
Upgrading to SIP v3.x firmware
To do this you need to edit the OS79XX.TXT file to contain P0S3-03-0-00.
Also you then need to change the line in SIPDefault.cnf so that
Is the line at the top.
After you have done this make sure that the P0S3-03-0-00.bin file is in the tftp root. And then send the phone a CHECK-SYNC message.
I have been informed that this should NOT be nesscessary for local updates, however for some reason my phone required it, so i shall leave it here just incase
This can be done using the following perl script
use Socket; reboot("192.168.0.123"); # this is the phones ip
$phone_ip = shift;
$MESG="NOTIFY sip:sip@$phone_ip:5060 SIP/2.0
Date: Mon, 10 Jul 2000 16:28:53 -0700
CSeq: 1300 NOTIFY
$proto = getprotobyname('udp');
socket(SOCKET, PF_INET, SOCK_DGRAM, $proto) ;
$iaddr = inet_aton("22.214.171.124");
$paddr = sockaddr_in(5060, $iaddr);
bind(SOCKET, $paddr) ;
$hisiaddr = inet_aton($phone_ip) ;
$hispaddr = sockaddr_in($port, $hisiaddr);
send(SOCKET, $MESG, 0,$hispaddr ) || warn "send $host $!n";
Run this script and then that should make the phone reboot and upgrade the firmware. After this is done you should be running a v3 SIP firmware.
Upgrading to V4.
CAUTION v4.4 is the only SIP firmware that will work with FWD and most other SIP services. This is apparently fixed in v4.4 and I seem to be having no problems using.
To do this you need to edit the OS79XX.TXT file to contain P0S3-04-4-00.
Also you then need to change the line in SIPDefault.cnf so that
Is the line at the top.
After making sure that your firmware file is in the root of the TFTP server. Reboot the phone (power cycle) and it should automatically upgrade your firmware.
Once this is done you should be running v4.4 of SIP firmware.
I Have recently got the 5.3 Firmware, and upgradeing is much the same as 4.4