How to Implement Cisco Call Manager Express at Home, part six

Part five on SIP will be rewritten; as some steps are missing.

Foreign Exchange Station or what the hell is FXS?

FXS is basically is what is in the landline world where the telephone line comes into a home or business. When things went to digital in the 1990s, not every phone system could take straight up ISDN, T1, DS1, etc. so a Customer Premise Equipment would be installed with basically an analog telephony dropdown. Adtran was  very successful in downconversion technology to tie a Partner key system into a large scale T1 line.

Then the advent of IP came along and tying older phone systems with native IP connections was very popular. In short, FXS acts as the Foreign Exchange Subscriber, that was traditionally foreign to the home central office of the customer.

In a Cisco environment, it can be used for multiple reasons. For today’s notes, it’s to extend analog telephones acting as extensions.

Wait, what’s the difference between an FXS and an Analog Telephone Adaptor?

An ATA is a separate device, that’s intended for things like fax machines, and some instances of analog telephones. Unlike Nortel and Avaya and even Mitel where it’s a box that goes embedded with a phone, the VOIP world likes to make little Netgear-like boxes instead. An ATA can have points of failure, and you’re not limited to ~ 300 feet of wiring. If say the network goes down (and it can!), you can have hard line failover, much like in your hybrid digital telephony setup. Unless something is wrong with the router, tricks to provide failover is very easy.

Again FXS can be used to tie analog trunk PBX systems or act as the ATA for a software based system like an Asterisk, this is intended for a Call Manager Express setup

To Start Dialing

Logged in and in configuration mode, type in voice-card 0/0 (in this example, first “o” is the gateway, “0” is the furthest right hand card on a Cisco 2801)

type on no shutdown

Then type exit

Now you need to type some more commands

First go to voice-port 0/0/0 (that’s Gateway 0, slot 0, port 0)

station-id name Dining Room (or another name or location you prefer)

station-id number 201 (or another number preferable, but you could leave this empty, but if you don’t hear it ring, you’ll know it was you!)

caller-id enable (this allows a Caller ID analog phone to give information from the caller, whether it’s a SIP call, SCCP call or even outside – Where Available, lol)

If you still struggle with Dial-Peers, it’s basically a dialing string or rule for anything other than Skinny phones. SIP is even foreign, and you have to create dial-peers for those stations too. Analogs do not talk in IP. When adding an ephone-dn or ephone; IOS already does that for you if you noticed. And you can tweak it if you so wanted to.

I used this approach dial-peer voice 1201 pots  in config mode

I told IOS, to have a destination-pattern 207

Port 0/0/0 – because that’s the port I put the station-id number on

Forward-digits all basically will dial the number after the person picks up, so if you want them to hear numbers dialing, than I’d leave it blank

The dial-peer is required if you have VOIP extensions whether it’s SIP or Skinny. The FXS slots when not in shutdown can make any calls against the dialing plans and dial-peers it knows, but it needs explicit instructions the other way around.

#

How to Implement Cisco Call Manager Express at Home, part four

TFTP: (Sometimes known as the “CUCM address”)

TFTP and call management in Cisco land is the same. It’s assumed you are treating your router to just do voice, and you’re not mixing this with another network like an ASA or an AirPort Express with it’s own IP network, etc. (I am not the only one that had this inexperience.) You use SolarWinds or tftp32d to insert new files to the Cisco router; then use the tftp-server command to serve the files for the actual sets themselves. You typically don’t use the laptop/management PC’s TFTP server to have the phones get their files. Why?

TFTP and call management in Cisco land is the same.

Now depending on the files, you’re going to have to do this individually. If you have some mind in IOS, you can do in config mode, tftp-server flash:loa [first three letters of the file, then Tab] you can speed up this process. This flags the files living in the flash: directory this can be spit out to the TFTP server you have previously set up. Ensure that in config mode your tftp-server source-interface is set on the same network/subnet that the VOIP is running under.

Your going back to the telephony-service function yet again, this is where you enter in the “Loads” for your Skinny phone. Why if say it works out of the box and it registers? You may run into some bugs. My Cisco 7970 which I’ve had for years; didn’t understand the quad-lines very well, and it locked up, and sometimes would constantly reload. The firmware dates back to CME 4 years and perhaps it needed a little more up to date code so it would work better.

You type in the telephony-service prompt in config mode the following:

load 7970 [filename without the .loads, or .default]

change the model number if different from the example

There’s roughly 6 files, and it’s best you put them in the order that the other documentation has it.

The Cisco IP Phones basically phones home via TFTP and if it sees a new bootloader and firmware and checks against what it has, it should restart and attempt to upgrade.

There are catches and gotchas, ensure you have read Cisco’s documentation on upgrading, because hopping well past major versions will make the phone become a brick, or totally just ignore the new files. For an example, you can’t go to version 9 unless you have patched to 8 if the version is below 7. Understandable for IP appliances, yeah?

*

How to Implement Cisco Call Manager Express at Home, part three

The Numbers Game

There are several types of telephone numbers, known as “tags” to identify the individual extensions, sets, etc.; similar to how an Internet routing path works.

ephone for [Selsius] Ethernet Phone, or known today as Cisco IP Phone (the company Cisco acquired in the late 1990s)

ephone-dn for Directory Number (easy if you came off from Nortel)

voice register pool for a SIP Phone, whether it’s a Cisco or not

voice-register-dn the number for the SIP phones or devices

SIP and Voice Registers are in a separate post. As of this writing in 2020, the CME releases prior to 9 are essentially becoming End of Life; and SIP is now becoming the only protocol Cisco will officially support, no new models since the mid 2010s uses SCCP exclusively; though CME doesn’t work well with SIP natively if you have the 7900 series with SIP firmware. Since version 11, it only handles SIP at the desktop level, SCCP only works if you still have the VG200 analog phone gateways; or the smaller FXS cards. The more recent, 7800, 8800 and 9900 models only runs on SIP protocols. In reality, SIP is much more mature (but still not the best VOIP protocol around), and the newer generations of Cisco IP Phones with the SIP stack reflect it. The 7900 was never really intended to take all the lack of benefits to SIP and not only that the very original generations the 79×0 models limited it’s use to support BLFs, the speaker was half duplex, and the audio quality was at level of a POT set, over a set that had a Skinny firmware.

Trunk mode: Key System (“Call on Line 1”)

As much as I admire the 1A2 systems, and my poor fine motor skills, I don’t want to forget history of the largest types of systems, PBX are actually a microcosm in the telephony world. If you got a 796x, this will be easy; without loosing button space for other line appearances.

In this example, this would be a dummy extension

CORE1(config)# ephone-dn 60

CORE1(ephone-dn)# number 200

CORE1(ephone-dn)# label Line 1

CORE1(ephone-dn)# name Line 1

If you have Call Waiting and you enabled Switchook flash in telephony-service, you could set this up to be a dual-line, to achieve this, to do that, all you would need to do is add  “ephone-dn 60 dual-line” to the end if you did this already, and made a mistake you will need to remove it (using “no ephone-dn 60”  as the example) and reenter it as such.

FXO Configuration (voice-port)

Now it’s time to define that FXO port to match that dummy extension. Now you’ll branch out to the trunk level and assign various commands to make this work:

CORE1(config)# voice-port 0/1/0

Which means on the Cisco 2801, it’s on router  0, slot 1, port 0 (the female jack),  similar to 01A0401 on say a large Avaya PBX.

CORE1(voice-port)# supervisory-disconnect anytone 
CORE1(voice-port)# groundstart auto-tip
CORE1(voice-port)# timeouts-interdigit 6
CORE1(voice-port)# timeouts call-disconnect 28

I use this because the Xifinity Digital Voicemail, and if no one answers by the 6th ring, it stops ringing. If you do not have this type of timeout, the router “answers” the call and rings to the command below. If you do not insert this, the phones will “ring off the hook”. In fact it concerned one of my grandmother’s doctors who just happened to call on the same day of the final cutover, and I realized I omitted it.

connection plar opx 200

This means it will connect to a Private Line Automatic Ringdown to Off Premise Extension of 200, the ephone-dn 60 for the dummy “Line 1”. Ironically OPX must think the extensions is off premise to the router’s mind.

description Comcast POTS

caller-id enable

If say you wanted only one phone to answer the call (which this would act like a PBX, where a single point of entry), you’d use the DN that is of the extension you wanted to answer, such as say 101. For the home, it’s easier to lump sets on a dummy extension in case of some network flare up that caused a phone to go down, someone unplugged a set, etc. I’m a clumsy guy, and if you had one set go down, a busy signal would generate on the other end, because no device is able to ring.

There was some issues where the phones would ring once every 10 minutes or so. Upon a google search, I found entering the following in the config mode, this helped

voice class custom-cptone Comcast

 dualtone disconnect

  frequency 480 625

ephone-dn (Extension Number)

As previously explained, the ephone-dn is for the extension. In Release 8 and higher, there is more than just an option dual-line, but an octo-line. Octo means 8 different instances of calls can come into a CME  instance without a busy signal. Though in Cisco, your call appearances are virtual and requires juggling using softkeys and no hard keys like how Avaya is known for. With SIP, you could return back to the Avaya-style as call-waiting or appearance buttons are device-centric and not phone system specific, which in a lot of ways could be easier. In fact octo-line is designed for call-parking, which will be discussed in the future.

Depending on that PVDM that’s required to anything, even if you were just playing with commands, the more instances of calls will chew up resources on the PVDM, even if you are within the limits. This is because after you assign a Cisco IP Phone, the ephone command already populates the  lines after configuring, so that means that phone will have dedicated lines literally.

The SCCP protocol can support up to 200 simultaneous calls, but that’s more for say a UCM, and given how it can’t roll over to another idle button like an Avaya; it’s an overkill; especially when it’s line specific, not phone specific. It’s better off being a dummy extension than anything else.

Setting up Cisco IP Phones

If you did the ephone-dns for all your relevant extensions; and you’re in no hurry to add BLFs, you could in theory use auto-reg-ephone in the telephony-service function, and plug in the phones one at a time, to then to match extensions to phones. But if you want to do more, one at a time maybe your only  bet

For all intensive purposes, start with one. In config mode enter the following

CORE1(config)# ephone 1
CORE1(ephone)# mac-address 0000.0000.0000
CORE1(ephone)# type 7970
CORE1(ephone)# button 1:1
CORE1(ephone)# button 3m70

In mac-address use the MAC that is on your VOIP set that you’re adding ensure it’s split up into threes and add a “.” every 4 characters in the hardware address.

For all intensive purposes, “button 1:1” means Button 1 is tied to Directory Number 1, extension 100; button “3m70” is functioning as BLF for the dummy extension of 200 that’s acting as a Key line and is monitoring the line; you can access it and it will ring when the number receives a call. And I believe you could use 0s for MAC addresses if an event you’re waiting for a new Cisco phone to ship and use it as holding till the set arrives. I know this can be done in voice-register, but didn’t verify with ephone.

*

How to Implement Cisco Call Manager Express at Home, part two

Setting up Cisco CME without the setup command

For versions prior to 8x, the “setup” command has been “depreciated”, but yet it’s still seen on the Cisco router. It literally gets bitchy and basically tells you to eff-off and configure it the more complex way.

Also for $85 in the summer of 2018, it did not include the GUI. While I had an image for the GUI, it was for Release 4. And yet all the nerds love to brag doing everything in terminal  I also defend GUI because it also helps you for the small things, like changing the time at the end of the Daylight time, if you happened to fudge it up, or you want to change the music on hold, stuff like that. I consider the GUI to be the admin, and the terminal for heavier lifting tasks like the routing, etc.

If you so choose to, you’re going to have to set things up line by line.

If you have not assigned a DHCP pool yet, and the VOIP VLAN is separate to your data VLAN; you’re going have to enter (if you don’t have a DHCP server for the sets)

ip dhcp pool ITS*   

network 172.18.2.0 255.255.255.0

option 150 ip 172.18.2.2

default router 172.18.2.2

dns-server 172.18.2.16

* I used “ITS” for the sake of legacy uses because this is what would’ve been entered for the name if you had “setup” still in use.

Network means the server will spit out IP addresses along the network it’s bounded on, by the IP address set up on the interface. I used FastEthernet 0/0 because I felt internal/private LAN should be on the lowest port possible. Your option 150, handles the TFTP server, which will need it’s own discussion later.

Now enter telephony service by entering in

CORE1# telephony-service

Now you want to tell the router how many Cisco SCCP phones you want to have, say

CORE1(telephony)# max-ephones 24

For the number of extensions, double it plus a few more (especially if you want to do paging and Key system functionality)

CORE1(telephony)# max-dn 80

you want to remind the telephony service where its assigned on

CORE1(telephony)# ip source-address 172.18.1.2 port 2000

where port 2000 is the default pipe for Cisco’s SCCP

Do you want to change the line of “Cisco Unified CME” (that on the big CallManager it’s known by “Your Current Options” above the softkeys?

CORE1(telephony)# system-message  ((')) Merry Halloween (('))
CORE1(telephony)# voicemail 8*97

The voicemail button could in theory dial any pre-defined number, and I just used the most likely default carrier number if you don’t have Unity Express installed.

CORE1(telephony)# moh music-on-hold.au

ensure your music-on-hold.au meets Cisco’s spec and it’s living on the flash drive

Entering IP phones is not done in telephony-service at all. This could be because it could be used for SRST functionality, and they kept that prompt at the low level.  You can’t do SRST and CME at the same time.

For more on how the numbers game works in Cisco CME, it’s got it’s own page.

How to Implement Cisco Call Manager Express at Home

Updated in 2023 to include compliance to the Fucking Kari Hunt Law… since PBX systems kill women… not deranged men!

The future is all IP

The Future will be Rewritten to be all VOIP.

Cisco is the future.

Just kidd.

In seriousness, if you’re all wired at home, or you are interested in wiring up your home for multi line telephony or have the ability to answer calls from a number of phones or internally call people from within… I think given the consolidation and the access to them, the recommended path is to Cisco. As much as I can’t stand a lot of their technology, you do not need to need  to have everything running on Cisco to do Cisco telephony. Being frank. I have switches using Netgear, and I have some third party endpoints.

The advantage with Cisco is

  •  The “Gold-standard” in VOIP
  • Much easier to acquire, at a reasonable secondhand price (other devices that may be even better like MultiVOIP gateways, are really expensive)
  • Gets your feet wet into other platforms such as wireless, firewalls (ASA), etc.
  • Voice quality sounds better than any standard POTS phones, using the same POTS wiring from your phone company
  • They are more open to the standards-based, meaning you don’t have to be a Cisco showoff at the tables, desks. You could use SIP phones from other vendors now than historically.

I am writing this because a lot of the content out there is shit. Whether it’s written by guys who haven’t had proofread his own copy, or someone with U.S. English as a Second Language; or people who are so elitest with their Cisco certs, they’re like “it is (what it is!)”

Continue reading