Well, recently, I've been toying around with caller ID. I eventually came up with a little set of C and VB apps to both listen on the modem for CID data and broadcast it, and receive the broadcast and present it to the user.
CIDServ is the server for Unix. It is written in C, and I've only tested it with the supra 56i modem (though any modem supporting raw CID data output should work).
CIDClient is the VB client for Win32 that listens for a UDP message, parses it, and pops up a window with the information.
XCid (in the cidserv distribution) is written in C, and uses plain old Xt. It does the same thing as the Win32 client, with less prettiness.
Careful with the telemarketer button, though; pressing it instructs CIDServ to tell the modem to pick up for 2 seconds and hang up.
With USE_XOSD defined, xcid will display usage on incorrect arguments.
Download CIDServ 0.2. XCid now can use xosd, and there is now a cnd_mgetty program for mgetty.
Download CIDServ 0.1. XCid has been tested on both FreeBSD and Linux, cidserv only on FreeBSD.
Download CIDClient 0.1 for windows. Source is included in the distribution. Requires VB runtimes, which setup will download for you if you need them.
Try making sure the netmasks and broadcast addresses are set properly, aside from the correct entries being present in the cidserv configuration file. This applies to both Unix and Windows.