Cisco 7937 Conference Station work with Asterisk

A little more googling gave me this

https://github.com/Omid-Mohajerani/SCCP-Asterisk/wiki/Registering-Cisco-Conference-Phone-7937-in-Asterisk-using-Chan-SCCP.

Don’t worry about those - they are just support files and their absence will not keep the phone from working correctly.

If I think of it tonight, I’ll post my ringlist.xml file. All it does is allow you to specify the ringtone for each line button (I use it to get the ring tone from the TV show ‘24’ onto my second lines).

Thanks arielgrin and cunjut for you support. Really appreciate your help guys.

now It’s asking for these files.

tftp: 21 RRQ “RingList.xml”
tftp: 32 RRQ “SEP0004F2F2664A.cnf.xml”

I have placed both the files in the /tftpboot directory however RingList.xml is empty but in SEP0004F2F2664A.cnf.xml my configurations are under below:

<?xml version="1.0" encoding="UTF-8"?>
<device>
  <fullConfig>true</fullConfig>
  <deviceProtocol>SCCP</deviceProtocol>
  <sshUserId>cisco</sshUserId>
  <sshPassword>cisco<sshPassword/>
  <ipAddressMode>2</ipAddressMode>
  <allowAutoConfig>true</allowAutoConfig>
  <ipPreferenceModeControl>1</ipPreferenceModeControl>
  <tzdata>
    <tzolsonversion>2012c</tzolsonversion>
    <tzupdater>tzupdater.jar</tzupdater>
  </tzdata>
  <mlppDomainId>000000</mlppDomainId>
  <mlppIndicationStatus>Off</mlppIndicationStatus>
  <preemption>Disabled</preemption>
  <executiveOverridePreemptable>false</executiveOverridePreemptable>
  <devicePool>
    <revertPriority>0</revertPriority>
    <name>Default</name>
    <dateTimeSetting>
      <name>CMLocal</name>
      <dateTemplate>M/D/Y</dateTemplate>
      <timeZone>Greenwich Standard Time</timeZone>
      <olsonTimeZone>Etc/GMT</olsonTimeZone>
    </dateTimeSetting>
    <callManagerGroup>
      <name>Default</name>
      <tftpDefault>true</tftpDefault>
      <members>
        <member priority="0">
          <callManager>
            <name>172.16.10.27</name>
            <ipv6Addr/>
            <description>172.16.10.27</description>
            <ports>
              <ethernetPhonePort>2000</ethernetPhonePort>
              <sipPort>5060</sipPort>
              <securedSipPort>5061</securedSipPort>
              <mgcpPorts>
                <listen>2427</listen>
                <keepAlive>2428</keepAlive>
              </mgcpPorts>
            </ports>
            <processNodeName>172.16.10.27</processNodeName>
          </callManager>
        </member>
      </members>
    </callManagerGroup>
    <srstInfo uuid="{cd241e11-4a58-4d3d-9661-f06c912a18a3}">
      <name>Disable</name>
      <srstOption>Disable</srstOption>
      <userModifiable>false</userModifiable>
      <ipAddr1/>
      <port1>2000</port1>
      <ipAddr2/>
      <port2>2000</port2>
      <ipAddr3/>
      <port3>2000</port3>
      <sipIpAddr1/>
      <sipPort1>5060</sipPort1>
      <sipIpAddr2/>
      <sipPort2>5060</sipPort2>
      <sipIpAddr3/>
      <sipPort3>5060</sipPort3>
      <isSecure>false</isSecure>
    </srstInfo>
    <connectionMonitorDuration>120</connectionMonitorDuration>
  </devicePool>
  <commonProfile>
    <phonePassword/>
    <backgroundImageAccess>true</backgroundImageAccess>
    <callLogBlfEnabled>3</callLogBlfEnabled>
  </commonProfile>
  <loadInformation>apps37sccp.1-4-4-0</loadInformation>
  <vendorConfig>
    <garp>0</garp>
    <voiceVlanAccess>0</voiceVlanAccess>
    <sshAccess>1</sshAccess>
    <lldpAssetId/>
    <voiceQualityControl>0</voiceQualityControl>
  </vendorConfig>
  <versionStamp>1396020461-83a09e65-e62e-4db3-9e03-e3d0cdfd7093</versionStamp>
  <userLocale>
    <name>English_United_States</name>
    <uid>1</uid>
    <langCode>en_US</langCode>
    <version>9.0.0.0(1)</version>
    <winCharSet>iso-8859-1</winCharSet>
  </userLocale>
  <networkLocale>United_States</networkLocale>
  <networkLocaleInfo>
    <name>United_States</name>
    <uid>64</uid>
    <version>9.0.0.0(1)</version>
  </networkLocaleInfo>
  <idleTimeout>0</idleTimeout>
  <authenticationURL>http://172.16.10.27:8080/ccmcip/authenticate.jsp</authenticationURL>
  <directoryURL>http://172.16.10.27:8080/ccmcip/xmldirectory.jsp</directoryURL>
  <idleURL/>
  <informationURL>http://172.16.10.27:8080/ccmcip/GetTelecasterHelpText.jsp</informationURL>
  <messagesURL/>
  <proxyServerURL/>
  <servicesURL>http://172.16.10.27:8080/ccmcip/getservicesmenu.jsp</servicesURL>
  <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
  <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
  <dscpForCm2Dvce>96</dscpForCm2Dvce>
  <transportLayerProtocol>1</transportLayerProtocol>
  <dndCallAlert>5</dndCallAlert>
  <phonePersonalization>1</phonePersonalization>
  <rollover>0</rollover>
  <singleButtonBarge>0</singleButtonBarge>
  <joinAcrossLines>0</joinAcrossLines>
  <autoCallPickupEnable>false</autoCallPickupEnable>
  <blfAudibleAlertSettingOfIdleStation>0</blfAudibleAlertSettingOfIdleStation>
  <blfAudibleAlertSettingOfBusyStation>0</blfAudibleAlertSettingOfBusyStation>
  <capfAuthMode>0</capfAuthMode>
  <capfList>
    <capf>
      <phonePort>3804</phonePort>
      <processNodeName>asterisk</processNodeName>
      <ipv6Addr/>
    </capf>
  </capfList>
  <certHash/>
  <encrConfig>false</encrConfig>
  <advertiseG722Codec>1</advertiseG722Codec>
  <mobility>
    <handoffdn/>
    <dtmfdn/>
    <ivrdn/>
    <dtmfHoldCode>*81</dtmfHoldCode>
    <dtmfExclusiveHoldCode>*82</dtmfExclusiveHoldCode>
    <dtmfResumeCode>*83</dtmfResumeCode>
    <dtmfTxfCode>*84</dtmfTxfCode>
    <dtmfCnfCode>*85</dtmfCnfCode>
  </mobility>
  <userId/>
  <phoneServices>
    <provisioning>2</provisioning>
    <phoneService type="1" category="0">
      <name>Missed Calls</name>
      <url>Application:Cisco/MissedCalls</url>
      <vendor/>
      <version/>
    </phoneService>
    <phoneService type="2" category="0">
      <name>Voicemail</name>
      <url>Application:Cisco/Voicemail</url>
      <vendor/>
      <version/>
    </phoneService>
    <phoneService type="1" category="0">
      <name>Received Calls</name>
      <url>Application:Cisco/ReceivedCalls</url>
      <vendor/>
      <version/>
    </phoneService>
    <phoneService type="1" category="0">
      <name>Placed Calls</name>
      <url>Application:Cisco/PlacedCalls</url>
      <vendor/>
      <version/>
    </phoneService>
    <phoneService type="1" category="0">
      <name>Personal Directory</name>
      <url>Application:Cisco/PersonalDirectory</url>
      <vendor/>
      <version/>
    </phoneService>
    <phoneService type="1" category="0">
      <name>Corporate Directory</name>
      <url>Application:Cisco/CorporateDirectory</url>
      <vendor/>
      <version/>
    </phoneService>
  </phoneServices>
</device>

Is there anything to change or I am doing anything wrong… now phone only gives registering message on the screen.

my question is how this channel works.

  1. we define sccp.conf
  2. we define sccp_extensions.conf
    3.we define sccp_hardware.conf
  3. /tftpboot xml files

that’s it.

How phone take extension and hardware settings from the sccp channel.
Like in SIP we have one file sip(MAC).cnf from where phone gets the configuration information.

Also I can see only 1 table in asterisk database which is asterisk.sccpdevmodel there is no sccp device, sccpline

This one is closer to I’m used to using:

<Default>
<callManagerGroup>
<members>
<member priority=“0”>
<callManager>
<ports>
<ethernetPhonePort>2000
</ports>
<processNodeName>172.16.10.27</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
<loadInformation348 model=“Cisco 7931”>SCCP31.8-3-1S</loadInformation348>
<loadInformation9 model=“Cisco 7935”>P00503021600</loadInformation9>
<loadInformation431 model=“Cisco 7937”></loadInformation431>
<authenticationURL></authenticationURL>
<directoryURL></directoryURL>
<idleURL></idleURL>
<informationURL></informationURL>
<messagesURL></messagesURL>
<servicesURL></servicesURL>
</Default>

should there be any firmware bin file on the server like
apps37sccp.1-4-5-7.bin

I downloaded this from cisco’s website

ok let me try these settings and will update you

Yes. That’s really all there is to it.

Check something first: log into the console and use ‘asterisk -vr’ to connect to the Asterisk server.
From the prompt, type “sccp ”

You should get a list of sub-commands. If you don’t, your sccp module isn’t loaded.

Once you get the module loaded, try “sccp show devices”.

This will list all of the SCCP devices in your configuration. The SEPmac name of your phone should show up there. If it doesn’t, there’s a problem with your configuration file.

Once you get the devices working, try “sccp show lines”.

THis will list all of the SCCP lines you have defined. Make sure your extensions are the same as your line numbers. If you created the extensions correctly, they will connect to these lines through their “dial string” of “SCCP/xxx” where ext is both the extension number and the line number. Note that the line and extension don’t have to be the same, but don’t try to get slick at this point. Make them the same for now - it’s less confusing.

If you have the devices and lines set up correctly, check the FreePBX firewall and make sure that port 2000 is open to the trusted (local) network.

In SCCP, we have a single file defines the class of phones. All of the SCCP phones in the system can use the same SEPMAC.cnf.xml (or SEPDEFAULT.cnf.xml) file. All of the phone’s configuration comes from the server. It is all passed down to the phone “on the fly”, which makes it easier to manage the phones from the central server.

Think of this structure as a sort of “EPM for SCCP”. Instead of passing a whole bunch of different files that all need to be coordinated and managed outside the system, the sccp*conf files do that for you from the server.

here is the asterisk cli sccp.

Do I also have to create extension from the GUI like extension custom extensions.

Sure. You can put the version number in the loadInformation431 line (apps37sccp.1-4-5-7 should work).

Your device entry isn’t getting picked up. Make sure the name of the file on the #include line in sccp.conf is the same as the file your device is in in the /etc/asterisk directory.

With this small an installation (basically one phone), you should probably combine all three files into your sccp.conf file and skip the includes.

That was probably one of the clearest parts of the Wiki I spent dozens of hour writing…

You need to define your lines in the “lines” config (either built into the sccp.conf file or in the sccp_lines.conf file). This line is the one you enter for the extensions you create using the Custom Dial string (SCCP/<extension>)

You are right there was #include link missing

These are the total sccp files: sccp.conf sccp_extensions.conf sccp_hardware.conf
in sccp.conf I set this
#include sccp_extensions.conf
#include sccp_hardware.conf

and in asterisk -vr I am getting this

but this Mac is not what I am trying to register.

also in the GUI I am getting this.

Do you still think I need to create custom extension or go with sccp extension.

It’s the one you put in the file.

I don’t know - try it and see what happens. I’m gonna guess that you will end up with a custom extension, but this might work.

I changed the MAC in the sccp_hardware.conf

and this is the config of sccp_hardware.conf

[SEP0004F2F2664A]
description = Cisco IP Conference Phone
devicetype = 7937
park = off
button = speeddial,Helpdesk, 1133                               ; Add SpeedDial to Helpdesk (without hint)
button = line, 1133
button= feature,Private Call,privacy,callpresent                ;set channel variable SKINNY_PRIVATE to 1 if feature is enabled
button= feature,DND Busy,DND,busy                               ;set dnd status to busy
button= feature,DND Silent,DND,silent                           ;set dnd status to silent
button= feature,Record calls,monitor                            ;record calls using automon (asterisk >= 1.6 only)
button= feature,call forward to *54,cfwdAll,*54                 ;forward all calls to *54
button = speeddial,Phone 1 Line 1, 1133, 1122@hints
button = speeddial,Phone 1 Line 2, 1133, 1122@hints

type = device
keepalive = 60
tzoffset = +2
transfer = on
park = on
cfwdall = off
cfwdbusy = off
cfwdnoanswer = off
directed_pickup = on
directed_pickup_context = from-internal
directed_pickup_modeanswer = on
imageversion = apps37sccp.1-4-5-7
deny=0.0.0.0/0.0.0.0
permit=172.16.0.0/255.255.255.0
dnd = reject
nat=auto
directrtp=off
earlyrtp = progress
private = on
mwilamp = on
mwioncall = off
setvar=testvar=value
cfwdall = on
cfwdbusy=on
cfwdnoanswer=on

And I created a custom Extension.

here is the sccp_extensions.conf

[1133]
id = 1133
type = line
label = Conf 4th Floor
description = Conf 4th Floor
mailbox = 1133
cid_name = Conf 4th Floor
cid_num = 1133
accountcode=1133
callgroup=1
pickupgroup=1
context = from-internal
incominglimit = 2
transfer = on
vmnum = *97
trnsfvm = 1133
secondary_dialtone_digits = 9
secondary_dialtone_tone = 0x22
musicclass=default
language=en
echocancel = on
silencesuppression = off

the phone still asks for
21 RRQ “RingList.xml” octet
32 RRQ “SEP0004F2F2664A.cnf.xml” octet

and stuck in the registering

Ignore that. It isn’t any more important than the other times I told you to ignore it.

Do you have the SysAdmin module?
Did you turn TFTP on? By default, it’s off because it’s not particularly secure.
Is the file spelled EXACTLY like that in the /tftpboot directory?
Is the file owned by ‘asterisk’ (or maybe “_asterisk”)?
Are the permissions on the file “rw-rw-rw-”?
Did you open the TFTP port on the Integrated firewall?

Note that this is all straight TFTP stuff. It’s not particularly SCCP or FreePBX stuff.

Yes I have the system Admin module but not sys admin pro module.
TFTP status:
netstat -an | grep 69

>     tcp        0      0 ::ffff:172.16.10.27:80      ::ffff:172.16.10.210:18769  TIME_WAIT   
>     udp        0      0 0.0.0.0:69                  0.0.0.0:*                               
>     udp        0      0 0.0.0.0:69                  0.0.0.0:*                               
>     udp        0      0 0.0.0.0:4569                0.0.0.0:*                               
>     unix  2      [ ACC ]     STREAM     LISTENING     139169656 /var/run/fail2ban/fail2ban.sock
>     unix  2      [ ]         STREAM     CONNECTED     139979069 
>     unix  2      [ ]         DGRAM                    139869638 
>     unix  3      [ ]         STREAM     CONNECTED     10969  

yes it spells tftpboot and directory is /tftpboot
file is own by root
-rw-r–r-- 1 root root 634 Mar 22 12:24 SEP0004F2F2664A.cnf.xml
TFTP port is open

permissions are now granted as asterisk

-rw-r–r-- 1 asterisk asterisk 634 Mar 22 12:24 SEP0004F2F2664A.cnf.xml
-rw-r–r-- 1 asterisk asterisk 0 Mar 22 11:47 RingList.xml

restarted the services and phone is still in registering state

here are the complete request and responses from the phone and the server

15:09:48.939302 ARP, Request who-has 172.16.23.250 tell 0.0.0.0, length 46
15:09:50.098826 ARP, Request who-has cmd-voip03.curemd.com tell 172.16.23.250, length 46
15:09:50.098845 ARP, Reply cmd-voip03.curemd.com is-at 00:15:5d:0a:9f:02 (oui Unknown), length 28
15:09:50.099094 IP 172.16.23.250.49834 > cmd-voip03.curemd.com.tftp:  21 RRQ "RingList.xml" octet
15:09:50.100050 IP cmd-voip03.curemd.com.38732 > 172.16.23.250.49834: UDP, length 4
15:09:50.103841 IP 172.16.23.250.49834 > cmd-voip03.curemd.com.38732: UDP, length 4
15:09:50.114770 IP 172.16.23.250.49321 > cmd-voip03.curemd.com.tftp:  32 RRQ "SEP0004F2F2664A.cnf.xml" octet
15:09:50.115478 IP cmd-voip03.curemd.com.35276 > 172.16.23.250.49321: UDP, length 516
15:09:50.116576 IP 172.16.23.250.49321 > cmd-voip03.curemd.com.35276: UDP, length 4
15:09:50.116645 IP cmd-voip03.curemd.com.35276 > 172.16.23.250.49321: UDP, length 126
15:09:50.117159 IP 172.16.23.250.49321 > cmd-voip03.curemd.com.35276: UDP, length 4
15:09:50.132407 IP 172.16.23.250.49697 > cmd-voip03.curemd.com.sieve-filter: Flags [S], seq 6540955, win 8192, options [mss 1456], length 0
15:09:50.132436 IP cmd-voip03.curemd.com.sieve-filter > 172.16.23.250.49697: Flags [S.], seq 1056395801, ack 6540956, win 2920, options [mss 1460], length 0
15:09:50.132845 IP 172.16.23.250.49697 > cmd-voip03.curemd.com.sieve-filter: Flags [.], ack 1, win 8192, length 0
15:09:50.132980 IP cmd-voip03.curemd.com.sieve-filter > 172.16.23.250.49697: Flags [F.], seq 1, ack 1, win 2920, length 0
15:09:50.133256 IP 172.16.23.250.49697 > cmd-voip03.curemd.com.sieve-filter: Flags [.], ack 2, win 8192, length 0
15:09:50.146818 IP 172.16.23.250.49697 > cmd-voip03.curemd.com.sieve-filter: Flags [P.], seq 1:105, ack 2, win 8192, length 104
15:09:50.146839 IP cmd-voip03.curemd.com.sieve-filter > 172.16.23.250.49697: Flags [R], seq 1056395803, win 0, length 0

From the console, do the following:

  1. Delete that RingList.xml file. You can get along without it.
  2. From the command prompt (logged in as ‘root’) run ‘xmllint /tftpboot/SEP0004F2F2664A.cnf.xml’

If there are any XML errors in your config file, the phone will just lock itself up like that. If you don’t have xmllint installed, you can get it with ‘yum install xmllint’.

In the Integrated Firewall, have you opened port 2000? That’s the port the phone needs to connect. You can tell if the phone is trying to register by connecting to ‘asterisk -vr’ and running an 'sccp show devices" command. While you’re in there, name sure your line definition is correct (‘sccp show lines’).