Issue #2292
openHow to hide the Caller ID?
0%
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.
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.
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?
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.
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.
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.