Cisco 7960 (SCCP/Skinny firmware) and Asterisk (1.4.17) using chan_sccp

| | Comments (10) | TrackBacks (0)
my_7960.jpgFinally I got my Skinny Cisco 7960 phone working with my Asterisk server at home.

I am using chan-sccp-b, and I built it:

sassandra:/home/pascal/chan_sccp-20071213 $ make
sh ./create_config.sh "/usr/include"
Now compiling .... chan_sccp.c          1855 lines
Now compiling .... sccp_actions.c       1643 lines
Now compiling .... sccp_channel.c       1155 lines
Now compiling .... sccp_device.c        927 lines
Now compiling .... sccp_line.c          117 lines
Now compiling .... sccp_utils.c         1703 lines
Now compiling .... sccp_pbx.c           1004 lines
Now compiling .... sccp_cli.c           819 lines
Now compiling .... sccp_softkeys.c      558 lines
Now compiling .... sccp_socket.c        394 lines
Now compiling .... sccp_indicate.c      329 lines
Linking chan_sccp.so

The resulting .so-File has to be copied in the asterisk modules directory (/usr/lib/asterisk/modules if you have installed asterisk in standard locations).

Insert these lines in your modules.conf (/etc/asterisk/modules.conf):

noload => chan_skinny.so
load => chan_sccp.so

A sample sccp.conf:

[general]
keepalive = 30              
context = default
dateFormat = D.M.Y            ; date format         
bindaddr = 0.0.0.0            ; interface to bind to
port = 2000                   ; port to bind to (2000 = skinny)
debug = 4
accountcode=skinny            ; recordname appearing in cdr
callwaiting_tone = 0x2d       ; turn off callwaiting tone == 0
language=en
echocancel = on
silencesuppression = off
cfwdall = on                  ; turn on call forward button
cfwdbusy = on                 ; turn on call forward when busy button
dnd = on                      ; turn on "do not disturb"
mwioncall = on                ; lit message waiting light when new messages are
                              ; in voicemailbox
digittimeoutchat = #          ; type hash to stop dialing timeout
disallow = all
allow = alaw
allow = ulaw                  ; european isdn is alaw, so i use alaw as first preference

[devices]
type        = 7960            ; my phone is a 7960
description = Pascal          ; name appearing in the upper right
tzoffset    = 0
autologin   = *1,*6           ; we have exten *1 and *6
speeddial   = 1234567890,Important Number 1
speeddial   = 0987654321,Important Number 2
speeddial   = 0015552522631,Fake Number
speeddial   = 0310,Test
device => SEP000CCE3A88CA     ; This is the device Name (SEP+Mac)

[lines]
id            = *1            ; Extension
label         = 3614217       ; label on line button
description   = Pascal       
context       = default       ; incoming call context
callwaiting   = 1
incominglimit = 3             ; max 3 incoming calls
mailbox       = 1@default     ; corresponding voicemail box
vmnum         = *9            ; extension to dial to access VoiceMailMain()
cid_name      = Pascal Gienger
cid_num       = *1
line => *1

id            = *6
label         = 584298
description   = Pascal
context       = default
callwaiting   = 1
incominglimit = 3
cid_name      = Pascal Gienger
cid_num       = *6
line => *6

Extensions *1 and *6 are listed as line buttons on my 7960 screen, the second arguments of the speeddial-Commands are Strings which are displayed on the 7960's screen. If you omit them, the numbers will be shown.

In your dhcp server setting for the phone, don't forget to define option 150 (I am using ISC dhcp):

option cisco-tftp code 150 = array of ip-address;

subnet 192.168.100.0 netmask 255.255.255.0 {
        range 192.168.100.128 192.168.100.200;
        default-lease-time 86400;
        max-lease-time 172800;
        option domain-name-servers 192.168.100.2;
        option routers 192.168.100.1;
}


Then you may define the phone entry:

host phone1 {
        hardware ethernet 00:0c:ce:3a:88:ca;
        fixed-address 192.168.100.100;
        option cisco-tftp 192.168.100.2;
}

In my configuration on the asterisk host (192.168.100.2) a tftp server is running and there the phone should at least find 1 file:

  • SEPxxxxxxxxxxxx.cnf.xml (xxxxxxxxxxxx = MAC of your phone, uppercase!)
You do NOT need an "XMLDefaults.cnf.xml"-File unless you want to include also unknown devices (without a proper SEPxxxx-File)!

My SEP-file has the name SEP000CCE3A88CA.cnf.xml and looks like this:

<device>
 <devicePool>
  <callManagerGroup>
   <members>
    <member  priority="0">
     <callManager>
      <ports>
       <ethernetPhonePort>2000</ethernetPhonePort>
      </ports>
      <processNodeName>192.168.100.2</processNodeName>
     </callManager>
    </member>
   </members>
  </callManagerGroup>
 </devicePool>
 <versionStamp>{Jan 28 2008 19:01:00}</versionStamp>
 <loadInformation></loadInformation>
 <userLocale>
  <name>French_France</name>
  <langCode>de</langCode>
 </userLocale>
 <networkLocale>United_Kingdom</networkLocale>
 <idleTimeout>0</idleTimeout>
 <authenticationURL></authenticationURL>
 <directoryURL></directoryURL>
 <idleURL></idleURL>
 <informationURL></informationURL>
 <messagesURL></messagesURL>
 <proxyServerURL></proxyServerURL>
 <servicesURL></servicesURL>
</device>

The most important part are the lines

      <processNodeName>192.168.100.2</processNodeName>

and

       <ethernetPhonePort>2000</ethernetPhonePort>

as they define the address and port of your Asterisk server!
I wanted my phone to display all messages in french but my dialtone like in the united kingdom (i like that sound). I copied the needed messages from a cisco call manager to my tftp server. Due to copyright issues I can't post them here.

To make your phone reload any changes you made in this file you have to set up

 <versionStamp>{Jan 28 2008 19:01:00}</versionStamp>

as the phone compares this date to know that you want the configuration to be updated.

Even if your phone does not find  these files, it will still work - using the locale ist loaded the last time successfully - on new phones this will be English/United States.


After these steps the 7960 works in my asterisk environments. I can call out on ISDN and SIP lines and still have an SCCP (Skinny) phone on the desk.

The Dial() device parameter in extensions.conf  is "SCCP", so you may write:

exten => *1,Dial(SCCP/*1)

or

exten => 3614217,Dial(SCCP/*1)

to map an external ISDN number (in my case) to the local line *1 on the Cisco phone.



0 TrackBacks

Listed below are links to blogs that reference this entry: Cisco 7960 (SCCP/Skinny firmware) and Asterisk (1.4.17) using chan_sccp.

TrackBack URL for this entry: http://southbrain.com/mt/mt-tb.cgi/3

10 Comments

Hi Pascal - Thanks for putting this page up. Can I ask you what version of firmware you have on your phone? I've got a 7940 that I'm won't register with my Asterisk box. It just says "Opening " and then reboots and says the same thing.

Any help you could provide would be appreciated!
Cheers!

Look at the logfile of your tftp server to see which files it is requesting. Try to do a telnet to port 2000 of your asterisk box to see if there is the sccp module (chan_sccp) listening.

I tried to do exactly what you showed but it fails finding the include directory, am I missing something that you had? do I need the asterisk source installed?

Yes, indeed you need the include files. Normally they are located in /usr/include/asterisk.
If you installed a "out of the box" installation, you might search for a "asterisk-devel" package coming with your distribution to install.

It is defined in the Makefile of chan_sccp:

INSTALL_PREFIX=
ASTERISK_HEADER_DIR=$(INSTALL_PREFIX)/usr/include

hi i need help setting up two cisco 7960 phones on an Asterisks pbx. I have installed the asterisks software in a pc and routed it to a switch from which i have now connected a windows based pc to have access to the pbx. However, when i connect the ip phones and try all type of config i have problems. Also i am very very new to Asterisks, Linux and ip phones. plz help

Hi,

Thank you for this post, It's really instructive.

could you please, tell us which files did you copy from the call manager ?

I do have CCM 5.1.1, I just want the french messages, can't find them :(

Thank you anyway,
Zydoon.

I got my phones up and running with SCCP thanks to this page.

However i would really like to get the locales up and running too.
I have access to the Cisco downloads, but what does the folders look like? The install packages are for CCM...

Are you able to help me with this?

Thanks,
Bjarte

Search for the internationalization packs on Cisco downloads, you have to have a valid cisco account with support contract in order for that to work. I used the CCM files of 2006 (version 5). When you unzip the file, you'll get a directory for each international locale.

Thanks for the tutorial. However, I am stuck trying to compile the chan_sccp drivers.

Are you available via some sort of chat client to help?

Thanks!

Hi I successfully compiled the driver and moved it to the modules folder. I edited the modules.conf to noload => chan_skinny.so and load => chan_sccp.so

But when I do an amportal restart, I get the following error. Note that this error does not occur if I say noload => chan_sccp.so

Please let me know where I am going wrong with this install.

/usr/sbin/safe_asterisk: line 146: 22053 Segmentation fault (core dumped) nice -n $PRIORITY ${ASTSBINDIR}/asterisk -f ${CLIARGS} ${ASTARGS} >&/dev/${TTY} Asterisk ended with exit status 139
Asterisk exited on signal EXITSTATUS-128.
Automatically restarting Asterisk.
mpg123: no process killed
/usr/sbin/safe_asterisk: line 146: 22081 Segmentation fault (core dumped) nice -n $PRIORITY ${ASTSBINDIR}/asterisk -f ${CLIARGS} ${ASTARGS} >&/dev/${TTY} Asterisk ended with exit status 139
Asterisk exited on signal EXITSTATUS-128.
Automatically restarting Asterisk.
mpg123: no process killed

-----------------------------------------------------
Asterisk could not start!
Use 'tail /var/log/asterisk/full' to find out why.

Leave a comment

July 2012

Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

About

This blog is owned by:

Pascal Gienger
Jägerstrasse 77
8406 Winterthur
Switzerland


Google+: Profile
YouTube Channel: pascalgienger