Project

General

Profile

Actions

Issue #2292

open

How to hide the Caller ID?

Added by Anonymous almost 3 years ago. Updated almost 3 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Target version:
Start date:
01/16/2022
Due date:
% Done:

0%

Estimated time:
Resolution:
Device:
Galaxy S 2 (I9100), Galaxy S 3 (I9300)
Grant:
Type of work:
Unknown

Description

Hi there,

I'm using the latest Replicant builds (Replicant 6.0 0004 RC5) on my Galaxy S2 and S3. Is there are a way to hide my caller ID? So far I've tried the #31# + number method but no luck, it still sends the caller ID. When trying to hide the caller ID within the phone app settings it gives me an error message and quits.

Is this a known issue or is there a workaround? Replicant being freedom and privacy focused I think blocking the caller ID should be an option.

Actions #1

Updated by Fil Lupin almost 3 years ago

Hi,
the code to use depends on the country you are.
See https://en.wikipedia.org/wiki/Caller_ID#Disabling_caller_ID_delivery for the code for a single call.

Actions #2

Updated by Anonymous almost 3 years ago

Fil Lupin wrote in #note-1:

Hi,
the code to use depends on the country you are.
See https://en.wikipedia.org/wiki/Caller_ID#Disabling_caller_ID_delivery for the code for a single call.

Thanks. The #31# code does work on another phone of mine. It's just that on Replicant it is not working. Are you able to block the caller ID?

Actions #3

Updated by Denis 'GNUtoo' Carikli almost 3 years ago

We have: Android framework <-> rild <-> libsamsung-ril <-> libsamsung-ipc <-> kernel drivers + modem

libsamsung-ipc doesn't hardcode it:

Libsamsung-ipc has 3 possible settings about it (in include/call.h):

#define IPC_CALL_IDENTITY_DEFAULT                               0x00
#define IPC_CALL_IDENTITY_HIDE                                  0x01
#define IPC_CALL_IDENTITY_SHOW                                  0x02

And it doesn't harcode it, so it's up to libsamsung-ril to set it right:

int ipc_call_outgoing_setup(struct ipc_call_outgoing_data *data,
                            unsigned char type, unsigned char identity,
                            unsigned char prefix, const char *number)
{
    [...]
    data->identity = identity;
    [...]
}

And in libsamsung-ril we have:

int ril_request_dial(void *data, size_t size, RIL_Token token)
{
    [...]
    identity = ril2ipc_call_identity(dial->clir);
    [...]
    rc = ipc_call_outgoing_setup(&request_data, IPC_CALL_TYPE_VOICE,
                                 identity, prefix, dial->address);
    [...]
}

with ril2ipc_call_identity:
<pre>
unsigned char ril2ipc_call_identity(int clir)
{
        switch (clir) {
                case 0:
                        return IPC_CALL_IDENTITY_DEFAULT;
                case 1:
                        return IPC_CALL_IDENTITY_SHOW;
                case 2:
                        return IPC_CALL_IDENTITY_HIDE;
                default:
                        return IPC_CALL_IDENTITY_DEFAULT;
        }
}
</pre>

So to me it looks like it's handled. Did you look if there is a settings in the dialer settings to change that somehow? Did you look in the Android settings?

And if there is a setting, does it work?

It's also possible to verify if it's been enabled or not in the logs (with logcat -b radio).

The logs output hexadecimal dumps. Here's an interpreted example for a call:
<pre>
          +-------------unknown
          |  +----------IPC_CALL_TYPE_VOICE
          |  |  +-------IPC_CALL_IDENTITY_DEFAULT
          |  |  |  +----number_length == 13 == len("+391234567891")
          |  |  |  |  +-prefix: 0x11 == IPC_CALL_PREFIX_INTL
          |  |  |  |  |
          |  |  |  |  |  
[0000]   00 01 00 0D 11 2B 33 33  31 32 33 34 35 36 37 38   .....+33 12345678
                         +  3  3   1  2  3  4  5  6  7  8
[0010]   39 31 00 00 00 00 00 00  00 00 00 00 00 00 00 00   91...... ........
          9  1
[0020]   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........
[0030]   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........
[0040]   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........
[0050]   00 00 00 00 00 00 00 00  00 00 00                  ........ ...
</pre>

So here I used the (network?) default for masking my number.

Denis.

Actions #4

Updated by Anonymous almost 3 years ago

Denis 'GNUtoo' Carikli wrote in #note-3:

So to me it looks like it's handled. Did you look if there is a settings in the dialer settings to change that somehow? Did you look in the Android settings?

Yes I did try to change it in the settings. The exact path is: dialer app -> 3 dots -> Settings -> Calls -> Additional settings

It gives me the following error message:

Call settings error
Network or SIM card error

So far I've tried this on two differnt phones (Galaxy S2 and S3) and Replicant 6.0 0003 as well as recent RC5 release.

Actions #5

Updated by Denis 'GNUtoo' Carikli almost 3 years ago

If I go in the additional settings, I've a popup with the following content:

Call settings error
Network or SIM card error.
                        [OK]

and in the background I can see:

Caller ID
Loading settings...
___________________________________________
Call waiting
During a call, notify me of incoming calls
___________________________________________
My phone number
S[unreadable text as it's below the popup]
___________________________________________

When doing that I've the following that appears in the radio logs:

01-27 14:12:24.630  2999  2999 D RILJ    : [4359]> GET_CLIR [SUB0]
01-27 14:12:24.630  1989  2017 D RIL     : 1 RIL request in the queue (1 pending, 0 handled, 0 unhandled)
01-27 14:12:24.630  1989  2314 D RIL     : Unhandled RIL request: 31
01-27 14:12:24.630  1989  2314 D RIL     : 0 RIL request in the queue (0 pending, 0 handled, 0 unhandled)
01-27 14:12:24.630  2999  3104 D RilRequest: [4359]< GET_CLIR error: com.android.internal.telephony.CommandException: REQUEST_NOT_SUPPORTED ret=
01-27 14:12:24.650  2999  2999 D RILJ    : [4360]> QUERY_CALL_WAITING 0 [SUB0]
01-27 14:12:24.655  1989  2017 D RIL     : 1 RIL request in the queue (1 pending, 0 handled, 0 unhandled)
01-27 14:12:24.655  1989  2314 D RIL     : Unhandled RIL request: 35
01-27 14:12:24.655  1989  2314 D RIL     : 0 RIL request in the queue (0 pending, 0 handled, 0 unhandled)
01-27 14:12:24.655  2999  3104 D RilRequest: [4360]< QUERY_CALL_WAITING error: com.android.internal.telephony.CommandException: REQUEST_NOT_SUPPORTED ret=

According to the wiki page on Libsamsung-ril, GET_CLIR/SET_CLIR is for the call identity restriction so it looks like the right thing to implement. Though we might have to implement QUERY_CALL_WAITING as well for that setting page to work.

Actions

Also available in: Atom PDF