Hi Mathis,
Here’s what you need to do. First, you can only use the SCCP firmware with a specially modified version of FreePBX. You would need to build Asterisk with the chan_sccp driver and then load FreePBX on that - and then there is an older SCCP endpoint/config manager that runs under php 7 that you can bolt on to FreePBX. People have got it working on FreePBX 16 but no word on FreePBX 17. I’ve been tying with the idea of porting it to php 8 but frankly, even if you got all of that running, your PBX is going to have to transcode audio from SCCP to SIP to use the phone to actually make calls. I don’t recommend that approach.
The other approach is to flash the phone over to SIP firmware. Then you run it with a stock FreePBX 17 system using chan_pjsip. There are many places that have the SIP firmware for this phone here is one:
The phone is provisioned via TFTP server and 2 cnf files. Here is an example from my FreePBX system which I have several of these phones. You acually don’t need to go through a separate flashing step all you need to do is define the firmware in the image_version line. The SIP filename is the MAC address of the phone it is different for each phone. The default filename is the same for all phones
root@mail:/tftpboot # cat SIPDefault.cnf
# Image Version
image_version: "P0S3-8-12-00"
# Proxy Server Address
proxy1_address: "172.16.1.160"
# 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.160"
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.100.150"
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-disbaled, 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: "1"
#Time Format (0-12hr, 1-24hr [default])
time_format_24hr: "1"
#Date Format
date_format: "D/M/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
root@mail:/tftpboot #
root@mail:/tftpboot # cat SIP001F9E251268.cnf
image_version: "P0S3-8-12-00";
user_info: "phone";
line1_name: "825";
line1_displayname: "Shop House";
line1_shortname: "Shop";
line1_authname: "825";
line1_password: "f30d4dec02";
line2_name: "";
line2_displayname: "";
line2_shortname: "";
line2_authname: "UNPROVISIONED";
line2_password: "UNPROVISIONED";
auto_answer: "0";
speed_line1: "";
speed_label1: "";
speed_line2: "";
speed_label2: "";
speed_line3: "";
speed_label3: "";
speed_line4: "";
speed_label4: "";
speed_line5: "";
speed_label5: "";
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: "Shop x825 ";
preferred_codec: "g711ulaw";
root@mail:/tftpboot #
There are a couple other things.
The phone firmare is somewhat buggy there are 3 things that are critical to get it working:
- First the SIPDefault.cnf MUST have NAT turned on or the phone can make outbound calls but not receive them,
see:
https://www.reddit.com/r/Cisco/comments/4phy3t/cisco_7940_registers_but_then_goes_unavailable/
(Note the next thing may be fixed in Asterisk 21)
2) Second if using pjsip you must SSH/Telnet into FreePBX and at the command line /etc/asterisk you must add an entry for each extension in pjsip.endpoint_custom_post.conf as such:
[233](+)
force_rport=no
see
Note there is a bug where this file might not be read:
-
You cannot use a password longer than 8 characters:
Cisco 7940 with free pbx - #4 by franckdanard -
You also need to define a dialplan.xml or at least touch dialplan.xml in the TFTP directory or the phone will show an error under status
-
You must configure chan_pjzip in FreePBX to support both UDP and TCP since the phones only work reliably with TCP
Anyway, have fun with it. I’m always amazed at the staying power of these phones but the simple fact of it is that there were an enormous number of these sold 20 odd years ago coupled with Cisco UCM’s and that was back in the days when Cisco built stuff to last like tanks and did not SmartLicense their on-prem phones and many of the Fortune 1000 (like for example, Kroger) bought them. Just now some of them are discarding these systems so the used market is awash with these phones very cheap. The phones have a large screen on them so having a usable directory is a reality. Their only problem is that they do tend to use a large amount of electrical power so if you are going to run large numbers off PoE you need to watch your power budget.