On the way towards VoLTE support in Ubuntu Touch
You can make phone calls with Ubuntu Touch on various phones, but one particular gap is support for VoLTE. The UBports Foundation has commissioned an investigation into what’s needed to add this support, and we now have the results.
VoLTE stands for Voice over LTE, and LTE (Long Term Evolution) is better known as 4G. So essentially, VoLTE amounts to mobile calls over a 4G network. This has various advantages compared to calling over 2G or 3G, such as lower delays while talking to each other and better audio quality.
To be able to make VoLTE calls, the phone’s operating system, its modem firmware and the mobile network operator all have to support it. Most new phones now have VoLTE modems, but Ubuntu Touch hasn’t implemented it yet. However, some devices for which an Ubuntu Touch port exists do support it. For instance, the Volla Phone is able to do VoLTE calls in Android, so we know the hardware and modem firmware implement it.
One particular reason why VoLTE calls are important is that 2G and 3G networks are phased out in various regions. For instance, in the US Verizon customers can no longer activate new devices without VoLTE capabilities. T-Mobile has already shut down its 2G and 3G networks, AT&T will shut down these networks in early 2022 and Verizon will do the same by the end of 2022. If by that date your device (and operating system) doesn’t support VoLTE, you can’t make any calls anymore.
That’s why the UBports Foundation commissioned cellular network specialist sysmocom to create a plan to add VoLTE support to Ubuntu Touch. This blog article summarizes their findings.
Sysmocom investigated the VoLTE traffic with the open source protocol analyzer Wireshark on a Volla Phone running Android. The Android system on the Volla Phone implements the 3GPP architectural framework IP Multimedia Subsystem (IMS), on which VoLTE is based, in a proprietary component com.mediatek.ims. Sysmocom proposes to create an open source IMS implementation in Ubuntu Touch, outside of Halium.
An analysis of some abandoned and defunct open source IMS client implementations led sysmocom to the Doubango project, which looks like the most complete and reusable codebase among the available options. There are three open source IMS clients based on the Doubango framework, but unfortunately no Linux client.
The goal is then to replace the functionality of the proprietary IMS service that we need for VoLTE. However, what exactly the service is doing depends a lot on the vendor’s implementation. For instance, the com.mediatek.ims implementation for the Volla Phone’s MediaTek modem implements IPsec and VoIP signaling on the application processor, while with other modems (such as the Quectel EG25-G) both tasks are handled on the modem processor.
Sysmocom’s proposal is to start adapting the Doubango IMS framework for VoLTE, with vendor-specific support for the Volla Phone. When this first implementation for the phone’s MediaTek modem is ready, it’s likely to work for other MediaTek devices too with no or only a few adjustments. Afterwards, the open source IMS implementation could be extended to work with other modem vendors.
A nice side effect of this approach of developing an open source IMS client for Ubuntu Touch is that it will also enable VoWiFi (Voice over Wi-Fi, calling over a Wi-Fi network with your mobile phone number). Both VoLTE and VoWiFi are based on the 3GPP’s IMS framework.
The high-level goal of the project plan is to have functional VoLTE calls on the Volla Phone. Sysmocom will implement this up to the point where this can be demonstrated with a simple command-line client on the phone. The UBports developers will pick it up there and work on integrating VoLTE functionality into the dialer application of Ubuntu Touch.
Sysmocom will work on this as a true open source project. All development will happen in public Git repositories, all features and bugs will be tracked in a public issue tracker, and any needed changes in other open source projects will be contributed upstream. Contributions from the wider community are also welcome.
Well, The official report (external link) proposes to define two phases. One phase for exploration and prototyping and and another phase for the actual implementation. Funding for phase 1 has been obtained so that is going to start soon and after that? Hopefully phase 2! We will keep you all informed our our progress.