Endpoint

Projects and software by Matt Collinge @ www.mattcollinge.co.uk

Caller Id

with 3 comments

Introduction

There was a posting on Digg.com which mentioned Caller Id on the Xbox (in XBMC) and that sparked my interest in seeing whether it was possible to set it up at home. The reason it’s not particular widespread is that a) you used to have to subscribe to Caller Id in the UK (£5 a quarter?), and b) only a limited selection of modems support Caller Id.

BT now give the Caller Id service away for free as part of their Privacy options, so there’s no excuse not to enable it. Finding a modem that supports it is a different matter! ;-)

Supported Modems (UK)

To get caller id off the line & into the PC requires a modem that supports Caller Id. Theres a decent list of compatible modems available here. The one I singled out first was the US Robotics 56K Faxmodem v.92 Model 5630B. I bought one off eBay but unfortunately it suffered from the DSR Drop problem and I never did get a permanent fix :(

I’m now using an external Pace 56 Voice Modem (firmware drivers available here and modified modem driver that supports calller id in the UK here).

First Attempt (with the US Robotics modem)
Once hooked up & drivers from the accompanying CD-ROM were installed, I gave the landline a call from my mobile. Unfortunately the caller id software (YAC) didn’t identify the number.. so I tried again a few times without any luck. At first I thought it was a problem with YAC, but then I checked the modem log…

06-20-2006 19:05:01.252 – Waiting for a call.
06-20-2006 19:05:01.262 – Send: at#cid=1<cr>
06-20-2006 19:05:01.382 – Recv: <cr><lf>OK<cr><lf>
06-20-2006 19:05:01.382 – Interpreted response: OK
06-20-2006 19:05:01.392 – Send: ATS0=0<cr>
06-20-2006 19:05:01.512 – Recv: <cr><lf>OK<cr><lf>
06-20-2006 19:05:01.512 – Interpreted response: OK
06-20-2006 19:05:50.182 – Recv: R
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: ING<cr><lf><cr><lf>
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: D
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: ATE = 0
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: 6
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: 20<cr><lf>TIM
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: E
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: = 1905
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: <cr>
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: <lf>NMBR =
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv:
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: 0883933
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: 5
06-20-2006 19:05:50.182 – Unknown Response
06-20-2006 19:05:50.182 – Recv: 612<cr><lf>
06-20-2006 19:05:50.182 – Unknown Response
(note, mobile number in the log has been changed to 08839335612)

Modem Log; “Unknown Response”

The important thing highlighted in the log are the lines saying ‘Unknown Response’. This means that the incoming string (from the modem) isn’t matching up with what the modem driver is expecting.

I found all this out by reading a really detailed page off the Talking Caller Id site. It goes through the steps you can take to correct the modem driver so that the incoming strings will be resolved correctly.

Modifying the Modem Driver

The solution was to use the sound advice at the Talking Caller Id site which basically says that the modem driver doesn’t see the <cr><lf> being sent by the modem as purely infomational text. To tell the driver to ignore them I added a couple of lines to the [CallerID] section of the modem driver, e.g.

[CallerID]
HKR,,CallerIDOutSide,,O
HKR,,CallerIDPrivate,,P
HKR,,VariableTerminator,,<cr><lf>
HKR,EnableCallerID,1,,”AT#CID=1<cr>”
HKR, Responses, “<cr>”, 1, 01, 00, 00,00,00,00, 00,00,00,00
;00
HKR, Responses, “<lf>”, 1, 01, 00, 00,00,00,00, 00,00,00,00
;00

HKR,Responses,”<cr><lf>DATE = “,1,93,00,00,00,00,00,00,00,00,00
HKR,Responses,”MESG = “,1,97,00,00,00,00,00,00,00,00,00
HKR,Responses,”NAME = “,1,96,00,00,00,00,00,00,00,00,00
HKR,Responses,”NMBR = “,1,95,00,00,00,00,00,00,00,00,00
HKR,Responses,”TIME = “,1,94,00,00,00,00,00,00,00,00,00

If you’ve got the Pace 56k External Modem then here’s the driver file to save you the trouble of modifying it yourself.

Second Attempt (after modifying the driver)

After reinstalling the modem driver the log file stopped complaining about Unknown Responses and YAC popped up giving the correct number.


(example popup from YAC)

YAC Listeners in Windows

Now that YAC can identify the call I’ve installed the YAC listener on other computers on my network / When a call is recieved, the YAC server sends Caller ID to all the registered listeners. Simple!

Caller Id in Xbox Media Center (XBMC)

There Caller Id script for the awesome Xbox Media Center (XBMC) that can receive YAC broadcast messages so that they’re overlaid on the TV screen as you watch a film.

The issue I had with the original script (CallerId v1.1) was that it always span up the Xbox HD whenever a call came in. To counter that, I created the CallerId Lite script, but now that XMBC no longer keeps the HD spun down I’ve revisited the original and added some new features;

  • Pause playback when a call is received
  • When YAC passes a name, display that rather than the number
  • Display an initialisation message when the script starts
  • Code to allow it to run with the XBMC emulator in Python on a PC
  • Better logging so it’s easier to debug when things go wrong ;-)

You can find the finished script (CallerId v1.2) in the Communications section of the XBMC Script installer (from the small arrow on the Dashboard), or from XBMCScripts.com.

Once you’ve installed it, you can edit the script to enable/disable it’s features (there’s no settings option within XBMC). Configurable options are;

  • Pause playback on incoming call (default = on)
  • Show initialisation message when script starts (default = on)
  • Enable logging (default = off)
  • Display a picture of the caller (assuming there is a .jpg with a name to match the number)
  • Delay (in seconds) for displaying the dialog (default = 6)
  • Server type… YAC (default), CID Sentry, Impulse

YAC RSS Feeds

After the success of getting YAC to distribute the phone number of incoming calls to devices on my network (including my Xbox) I wondered how I could get notification on my desktop at work. YAC broadcasts on a port, and that doesn’t gel with corporate firewalls.. but it does create a log:

****************************************
YAC 0.16 Started: 25 June 2006 – 10:13:57
Running in Server mode.

***** INCOMING CALL: 25 June 2006 – 18:04:28 *****
NAME: YAC Test Call
NUMBER: (425) 555-1212

***** INCOMING CALL: 25 June 2006 – 18:07:58 *****
NAME: YAC Test Call
NUMBER: (425) 555-1212

Since I have a webserver running at home, putting this log into the public folder of the web server made it available wherever I was in the world. This still isn’t ideal; I’d rather not have to check whether I’ve missed any important calls.

RSS feeds seemed the logical progression. I have a few RSS readers installed, and they’ll poll at whatever duration you specify. YAC doesn’t output an RSS feed and I was pulling my hair out trying to compile the YAC source even without modifications!

Instead of modifying YAC, I simply wrote a small PHP script to parse the log file and strip out what I needed. Feed Creator can then be used to create a quick RSS feed from the data.

Here’s the finished script. Enjoy!! :-D

Spoken Caller Id

On my gaming box, the standard YAC notifications for a new call won’t be seen whilst I’m actually in a game.

Having the option for the PC read out the caller information is much more ideal. YAC in it’s current incarnation (v0.16) doesn’t support speech, but fortunately the author has made the source code available under the GPL :-)

In this post, I show you how I extended YAC to execute a script when an incoming call is detected. This script can do anything you like, but in my case it’s reading out the caller id info using text-to-speech. The post includes downloads and source code for this customised version of YAC which I’m calling v0.17.

Donations Welcome!

If you find any of this info useful, a small donation via PayPal (no matter how small) would really make my day!

Make payments with PayPal - it's fast, free and secure!

Written by Matt

June 26, 2006 at 10:55 am

3 Responses

Subscribe to comments with RSS.

  1. I really like the CallerID script for XBMC, but it seems that it only works with 4:3 displays. On a 16:9 screen, the dialog is distorted. Is this something you would consider fixing? Thanks!

    b1sh0p

    December 20, 2007 at 11:46 pm

  2. b1sh0p and I took this offline. The script works on 4:3 and 16:9 TVs, but he’s upped the Xbox resolution (to output 720i I think). He’s going to look into modifying the script to work properly with the display settings he’s using. I’m still on a CRT and the higher resolutions that the Xbox can output might be a pain to test.

    Matt Collinge

    December 24, 2007 at 8:52 pm

  3. […] on how to set up your PC to detect caller ID (for free, apart from the cost of the modem) go here: http://mattcollinge.wordpress.com/projects/caller-id/ The guide includes how you can get the Caller ID into an RSS feed, make your PC read/speak the […]


Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: