Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable toggle for Wi-Fi calling always and make it fully disable DNS resolution and ePDG connections when disabled #887

Open
flawedworld opened this issue Dec 29, 2021 · 15 comments
Labels
enhancement New feature or request

Comments

@flawedworld
Copy link
Member

No description provided.

@flawedworld flawedworld added the enhancement New feature or request label Dec 29, 2021
@flawedworld
Copy link
Member Author

This may instead turn into an option to have a SetupWizard screen to enable it, discussion needs to be had around this.

@lbdroid
Copy link

lbdroid commented Jan 7, 2022

Isn't it already disabled by default? On fresh setup or changing a sim card, I've found it is necessary to manually switch wifi calling on to make it work.

@flawedworld
Copy link
Member Author

It depends on the carrier

@danwdart
Copy link

It's necessary when signal strength is low - is there detection?

@flawedworld
Copy link
Member Author

Carriers or the user can decide when it automatically kicks in. We aren't going to remove the option for the user to enable/disable it.

@LL0rd
Copy link

LL0rd commented Aug 14, 2022

Can someone provide some details about VoLTE? I can't find, how this feature is implemented in the OS / Chipset of a phone. Where does this feature sit? Is the traffic going to be routed via VPN or is there an exception? My personal opinion is, that it's much more safer to get VoLTE Calls instead of regular calls. Because via Mobile Carrier the phone can be triangulated. With VoLTE only the IP gets exposed. The IP you have control over.

@flawedworld
Copy link
Member Author

VoLTE traffic is carrier traffic and not user defined traffic, it won't go via a VPN.

Because via Mobile Carrier the phone can be triangulated. With VoLTE only the IP gets exposed. The IP you have control over.

LTE is the telecoms network. This statement doesn't make sense. What generation of mobile network technology you are using doesn't change the fact that the carrier can always obtain a coarse location.

@neelchauhan
Copy link

neelchauhan commented Dec 13, 2022

I do have a branch:

This seems to be on a branch GrapheneOS didn't fork, so I had to do it myself. Sorry if I got anything wrong here.

A barebones Android 13 branch without my patch is here in case it's needed for forking:

This will need GrapheneOS to fork the frameworks/opt/net/ims and incorporate my patch, and update roomservice to the updated patch.

My patch unconditionally disables VoWiFi unless a user enables it themselves.

@flawedworld
Copy link
Member Author

@neelchauhan We can just remove this option from all the CarrierConfigs since we process them before shipping them using https://github.com/GrapheneOS/carriersettings-extractor.

But also, sadly this alone won't fully disable it. The OS will still make ePDG // DNS traffic despite this option being removed/ignored so that will need to be investigated.

@neelchauhan
Copy link

I have a carriersettings-extractor PR here: GrapheneOS-Archive/carriersettings-extractor#25

This doesn't take care of the ePDG/DNS traffic but I will also look into this.

@flawedworld
Copy link
Member Author

@neelchauhan looks good, thanks. as a pointer, easiest way to capture traffic to assist with debugging is a userdebug build and use tcpdump (comes with the build).

@neelchauhan
Copy link

I believe this will need a new repo: https://github.com/neelchauhan/platform_packages_services_Iwlan/tree/13_disable_wifi_calling

This is the platform_packages_services_Iwlan repo and this package: https://android.googlesource.com/platform/packages/services/Iwlan/

I will need to test tomorrow, or whenever I can. I need to charge my Pixel 6 since my Pixel 7 is my main phone and I don't want to run userdebug on my 7.

@flawedworld
Copy link
Member Author

flawedworld commented Dec 17, 2022

@neelchauhan Looks good so far but you might need to add more changes for carriers where they specify a custom ePDG hostname or IP address where they do not stick to using a 3GPP hostname.

For example Jio in India does this in CarrierConfig:

<string name="iwlan.epdg_static_address_roaming_string">InternationalVoWiFi.jio.com</string>
<string name="iwlan.epdg_static_address_string">vowifi.jio.com</string>

https://developer.android.com/reference/kotlin/android/telephony/CarrierConfigManager.Iwlan#key_epdg_static_address_string

@flawedworld
Copy link
Member Author

If you want to have a chat about it in further detail at all or have any questions feel free to join https://app.element.io/#/room/#dev:grapheneos.org

@neelchauhan
Copy link

Thanks!

I realized I may be able to do a more global block of ePDG traffic in getValidatedServerList() in this branch: https://github.com/neelchauhan/platform_packages_services_Iwlan/tree/13_disable_wifi_calling_global

If that is an issue, my existing branch also has a new commit blocking custom ePDG names as well.

@flawedworld flawedworld changed the title Disable Wi-Fi calling by default Enable toggle for Wi-Fi calling always and make it fully disable DNS resolution and ePDG connections when disabled Mar 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants