VOCP System - CallerID - Configure



You can use Caller ID features to view the origin of incoming calls or filter calls based on the CID information.

To use VOCP caller-id filtering, you need a few things besides the default VOCP installation. These are:

  • Caller ID service from the telco (you need to pay to play)
  • A modem which recognizes CID information
  • A customized cid-filter.conf file

If you have the first two, you're probably already in business but it is possible you might need to set up a special init string with m/vgetty.

Assuming you have setup caller id with your phone company and have gotten vgetty/VOCP working, you can check the /var/log/vgetty.ttySX log file to see if caller id is being reported by your modem. Try

grep CALLER /var/log/vgetty.ttySX

replacing ttySX with the appropriate ttyS[0123] for your setup. If you can see phone numbers after CALLER_ID=, you're all set - else see the Modem's Configuration section below.

Modem's Configuration

Does your modem support caller id? We can find out if the chipset that it uses does support CND by following these instructions (assuming your modem is on /dev/ttyS1 - change to appropriate ttySX). Please note that, even if the chipset used by your modem does understand caller id, it is possible that your modem will not report the information. This is due to the fact that, in order to intercept the CID info that is sent by the telco between the 1st and 2nd ring bursts (in North America, may be sent at different times elsewhere) your modem must listen in without actually taking the phone off hook - this requires a bit of special hardware which many manufacturers omit in order to save a dollar or two.

Already supported

Start by making sure we're logging at a high level by editing the vgetty voice.conf file and setting voice_log_level to 4 or 5 (remember to change this back later or the log file will become huge).

As root, empty the log file:

# echo "" > /var/log/vgetty.ttyS1

Now, restart vgetty. Either:

  • find and kill the process manually, or
  • run :
  • # ps waux | grep /[v]getty | awk '{print $2}' | xargs kill

Have a friend call your VOCP-enabled line. After the call has picked up, do a

$ grep CALLER_ID /var/log/vgetty.ttyS1

If you see the caller's number, all is well and you can skip the rest of this section.

No CID info in log

If you're still reading this, it's because you're modem didn't show the CID info. There are two possibilies:

  • Your modem doesn't support CID
  • Your modem wasn't initialized correctly

There isn't much you can do in the first case, except get another modem.

In the second case, get your modem manufacturer's documentation and look for anything related to CID, "caller id" or CND. You are searching for the AT command that will enable CID. Chances are that it will be something like AT#CID, AT+VCID or something similar. Be sure to take a look at the modem troubleshooting section for more info about interacting with your modem and querying for capabilities.

If you don't have the modem docs, you can still do a little detective work to find the appropriate init string. Start with http://groups.google.com

You can also use minicom to see if you can guess the correct code (see the modem page for a look a troubleshooting your modem). As root, start minicom:

# minicom -s

Go down to "serial port setup", hit . Press A to modify the device, change it to your modem's port (eg /dev/ttyS1) press twice. Go down to "Exit" (not "Exit from Minicom"), press .

You are now talking to your modem. Enter:

AT#CID=? (U.S.Robotics, Texas Instruments, Rockwell compatible modems)
AT+VCID=? (IS-101 modems, Lucent LT, MultiTech, IDC, Cirrus Logic...)
AT#CC1 (Aspen modems, Cirrus Logic, Motorola Voice Surfer, Phoebe)
AT*ID1 (Motorola)
AT%CCID=1 (Practical Peripherals)
ATS42.2=1 (ZyXEL)
AT#CLS=8#CID=1   (?)

Ignore the ERROR responses. If you get an OK or a response like:




You've have found the AT command to enable caller id! Assuming AT+VCID is the command that worked, you can do:


To see the current setting.


Should respond with OK.


Should also say ok. 0 is normally CID OFF, 1 is normally formatted caller report and 2 is unformatted caller report.

You should now try it out manually. Stop m/vgetty, start minicom and issue the appropriate AT command to enable caller id. Await a call. When the phone rings you will see something like:




If caller id is enables and working, you should have some extra stuff show up between the 1st and 2nd rings.

Once you have determined the AT command to use to enable your modem's caller id feature and know that it works, add a post initialization for your modem in mgetty's mgetty.config file. Here is what mine looks like:

port ttyS1
post-init-chat "" AT#CID=1 OK

Of course, you should set the command that your modem uses if it is something other the #CID (eg AT+VCID=1).

You should be done now... kill vgetty:

# ps waux | grep /[v]getty | awk '{print $2}' | xargs kill

and take a look at the output in /var/log/vgetty.ttyS1. You should see something like:

12/18 01:35:31 yS1  send: \d\d\d+++\d\d\dAT S7=45 S0=0 L1 V1 X4 &c1; E1 Q0[0d]
12/18 01:35:34 yS1  waiting for ``OK''
12/18 01:35:34 yS1   got: [0d][0a]OK ** found **
12/18 01:35:34 yS1  send: AT#CID=1[0d]
12/18 01:35:34 yS1  waiting for ``OK''
12/18 01:35:34 yS1   got: [0d][0a]AT#CID=1[0d][0d][0a]OK ** found **

Looks good. Bug someone else so they'll call you up and see if CID info is found in the log.

When done, don't forget to tone down the logging by resetting voice_log_level in voice.conf.

Go Back

© 2000-2003 Psychogenic inc. All rights reserved.