Tag Archives: phone

A new old phone and rotary dialing, revisited

During the holidays I received and lightly restored another beautiful telephone from the 1940s, this Automatic Electric Monophone model 40:

ae40.jpgAutomatic Electric was an independent supplier of telephone equipment throughout the 20th century, eventually being purchased by GTE, and in direct competition with the Bell empire (or Western Electric, Bell’s equipment division) throughout its existence. The community-written Wikipedia article tells more of the story.

Some details about this Monophone:

  • Manufactured from 1939 to the mid-fifties, but I can’t find a stamp on the inside or outside to date it.
  • The coiled handset cable would typically indicate a later model, but the nicked-up brass screws inside the handset where the cable is connected suggest that the coiled cable was an upgrade or repair at some point in this phone’s lifetime. So it may be an old phone body with a newer cable, or it may be a later model, all-original.
  • The dial plate seems to be uncommon. Browsing many pictures of AE model 40s on the web, I haven’t seen any others with white-numbered, black dial plates. Also, it has no alphabet markings, only digits.
  • It’s all Bakelite, and heavy. The Northern Electric 302, with a thermoplastic shell, is almost a full pound lighter. External data: someone weighed their own collection of phones.

The Northern Electric 302 and the Automatic Electric Monophone 40 ready to duel:
ne320-ae40.jpgThe AE40 works fine and will be a new addition to the analog remix, but I decided to do one more search for VoIP analog telephony adapters (ATAs) that will accept rotary/pulse dialing. Recently, a commenter suggested UTStarcom adapters, but others report of an ATA that is still in service and accepts rotary dialing: the Grandstream HT-502/503. I have a 502 coming from an eBay auction and will report back on how it works out.

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:

Why I blog about background images and not about server upgrades

My last entry showed some background images that I politely took from the Department of Public Information and cropped and gently edited for use on the Cisco IP phones. These are not available (except as noted) on Penn State IP phones; they’re just some ideas I had and loaded on our test system to demo to my colleagues.

I would like our phone users to have these background images. What’s more, I would like phone users to have the option to buy, for an additional $60-100, a color-display version of their two-line or six-line Cisco phone. It doesn’t do any magic tricks; it’s just colorful. (That’s not entirely true; there are some under-the-hood improvements, but definitely nothing magical.)

In light of significant server upgrades that I’m working on now, why would I waste my time playing with and promoting background images and color phones?

Let me start off with a word of self-defense: I’m not wasting time. I am just not focused enough to be able to work on server upgrades for months on end without engaging myself in some other more creative work. Server upgrades are boring, and we are trying to not be creative with these; instead, we want to follow the vendor’s rulebook to avoid headaches later. I think this is a reasonable course of action. It’s also the reason I haven’t blogged much about the server upgrades. Want to know what we’re doing? Details on www.cisco.com.

At the last two committee meetings with PSU VoIP technical collaborators (“VoIP Tech”) I gave a show-and-tell of background images and the 7965 color IP phone. Response from the team was not positive. Reasons focused on internal issues of inventory management, firmware tracking, and philosophical disagreements concerning our vendor and the future of the IP phone….

No sour grapes yet; I want a less-technical opinion on whether these are good ideas or not. Marketing folks might see these in a different light. So might end users, who don’t care about our internal issues. I think our end users would like us to offer them more products, more creative and interesting products. We are all humans and like shiny things. We watch color TV. 1080i-High-Definition-80-inch-diagonal color TV. We don’t want the Model T. We go for the fast, good-looking car, if we can afford it.

Some–actually a majority–of the users don’t care what phone sits on their desks. They will be satisfied or unsatisfied based on certain simple factors. Others, perhaps executives with expensive office furniture or athletics coaches who decorate their offices with fifty years worth of trophies, will want a colorful lion shrine to appear on their phone when they’re not busy recruiting the next dean or football star. Or any phone user just wants a change of scenery. I’m talking about minor things that can please the customer–all while in the background, we tech nerds work to make the system capable, available, reliable, redundant, and all other service-oriented goals.

So the answer to “why” is that I think the end users will like it. And that should be enough reason to write about such things here on a blog and promote them internally as service & feature offerings. I think more focus needs to be given, while fully maintaining the infrastructure, to end-user experience. We keep telling ourselves that we’re not a utility company. Therefore, let’s get past the utilitarian.

Penn State proud IP phones

Not to be outdone by the foaming soap dispensers that proudly display the Penn State logo…

Here are some ideas I had for background images for the 7941/7961:



Standard (currently available)

PSU shield logo (currently available)

Nittany Lion 1

Nittany Lion 2
 

Old Main tower

Allen Street gates

At Beaver Stadium

Honors College wall

Color versions of the grayscale images.  (This is what you’d see on Cisco’s higher-end color-display phones:  7945, 7965, 797x.  We don’t offer these, but they sure look cool.)



Standard

Nittany Lion 1

Nittany Lion 2

Elm trees
 

Old Main tower

Allen Street gates

At Beaver Stadium

Honors College wall

Photography credit: Penn State Department of Public Information

With apologies to Eric Liddell

Sunday morning philosophizing about work, inspired by the 1982 movie Chariots of Fire:

“God made me nerdy. And when I set up network services, I feel His pleasure.”

*****

An additional quick thought, more VoIP-related: it’s not about the phone — except the softphone. A good VoIP system should let you access all or at least most of its features through any handset, from a crummy analog single-line touch-tone set to a touch-screen many-button Cisco 7975. Give me a way to transfer and park calls on my analog set through the switchhook and keypad and give me softkeys on my IP phone.

The softphone is still a big deal. Not only is it on the laptop computer, now it’s on the PDA and (hacked) iPhone. It’s on the Nintendo DS, and it’s embedded into web pages using Flash.