Operating Systems
- Linux: server, client and all CID gateways - email2ncid, ncid2ncid, obi2ncid, rn2ncid, wc2ncid, xdmf2ncid, yac2ncid and sip2ncid
- Macintosh: server, client and all CID gateways
- FreeBSD: server, client and all CID gateways
- Windows: client only unless Ubuntu or Cygwin is installed
- Ubuntu on Windows: server, client and all gateways
- Cygwin on Windows: server without modem or serial device support, client and all gateways
Server Features
Supported Caller ID Input:
The server supports up to five modems or serial devices, and supports multiple gateways with and without a modem or serial device.- USB or serial Modems: Must support Caller ID
- Serial Device: Whozz Calling, TCI (Tel-Control, Inc) or NetCallerID
- USB Device: CTI Comet USB device or Holtek HT9032D based PSTN Caller ID module
- Gateways: OBIHAI Devices, NCIDAndroid, Artech AD102 Device, CIDEasy Device, Email, Multiple NCID Servers, Android Remote Notifier, SIP, Whozz Calling Devices, CTI Comet USB device, Holtek HT9032D based PSTN Caller ID module and YAC
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, NetCallerID serial device, CTI Comet USB device or Holtek HT9032D based PSTN Caller ID module
- multiple phone lines from a Whozz Calling or TCI serial device
- one cellular phone line from an Android phone gateway
- multiple VoIP telephone lines from a SIP gateway
- multiple VoIP telephone lines from a ObIHAI gateway
- multiple phone lines from a WC or NCID gateway
- one phone line from a YAC gateway
Telephone Number Format and Information:
The servers supports a country based format of the telephone number and additional number information:- The telephone number format is determined by the country abbreviation in the ncidd.conf file.
- The additional number infomation is the calling country, device, location and carrier.
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 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'.
- Line labels can be aliased in the ncidd.alias file.
Multiple Caller ID Systems:
The server supports Caller ID systems that send:- NUMBER and NAME
- NUMBER and MESG or NAME
- NUMBER without NAME or MESG
- NAME without NUMBER or MESG
- NAME without NUMBER when call is PRIVATE or BLOCKED
Call Hangup:
The optional automatic hangup feature can be used if either a gateway or a modem obtains the Caller ID for the server. A modem is required to hangup a call. Call Hangup information is sent to the clients.
The server automatically terminates a telephone call if the name or number is in the ncidd.blacklist file but not in the ncidd.whitelist file. The whilelist file overrides entries in the blacklist file.
The hangup feature has three modes of operation: Hangup, FAX Hangup which generates FAX tones before hangup and Announce Hangup which plays a message before hangup.
FAX hangup requires a FAX modem. If FAX hangup is selected without a FAX modem, the server will revert to normal hangup with a warning in its log file.
Announce Hangup requires a Voice modem. If Announce Hangup is selected without a voice modemor if the announcement file is missing, the server will revert to normal hangup with a warning in its log file.
The server can do a hangup in two ways, either together or separate:
- Internal hangup - uses the blacklist and whitelist files.
- External hangup - currently uses shell scripts and the whitelist file. There are multiple hangup scripts and the user can create his own. The script determins if the server should hangup on the call, this allows a Internet site to determine calls not wanted. The script can be any scripting or compiled language.
The server can pause hangup when requested by a client. Hangup can resume when requested by a client or by a timeout
Outgoing Calls:
If a SIP gateway provides Caller ID and outgoing call information to the server, outgoing call information is sent to the clients.
If a OBI gateway provides Caller ID , outgoing call information is sent to the clients.
Certain models of the Whozz Calling hardware (used in place of a modem) also provide Caller ID and outgoing call information to the server. The hardware 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 and supported device on the network can receive Caller ID and messages from a single server.
Each client can even receive Caller ID and messages from multiple servers using an ncid2ncid gateway.
Name, Number and Line Aliases:
- 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 in the cidcall.log file. 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
- dial a number requested by a client
- pause hangup for the requested time period by a client
Plugins:
Server plugins can start external programs with variable data. The current plugins are:-
Plugin Menu
- Hello World Exaample Context Menu
- US Number Info
- Display ncid variables
Universal Client Features
The client, ncid, 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 NCID Caller ID or message to an external program or output module
- send NCID specific Call information to a plugin for use in a distributed, or user defined, script or program
- send a single line message to all connected clients, using the server to broadcast the message
- send a Client Job to the server (see server list of Client Jobs)
- change its fonts, size and position on the screen
- display the time in its history window as 12 hour or 24 hour
- display date in its history window in multiple formats
- select columns to display in the history window
- search for a name or part of a name in the name column in the history window
- select call and message types to display
- select line IDs to display
- manually dial a telephone number or dial a telephone number from a line in the history window
- pause the server hangup for up to 10 hours
- resume a paused before the pause ends
- send a single line message to all connected clients, using the server to broadcast the message
- send Client Jobs to the server
- displays the telephone number in a format determined by the calling country
- displays the calling telephone country, device, location and carrier
- BLK: Blacklisted Call Blocked
- CID: Incoming Call
- HUP: Blacklisted Call Hangup
- MWI: Voicemail Message Waiting
- OUT: Outgoing Call
- PID: Caller ID from a Smart Phone
- PUT: Outgoing Smart Phone Call
- RID: Ringback Call
- WID: Call Waiting Caller ID
- MSG: Server Message
- NOT: Notice of a Smart Phone Message
- 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 MythNotification protocol
- ncid-notify: display 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-kpopup: display Caller ID on a popup window using Gnome or KDE
- ncid-mysql: stores NCID data in a MySQL or MariaDB Database
- 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-wakeup: wakeup a sleeping X-Windows display
- ncid-yac: send Caller ID to YAC listeners
- Plugin Menu: Hello World Example
- Context Menu Plugin:Check NANP Number
- Context Menu Plugin:Display ncid variables
Gateway Descriptions
Gateways are used to obtain Caller ID information from (usually non-modem) devices on the network.- artcch2ncid:
The artech gateway is designed for the ARTECH AD102 device. The device captures CID data for incoming and outgoing
calls on a POTS line. It also keeps track of the phone line state.
The artech2ncid setup section contains configuration information. - cideasy2ncid:
The CIDEasy gateway sends Caller ID messages in a modified MDMF format. Model-E and Model-F are supported. Model-E
has two telephone line inputs labeled A and B. Model-F has four telephone line inputs labeled A, B, C and D.
The cideasy2ncid setup section contains configuration information. - email2ncid:
The email gateway converts either an email or an email subjet line to an NCID message and sends it to the server.
It is called from the user's crontab and uses the $HOME/.procmailrc file to select the email to send to email2ncid.
The email2ncid setup section contains configuration information. - obi2ncid:
The obihai gateway obtains Caller ID information from a OBi VoIP device. It formats the information and sends it to the server as a CALL message.
It also sends a CALLINFO message when the call ends. The CALL and CALLINFO messages also indicate whether the call was incoming or outgoing.
The obi2ncid setup section contains configuration information. - ncid2ncid:
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.
The ncid2ncid setup section contains configuration information. - rn2ncid:
This gateway sends Caller ID and messages from the Android smartphone app 'Remote Notifier' to the NCID server.
The rn2ncid setup section contains configuration information. - sip2ncid:
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.
The sip2ncid setup section contains configuration information.
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 probably need to reconfigure your LAN.
The ATA (Analog Terminal Adapter) section contains instructions for configuring your LAN. - wc2ncid:
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 wc2ncid setup section contains configuration information. - xdmf2ncid:
The XDMF gateway obtains Caller ID and messages from an SDMF or MDMF USB device (or modem) and
sends the information to the NCID server. The server then sends the CID information to the NCID clients.
The xdmf2ncid setup section contains configuration information. - yac2ncid:
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 yac2ncid setup sections contains configuration information.
Configuration, Data and Support Files:
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
- ncidd.whitelist: server whitelist file
- ncid.conf: client configuration file
- conf.d/ncid-MODULE.conf: client module configuration file
- ncidrotate.conf: ncidrotate configuration file
- artech2ncid.conf: configuration file for artech2ncid
- cideasy2ncid.conf: configuration file for cideasy2ncid
- email2ncid.conf: configuration file for email2ncid
- ncidsip.conf: configuration file for ncidsip
- obi2ncid.conf: obi2ncid configuration file
- ncid2ncid.conf: ncid2ncid configuration file
- rn2ncid.conf: wc2ncid configuration file
- sip2ncid.conf: sip2ncid configuration file
- wc2ncid.conf: wc2ncid configuration file
- xdmf2ncid.conf: xdmf2ncid configuration file
- yac2ncid.conf: yac2ncid configuration file
Log Files
Server:- ncidd.log: server log
- cidcall.log: server call log
- ciddata.log: optional modem, device or gateway input log
- ncid-<server address>.log: client log
- obi2ncid.log: OBi gateway log
- ncid2ncid.log: NCID gateway log
- rn2ncid.log: RN gateway log
- sip2ncid.log: SIP gateway log
- wc2ncid.log: WC gateway log
- xdmf2ncid.log: XDMF gateway log
Ring Count
The current ring count is sent to the clients at each ring. After ringing stops, a ring count of zero is sent. This permits an 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 and gateways that indicate RING.
The NetCallerID device does not support ring count.
Some gateways support a ring count of -1 or -2 to indicate the end of a call.
Hangup Detection
The SIP, WC and OBI gateways will indicate end of call; a hangup with no answer or a hangup after answer.- 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.