I would like to receive caller ID using a Raspberry Pi. I started off trying to use a winModem which failed epically. I then purchased a Trendnet TFM-56U1 which has also failed.
The TFM-56U1 modem works fine in all regards except for receiving caller id. The first one I had would only report caller id about 1 time in 10. I returned it and the second won’t report caller id at all.
After contacting Trendnet, their response is this modem will not support caller id (even though it obviously did at one time based on all the people using it specifically to obtain caller id).
The US Robotics model 5637 modem purportedly supports both Linux and caller ID, but at $40+, it is really too expensive for my testing since in the long run it won’t be my final solution anyway.
So I went looking for some device that would serially transmit caller ID. I found it in this LinkSprite Caller ID Module:
Which I purchased from here for $30.
http://store.linksprite.com/pstn-caller-id-module-for-arduino-pcduino/
Yes, it is not much less than the USR modem, but I’m thinking the HT9032 chip it is using may well be in my final design.
Resources
In getting this to work, I referred to the following resources:
Wiring
I used an FTDI breakout board like this to interface the CID unit to a PC’s USB port:
The FTDI board is wired to the CID as follows:
Now connect the USB cable to your PC. It should find the drivers w/o much trouble if you used any FTDI device in the past. If not, you will have to locate the drivers.
Once the drivers are installed, the CID boards is accessed as a serial port:
Now connect a terminal emulator of your choice to the COM port using 1200 baud:
Once you connect to the CID board, garbage is going to start printing. That is OK. Well, appears to be normal anyway. According to the data sheet, the output line is held high when there is no data. That seems to translate to garbage being transmitted.
Here is what I see between calls:
My terminal emulator displays control characters, so I can see *everything* being transmitted. For example NU = null or 0x00.
Once I receive a call I see:
Removing the ‘garbage’, I’m left with:
Here is a break down of the call data:
UUU...UUU
When call data is about to be presented, the CID board will transmit alternating 010101… for 300 bits. Those 01’s become a string of ‘U’s.
3/4
The CID board then transmits 180 1’s. For the serial port, this may end up as one or more random characters.
When the CID board outputs a 0x80, that is the beginning of the actual data.
ASCII HEX Dec Len Pkt Position Desc <80> 80 128 1 N/A Start Packet ' 27 39 1 N/A len of entire CID string (start with next byte, exclude checksum at end) <sh> 01 1 1 0 indicates packet is date/time <bs> 08 8 1 1 len of date/time packet date/time 8 2 05221609 <sx> 02 2 1 10 calling line packet (e.g. phone # of caller) <lf> 0A 10 1 11 length of phone# packet phone# 10 12 8005551212 <bl> 07 7 1 22 name packet <si> 0F 15 1 23 length of name name 15 24 wireless caller < 3c 60 1 39 checksum
After this packet data, the CID board will begin transmitting garbage again.
Hey Big Dan,
I’m also interested in getting caller id info on a Raspberry PI. Actually I want to go father and make an answering machine. Do you think the LinkSprite Caller ID Module can also pass the voice through to be captured as binary data?
Thanks, Lou
Hi Lou,
Unfortunately it is designed to provide only CID. I am having the same issue as I’m going to want to be able to access the actual call as well to listen to DTMF signals.
The chip being used, the HT9032C, can be used in a DAA (data access arrangement) circuit which will provide what you probably want. I have found this post to be useful in explaining how this all works: http://brohogan.blogspot.com/2009/12/telephone-interface.html
After reading that and many other references, I have purchased a couple of Clare CYG2020 DAA chips which should provide full access to the phone line (there are signals for caller ID, ring, and ON HOOK, as well as the ability to xmit/receive sound. The data sheet can be found here: http://pdf.datasheetcatalog.com/datasheet/clare/CYG2001.pdf
Finding someone that will sell it to you is more of a trick. The nice folks at http://www.verical.com pointed me to http://parts.arrow.com/item/detail/ixys/cyg2020#RnpE where I was actually able to purchase a couple.
I still haven’t tried to use this chip. Summer brings a lot of other activities!
Hi Dan,
Thanks for the reply. The Clare CYG2020 sounds good. I may buy one and see what I can do with it but wiring up chips like this will be a new experience for me. So if you make any progress, please let me know. Writing the code to control things is where I know what I’m doing. I will probably use Squeak Smalltalk.
Lou
Hey, would you mind taking a couple of pictures from the top and bottom of the board so that I can replicate it? The guys at linksprite don’t sell them anymore, so If I’d have a couple of pictures of the pcb I could give it a go. Regards.
I sent you an email
Hi Dan, thanks for posting this, it help me to figure out why the board I have didn’t work (the tx pin labeled rx) – should have realized that – shame on me. Also, you can order them (in 2020) here: https://www.aliexpress.com/item/32957714071.html?spm=a2g0s.9042311.0.0.27424c4dYlkyoK
the one I got had a HT9032D chip
Very good to know. I should mention for my final version I ended up using a tiny modem: http://catalog.cermetek.com/ProductDisplay.cfm?id=67175&cid=147. Not only does this provide Caller Id, it allows me to go onhook/offhook. And it’s only slightly more expensive.
Sounds great, I was actually expecting the HT9023 to support picking up the phone and hanging it up – but of course, it doesn’t. So I’m very interested in the ‘tiny modem’ you’ve used – do you have another link (one above seems not to be working) or more details?
The mfg website is http://www.cermetek.com. Datasheet for the modem is at http://www.cermetek.com/Catalog/Low-Speed-Modems/DataSheet/CH1724C.pdf.
I use it in this device: https://bigdanzblog.wordpress.com/2017/12/18/scammer-jammer/
Thanks again. I’ve just sent an email to their Canadian distributor (as that is where I’m from) – also their website is back up now :-). Again, thank you so much for your help Dan.