How to Solve Cisco Caller ID not working

There are a number of reasons why your caller ID isn’t working when your FXO port on a Cisco router receives a phone call. In this tutorial I’d like to show you how to fix most of the issues. This is what the configuration of my FXO port looks like now:

voice-port 0/3/0
 connection plar 500
 station-id number 123456789
 caller-id enable

There’s nothing spectacular, just a station-id and a connection plar. I have enabled caller-id so I would expect it to work. Let’s do a debug to see if we receive a number…

VOIPGATEWAY#debug vpm signal 
Voice Port Module signaling debugging is enabled

Now I’m going to call the number and let the FXO port answer it, this is what you’ll see:

VOIPGATEWAY#
htsp_process_event: [0/3/0, FXOLS_ONHOOK, E_DSP_SIG_0110]
fxols_line_reversal_clid_wait. On_hook line reversal detected possibily due to crossed cable
htsp_process_event: [0/3/0, FXOLS_ONHOOK, E_DSP_SIG_0000]fxols_onhook_ringing
htsp_timer - 125 msec
htsp_process_event: [0/3/0, FXOLS_WAIT_RING_MIN, E_HTSP_EVENT_TIMER]fxols_wait_ring_min_timer
htsp_timer - 10000 msec
htsp_timer3 - 5600 msec
[0/3/0] htsp_start_caller_id_rx:BELLCORE
htsp_start_caller_id_rx create dsp_stream_manager
[0/3/0] htsp_dsm_create_success  returns 1
htsp_process_event: [0/3/0, FXOLS_RINGING, E_DSP_SIG_0100]
fxols_ringing_not 
htsp_timer_stop 
htsp_timer - 10000 msec
htsp_process_event: [0/3/0, FXOLS_RINGING, E_DSP_SIG_0000]
htsp_process_event: [0/3/0, FXOLS_RINGING, E_HTSP_EVENT_TIMER3]fxols_snoop_clid_stop
htsp_timer_stop3 
htsp_process_event: [0/3/0, FXOLS_RINGING, E_DSP_SIG_0100]
fxols_ringing_not 
htsp_timer_stop 
htsp_timer_stop3 
[0/3/0] htsp_stop_caller_id_rx. message length 0htsp_setup_ind
[0/3/0] get_fxo_caller_id:Caller ID receive failed.  parseCallerIDString:no data.
[0/3/0] get_local_station_id calling num=0205111234 calling name= calling time=07/26 10:08  orig called=
htsp_process_event: [0/3/0, FXOLS_WAIT_SETUP_ACK, E_HTSP_SETUP_ACK]
fxols_wait_setup_ack: 
[0/3/0] set signal state = 0xC timestamp = 0fxols_check_auto_call 
htsp_process_event: [0/3/0, FXOLS_PROCEEDING, E_HTSP_PROCEEDING]fxols_offhook_proc
htsp_timer - 120000 msec
[0/3/0] htsp_dsm_close_done
htsp_pre_connect_disconnect, cdb = 47933248 cause = 1

htsp_process_event: [0/3/0, FXOLS_PROCEEDING, E_HTSP_PRE_CONN_DISC]
htsp_process_event: [0/3/0, FXOLS_OFFHOOK, E_DSP_SIG_0110]
htsp_timer_stop2 fxols_offhook_rvs_battery

There’s quite some information but the most important one right now is the following line:

get_fxo_caller_id:Caller ID receive failed.  parseCallerIDString:no data.
Before you continue troubleshooting on your Cisco router, please make sure that A) your FXO port supports caller ID and B) your telco has caller ID enabled…you can easily check this by connecting a phone that support caller ID to the PSTN.

When we take a closer look there are a number of items that we should take a closer look at, the first one is the following line:

[0/3/0] htsp_start_caller_id_rx:BELLCORE

In my case this is not correct as I’m troubleshooting a router that is connected to a dutch PSTN from a telco called “KPN”. If you are in another country, make sure the alerting method is correct. You can change this with the cptone command:

VOIPGATEWAY(config)#voice-port 0/3/0
VOIPGATEWAY(config-voiceport)#cptone ?
  locale   2 letter ISO-3166 country code

AR Argentina            IN India                PE Peru                
AU Australia            ID Indonesia            PH Philippines         
AT Austria              IE Ireland              PL Poland              
BE Belgium              IL Israel               PT Portugal            
BR Brazil               IT Italy                RU Russian Federation  
CA Canada               JP Japan                SA Saudi Arabia        
CN China                JO Jordan               SG Singapore           
CO Colombia             KE Kenya                SK Slovakia            
C1 Custom1              KR Korea Republic       SI Slovenia            
C2 Custom2              KW Kuwait               ZA South Africa        
CY Cyprus               LB Lebanon              ES Spain               
CZ Czech Republic       LU Luxembourg           SE Sweden              
DK Denmark              MY Malaysia             CH Switzerland         
EG Egypt                MX Mexico               TW Taiwan              
FI Finland              NP Nepal                TH Thailand            
FR France               NL Netherlands          TR Turkey              
DE Germany              NZ New Zealand          AE United Arab Emirates
GH Ghana                NG Nigeria              GB United Kingdom      
GR Greece               NO Norway               US United States       
HK Hong Kong            OM Oman                 VE Venezuela           
HU Hungary              PK Pakistan             ZW Zimbabwe            
IS Iceland              PA Panama               

In my case it should be “NL” (The Netherlands):

VOIPGATEWAY(config-voiceport)#cptone nl
%Impedance also changed to Complex2
When you make changes to your FXO port, it’s best to do a “shut” / “no shut” just to be sure the changes are applied.

At least the local is now configured correctly. Let’s call one more time to see if there’s anything different in my debug!

VOIPGATEWAY#
htsp_process_event: [0/3/0, FXOLS_ONHOOK, E_DSP_SIG_0110]
fxols_line_reversal_clid_wait. On_hook line reversal detected possibily due to crossed cable
htsp_process_event: [0/3/0, FXOLS_ONHOOK, E_DSP_SIG_0000]fxols_onhook_ringing
htsp_timer - 125 msec
htsp_process_event: [0/3/0, FXOLS_WAIT_RING_MIN, E_HTSP_EVENT_TIMER]fxols_wait_ring_min_timer
htsp_timer - 10000 msec
htsp_timer3 - 5600 msec
[0/3/0] htsp_start_caller_id_rx:ETSI_DTMF
htsp_start_caller_id_rx create dsp_stream_manager
[0/3/0] htsp_dsm_create_success  returns 1
htsp_process_event: [0/3/0, FXOLS_RINGING, E_DSP_SIG_0100]
fxols_ringing_not 
htsp_timer_stop 
htsp_timer - 10000 msec
htsp_process_event: [0/3/0, FXOLS_RINGING, E_DSP_SIG_0000]
htsp_process_event: [0/3/0, FXOLS_RINGING, E_HTSP_EVENT_TIMER3]fxols_snoop_clid_stop
htsp_timer_stop3 
htsp_process_event: [0/3/0, FXOLS_RINGING, E_DSP_SIG_0100]
fxols_ringing_not 
htsp_timer_stop 
htsp_timer_stop3 
[0/3/0] htsp_stop_caller_id_rx. message length 0htsp_setup_ind
[0/3/0] get_fxo_caller_id:Caller ID receive failed.  parseCallerIDString:no data.
[0/3/0] get_local_station_id calling num=0205111234 calling name= calling time=07/26 10:18  orig called=
htsp_process_event: [0/3/0, FXOLS_WAIT_SETUP_ACK, E_HTSP_SETUP_ACK]
fxols_wait_setup_ack: 
[0/3/0] set signal state = 0xC timestamp = 0fxols_check_auto_call 
[0/3/0] htsp_dsm_close_done
htsp_process_event: [0/3/0, FXOLS_PROCEEDING, E_HTSP_PROCEEDING]fxols_offhook_proc
htsp_timer - 120000 msec
htsp_pre_connect_disconnect, cdb = 47933248 cause = 1

I can see the locale has changed to ETSI_DTMF which is correct but I’m still not receiving the caller ID. There’s one more message in this debug that requires our attention however:

fxols_line_reversal_clid_wait. On_hook line reversal detected possibily due to crossed cable

I can set the line-reversal alerting method for Caller-ID information by using the following command:

VOIPGATEWAY(config)#voice-port 0/3/0
VOIPGATEWAY(config-voiceport)#caller-id alerting line-reversal

Time for one more call…

VOIPGATEWAY#
htsp_process_event: [0/3/0, FXOLS_ONHOOK, E_DSP_SIG_0110]
fxols_line_reversal_clid_wait. Line reversal alerting
[0/3/0] htsp_start_caller_id_rx:ETSI_DTMF
htsp_start_caller_id_rx create dsp_stream_manager
[0/3/0] htsp_dsm_create_success  returns 1
[0/3/0] htsp_dsm_feature_notify_cb  returns 2 id=DSM_FEATURE_SM_CALLERID_RX
htsp_process_event: [0/3/0, FXOLS_ONHOOK, E_HTSP_CALLERID_RX_DONE]
[0/3/0] htsp_stop_caller_id_rx. message length 12
[0/3/0] htsp_dsm_close_done
htsp_process_event: [0/3/0, FXOLS_ONHOOK, E_DSP_SIG_0000]fxols_onhook_ringing
htsp_timer - 125 msec
htsp_process_event: [0/3/0, FXOLS_WAIT_RING_MIN, E_HTSP_EVENT_TIMER]fxols_wait_ring_min_timer
htsp_timer - 10000 msec
htsp_process_event: [0/3/0, FXOLS_RINGING, E_DSP_SIG_0100]
fxols_ringing_not 
htsp_timer_stop 
htsp_timer_stop3 htsp_setup_ind
[0/3/0] get_fxo_caller_id:Caller ID received. Message type=129 length=12 checksum=00
[0/3/0] Caller ID String 43 30 35 36 32 36 31 11 11 11 35 
[0/3/0] get_fxo_caller_id calling num=0612345678 calling name= calling time=07/26 10:22  
htsp_process_event: [0/3/0, FXOLS_WAIT_SETUP_ACK, E_HTSP_SETUP_ACK]
fxols_wait_setup_ack: 
[0/3/0] set signal state = 0xC timestamp = 0fxols_check_auto_call 
htsp_process_event: [0/3/0, FXOLS_PROCEEDING, E_HTSP_PROCEEDING]fxols_offhook_proc
htsp_timer - 120000 msec
htsp_pre_connect_disconnect, cdb = 47933248 cause = 1

Excellent, now you can see that my router has received the Caller ID! In my case this has solved the problem but if you are still having issues there’s one more thing you can try. It’s possible that your telco sends the caller ID not at the first ring but at the second ring. You can try the following command to change this:

VOIPGATEWAY(config)#voice-port 0/3/0
VOIPGATEWAY(config-voiceport)#caller-id alerting ring ?
  <1-4>  number of ring on cycles

Configure it for 2 rings and see if it makes a difference.

Hopefully this tutorial has helped you to solve your Caller ID problem, if you have any questions feel free to leave a comment!

Tags:


Forum Replies

  1. Hi Rene,
    I need help on H323 as I am using it to connect two regions eg Site A ( CUCM) and Site B (CME)
    1.My problem is that when I call from CUCM to CME the user cant see my Caller ID but I can see if call coming from CME to CUCM.
    2. Onother one is, when I call from CME to CUCM there is no ring back tone and the Codec am using G729 as tried few ways but no luck.

  2. This is indeed very useful. Awesome help this.

Ask a question or join the discussion by visiting our Community Forum