Tag Archives: Cisco

Cisco’s Mobile Connect is useful; worth the two license units

Recently I decided to explore Cisco Unified Communication Manager’s Mobile Connect feature. This used to be called Single Number Reach and is exactly what you would expect: one number rings multiple phones–your VoIP set and an off-system number. It is straightforward to set up; follow this helpful guide on the Cisco Learning Network.

The nice thing about Mobile Connect is that it isn’t simply a multi-ring scheme; rather, it’s effectively a shared line appearance with your cell phone or other remote number. Communications Manager maintains supervision of the line, even if you take the call on your remote line (mobile phone), which allows you to easily switch between the remote and the desk phone. I believe, though I have not tested it, that this configuration would also allow the Mobile Connect line to participate in a hunt group.

In CUCM 7.x, you can configure an on-hook screen Mobility softkey to enable or disable Mobile Connect. This way, it does not have to be an always-on feature.

Enabling a Mobile Connect number consumes two additional device license units (DLUs) if you are licensing devices a la carte. The functionality is very nice and probably worth the licensing cost for those who want to use it.

Command-line mailbox downloader for Cisco Unity Connection

Starting in version 8 of Cisco Unity Connection, it is simple to write scripts to manipulate various aspects of Unity Connection, including user attributes (password/PIN, for example), messages, call handlers, and more, thanks to a new REST API. There are interfaces to both administrative and end-user functions. And not only scripts, but custom web portals or other web integrations. No SOAP and AXL required!

See Cisco’s DocWiki for the details: http://docwiki.cisco.com/wiki/Cisco_Unity_Connection_APIs
And read the rest of this entry for a simple PHP script that connects to a user’s mailbox, dumps all the contents to a local folder, writes out a table of contents and gzips the whole thing up.
#!/usr/bin/php <?php if ($argc !== 3) {   fwrite(STDERR, "Usage: n");   fwrite(STDERR, "  php $argv[0] <mailbox> <password>n");   exit(1); } /* Web connection setup */ $baseURL = "https://YOUR-UCONN-SERVER-HERE:8443"; $auth = base64_encode("$argv[1]:$argv[2]"); $opts = array( 'http' => array ('method' => 'GET',                                 'timeout' => 4,                                 'header' => "Authorization: Basic $auth"),                'ssl' =>  array ('allow_self_signed' => TRUE)              ); $context = stream_context_create($opts); /* Get the user's folders list and counts */ $foldersURL = "$baseURL/vmrest/mailbox/folders"; if (!($result = file_get_contents($foldersURL, false, $context))) {   fwrite(STDERR, "Could not connect to Unity Connection for mailbox folders list.n");   exit(1); } $folders = simplexml_load_string($result); /* Now get contents of each mailbox that has messages */ $currtime = datestring(time()); $outputdir = $argv[1] . "_$currtime"; if (!mkdir($outputdir)) {   fwrite(STDERR, "Couldn't create directory $outputdirn");   exit(1); } $INDEX = fopen("$outputdir/index.txt", 'w'); $mainheader = "Mailbox of $argv[1] downloaded at $currtime"; fwrite($INDEX, "$mainheadern" . sprintf("%'=" . strlen($mainheader) . "snn", "")); foreach ($folders as $folder) {   if ($folder->MessageCount > 0) {     $folderheader = "Folder: $folder->DisplayName";     fwrite($INDEX, "$folderheadern" . sprintf("%'-" . strlen($folderheader) . "snn", ""));     $messagedir = $outputdir . "/" . $folder->DisplayName;     mkdir($messagedir);     $result = file_get_contents($baseURL . $folder->URI . "/messages", false, $context);     $xml = simplexml_load_string($result);     $counter = 1;     foreach ($xml->Message as $message) {       fwrite($INDEX, "$counter. Message from ". ($message->CallerId->CallerName == ""?"(no name listed)":$message->CallerId->CallerName));       fwrite($INDEX, " at " . ($message->CallerId->CallerNumber == ""?"(no number listed)":$message->CallerId->CallerNumber));       fwrite($INDEX, "n");       fwrite($INDEX, "Listened: " . $message->Read . "n");       fwrite($INDEX, "Length: " . $message->Duration/1000 . " secondsn");       fwrite($INDEX, "Timestamp:" . datestring($message->ArrivalTime/1000) . "n");       fwrite($INDEX, "Filename: ");       $filename = datestring($message->ArrivalTime/1000) . "_from_" . $message->CallerId->CallerNumber . ".wav";       fwrite($INDEX, "$filenamenn");       $innerResult = file_get_contents($baseURL . $message->URI, false, $context);       $messageContainer = simplexml_load_string($innerResult);       $audio = file_get_contents($baseURL . $messageContainer->Attachments->Attachment->URI, false, $context);       if (!file_put_contents("$messagedir/$filename", $audio, LOCK_EX))         fwrite(STDERR, "Error writing audio to file: $filenamen");       $counter++;     }     fwrite($INDEX, "n");   } } fclose($INDEX); $tarresult = system("tar czf $outputdir.tar.gz $outputdir"); if ($tarresult !== FALSE) {   system("rm -rf $outputdir"); } else {   fwrite(STDERR, "Unable to create tar.gz file, but the folder is still there.n"); } fwrite(STDERR, "Mailbox dump completed successfully.n"); exit(0); function datestring ($unixtime) {   return date('Y-m-d_H-i-s', $unixtime); } ?>

What may drive opening the Unity Connection web interface

At this week’s meeting of the PSU VoIP tech folks, we had a short review of the Unity Connection upgrade from a couple weeks ago and discussed getting to the next version, 8.x, where we will have the ability (though not the scripting and configuration, yet) to open the web interface to end users.

I think the primary feature of interest to end users on the web interface will be the visual voicemail, called Unity Connection Inbox. But what may drive getting the web interface up and running, at first, will be the ability for end users to change their own PIN.

Very roughly speaking, from some stats I received a few weeks ago, our NOC gets about 1,000 voicemail PIN resets a year. They account for 18% of all voice-related tickets and 11,000 minutes of staff time.

With the web interface, voicemail users could log in with other credentials they know and use daily–their single sign-on access accounts–and reset their voicemail PIN. The concept is simple but the implementation, at least in our environment, may not be.

Cisco Virtualized Unified Communications

Cisco now offers VMware ESXi as a platform for many of their Unified Communications products, including Communications Manager, Unity and Unity Connection, and Contact Center.

I attended Cisco’s TechTV webinar today to learn about it. Great stuff. As you can guess, there’s a catch–it runs on their own server offering, only. It makes sense. Cisco has always prescribed the hardware in order to ensure the environment is right for enterprise voice-over-IP. That is still the case. But the big deal here is that you can now get TAC-supported, VMware-platform Unified Communications products and the benefits of virtualization–more servers on less hardware, easier backups, management through vSphere tools, speedy deployment, and so on.

Will the VMware offering be restricted to Cisco server hardware forever? My guess is, probably not. But the environment would still need to be well-controlled, with strict hardware specifications and not loading other (non-Cisco) VMs into the environment.

Voicemail, standardized

One of the technical details of last weekend’s move from Unity to Unity Connection 7.1 is that the integration with Call Manager is no longer through CTI ports (Skinny protocol) but through a SIP trunk. This was a design choice; CTI connectivity is still available.

There is a bit of a move at PSU University Park to get Call Manager out of the center of the voice network. That is to say, Call Manager doesn’t need to be the core entity to which everything connects. As the “SIP Core” is planned out and the pieces designed, we are able to see how some generic SIP routing devices can be the glue to hold together SIP-connected components: PBXes from the whole Penn State system, including the Call Manager cluster at University Park; Unity Connection; trunking providers and PSTN gateways; standalone analog gateways; adjunct applications like Contact Center; video conferencing over SIP; and more.

Unity Connection is now directly connected to Call Manager via SIP trunk, but can easily be attached to a SIP core in the future, where it could also provide voicemail services outside of the Call Manager domain. My opinion is that this is a really good thing, because Unity Connection is a high-quality voicemail system. (Compare to Asterisk’s “Comedian Mail.”)

Shared voicemail between PSU campuses? Voicemail services for analog users? Yes, please. (Note, Unity Connection has a “multi-tenant”-type system that could allow extension overlap, but for a true unified voicemail system, you’d probably have to renumber per E.164 standards to get rid of overlap and simplify.)

High per-user licensing costs are one hindrance to making this progress, but compared to the costs of implementing and maintaining multiple voicemail systems, the numbers don’t look so bad.

***

PS. Voicemail seems like something that could go away any day now–not from our service offerings, but from public interest. We probably thought the same of FAX every year for the last several, but it hangs on, and in spite of voicemail-killing technologies like SMS (which the students seem to prefer quite a bit over voicemail for notifying each other that they tried to call), voicemail is hanging on, too.

PSU voicemail upgrade – Unity Connection 7

This Friday, the University Park VoIP voicemail system, currently Cisco Unity 4.0.5, will be upgraded–migrated, actually–to Unity Connection 7. A number of us received training on this last fall, and we are eager to move ahead to the new system.

In terms of features, this is a one-for-one migration–no features lost, and no features added at the time of the upgrade. We have been running Unity in voice-mail-only (VMO) mode, where an Exchange mail system acts as the voice mail storage facility and nothing more–no e-mail integration, web access, or other Exchange features. Connection is designed for the VMO-type deployment, so while the feature set remains the same, we are gaining a lot with this upgrade, administratively:

  • no more Exchange
  • no more domain management to support an isolated Exchange
  • no more Microsoft patching for the above
  • two messaging servers rather than two (Unity) + two (DC) + two (Exchange) = six
  • Cisco Linux platform, including the better Disaster Recovery System (DRS) and upgrade/patch deployment

And lastly, this gets PSU un-stuck from 2004 and able to move ahead more easily as new versions or features come along.

Coworkers Chris (who needs to update his blog) and Sean are the ones making this happen. Huge thanks, guys.

Going beyond the straight migration of this weekend, what’s next? I wrote about some end-user web features we saw in training:

End-user Web Features
  • Unity assistant – per-user settings manager, like Communications Manager User Options site
  • Unity inbox – view, listen to, forward, reply, etc. to voice messages. Play messages through the web browser or download to PC.

I believe that with some reconfiguration on the back end having to do with the way accounts are keyed (need some affiliation with the PSU access account ID), a proxy written similar to what we did with Call Manager 6, and some gentle but consistent pressure from users for such useful features, we could enable the two listed above. And in time, and depending on where University e-mail is headed presently, we may even be able to deposit voicemail in people’s e-mail boxes. (NOTE: this is my wishlist and not a statement that these things are planned or that I am even working on them… but I’d like to.)

Stanford VoIP

Our educational brethren at Stanford University are deploying fully-converged, full-featured Cisco Voice-over-IP, including

Stanford has moved from an analog, apparently carrier-based offering, to Nortel VoIP, and now to Cisco VoIP, and continues to support all three. This looks like a great voice communications package for university faculty and staff. Kudos, Stanford!

Training: Unity Connection 7.x day 2

Directory Integration Options

  • Stand-alone (no integration)
  • Communications Manager’s directory (uses AXL)
  • MS Active Directory
  • Unofficially… looks like it could be connected to other LDAP directories
  • LDAP can be used for authentication

Monitoring:  SNMP; nothing new there really.

Backup/Restore:  no more awful Exchange backups, of course.  Selective restore available if we wanted to restore individual users.
COBRAS migrates from Unity to Unity Connection:  users, settings, mailbox contents, handlers.  Cisco is continually improving this migration tool.  Export from Unity is simple; importing that data to Connection may involve a lot of resolution conflict.  Start with a clean Unity system for less importing pain.  
End-user Web Features
  • Unity assistant – per-user settings manager, like Communications Manager User Options site
  • Unity inbox – view, listen to, forward, reply, etc. to voice messages.  Play messages through the web browser or download to PC.  
  • Call transfer rules – set up your own auto-attendant.  Looks like a support nightmare.

For the ITS VoIP and voicemail offering, we could potentially proxy these web features like we currently do Communications Manager User Options.  The first two features in the list above could be really useful.  

Training: Implementing Cisco Unity Connection 7.x

Day 1 of 4. What’s Cisco Unity Connection all about?

  • Unity for those who don’t want MS Exchange integration
  • Cisco’s current (Linux-based) platform.  No Windows components for Connection 7.x
  • Hot redundancy/load balancing rather than failover
  • Modern features:  e-mail delivery of VM, visual voicemail, more
  • Calling search space/partitioning allows functional segmenting of the voice mail system

Licensing

  • Workspace licensing.  Per-phone cost is “slightly more” (instructor’s words) than just phone licensing (a la carte) for use on Comms. Manager.  Avoiding WSL will probably cost more in the long run.

PBX Integration

  • CUCM (Skinny), SIP trunk to any SIP system, PIMG for Avaya/Nortel systems
  • Multiple integrations to same Unity system.  Several phone systems could participate in same Unity–CUCM, OpenSER, Avaya, CUCM over SIP trunk…

Installation


  • Identical to current Communications Manager installation
  • Connection is pre-configured to start most services by default, unlike CUCM which has most turned off by default
  • Use Realtime Monitoring Tool for server/cluster analysis, diagnostics, troubleshooting, stats

Administration looks like a familiar mix of Communications Manager 6.x screens and Unity 4.x screens.  Finishing off the day by setting up the lab.

7906, meet Asterisk: the config

I have gotten numerous requests for actual configuration details from people who have come to this blog by way of the search engines, looking to set up their Cisco IP Phone 7906 on Asterisk or another non-Cisco PBX.

The 7906 has Cisco’s SCCP firmware by default; Asterisk will support this, but there are plenty of reasons to choose SIP over SCCP in a non-Cisco environment.

For me this was an academic exercise. We are running CallManager for our enterprise PBX and whether SCCP or SIP firmware, CUCM will automatically provision the phone. Use the SCCP firmware with CUCM.

The config

What you’ll need:

  • PBX that uses the SIP protocol
  • 7906 or 7911 IP phone. General idea can be applied to any of this generation of Cisco IP phone (41, 61, 42, 62, 45, 65, 71) because they use the same provisioning method and files.
  • TFTP server
  • SmartNet contract on your IP phone hardware so you can get firmware from Cisco
  • DHCP server where you can set client options (the DHCP built into the Linksys router won’t cut it, but most any other DHCP will)

Steps:

  • Go get the SIP load from Cisco. You need a SmartNet contract on your IP phone in order to get the firmware. They change their site around from time to time but I just navigated the menus in this way: Downloads – Voice and Unified Communications – IP telephony – IP Phones – 7900 series – 7906G – SIP Software. Pick the latest or a former release (at this time the latest is 8.5(2) SR1). Download the ZIP file; the .cop.sgn file is the CUCM installation package.
  • Unzip this file to the TFTP root location on your TFTP server, and verify that you can successfully get a file by using a TFTP client in Windows, Mac or Linux to fetch one of the files. (This is especially important if you don’t already have an established TFTP service and you are setting it up just for this.)
  • Create a file named SEPmacaddress.cnf.xml in the TFTP root location. If your phone’s MAC address is 001122334455, the file will be named SEP001122334455.cnf.xml. Use my config as an example, filling in your own variables:

    <device>
      <deviceProtocol>SIP</deviceProtocol>
      <sshUserId></sshUserId>     <!-- log in then use log/log or debug/debug -->
      <sshPassword></sshPassword> <!-- debug commands similar to IOS commands -->
      <devicePool>
         <dateTimeSetting>
            <dateTemplate>M-D-Ya</dateTemplate>   <!-- a=12hr, not case-sensitive -->
            <timeZone>Eastern Standard/Daylight Time</timeZone>
            <ntps>
                 <ntp>
                     <name>IP.ADDRESS.OF.NTP.SERVER</name>
                     <ntpMode>Unicast</ntpMode>
                 </ntp>
            </ntps>
         </dateTimeSetting>
         <callManagerGroup>
            <members>
               <member priority="0">
                  <callManager>
                     <ports>
                        <ethernetPhonePort>2000</ethernetPhonePort>
                        <sipPort>5060</sipPort>
                        <securedSipPort>5061</securedSipPort>
                     </ports>
                     <processNodeName>YOUR.SIP.REGISTRAR/PROXY</processNodeName>
                  </callManager>               <!-- addr may work on some -->
               </member>
            </members>
         </callManagerGroup>
      </devicePool>
      <sipProfile>
         <sipProxies>
            <backupProxy></backupProxy>             <!-- most wont need this -->
            <backupProxyPort></backupProxyPort>
            <emergencyProxy></emergencyProxy>
            <emergencyProxyPort></emergencyProxyPort>
            <outboundProxy></outboundProxy>
            <outboundProxyPort></outboundProxyPort>
            <registerWithProxy>true</registerWithProxy>
         </sipProxies>
         <sipCallFeatures>
            <cnfJoinEnabled>true</cnfJoinEnabled>
            <callForwardURI>x--serviceuri-cfwdall</callForwardURI>
            <callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
           <callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
           <callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
           <meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
           <abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
            <rfc2543Hold>false</rfc2543Hold>
            <callHoldRingback>2</callHoldRingback>
            <localCfwdEnable>true</localCfwdEnable>
            <semiAttendedTransfer>true</semiAttendedTransfer>
            <anonymousCallBlock>2</anonymousCallBlock>
            <callerIdBlocking>2</callerIdBlocking>
            <dndControl>0</dndControl>
            <remoteCcEnable>true</remoteCcEnable>
         </sipCallFeatures>
         <sipStack>
            <sipInviteRetx>6</sipInviteRetx>
            <sipRetx>10</sipRetx>
            <timerInviteExpires>180</timerInviteExpires>
            <timerRegisterExpires>3600</timerRegisterExpires>
            <timerRegisterDelta>5</timerRegisterDelta>
            <timerKeepAliveExpires>120</timerKeepAliveExpires>
            <timerSubscribeExpires>120</timerSubscribeExpires>
            <timerSubscribeDelta>5</timerSubscribeDelta>
            <timerT1>500</timerT1>
            <timerT2>4000</timerT2>
            <maxRedirects>70</maxRedirects>
            <remotePartyID>false</remotePartyID>
            <userInfo>None</userInfo>
         </sipStack>
         <autoAnswerTimer>1</autoAnswerTimer>
         <autoAnswerAltBehavior>false</autoAnswerAltBehavior>
         <autoAnswerOverride>true</autoAnswerOverride>
         <transferOnhookEnabled>false</transferOnhookEnabled>
         <enableVad>false</enableVad>
         <preferredCodec>none</preferredCodec>
         <dtmfAvtPayload>101</dtmfAvtPayload>
         <dtmfDbLevel>3</dtmfDbLevel>
         <dtmfOutofBand>avt</dtmfOutofBand>
         <alwaysUsePrimeLine>false</alwaysUsePrimeLine>
          <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
         <kpml>3</kpml>
    <!-- WARNING: if PhoneLabel is longer than 10 characters a 7941 will be "unprovisioned" and a 7961 will refuse to accept any settings!!!!! -->
         <phoneLabel>LABEL</phoneLabel>
         <stutterMsgWaiting>2</stutterMsgWaiting>
         <callStats>false</callStats>
         <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
         <disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>
         <startMediaPort>16384</startMediaPort>
         <stopMediaPort>32766</stopMediaPort>
         <sipLines>
            <line button="1">
               <featureID>9</featureID>
               <featureLabel>LABEL</featureLabel>  <!-- label next to button -->
               <proxy>PROXY.ADDR.ESS</proxy>       <!-- proxy ADDRESS -->
               <port>5060</port>
               <name>USERNAME</name>  <!-- this is the registrar auth name -->
               <displayName>NAME</displayName>  <!-- outgoing name -->
               <autoAnswer>
                  <autoAnswerEnabled>2</autoAnswerEnabled>
               </autoAnswer>
               <callWaiting>3</callWaiting>
               <authName>USERNAME</authName>    <!-- Auth Username -->
               <authPassword>REG PASSWORD</authPassword>  <!-- registration passwd -->
               <sharedLine>false</sharedLine>
               <messageWaitingLampPolicy>3</messageWaitingLampPolicy>
               <messagesNumber>*97</messagesNumber>  <!-- VM Pilot, *97 for FreePBX -->
               <ringSettingIdle>4</ringSettingIdle>
               <ringSettingActive>5</ringSettingActive>
               <contact>NAME</contact><!-- reg contact field, usually your number -->
               <forwardCallInfoDisplay>
                  <callerName>true</callerName>
                  <callerNumber>false</callerNumber>
                  <redirectedNumber>false</redirectedNumber>
                  <dialedNumber>true</dialedNumber>
               </forwardCallInfoDisplay>
            </line>
         </sipLines>
         <voipControlPort>5060</voipControlPort>
         <dscpForAudio>184</dscpForAudio>
         <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
         <dialTemplate>dialplan.xml</dialTemplate>      <!-- dialplan to load -->
      </sipProfile>
      <commonProfile>
         <phonePassword></phonePassword>
         <backgroundImageAccess>true</backgroundImageAccess>
         <callLogBlfEnabled>2</callLogBlfEnabled>
      </commonProfile>
      <loadInformation>SIP11.8-5-2SR1S</loadInformation> <!-- .loads filename minus the .loads to upgrade to -->
      <vendorConfig>
         <disableSpeaker>false</disableSpeaker>
         <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
         <pcPort>0</pcPort>
         <settingsAccess>1</settingsAccess>
         <garp>0</garp>
         <voiceVlanAccess>0</voiceVlanAccess>
         <videoCapability>0</videoCapability>
         <autoSelectLineEnable>0</autoSelectLineEnable>
         <webAccess>0</webAccess>             <!-- 0 = enabled? -->
         <spanToPCPort>1</spanToPCPort>
         <loggingDisplay>1</loggingDisplay>
         <loadServer></loadServer>
      </vendorConfig>
     <versionStamp>1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37</versionStamp>
      <networkLocale></networkLocale>         <!-- defines tones, default is US -->
      <networkLocaleInfo>
         <name></name>
         <version></version>
      </networkLocaleInfo>
      <deviceSecurityMode>1</deviceSecurityMode>
    <!-- Contents of authenticate.php can be: <?php echo "AUTHORIZED"; ?> -->
      <authenticationURL></authenticationURL>
      <directoryURL>XML DIRECTORY OR EMPTY</directoryURL>
      <idleURL>IDLE SCREEN XML OR EMPTY</idleURL>
      <informationURL></informationURL>
      <messagesURL></messagesURL>
      <proxyServerURL></proxyServerURL>
      <servicesURL></servicesURL>
      <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
      <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
      <dscpForCm2Dvce>96</dscpForCm2Dvce>
      <transportLayerProtocol>4</transportLayerProtocol>
      <capfAuthMode>0</capfAuthMode>
      <capfList>
         <capf>
            <phonePort>3804</phonePort>
         </capf>
      </capfList>
      <certHash></certHash>
      <encrConfig>false</encrConfig>
    </device>

    I emphasized the variables that you need to set by putting in dummy values in UPPERCASE. This config was gleaned from postings on voip-info.org and includes some comments that one of the original posters made. Experiment with it. There are many settings available here; I left much of it “default” (that is, how I got it from voip-info.org). If you are familiar with the device setup screen on CallManager, you’ll recognize these settings from that screen.
  • Create a dialplan.xml in your TFTP root directory.  See the DialPlan Notes section on this voip-info.org page.  Sample:

    <DIALTEMPLATE>
     <TEMPLATE MATCH="10.." Timeout="0"/> <!-- internal extensions are 10xx -->
     <TEMPLATE MATCH="1.........." Timeout="0"/> <!-- 11 digit dialing -->
     <TEMPLATE MATCH="011*" Timeout="5"/> <!-- international -->
     <TEMPLATE MATCH="......." Timeout="3"/> <!-- 7 digit dialing -->
     <TEMPLATE MATCH="*" Timeout="15"/> <!-- Anything else -->
    </DIALTEMPLATE>

  • Review the TFTP root directory.  It should have the contents of the firmware ZIP file, the SEPmacaddress.cnf.xml file, and dialplan.xml.
  • Set up DHCP on your network.  If you want to use static IP addressing, I recommend setting up static clients in DHCP.  Here’s why DHCP is required:  you won’t be able to program the IP address and TFTP information into the phone directly when you do a factory reset to change out the firmware.  If you know of a way to do that, let me know!  Your DHCP configuration for this phone or this phone’s network (depending on whether you use dynamic or static DHCP) must include the following two options:

    option-66 = TFTP server hostname
    option-150 = TFTP server IP address

    Option-66 is also known as “tftp-server-name” on our DHCP server.  Option-150 has no name.  For redundancy or load balancing, you can specify a list of IP addresses in option 150 if you have multiple TFTP servers.

  • Configure the endpoint on your PBX.  In my Asterisk config, the endpoints all register, so I specified the auth username and secret in the appropriate places in the SEPxxx.cnf.xml config above.  If you’re not registering, you’ll want to remove the registrar components from the above config.  Experimentation will likely be required unless your PBX is set up exactly like my test system.
  • The moment of truth arrives:  power up the phone.  Whether your phone is fresh out of the box or coming from another installation, boot up using the factory reset sequence.  Hold down # while plugging in the phone and keep holding it until the message waiting indicator (red light) starts blinking.  Then release # and type 123456789*0# in sequence.  The light will stop blinking and the firmware loading screen will appear.  The phone will get its information from DHCP, contact the TFTP server and download the config and the load files.  Finally, it should register with the PBX (if that’s how you’ve configured it) and be ready to make and receive calls.
  • Test.  Does the Msgs softkey speed dial your voicemail pilot number?  Does your dial plan work (e.g. you can dial your internal extensions without pressing the Dial softkey at the end, and you can dial 11 digits without pressing Dial at the end or waiting for the digit timeout)?  Do you have functional two-way audio?  Browse to the IP address of the phone and check out the information.  (This is read-only; no settings can be changed here.)

See also: