Network Caller ID

Network Caller ID (NCID) is an open-source client/server network Caller ID (CID) package.

NCID consists of a server called ncidd (short for NCID daemon), a universal client called ncid, and multiple client output modules and gateways. The server, ncidd, monitors either a modem, device or gateway for the CID data. The data is collected and sent, via TCP, to one or more connected clients.

Many devices, including smartphones, and services can detect caller ID information. An NCID gateway collects CID data from these other sources and passes it on to the main NCID server. From there the CID data is distributed to all connected clients, just like CID data collected from a traditional modem. One example of a non-modem device is a VoIP (Voice over IP) service that collects CID data as SIP packets. Another example is the Whozz Calling series of Ethernet Link devices that obtain CID information from multiple POTS (Plain old telephone service) lines.

NCID supports messages. Clients can send a one line message to all connected clients.

The client can also be used to push CID to other computers and devices with output modules.

Various clients are available on numerous platforms, including Android, iOS, Linux, macOS and Windows.

Protocol
The NCID protocol is simple, human-readable ASCII text consisting of field pairs—a field label and its field data—using the asterisk character as a delimiter. Transmission between the NCID server and its clients is done via TCP/IP, usually over port 3333. Additional field pairs have been added as the NCID server has been enhanced with new features and support for more devices. Here is an example of the minimum of caller ID data.


 * CID:*DATE*09182012*TIME*1320*LINE*POTS*NMBR*4075551212*NAME*John on cell*

List of input sources
Hardware that can supply caller ID data to the NCID server, either by the NCID server accessing the device directly (RS232 serial port or USB) or indirectly via NCID Gateways (scripts and programs included with the NCID package).

Modems
AT-compatible modems expect Telcos to send caller ID data as either Single Data Message Format (SDMF) or Multiple Data Message Format (MDMF). The modem then decodes the data stream into human readable text, which the NCID Server then parses. If a modem supports it, the NCID Server can also decode the raw SDMF or MDMF data stream.


 * Note A: RING means ring only, no Caller ID, no hangup. CID means Caller ID and simple hangup. FAX and VOICE mean their respective hangup options. Unless otherwise noted, the presence of VOICE indicates the modem will use the default NumberDisconnected.rmd (raw modem file) distributed with NCID.
 * Note B(1): Zoom and TRIXES. Prior to NCID version 0.89, FAX hangup was not a configurable option, and two blog/forum posts (here and here) have patches to add FAX hangup. Starting with NCID version 0.89, FAX hangup is now a configurable option so the patches are no longer necessary. The NCID developers have been unable to contact the author at Murphy 101 Blog to have the blog updated.
 * Note B(2): Zoom 3095 USB modems appear to be particularly sensitive to power levels. A common reported symptom is having to unplug and re-plug the modem into the USB port to get it to work. A more detailed discussion can be found here.
 * Note C: US Robotics 5637. Tested with Fedora, Raspberry Pi and Ubuntu. Connected to the UK British Telecom and US caller id systems. FAX hangup will not hangup the line, will disconnect the modem and will abort ncidd. Several users report problems using this modem with the Raspberry Pi in particular.
 * Note D: 3Com 3CP2976. Linux utility lspci reports "04:01.0 Serial controller: 3Com Corp, Modem Division 56K FaxModem Model 5610 (rev 01)".
 * Note E: Works on several Linux distros. Confirmed to work on Raspberry Pi 3 running Ubuntu Mate and Pi 3-B Raspbian Jessie—but does not work if the Raspberry power supply can't do 2 amps
 * Note F: Works on several Linux distros. Curiously, StarTech says it has a Conexant CX93010 chip, but the one tested responds with CX93001.
 * Note G: CallerID intentionally disabled by vendor in EEPROM patch. CallerID can be reenabled in any CX93001-based modem via simple RAM patch after  command:   for Bell FSK countries,   for V23 FSK (Japan),   for ETSI FSK (France, Italy, Spain),   for SIN227 (UK),   for ETSI DTMF. Sometimes additionally   may be required.
 * Note H: This modem was released October 12, 2005 and discontinued in September 2009. It does not work on any modern version of macOS or Linux.

NIETO

 * Thomas Glembocki's entry won Honorable Mention in the 2007 Circuit Cellar Wiznet Ethernet design contest for his project NIETO: An NCID and NTP Client