VoWIFI support in SfOS

Since most (if not all) providers support VoWiFi next to VoLTE it would be very nice to have this feature available on SailfishOS as well.
Since both features are very much related (both rely on working internet access) I preaume it shouldn’t be too much an effort to get it working on SfOS. I just figured out that it, indeed, works already.
When I receive a VoLTE call while already connected to a Wifi hotspot the call is already routed through the Wifi-connection, as it seems, since there is no additional data connection visible in ifconfig, and the call wouldn’t even break when moving to an area with barely any mobile reception (but WiFi). It seems that currently IMS registration is bound to mobile network reception only (and not Internet connection availability). It would be fun to experiment with it a bit further. Is there a way to somehow trigger IMS registration manually even if there is no mobile network available?

9 Likes

I just saw there is a “rmnet_data2” connection which is not there while in flight mode/wifi enabled.

1 Like

So, is it working when in flightmode+wifi or is it not working?

No, not working in flight mode, unfortunately. However, AFAIR VoWiFi is not working in flight mode on Android either.

All those “rmnet_data” interfaces are mobile data connections. There are two if you have VoLTE enabled - one for normal mobile data and the second, which is usually IPv6-only, for VoLTE. These are created by the modem and its drivers on request, and IMS registration is handled in there too.

I think VoWiFi is a bit like RCS messaging - all done in applications except for a little bit of auth that come from the IMS stack. There would be a lot of work to do to implement a new VoIP client in the Phone app. There’s very little from the VoLTE implementation that could help with that.

5 Likes

I think that on VoLTE IMS daemon provided by Sony/Qualcomm is used,
there is on binder api setConfig(int, …::ConfigInfo const&) method.

On config items
VoWIFI Enabled 27
VoWIFI Roaming Enabled 28
VoWIFI Mode 29
VoWIFI Roaming Mode 73 or 74

VoWIFI modes:
VoWIFI Only 0
Cellular Preferred 1
VoWIFI Preferred 2

Btw. where is also config items
SMS format 14
SMS over IP 15

Those may have effect on SMS problems with VoLTE.

IMS binder api. treble_experimentations/vendor.qti.hardware.radio.ims@1.0.hal at master · phhusson/treble_experimentations · GitHub

4 Likes

Hey, thank you all for adressing this topic in the recent community meeting.
Still hoping to find a solution somehow, even though it seems more complicated than I thought… Maybe possible to tinker a bit more with the network connection while connected through wifi to see if the connection to the ims server may also be routed through wifi (that was my impression). It seems that the ims connection is still somehow linked to a mobile link, since I couldn’t get a connection while in flight mode with wifi enabled.

1 Like

So, VoWIFIonly is set to 0? Is it possible to change this value to 1 (how?), and does it maybe do the trick?
I can very well imagine that VoWIFI connections may be handled by the Qualcomm chipset itself since the entire IMS thing somehow originated from the UMA stuff (who remebers umatoday?). Found this article, from 2006: Why IMS and UMA are complementary | Network World

In case someone is interested - umatoday was provided by kineto, which was bought by taqua, which was bought by sonus, which is now ribbon who still provide ims solutions: https://ribboncommunications.com/solutions/service-provider-solutions/telco-cloud-and-voice-services/mobile-network-evolution-ims

I think VoWIFI Enabled setting is false. Qualcomm VoLTE and VoWIFI implmentation is user space daemon and not by chipset. Jolla is not published code that calls IMS daemon. There is no documentation available vendor.qti.hardware.radio.ims api. So the api it’s not easy to use.

According to abranson, VoWifi might require a new userspace VoIP-implementation, which to me implies that VoLTE does not require a userspace implementation, but I don’t think this is really necessary for VoWifi either.
The Xperia 10ii has a Snapdragon X12 LTE Modem builtin (List of Qualcomm Snapdragon modems - Wikipedia).
The Snapdragon X12 LTE Modem can automatically switch between 4G and Wifi, according to Qualcomm: Qualcomm Snapdragon X12 LTE Modem | Qualcomm
Thus, to me it appears to be rather a configuration than an implementation issue…

Might be so, we haven’t looked very hard into it. Would be very cool if it’s that simple!

Yeah, all the IMS and VoLTE is handled by the modem in the Xperias that have it enabled so far. I don’t think it was even possible to try to do it outside, due to some sort of conflict.

4 Likes

That would indeed be amazing.
I did a bit of googling and found this file, for the Onplus3 which also features the X12 modem:
QualcommMBNs/mcfg_sw.mbn.json at master · JohnBel/QualcommMBNs · GitHub (for O2 germany).
It includes a wifi section:

 "WifiConfig": {
    "Version": 0,
    "IsWifiOnlyModeForVoice": 1,
    "IsE911OverWifi": 1,
    "WifiCsScanTimer": 5,
    "Reserved": "AAAAAAAAAA=="
  },
  "QpImsWifiConfig": {
    "Version": 0,
    "RssiThresholdAdd": 0,
    "RssiThresholdDrop": 0,
    "RssiAvgTimerOnAttach": 0,
    "RssiAvgTimerOnCamp": 0
  },
  "WlanOffloadConfig": {
    "Value": 2
  },

I have no idea if it is feasible to search for a properly configured (and precompiled) mcfg_sw.mbn file with VoWifi enabled and replace the file provided by the firmware, but I might do some research later (I’m at work currently).
How to build the mcfg_sw.mbn bin from the json file at all?

EDIT: Exciting tool that might help:

4 Likes

There is no big difference between VoLTE and VoWIFI.
On VoLTE phone creates second packet data connection to APN: ims
APN: internet is not used for VoLTE.

On VoWIFI phone creates IPSec tunnel to ePDG
dns name: epdg.epc.mncXXX.mccXXX.pub.3gppnetwork.org or name defined in ISIM (XXX depends on operator)

There is already android daemons that handle this.
/odm/bin/imsdatadaemon
/odm/bin/imsqmidaemon
/odm/bin/imsrcsd
/odm/bin/ims_rtp_daemon

3 Likes

I played around a bit with a different mcfg_sw.mbn file I found on xda developers. It is supposed to support VoWifi. However, while VoLTE still registers, VoWifi does still not seem to work. I presume this functionality needs to be toggled seperately (probably in a similar manner as VoLTE)?
Can VoLTE also be activated from the command line (how?)? - and may there be a command line toggle for VoWifi as well?

6 Likes

How are these daemons toggled? ps -aux reveals they are running even if VoLTE is not registered? As far as I understood the Qualcomm docs the modem should switch between VoWifi AND VoLTE autonomously?
Ofono logs refer to a mysterious src/ims.c file which appears to handle ims registration, but I can’t figure out yet how exactely ims->settings is populated, or where the code would have to be altered in order to allow IMS through wifi.
In the ofono source there don’t seem to be any references to the ims daemons you mentioned, so they must be triggered elsewhere.

1 Like

On Android those daemons communicate with androids java side with binder IPC Using Binder IPC  |  Android Open Source Project.
On sailfish that java logic doesn’t exist. And Jolla has not published that code that does it for VoLTE from ofono. So I think Jolla needs to add set config logic at least level that it’s possible set some “custom” config values from config file. So it would make possible to play with config values.

1 Like

@abranson

Any chance for Jolla to look into it?
Thank you!

I don’t think so in the short term. Sorry.

2 Likes

Thank you for your honesty.
However, I’ll keep the fingers crossed someone @jolla may do sometime:)