Cisco 7960G SIP configuration, incoming calls problem

I have a recent, clean install of the latest version 17 of FreePBX running on Debian in a Hyper-V virtual machine.

I’m trying to configure a Cisco 7960G via SIP (default pjsip) with the following results:

  • Phone seems to register to FreePBX but is “Unavailable”.
  • I can place calls from Cisco to a MicroSIP softphone on my PC. Audio works normally in both directions. If I terminate the call from the softphone end, Cisco phone never seems to get this information. Terminating the call at the Cisco end works normally.
  • I cannot place calls from a softphone to Cisco. MicroSIP reports that “Service unavailable”.

Everything is running in a local network. I have disabled any SIP-related helpers in the switch/router (Mikrotik). Cisco phone is connected to another switch to provide PoE.

Seems like somehow the SIP control messages don’t reach the Cisco phone from FreePBX. Yet there is no obvious network related reason for this.

Any advice is appreciated.

Hi kyberias,

These are very simple phones and in general are not difficult to get working. They also in general don’t require or benefit from the USECALLMANAGER patch since they work much more like industry standard basic VoIP phones in SIP mode. (no support for BLF keys, etc.) They do have a bug which is mitigated by turning NAT support on (even when they are not behind a NAT)

I just ran a test using microsip (I assume you are using the one from microsip.org) on my windows 11 laptop to my test Cisco CP7841 phone with no problems. (by the way thanks for the tip as I was unaware of microsip) I have a test 7960G phone in my fleet but it’s 80 miles away at another site that I won’t be out there for another 3 weeks, however I’m sure it works. I’ve posted it’s SIPMAC and it’s SIPDefault.cnf below. (the SIPMAC is loaded after the SIPDefault.cnf and overrides all matching directives from the SIPDefault.cnf) My test phone is connected to chan_sip under Asterisk 21 not pjsip, but that isn’t of any consequences to this config. It is, however why the port is 5160 not 5060.

I do have a test 7940G here but I haven’t plugged it in a configured it here so let’s see if we can get your phone running first, without me having to do that.

Couple of questions for you on this:

  1. Please post the version # of the SIP code that you are running on the 7960G
  2. Please post the SIPMAC configuration file you are using to configure the 7960G
  3. Have you enabled TCP in FreePBX for pjsip?

SIPMAC.cnf

image_version: "P0S3-8-12-00";
user_info: "Phone";
proxy1_port:"5160"
outbound_proxy_port: "5160"
voip_control_port: "5160"
line1_name: "824";
line1_displayname: "Sunset Bedroom Beach House";
line1_shortname: "x824";
line1_authname: "824";
line1_password: "f031c18e2";
auto_answer: "0";
speed_line2_name: "*68";
speed_label2: "Wake Up";
speed_line3: "";
speed_label3: "";
speed_line4: "";
speed_label4: "";
speed_line5: "";
speed_label5: "";
speed_line6: "";
speed_label6: "";
call_hold_ringback: "0";
dnd_control: "0";
anonymous_call_block: "0";
callerid_blocking: "0";
enable_vad: "0";
semi_attended_transfer: "1";
call_waiting: "1";
cfwd_url: "";
cnf_join_enable: "1";
phone_label: "Sunset Room ";
preferred_codec: "g711ulaw";
directory_url: "http://172.16.1.16/cisco/directory.xml";

SIPDefault.cnf

# Image Version
image_version: "P0S3-8-12-00"

# Proxy Server Address
proxy1_address: "172.16.1.16"

# Proxy Server Port (default - 5060)
proxy1_port:"5060"

# Emergency Proxy info
proxy_emergency: ""
proxy_emergency_port: ""

# Backup Proxy info
proxy_backup: ""
proxy_backup_port: ""

# Outbound Proxy info
outbound_proxy: "172.16.1.16"
outbound_proxy_port: "5060"

# NAT/Firewall Traversal
nat_enable: "1"
nat_address: ""
voip_control_port: "5060"
start_media_port: "16384"
end_media_port:  "32766"
nat_received_processing: "0"

# Proxy Registration (0-disable (default), 1-enable)
proxy_register: "1"

# Phone Registration Expiration [1-3932100 sec] (Default - 3600)
# timer_register_expires: "3600"
timer_register_expires: "55"

# Codec for media stream (g711ulaw (default), g711alaw, g729)
preferred_codec: "g711ulaw"

# TOS bits in media stream [0-5] (Default - 5)
# tos_media: "5"
dscpForAudio: 184

# Enable VAD (0-disable (default), 1-enable)
enable_vad: "0"

# 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 this phone
telnet_level: "2"      ; 0-Disabled (default), 1-Enabled, 2-Privileged

# Inband DTMF Settings (0-disable, 1-enable (default))
dtmf_inband: "1"

# Out of band DTMF Settings (none-disable, avt-avt enable (default), avt_always - always avt )
dtmf_outofband: "avt"

# DTMF dB Level Settings (1-6dB down, 2-3db down, 3-nominal (default), 4-3db up, 5-6dB up)
dtmf_db_level: "3"

# SIP Timers
timer_t1: "500"                   ; Default 500 msec
timer_t2: "4000"                  ; Default 4 sec
sip_retx: "10"                     ; Default 11
sip_invite_retx: "6"               ; Default 7
timer_invite_expires: "180"        ; Default 180 sec

# Setting for Message speeddial to UOne box
messages_uri: "*97"

#Subdirectory config file location
#tftp_cfg_dir: /tftpboot/configs/sipphone
# TFTP Phone Specific Configuration File Directory
# tftp_cfg_dir: "./"

# Time Server
sntp_mode: "unicast"
sntp_server: "172.16.1.1"
time_zone: "PST"
#dst_offset: "1"
#dst_start_month: "Mar"
#dst_start_day: ""
#dst_start_day_of_week: "Sun"
#dst_start_week_of_month: "2"
#dst_start_time: "02"
#dst_stop_month: "Nov"
#dst_stop_day: ""
#dst_stop_day_of_week: "Sunday"
#dst_stop_week_of_month: "1"
#dst_stop_time: "2"
#dst_auto_adjust: "1"

# Do Not Disturb Control (0-off, 1-on, 2-off with no user control, 3-on with no user control)
dnd_control: "0"                  ; Default 0 (Do Not Disturb feature is off)

# Caller ID Blocking (0-disabled, 1-enabled, 2-disabled no user control, 3-enabled no user control)
callerid_blocking: "0"            ; Default 0 (Disable sending all calls as anonymous)

# Anonymous Call Blocking (0-disabled, 1-enabled, 2-disabled no user control, 3-enabled no user control)
anonymous_call_block: "0"         ; Default 0 (Disable blocking of anonymous calls)

# Call Waiting (0-disabled, 1-enabled, 2-disabled with no user control, 3-enabled with no user control)
call_waiting: "1"                 ; Default 1 (Call Waiting enabled)

# DTMF AVT Payload (Dynamic payload range for AVT tones - 96-127)
dtmf_avt_payload: "101"           ; Default 100

# XML file that specifies the dialplan desired
dial_template: "dialplan"

# Network Media Type (auto, full100, full10, half100, half10)
network_media_type: "auto"

#Autocompletion During Dial (0-off, 1-on [default])
autocomplete: "0"

#Time Format (0-12hr, 1-24hr [default])
time_format_24hr: "0"

#Date Format
date_format: "M/D/Y"

# URL for external Phone Services
# services_url: "http://192.168.10.10/xmlservices/index.php"

# URL for external Directory location
# directory_url: "http://192.168.10.10/xmlservices/E_book.php"

# URL for branding logo
# logo_url: "http://192.168.10.10/images/bmp/laruche.bmp"

# Remote Party ID
remote_party_id: 1              ; 0-Disabled (default), 1-Enabled

dialplan.xml

<DIALTEMPLATE>
        <TEMPLATE MATCH="8.."   Timeout="0"     User="Phone"/><!-- Internal extensions 800 to 899. Dial immediately. -->
        <TEMPLATE MATCH="\*97"  Timeout="0"/><!-- *97 for voicemail. Dial immediately. -->
        <TEMPLATE MATCH="\*98"  Timeout="0"/><!-- *97 for voicemail. Dial immediately. -->
        <TEMPLATE MATCH="*#"    Timeout="0"     REWRITE="%1"/><!-- Dial immediately after pressing #. Do not send the # sign. -->
        <TEMPLATE MATCH="503......."    Route="Default" Timeout="0"     User="Phone"/> <!-- Dial immediately after a local call -->
        <TEMPLATE MATCH="*"     Timeout="5"/> <!-- Anything else, wait 5 seconds then dial. -->
</DIALTEMPLATE>

Thanks for the tips. I compared your config to mine and found one significant difference: nat_enable. Enabling that seemed to fix the issue. I can now make calls in both directions. Great! I’ll test it some more and report results.

To my knowledge, I haven’t enabled TCP in FreePBX for pjsip. Should I? Based on the logs, the communication seems to go with UDP.

image_version: P0S3-8-12-00

There’s been 1 or 2 reports over the years from people claiming that they are seeing packet errors on these phones when using UDP but not TCP. Unfortunately, no firmware versions were supplied nor much deep diagnostics run so who can tell? Modern switches nowadays will report packet errors if they are managed switches, and you can get packet error statistics by telnetting into the phone command line and running commands, but I’ve yet to see disagnostic runs that compare, nor I have had the time myself to try running tests.