hello,
I'm getting ready to set up ncid on a pi. I've got the zoom modem. It has only one rj11. In the day, my modems had a line jack and a pbone jack.
I can understand how ncid+modem can answer a call and hang up on it if it's blacklisted. What I don't understand is what happens if the incoming call is allowed. The modem/computer must be connected in parallel to my POTS line.
That would mean the the phone and the modem would both ring, right?
1 - what prevents someone from picking up the phone before ncid is done screening it?
2 - How do you prevent the phone from ringing until ncid has decided that the call is allowed, and then have the phone ring?
It woild seem to me that you would need a modem with 2 jacks.
There is obviously something that I'm missing but this subject, which seems critical to me, is not discussed anywhere that I can find.
I would appreciate any and all help.
Thanks, Dan
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yes, the phone would ring if the Caller ID came after the first ring, but the modem configuration can turn the speaker off.
1 - nothing, except you would probably wait until you viewed the Caller ID. This is why NCID has multiple software clients and hardware clients to display the Caller ID.
2- The US and some other countries send the Caller ID between the first and second rings, so you would always hear the first ring. Some countries send the Caller ID before the first ring, so they would not hear a ring if ncidd hung up on the call.
I have not looked into this to see if it is even usable for Caller ID after the first ring, but you can turn the ringers off or way down on phones and depend on the computer sound system to sound ringing. The ncidd server would need to be modified to turn on the speaker after the first ring. However, this is not feasible for multiple rooms unless a feature is added to use Amazon Echo devices or Google Nest devices to sound ringing.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I was typing at the same time as John, but here's my version:
NCID does not have the ability to prevent the other phones from ringing. It works more like a very alert assistant who can catch the call on the first ring.
At my house we hear the first ring, see the extension-in-use light on the phone and let ncidd talk to it. We wait for the second ring before doing anything about it.
One could turn off all the phone ringers and rely on getting caller ID notifications from clients running on android devices, desktop computers and home brew devices like NCID display.
People are not usually quick enough to pick up before ncidd does, but if they do they will hear the outgoing announcement for hangup=3. Without the announcement, at hangup=1, it will appear that ncidd has picked up, waited 2 seconds, and hung up again.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for the detailed explanation.
If I want to hack ncid so that it could open a relay to disconnect the regular phones until ncid ok'd them, where might I look in the code to do that?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Other than that, the raspberry Pi can control many things through the GPIO pins, so you could get a relay module to do things for you.
The best way to control relays would be to write a client in python, which would connect to the ncidd server and listen for CID: and CIDCALL: messages, and then use a Python library to drive the GPIO pins.
You would need some other mechanism for opening the relay later, because NCID is not aware of when the line becomes idle again.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks.
I'm familiar with controlling relays on the pi. I have several small projects that are in "production." So, in this case, I would put a normally-closed relay in the line to the phone.
If you can tell me where to alter the code that detects rings, then I could have the relay open on the first ring then, if the call is rejected it could wait for, say, 15 seconds and release the relay or if the call is accepted it would release the relay immediately and the phone would begin ringing.
I've looks at the source and a pointer on which module to zero-in on would be a big help.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Some reviews note that suppressing the first ring will prevent some devices from properly reading caller id.
My hunch is this you will have a tough time getting first ring suppression programmatically. By the time the modem sends a "RING" notice up through NCID, it may be too late to disconnect the phone line to avoid the ring signal being received by other phones connect to your line. Would be happy to be proven wrong.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I realize this discussion has progressed beyond first ring suppression but FWIW, I personally use the device BTodCox has linked to, although I got mine from the company that I believe originally designed and sold it on Amazon: FRS22100 First Ring Suppressor Silencer for Robocall blocking services. I have two of them that get used every day; they work flawlessly. Alas the manufacturer's site, MGCON Technologies is no more but based on the link provided by BTodCox, it appears to still be available from a different seller.
I recently came across First Ring Supressor developed by Theta Engineering, however in contacting the company it has never been commercially produced, and probably won't be. The company states it would need more work as the firmware does suppress caller ID so it wouldn't work with NCID.
But the more important reason it won't likely be made for retail purchase is lack of interest. When I sent in a query about the device, the company replied, "4 or 5 inquires over a ten-year period hardly constitutes a promising business prospect."
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks, but they are not currently available anywhere.
On Tue, Mar 23, 2021, at 11:43 AM, Todd Andrews wrote:
I realize this discussion has progressed beyond first ring suppression but FWIW, I personally use the device BTodCox has linked to, although I got mine from the company that I believe originally designed and sold it on Amazon: FRS22100 First Ring Suppressor Silencer for Robocall blocking services https://www.amazon.com/gp/product/B07BPFMHPD. I have two of them that get used every day; they work flawlessly. Alas the manufacturer's site, MGCON Technologies https://www.mgcom-tech.com/ is no more but based on the link provided by BTodCox, it appears to still be available from a different seller.
I recently came across First Ring Supressor developed by Theta Engineering http://www.thetaeng.com/projects/first-ring-suppressor.html, however in contacting the company it has never been commercially produced, and probably won't be. The company states it would need more work as the firmware does suppress caller ID so it wouldn't work with NCID.
But the more important reason it won't likely be made for retail purchase is lack of interest. When I sent in a query about the device, the company replied, "4 or 5 inquires over a ten-year period hardly constitutes a promising business prospect."
and - thanks for the additional background. It's very helpful, although somewhat disappointing.
On Tue, Mar 23, 2021, at 11:43 AM, Todd Andrews wrote:
I realize this discussion has progressed beyond first ring suppression but FWIW, I personally use the device BTodCox has linked to, although I got mine from the company that I believe originally designed and sold it on Amazon: FRS22100 First Ring Suppressor Silencer for Robocall blocking services https://www.amazon.com/gp/product/B07BPFMHPD. I have two of them that get used every day; they work flawlessly. Alas the manufacturer's site, MGCON Technologies https://www.mgcom-tech.com/ is no more but based on the link provided by BTodCox, it appears to still be available from a different seller.
I recently came across First Ring Supressor developed by Theta Engineering http://www.thetaeng.com/projects/first-ring-suppressor.html, however in contacting the company it has never been commercially produced, and probably won't be. The company states it would need more work as the firmware does suppress caller ID so it wouldn't work with NCID.
But the more important reason it won't likely be made for retail purchase is lack of interest. When I sent in a query about the device, the company replied, "4 or 5 inquires over a ten-year period hardly constitutes a promising business prospect."
Thanks.
That device could work if I put it down stream from the ncid, i.e.
- split the line
- 1 side to ncid
- other side to 1st ring blocker, then on to the rest of the phones.
I still need some help on which module does the ring detection.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I suggested Python because it is popular with people writing for GPIO control. You can use any language you prefer.
The easiest way to interface with the ncidd server is to connect to port 3333 as a client and watch for the caller ID text output.
The CID: message indicates a regular call, a HUP: indicates a hang-up, and CIDCALL: messages tell when the ringing stops.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks,
Maybe I should elaborate on what I really want to do because ncid is actually a work-around to something I'm not sure how to pull off.
I don't really need call blocking. What I would rather do is have a device answer the incoming calls, tell the caller to press a number (perhaps randomly chosen between 0-9) and then hang up if there is no key press. Otherwise pass the call (and probably need to regenerate the ringing signal to the regular phones.
The reason I interested in knowing which code to hack is that I could use ncid to detect the calls but then I would need to play the message to the caller and intercept the key press before deciding what to do.
Asterisk with an ata box should be able to do this. I've got a pi setup with freepbx and a Grandstream HT813 ata box. This should be everything that is required but so far I have found its cryptic and inadequate documentation to be impenetrable. It's reaaly just an IVR with one question and one answer.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Dan, the NCID 1.12 release will have a new extension called ncid-greylist. It plays a recording and hangs up on the caller and tells the caller to call back within a time period. I am currently working on the release.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
That sounds very interesting. At the moment I'm having trouble getting it to run. I got is installed and the service started. Then I tried to connect from a browser. It got into a loop endlessly rejecting the connection and after I rebooted the service won't start and there are now usefulnerror messages. I'm baffled.
When I installed from source, the make didn't configure things correctly and it would not start. When I installed from .deb I got what I decribed above.
Is the server conf supposed to be 127.0.0.1 and still let clients connect?
Thanks for your feedback
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
You need to provide /var/log/ncidd.log as an attachment to get help troubleshooting ncidd.
If you do not configure ncidd in ncid.conf, it will accept clients connections from everywhere on port 3333. Review ncidd.log to see how the server is configured.
When the client is trying to connect, it displays: IPaddress:PortNumber
Start ncid in a terminal window to display a log: ncid -v1 to see how ncid is configured.
Review the NCID User Manual, especially the installation section for information on how to configure services, and the Getting Started section .
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I've made some progress but am getting an error when I try to test the modem with ncid -Dv3
I've attached the log.
Hopefully that error is something easy to fix.
On a longer look at the log file, I see that the connection to the modem appears to be unstable. The log shows the tty device appearing and disappearing.
While it's possible that the plug or wire is defective or being moved, it is more likely that the power supply isn't able to power both the Raspberry Pi and the attached modem. Try a bigger power supply.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
hello,
I'm getting ready to set up ncid on a pi. I've got the zoom modem. It has only one rj11. In the day, my modems had a line jack and a pbone jack.
I can understand how ncid+modem can answer a call and hang up on it if it's blacklisted. What I don't understand is what happens if the incoming call is allowed. The modem/computer must be connected in parallel to my POTS line.
That would mean the the phone and the modem would both ring, right?
1 - what prevents someone from picking up the phone before ncid is done screening it?
2 - How do you prevent the phone from ringing until ncid has decided that the call is allowed, and then have the phone ring?
It woild seem to me that you would need a modem with 2 jacks.
There is obviously something that I'm missing but this subject, which seems critical to me, is not discussed anywhere that I can find.
I would appreciate any and all help.
Thanks, Dan
Yes, the phone would ring if the Caller ID came after the first ring, but the modem configuration can turn the speaker off.
1 - nothing, except you would probably wait until you viewed the Caller ID. This is why NCID has multiple software clients and hardware clients to display the Caller ID.
2- The US and some other countries send the Caller ID between the first and second rings, so you would always hear the first ring. Some countries send the Caller ID before the first ring, so they would not hear a ring if ncidd hung up on the call.
I have not looked into this to see if it is even usable for Caller ID after the first ring, but you can turn the ringers off or way down on phones and depend on the computer sound system to sound ringing. The ncidd server would need to be modified to turn on the speaker after the first ring. However, this is not feasible for multiple rooms unless a feature is added to use Amazon Echo devices or Google Nest devices to sound ringing.
I was typing at the same time as John, but here's my version:
NCID does not have the ability to prevent the other phones from ringing. It works more like a very alert assistant who can catch the call on the first ring.
At my house we hear the first ring, see the extension-in-use light on the phone and let ncidd talk to it. We wait for the second ring before doing anything about it.
One could turn off all the phone ringers and rely on getting caller ID notifications from clients running on android devices, desktop computers and home brew devices like NCID display.
People are not usually quick enough to pick up before ncidd does, but if they do they will hear the outgoing announcement for hangup=3. Without the announcement, at hangup=1, it will appear that ncidd has picked up, waited 2 seconds, and hung up again.
Thanks for the detailed explanation.
If I want to hack ncid so that it could open a relay to disconnect the regular phones until ncid ok'd them, where might I look in the code to do that?
I think a relay like that would prevent you from making outgoing calls.
Other than that, the raspberry Pi can control many things through the GPIO pins, so you could get a relay module to do things for you.
The best way to control relays would be to write a client in python, which would connect to the ncidd server and listen for CID: and CIDCALL: messages, and then use a Python library to drive the GPIO pins.
You would need some other mechanism for opening the relay later, because NCID is not aware of when the line becomes idle again.
Thanks.
I'm familiar with controlling relays on the pi. I have several small projects that are in "production." So, in this case, I would put a normally-closed relay in the line to the phone.
If you can tell me where to alter the code that detects rings, then I could have the relay open on the first ring then, if the call is rejected it could wait for, say, 15 seconds and release the relay or if the call is accepted it would release the relay immediately and the phone would begin ringing.
I've looks at the source and a pointer on which module to zero-in on would be a big help.
I haven't personally used this device, but it seems to be a plug-and-play option for first ring suppression.
https://www.kahatas.com/index.php?main_page=product_info&products_id=593001
Some reviews note that suppressing the first ring will prevent some devices from properly reading caller id.
My hunch is this you will have a tough time getting first ring suppression programmatically. By the time the modem sends a "RING" notice up through NCID, it may be too late to disconnect the phone line to avoid the ring signal being received by other phones connect to your line. Would be happy to be proven wrong.
I realize this discussion has progressed beyond first ring suppression but FWIW, I personally use the device BTodCox has linked to, although I got mine from the company that I believe originally designed and sold it on Amazon: FRS22100 First Ring Suppressor Silencer for Robocall blocking services. I have two of them that get used every day; they work flawlessly. Alas the manufacturer's site, MGCON Technologies is no more but based on the link provided by BTodCox, it appears to still be available from a different seller.
I recently came across First Ring Supressor developed by Theta Engineering, however in contacting the company it has never been commercially produced, and probably won't be. The company states it would need more work as the firmware does suppress caller ID so it wouldn't work with NCID.
But the more important reason it won't likely be made for retail purchase is lack of interest. When I sent in a query about the device, the company replied, "4 or 5 inquires over a ten-year period hardly constitutes a promising business prospect."
Thanks, but they are not currently available anywhere.
On Tue, Mar 23, 2021, at 11:43 AM, Todd Andrews wrote:
and - thanks for the additional background. It's very helpful, although somewhat disappointing.
On Tue, Mar 23, 2021, at 11:43 AM, Todd Andrews wrote:
Thanks.
That device could work if I put it down stream from the ncid, i.e.
- split the line
- 1 side to ncid
- other side to 1st ring blocker, then on to the rest of the phones.
I still need some help on which module does the ring detection.
I suggested Python because it is popular with people writing for GPIO control. You can use any language you prefer.
The easiest way to interface with the ncidd server is to connect to port 3333 as a client and watch for the caller ID text output.
The CID: message indicates a regular call, a HUP: indicates a hang-up, and CIDCALL: messages tell when the ringing stops.
The API description is here
http://ncid.sourceforge.net/doc/NCID-API.html
Thanks,
Maybe I should elaborate on what I really want to do because ncid is actually a work-around to something I'm not sure how to pull off.
I don't really need call blocking. What I would rather do is have a device answer the incoming calls, tell the caller to press a number (perhaps randomly chosen between 0-9) and then hang up if there is no key press. Otherwise pass the call (and probably need to regenerate the ringing signal to the regular phones.
The reason I interested in knowing which code to hack is that I could use ncid to detect the calls but then I would need to play the message to the caller and intercept the key press before deciding what to do.
Asterisk with an ata box should be able to do this. I've got a pi setup with freepbx and a Grandstream HT813 ata box. This should be everything that is required but so far I have found its cryptic and inadequate documentation to be impenetrable. It's reaaly just an IVR with one question and one answer.
Asterisk is one of those wonderful tools that can do anything telephony related if you just happen to know the proper magical incantations.
Ward Mundy's blog is a site that has an abundance of VOIP incantations; the most recent post has how to grant your wish with Incredible PBX http://nerdvittles.com/?p=34380 and an older post with more details http://nerdvittles.com/?p=27313.
Thanks
On Wed, Mar 17, 2021, at 2:35 PM, BTodCox wrote:
Dan, the NCID 1.12 release will have a new extension called ncid-greylist. It plays a recording and hangs up on the caller and tells the caller to call back within a time period. I am currently working on the release.
That sounds very interesting. At the moment I'm having trouble getting it to run. I got is installed and the service started. Then I tried to connect from a browser. It got into a loop endlessly rejecting the connection and after I rebooted the service won't start and there are now usefulnerror messages. I'm baffled.
When I installed from source, the make didn't configure things correctly and it would not start. When I installed from .deb I got what I decribed above.
Is the server conf supposed to be 127.0.0.1 and still let clients connect?
Thanks for your feedback
You need to provide /var/log/ncidd.log as an attachment to get help troubleshooting ncidd.
If you do not configure ncidd in ncid.conf, it will accept clients connections from everywhere on port 3333. Review ncidd.log to see how the server is configured.
When the client is trying to connect, it displays: IPaddress:PortNumber
Start ncid in a terminal window to display a log: ncid -v1 to see how ncid is configured.
Review the NCID User Manual, especially the installation section for information on how to configure services, and the Getting Started section .
Hi,
I've made some progress but am getting an error when I try to test the modem with ncid -Dv3
I've attached the log.
Hopefully that error is something easy to fix.
Also, any idea when 1.12 might be ready?
Thanks, Dan
The error message says that another process, perhaps another ncidd, is already using port 3333.
unable to bind listen socket: Address already in use.
socket: Address already in use
Terminated: 03/18/2021 18:13:00
Am I supposed to not have the service running when using the ncidd -D3 command?
No, you must terminate any other ncidd using port 3333 when you start ncidd in debug mode:
ncidd -D3
On a longer look at the log file, I see that the connection to the modem appears to be unstable. The log shows the tty device appearing and disappearing.
While it's possible that the plug or wire is defective or being moved, it is more likely that the power supply isn't able to power both the Raspberry Pi and the attached modem. Try a bigger power supply.