CME - Configuring the FXO port for a POTS line

In order to connect a POTS line to a CME router, you require an FXO module. Fortunately, they are very affordable and readily available on ebay. On my routers, the first FXO port is located in chassis 0, module 3 and port 0 or 0/3/0. The second at 0/3/1. Your configuration may be different.

On some Cisco voice platforms, one or more Packet Voice and Data Modules (PVDMs) are needed to support the voice interface cards. If no PVDMs are present, the voice ports may be missing in the active configuration. The PVDMs hold digital signal processors (DSP farms) that make the VICs fully functional, and are installed on the motherboard of the Cisco router series or on the network modules. The PVDMs are rated by the number of DSP channels that they have: 8, 16, 32, 48 and 64.

To check if you have a PVDM module, issue the "show diag" command. On 2811 routers, there are two PVDM status LEDs on the front lower right corner that indicate the presence (lit) or absence (dim) of PVDM modules.

Typical dual channel FXO module.

Typical POTS phone line (outlet).

This section details the process to configure a legacy FXO port to create a trunk using a POTS line. Two methods of picking up an outside line will be detailed:

  • Dial 9 for an outside line
  • Picking up a line using a phone button.

Both methods work equally well and the choice is whichever method the users are most comfortable with. Normally, you use one method or the other but not both as it would be confusing for users.

Configuring a FXO port is a two step process. The first step is to configure a rule for incoming calls - where will the calls go to? The second step is to create an outbound rule - how do you access the line?

Here's a terminology refresher: extensions connect to phones, trunks connect to lines. Extensions are directed to specific devices: typcially phones. Trunks are shared among many devices and use rules to determine which device is allowed to use the trunk and how the trunk is to be routed to a module.

Check the Line!

The first step is to verify that the POTS phone line actually works. Plug in a POTS phone and check that there is dialtone and that you can make a call and receive a call. Your telco service provider will assign a DID number for the line. Record it as it will be used as part of the configuration. For this example, we will use 10 digit dialing and use the DID 780-410-0001.

Method 1: Dial 9 for an outside line

Creating the Inbound Rule

The voice-port command is used to configure the FXO inbound rule:

Router(config)#voice-port 0/3/0
description PSTN-FXO 7804100001
Router(config-voiceport)#connection plar opx 2201
Router(config-voiceport)#caller-id enable

The "connection" command specifies a private-line, automatic ring down (PLAR) connection, off premise connection (OPX) and to forward the incoming call to the extension 2201.

Enter the command caller-id enable in order to allow the caller ID information to be received at the FXO port that is configured.

Test for Incoming Calls

Connect CME to the PSTN POTS line using an RJ11 phone cable. Test that you can receive an outside call and that it is forwarded to extension 2201. You should have very good audio quality.

Alternative Destinations

In this example, the incoming call was forwarded to a specific extension. You can forward incoming calls to any extension or to a pilot number like a hunt group pilot, the voicemail pilot number or even to the auto attendant (IVR) pilot.

Creating the Outbound Rule

This is the simpler method of the two. To call out, the user must dial 9 first then the 10 digits (10 digit dialing in my area).

Create a dial peer in order to associate a telephone number with a particular FXO port so that outgoing calls can be placed.

Router(config)#dial-peer voice 3 pots 
Router(config-dial-peer)#destination-pattern 9[2-9][2-9]........ 
Router(config-dial-peer)#port 0/3/0  

The command "dial-peer voice tag pots" configures an outbound POTS dial peer and it is the 3rd dial-peer configured in my system.

The command "destination-pattern 9[2-9][2-9]........" creates the outbound rule to dial 9 to use the outside line + the 10 digit dialing number. The pattern [2-9][2-9] represents the first 2 digits of the dialed number and excludes the 11 portion of 911 so we don't accidentally dial 911. The 8 dots are wildcards that represent the last 8 digits of the dialed number and are required. We can read the rule as when the first digit is 9, the following 10 digits consisting of two digits between 2 and 9, and the next 8 digits will be sent out.

The last line "port 0/3/0" identifies the FXO port that will be used.

You should now be able to dial an outside line from any one of your phones by dialing 9 first then the external number.

Method 2: Picking up a line using a phone button.

This method is more complicated and requires displaying the status of the line when in use so others don't accidentally barge in on an ongoing call. This method only works with IP phones and not POTS phones. Also be aware that some IP phones only have two buttons.

On each phone, the second button will be used for accessing the outside FXO line. The second button will also display the status of the line: in use, ringing or available. The method of displaying the status will vary depending on the model of the phone. On some phones, the status is displayed by changing the color of the button. On others, the status is displayed as an icon next to the button on the LCD display.

The 2nd button will be used to pick-up and display the status of the outside line

The voice-port command is again used to configure the FXO inbound rule but this time we send it to pilot number 5000:

Router(config)#voice-port 0/3/0
description PSTN-FXO 7804100001
Router(config-voiceport)#connection plar opx 5000
Router(config-voiceport)#caller-id enable

Incoming calls on the FXO line will be sent to the pilot 5000. The number 5000 is just an arbitrary number chosen, can be any number you like. The pilot number will be configured later using the ephone-dn command.

Create a dial-pattern to use for outbound calling to port 0/3/0:

Router(config)#dial-peer voice 3 pots 
Router(config-dial-peer)#destination-pattern 1000 
Router(config-dial-peer)#port 0/3/0  

This is the 4th dial-peer in my system and its going to use the destination pattern 1000 to access the FXO port at 0/3/0.

Under telephony-service, configure a dialing number (ephone-dn) to use and monitor the FXO port:

Router(config)# telephony-service 
Router(config-telephony)# max-dn 100
Router(config-telephony)# ephone-dn 100
Router(config-ephone-dn)# number 5000
Router(config-ephone-dn)# trunk 1000 monitor-port 0/3/0

This creates a directory number 100 with extension 5000. The destination pattern 1000 is used to monitor the status of and access the FXO port 0/3/0. The max-dn must be increased to at least 100, to be able to use the number 100 as a directory number (dn).

Assign a Phone button to the FXO Port

To configure phones to monitor and use the FXO port on button 2, add the following "2:100" to the end of the "button" command for ephone 1:

ephone 1
 button 1:1 2:100

Repeat for all of your other ephones.

Reset the Phones!

The last step is to reset or reboot the phones so that they can pick up the new configurations. The second button on each phone should display 5000 for the outside line. Again, the number chosen for the pilot in this example was arbitrarily chosen and it could be any number such as the last 4 digits of the DID or a simpler number.

How does this work?

When a call comes in on the FXO port, it is sent to pilot 5000 (ephone-dn 100) which is configured as the 2nd button on the phone (2:100). All phones with this 2nd button configured will then ring.

When an outside line is needed, the 2nd button is pressed, it connects to a trunk with pilot 1000 which matches the destination pattern for "dial-peer voice 3 pots" and goes out port 0/3/0.

A nice option with the trunk command is that port 0/3/0 is monitored and the status of the line is displayed on the phone as available, in-use or ringing.

If this page has helped you, please consider donating $1.00 to support the cost of hosting this site, thanks.

Return to

TelecomWorld 101

Copyright July 2013 Eugene Blanchard