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 CID to its clients.
The server can also automatically hangup up a call if the name or number is in the blacklist file.
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 fo incoming calls and possibly information on outgoing calls. Multiple
gateways are supported and can be used along with a modem or serial device. If the 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 the CID 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
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:
- Modem: 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. This optional feature can be used if either a gateway or modem obtains the Caller ID for the server.
Call Hangup information will be sent to the clients.
- Outgoing Calls:
If a SIP gateway provides Caller ID and outgoing call information to the server, outgoing call information will be sent to the clients.
- 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
- 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.
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.
Setup-sip2ncid 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.
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.
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.
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.