A Cure for phone spam, robocalls

Phone spam (robocalls) has reached epic proportions., especially since I want to receive important phone calls.

I realize, that I must be a bit older generation, still hanging on to a “land line” phone number, but that’s what makes this cure so easy.

In earlier posts I pointed out that I deployed a VoIP (Voice over IP) server — I have four phone numbers. Mainline (which I’ve kept for over 20 years, despite moving), another number for my wife (she’s starting a business), an 800 toll-free number in case my kids need to reach me, With four numbers, this effectively quadruples the number of spam calls I receive, though even with one number the spam calls drive me crazy. The Do-not-call is completely ineffective (unless you’re willing to litigate all the callers — for which I don’t even dream to have the time).

So, I present my solution, which worked REALLY WELL.

Using Asterisk phone server, on FreePBX — both deployed on my router (see earlier posts), small computer, very little energy, no fans…

All I needed to do, was an IVR (interactive Voice Menu), with a simple message: “You have reached the Otala Household, press XX for Taneli, press YY for Abigail…” Allow three tries for pressing the digits, and then just dump the call into a VMUL (Voice Mail, Unavailable). As it turns out, ANY human seems to be able to press the digits to get connected to the phones directly, but NO ROBOCALLER gets through.

Ok, I am a bit of phone fanatic, I have Polycom phones in every room of the house. And now I have regained trust that when the phones ring, there’s a real caller, i.e. I finally have a reason to pick up a ringing phone.

Other benefits…

  • Time conditions; during nighttime, all calls go into voice mail (unless caller identifies emergency).
  • Faxes (does anyone use them still) are also received (and printed)
  • My wife has her phones with a different ring-tone, so we even who is being tried to reach
  • The Follow-me feature will forward my calls to my cell phone when I’m traveling
  • The DISA feature allows me to call the system and choose the outgoing line, and dial globally with reduced rates
  • I can have phone numbers in almost any country/geography — good for relatives
  • I can receive text messages (SMS) as well

Unfortunately Google’s “Screen Caller” does not work as well on Androids, as you’d still be interrupted.

This is saving me to the tune of 4-8 spam phone calls per day, EVERY DAY.

FreePBX/Asterisk on Ubuntu 20.04 router

I recently started to build/update my FreePBX Asterisk server, and noticed that there were no CDR (Call Detail Records) being recorded…

Despite googling around it, I could not find a good solution, until I noticed that the libraries being pulled in from ‘/usr/lib/odbc/’ had version 5 in them, and my installation had version 8…

So, I had downloaded the wrong ODBC library (why does FreePBX/asterisk use ODBC anyway?).

ls -la /usr/lib/odbc/        
total 80160
drwxr-xr-x   2 root root      4096 Aug 17 15:03 ./
drwxr-xr-x 112 root root     12288 Aug  7 13:09 ../
lrwxrwxrwx   1 7161 31415       16 Mar  9 01:18 libcrypto.so -> libcrypto.so.1.1
-rwxr-xr-x   1 7161 31415 23772232 Mar  9 01:18 libmyodbc8a.so*
-rwxr-xr-x   1 7161 31415 23793016 Mar  9 01:18 libmyodbc8w.so*
lrwxrwxrwx   1 7161 31415       13 Mar  9 01:18 libssl.so -> libssl.so.1.1

Meanwhile, the file /etc/odbcinst.ini shows

cat /etc/odbcinst.ini 
[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/odbc/libmyodbc5w.so
Setup=/usr/lib/odbc/libodbcmy5S.so
FileUsage=1

On to the solution… You’ll find the installation instructions (or FreePBX on Ubuntu) at https://wiki.freepbx.org/display/FOP/Installing+FreePBX+14+on+Ubuntu+18.04

And the offending part is at “Install MySQL ODBC Connector / The MySQL ODBC connector is used for CDRs. “

mkdir -p /usr/lib/odbc
curl -s https://cdn.mysql.com/Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.11-linux-ubuntu18.04-x86-64bit.tar.gz | \
  tar -C /usr/lib/odbc --strip-components=2 --wildcards -zxvf - */lib/*so

Should basically be substituted with:

mkdir -p /usr/lib/odbc
curl -s https://dev.mysql.com/get/Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit.tar.gz | \
  tar -C /usr/lib/odbc --strip-components=2 --wildcards -zxvf - */lib/*so

And, now you’re getting the ODBC 5 drivers, instead of the 8 drivers (which might be compatible calling-wise, but not name-wise).

The /usr/lib/odbc should now look like:

root@nuc:~# ll /usr/lib/odbc/
total 80160
drwxr-xr-x   2 root root      4096 Aug 17 15:03 ./
drwxr-xr-x 112 root root     12288 Aug  7 13:09 ../
lrwxrwxrwx   1 7161 31415       16 Mar  9 01:18 libcrypto.so -> libcrypto.so.1.1
-rwxr-xr-x   1 7161 31415 17239614 Oct 28  2019 libmyodbc5a.so*
-rwxr-xr-x   1 7161 31415 17259773 Oct 28  2019 libmyodbc5w.so*
-rwxr-xr-x   1 7161 31415 23772232 Mar  9 01:18 libmyodbc8a.so*
-rwxr-xr-x   1 7161 31415 23793016 Mar  9 01:18 libmyodbc8w.so*
lrwxrwxrwx   1 7161 31415       13 Mar  9 01:18 libssl.so -> libssl.so.1.1

After download the 5.3 drivers restart asterisk with

service asterisk restart

And you should start seeing CDR records in FreePBX.