I found some other stuff. But it's not for the fainth of heart ;-)
In /product/etc/CarrierSettings directory you have .pb (protobuf) files which contain carrier info (read:
https://source.android.com/devices/tech/config/carrierid). For example there are specific files for US networks (e.g. sprint_us.pb), networks in France (e.g. bouygues_fr.pb), networks in UK (e.g. ee_gb.pb). I would say these will be "fully" supported by Google. There are 130 files there.
Just as an example, here is the config for the bouygues_fr.pb (Bouygues network in France):
Code:
canonicalName: "bouygues_fr"
version: 30000000317
apns {
apn {
name: "Bouygues Telecom"
value: "mmsbouygtel.com"
type: DEFAULT
type: SUPL
type: MMS
authtype: 1
mmsc: "http://mms.bouyguestelecom.fr/mms/wapenc"
protocol: IPV6
}
apn {
name: "Bouygues Telecom IMS"
value: "ims"
type: IMS
protocol: IPV4V6
userVisible: false
}
apn {
name: "Bouygues XCAP"
value: "mmsbouygtel.com"
type: XCAP
bearerBitmask: "3|9|10|11|14|15|20"
authtype: 1
protocol: IPV6
}
}
configs {
config {
key: "carrier_certificate_string_array"
textArray {
item: "A0058F6467628EA2031C4C9D8519ABECB2671F6A1752B15A89369CDCB8D2952B"
}
}
config {
key: "carrier_cross_sim_ims_available_bool"
boolValue: false
}
config {
key: "carrier_default_wfc_ims_mode_int"
intValue: 1
}
config {
key: "carrier_supports_ss_over_ut_bool"
boolValue: true
}
config {
key: "carrier_ussd_method_int"
intValue: 2
}
config {
key: "carrier_volte_available_bool"
boolValue: true
}
config {
key: "carrier_wfc_ims_available_bool"
boolValue: true
}
config {
key: "editable_wfc_mode_bool"
boolValue: false
}
config {
key: "iwlan.child_sa_rekey_hard_timer_sec_int"
intValue: 7400
}
config {
key: "iwlan.child_sa_rekey_soft_timer_sec_int"
intValue: 7300
}
config {
key: "iwlan.diffie_hellman_groups_int_array"
intArray {
item: 14
}
}
config {
key: "iwlan.ike_rekey_hard_timer_in_sec"
intValue: 14800
}
config {
key: "iwlan.ike_rekey_soft_timer_sec_int"
intValue: 14700
}
config {
key: "iwlan.key_error_policy_config_string"
textValue: "[{\"ApnName\": \"*\",\"ErrorTypes\": [{\"ErrorType\": \"IKE_PROTOCOL_ERROR_TYPE\",\"ErrorDetails\": [\"9000\", \"10000\"],\"RetryArray\": [\"0\", \"0\"],\"UnthrottlingEv
ents\": [\"APM_ENABLE_EVENT\", \"WIFI_DISABLE_EVENT\", \"WIFI_AP_CHANGED_EVENT\", \"WIFI_CALLING_DISABLE_EVENT\"]}, {\"ErrorType\": \"IKE_PROTOCOL_ERROR_TYPE\",\"ErrorDetails\": [\"1050
0\"],\"RetryArray\": [\"3600\", \"-1\"],\"UnthrottlingEvents\": [\"APM_ENABLE_EVENT\", \"WIFI_DISABLE_EVENT\", \"WIFI_AP_CHANGED_EVENT\", \"WIFI_CALLING_DISABLE_EVENT\"]}, {\"ErrorType\
": \"IKE_PROTOCOL_ERROR_TYPE\",\"ErrorDetails\": [\"11002\", \"11003\"],\"RetryArray\": [],\"UnthrottlingEvents\": [\"APM_ENABLE_EVENT\", \"WIFI_DISABLE_EVENT\", \"WIFI_AP_CHANGED_EVENT
\", \"WIFI_CALLING_DISABLE_EVENT\"]}]}]"
}
config {
key: "maxImageHeight"
intValue: 1944
}
config {
key: "maxImageWidth"
intValue: 2592
}
config {
key: "maxMessageSize"
intValue: 614400
}
config {
key: "show_4g_for_lte_data_icon_bool"
boolValue: true
}
config {
key: "supportHttpCharsetHeader"
boolValue: false
}
}
As you can see in the config part, it has an indication that VoLTE is available. And when it is available, it will show the 4G icon in the status bar (instead of the LTE icon). I know that this works, because I tested with my brother's SIM card which is on that exact network.
There is one file, called '/product/etc/CarrierSettings/others.pb' (on the phone) which has carrier specs for ALL other networks in the world. However, these specs seem to be rather minimal. Not all networks are even there (I am currently on Belgian Youfone which is missing from that file). I checked, for example, for the Proximus network in Belgium and there very little configuration, e.g. no indication of VoLTE (which I know is there).
Maybe - but I'm not 100% sure - network info can be added via these files.
I fiddled around with this others.pb file. First, decompile the .pb (protobuf) into text, then modify test, then recompile the text into pb (protobuf) format, then (using a Magisk bind mount) overwrite /etc/product/CarrierSettings/others.pb on the phone.
And tada, when I refreshed the APN info, my Youfone network and APN spec were there, automatically selected by the phone.
I'm not 100% sure, but maybe VoLTE/5G can be added as well through these files.
You need to do some research. First read the article:
https://source.android.com/devices/tech/config/carrierid, this explains a bit how the Carrier pb files are
You will need the protoc tool (see
https://github.com/protocolbuffers/protobuf). I downloaded the source and built it from source. It allows you to decompile/recompile the pb files, e.g. on Linux:
Code:
Decompile pb file into text:
> protoc -I. --decode=MultiCarrierSettings carriersettings.proto < ~/pixel/raven-sd1a.210817.037/mnt/product/etc/CarrierSettings/others.pb > out.txt
The carriersettings.proto file can be downloaded from:
https://github.com/daradib/carriersettings-extractor
Then edit the out.txt file, modify/add your network details, remove the last 3 lines of the file (some sort of version indicator I'm guessing), finally recompile into protobuf using:
Code:
Recompile text file into protobuf:
> cat out.txt | protoc --encode=MultiCarrierSettings carriersettings.proto > others.pb
You will need a Magisk module to 'replace' the others.pb file on your phone. Module is attached, download it (the original phone's 'other.pb' file is in there).
First, unzip it, then copy YOUR modified pb file, then re-zip it.
Code:
> cd temp
> unzip ~/replaceotherspb.zip
> cp mymodifiedpbfile.pb system/product/etc/CarrierSettings/others.pb
> zip -r ~/mymagisk.zip .
> adb push ~/mymagisk.zip /sdcard/
Then install the module mymagisk.zip using the Magisk app. Go to settings > network > your SIM > access points, tap the 3 dots and 'refresh'. Your modified carrier details should be loaded now.
Again, I'm absolutely not an expert in this ... so can't really support ... I'm not even sure if this will allow you to activate VoLTE/5G, but worth a try. Good luck.