NCID - Network Caller ID
NCID is a Client/Server Network Caller ID Package.
The NCID server, called ncidd,
obtains Caller ID information or outgoing call information and makes it available to clients over the network.
It also makes use of aliases to change the NUMBER or NAME received, before sending the call information to its clients.
The server can send messages to its clients. The messages are either from clients or alert messages from the server itself.
The server can also automatically hangup up a call if the name or number is in the blacklist file. It can modify the
call, alias, blacklist, and whitelist files with information obtained for a client.
The NCID server obtains the Caller ID information from either a modem, a serial device, or gateways. A SIP gateway obtains
The Caller ID information for incoming calls and information on outgoing calls. Multiple
gateways are supported and can be used along with a modem or serial device. If the hardware or gateway supports outgoing calls,
ncidd can also send that information to its clients
The NCID server can also function without Caller ID if a modem is used that indicates ring. The date and time of the
call will be noted, but not the name or number of the caller.
The NCID client, called ncid, receives call and messsage information from the server and either
displays it, sends it to a output module, or both. The client has multiple output modules available and a display program for a TiVo.
There can be multiple clients in GUI mode, but only one client per output module. The client can send jobs to the server which can create,
update, or delete an alias, create or delete entries from the blacklist or whitelist files, and update the call file with new aliases.
The client includes the following output modules:
- Multiple Operating Systems:
- Linux: server, client and all CID gatewys
- TiVo: server, client and all CID gateways except ncidsip
- Macintosh: server, client and all CID gateways
- FreeBSD: server, client and all CID gateways
- Windows: client only unless Ubuntu or Cygwin is installed
- Ubuntu: server, client and all gateways
- Cygwin: server without modem or serial device support, client and all gateways
- Supported Caller ID Input:
- Modems: Must support CallerID
- NetCallerID: A CallerID stand alone serial device
- Multiple Lines:
The server supports multiple phone lines using line labels.
A supported phone line can be any combination of the following:
- one phone line from a modem or serial device
- multiple VOIP telephone lines from a SIP gateway
- multiple phone lines from a WC or NCID gateway
- one phone line from a YAC gateway
- Distinctive Ring Lines:
If the modem supports distinctive ring for different telephone numbers,
the server will obtain the telephone line indicator from the modem and
send it to each connected client. The client displays the line indicator
with the Caller ID information in its history window.
- Line Labels:
Line labels can be aliased in the ncidd.alias file.
Line labels are generated for all phone lines monitored:
- A modem or serial device does not generate a line label unless it is in distinctive Ring mode. If no line indicator is received,
the line label is set to a '-' which tells clients to not display it.
- The SIP and NCID gateways generate a line label that is the last 4 digits or characters of the called phone line.
- The RN gateway uses the least significant 4 digits of the Remote Notifier 16 digit identification.
- The WC gateway generates a 4 character line label such as WC01, where the 0 is the WC device number (0-9) and the 1 is the device line number (1-8).
- The YAC gateway generates a line label called 'YAC'.
- Multiple Caller ID Systems:
The server also supports modems that output RING but no CID. This provides a visual indication of incoming calls.
The server supports Caller ID systems that send:
- NUMBER and NAME
- NUMBER and MESG or NAME
- NUMBER without NAME or MESG
- NAME withoug NUMBER or MESG
- NAME without NUMBER when call is PRIVATE or BLOCKED
- Call Hangup:
The server can automatically terminate a telephone call if the name or number is in the blacklist file. A whilelist file
can override entries in the blacklist file. A modem is required to hangup the call.
The hangup feature features two modes of operation: a normal hangup and FAX answer before hangup.
This optional feature can be used if either a gateway or modem obtains the Caller ID for the server.
Call Hangup information is sent to the clients.
- Outgoing Calls:
If a SIP gateway provides Caller ID and outgoing call information to the server, outgoing call information is sent to the clients.
The Whoz Calling hardware (used in place of a modem) also provides Caller ID and outgoing call information to the server. It
supports 2, 4 or 8 lines depending on the model.
- No Caller ID support:
If the telco does not supply Caller ID or if the modem does not support it, the server will act as a visual call indicator
using a modem that indicates RING. It will keep a record of the date and time of each call, but not the caller name or phone number.
This feature can be turned off.
- Multiple Gateways:
Multiple gateways are supported, even if they are the same type.
- Multiple Clients:
Multiple clients are permitted, each computer, TiVo, and supported device on the
network can receive CID information from a single server or multiple servers using a ncid2ncid gateway.
- Name, Number and Line Aliases:
For Example: "Wireless Caller" becomes "John on Cell" when using the "alias NAME if NUMBER" type.
- alias both NAME and NUMBER
- alias NAME
- alias NUMBER
- alias NAME if NUMBER
- alias NUMBER if NAME
- alias LINE LABEL
- Call Logging:
The server keeps a log of all callers. This Caller ID log is normally sent to each client at connect.
The log file permits local or remote tracking of who called, when, and which phone line.
- Shared Modem:
The server permits other programs to use the modem for outgoing calls, provided they use a modem lock file to indicate use.
- Message Broadcasting:
The server accepts a single line message from a client and sends it to all connected clients. Other programs such as netcat can be used to
send a message. Telnet needs to be configured and is not recommended. Here is an example shell script that creates a 10 minute food timer:
- sleep 600; echo "MSG: Food Ready" | nc -w1 localhost 3333 > /dev/null
- Client Jobs:
The server can accept jobs from its clients. The current jobs implemented are:
- add, modify, or remove aliases from the ncid.alias file using the ncidutil script
- add or remove entries from the ncidd.blacklist and ncidd.whitelist files using the ncidutil script
- update the cidcall.log file using the cidupdate script
- reload ncidd.alias if the hangup option is enabled reload the ncidd.blacklist and ncidd.whitelist files
- resend the cidcall.log to the client that requested it
- Universal Client:
The client, ncid, can do the following:
The GUI version of the client, can do the following:
- display the NCID Caller ID or message using its GUI (default)
- display the NCID Caller ID or message in a terminal window
- send the the NCID Caller ID or message to a external program or output module
- send a single line message to all connected clients, using the server to broadcast the message.
The client GUI display can be set to the following values for a specific telephone number display:
- change its fonts, size, and position on the screen
- display the date in its history window as 12 hour or 24 hour
- send Client Jobs to the server
The client GUI displays the following identifiers for calls and messages:
- US: United States phone number format
- UK: United Kingdom phone number format
- SE: Sweden phone number format
- HR: Croatia phone number format
- DE: Germany phone number format
- NONE: Phone number not formatted
- CID: incoming call
- OUT: outgoing call
- HUP: blacklisted call hangup
- BLK: blacklisted call blocked
- MSG: message from a user or NCID
- PID: Caller ID of a call to a smart phone
- NOT: Notice of a smart phone message
The client also has a separate output package for a TiVo:
- ncid-alert: send NCID call or message desktop notifications
- ncid-initmodem: signals ncidd to reinitialize the modem if the call does not show the Caller ID
- ncid-mythtv: display Caller ID on MythTV using
Mythutil with the
- ncid-notify: diaply Caller ID on iOS and Android devices, requires registration at Prowl and their app for iOS or
registration at Notify My Android (NMA) and their app for Android
- ncid-page: send Caller ID as a page or cell phone instant message using email
- ncid-popup: diaply Caller ID on a popup window using Gnome or KDE
- ncid-samba: send Caller ID as a Windows message
- ncid-skel: echo Caller ID in a terminal window, used as an example for writing output modules
- ncid-speak: speak the caller's name on a Linux system using festival
- ncid-tivo: display Caller ID on TiVo using text2osd
- ncid-wakeup: wakeup a sleeping X-Windows display
- ncid-yac: send Caller ID to YAC listeners
Output modules are mostly simple shell scripts, and are easy to add.
Gateways are used to obtain Caller ID information from the network.
- out2osd: display text on TiVo
Configuration, Data, and Support Files:
The NCID gateway, obtains Caller ID information and messages from either one or more NCID servers and inputs the
data into another NCID server to send to all its clients. Line labels are used to distinguish which telephone
line received the call.
Android smart phone app 'Remote Notifier' to NCID. Sends Caller ID and messages from a smart phone to the NCID server.
rn2ncid setup contains instructions for configuring rn2ncid.
The SIP gateway, obtains the VOIP Caller ID from
SIP Invite. It formats the information and sends it to the server as
a CALL message. It also sends a CALLINFO message when it sees a CANCEL or BYE
packet. The CALL and CALLINFO messages also indicate whether the call was incoming or outgoing.
Outgoing calls are supported on some SIP systems.
sip2ncid setup contains instructions for configuring sip2ncid.
Sip2ncid can test for SIP packets on specific ports to find out if your LAN has SIP packets.
If you have VoIP and no packets, you probabily need to reconfigure your LAN.
ATA (Analog Terminal Adapter) contains instructions for configuring your LAN
The Whozz Calling gateway obtains the Caller ID and call information from a Whozz Calling Ethernet Link device.
Depending on the model, it can take the place of 2, 4, or 8 modems and provide much more information.
wc2ncid setup contains instructions for configuring wc2ncid.
The YAC gateway listens for CID information or a user message from a YAC server. It formats the
CID information and sends it to the NCID server as a CID message.
Normally used to obtain Caller ID from a modem running under windows.
yac2ncid setup contains instructions for configuring yac2ncid.
The server, client, client modules, and gateways have configuration files that set most options:
- ncidd.conf: server configuration file
- ncidd.alias: server alias file
- ncidd.blacklist: server blacklist file
- ncid.conf: client configuration file
- conf.d/ncid-MODULE.conf: configuration file for a client output modules
- ncidrotate.conf: ncidrotate configuration file
- ncidsip.conf: configuration file for ncidsip
- ncid2ncid.conf: ncid2ncid configuration file
- rn2ncid.conf: wc2ncid configuration file
- sip2ncid.conf: sip2ncid configuration file
- wc2ncid.conf: wc2ncid configuration file
- yac2ncid.conf: yac2ncid configuration file
- ncidd.log: server log
- cidcall.log: server call log
- ciddata.log: optional modem or device and gateway input log
- ncid2ncid.log: NCID gateway log
- rn2ncid.log: SIP gateway log
- sip2ncid.log: SIP gateway log
- wc2ncid.log: SIP gateway log
The current ring count is sent to the clients at each ring. After
ringing stops, a ring count of zero is sent. This permits a output
module, or external program, to be called at a specified ring or
after ringing stops. When ringing stops, it indicates either a hangup
or an answer. Ring count is only supported by modems that
indicate RING. The NetCallerID device and the gateways
do not support ring count. However, some gateways do support a ring count
of -1 or -2 to indicate the end of a call.
The SIP and WC gateways will indicate end of call; a hangup with no answer or a hangup after answer.
The NCID Universal Client is written in the tcl/tk language. UNIX
and Linux versions, if not included with your distribution,
can be obtained from
Windows versions are available from
Macintosh versions are available for
- If the ring count is set to -1, there was a hangup with no answer.
- If the ring count is set to -2 there was a hangup after answer.
The Windows client is an executable, made using
so the tcl/tk language does not need to be installed,
unless you rather use ncid.tcl instead of ncid.exe.
Release Notes & Released Files
NCID client GUI with outgoing call (OUT), auto hangup (HUP), and incoming calls (CID).
NCID client GUI (resized a bit) displaying a received message and sending a message.
NCID client GUI displaying the alias screen to add a alias for a name if the number matches.
NCID client GUI displaying line label descriptions.
NCID client GUI displaying font options).
Android smart phone showing a NCID message sent by the ncid-page output module.
Selecting the phone number will call it.
Android smart phone showing NCID messages sent by the ncid-notify output module.
iPod showing NCID messages sent by the ncid-notify output module.
iPhone showing a message sent by the ncid-notify output module.