Hello World OpenIMSd

Current free mobile phone OSes (like postmarketOS, …​) only support voice calls for 2G and 3G on Qualcomm based devices. Calls via 4G using VoLTE are not supported (*except CSFB, which redirects to 2G/3G) because the modems require a lot of addional configuration and implement VoLTE with a lot of complexity. This is specially relevant because 2G and 3G networks are in the process of being shut down all around the world.

Our goal is to support VoLTE on Qualcomm based phones.

We choose Qualcomm based Android phones, because they are the commonly used phones and widely available. Also Qualcomm baseband has received a lot of reasearch (and reverse engeering) over the years and a lot of knowledge has been collected in the open.

To archive our goal we plan to:

  • Document the relevant ABIs and add support to libqmi

  • Implement a IMS configuration daemon (OpenIMSd) which will communicate with the baseband using QMI (Qualcomm MSM interface) to configure the relevant services

  • Integrate OpenIMSD into FOSS smartphone OS (postmarketOS, …​)

Our implementation will heavily use the baseband in the same way as Android is use the baseband to allow VoLTE. By using the baseband, it should be possible to allow handover between 2G/3G and VoLTE while in a call.

We thank NLnet for funding our work (https://nlnet.nl/project/VoLTE-Qualcom/).

links

social