Are USSD now working in the L5 Dial app?

I tried in my L5 dial

##002#

but there is no visible answer from network. With an older Huawei and the same SIM it works fine.

In syslog the message is


Nov 25 17:27:41 pureos gnome-calls[1264]: USSD Error: GDBus.Error:org.freedesktop.libqmi.Error.Protocol.SupsFailureCase: Couldn't originate USSD operation: QMI protocol error (92): 'SupsFailureCase'
1 Like

Based on your testing, the answer appears to be no.

2 Likes

One could ask why this matters. Imagine, your home network is in Germany and you travel for weeks to Havanna. Any call to your German mobile number +49… gets transfered to Cuba (you pay for receiving this call) and if not reachable the call is transfered to your German mailbox (and now you pay the fee for a call from Cuba to Germany), if you don’t disable with ##002# these call forwardings.

We really need at least a solution on command line level!

1 Like

USSD do work on my L5 at Deutsche Telekom mobile network in Germany. At least the following codes do work:

USSD code Meaning
*100# Show prepaid balance
*135# Show own phone number

See also the resulting display:

1 Like

This is very interesting! The Dialer app window shows as well in the title bar USSD, but it gives only:

*100# --> Dieser Dienst steht in Deinem Tarif nicht zur VerfĂĽgung 
(translated: This services does not work in your subscription)
*135# --> only spinning wheel 
##002# --> only spinning wheel
1 Like

I guess *100# is only available in pre-paid tariff. I guess it’s not available if you have an post-paid or normal mobile tariff…

2 Likes

Yes, my tarif is a normal one, not pre-paied.

We have had this thread here already in 2023, see How to manage Caller ID setting - #26 by guru
and there are pointers to gitlab too.

The version of our app gnome-calls is 45.alpha.0, recent is today 49.1.1 from October this year, i.e. outdated. Is there any chance to update this, @dos , @guido.gunther ?

I asked ChatCPT to get more background about USSD and QMI, here is what it spilled out:

Here is a clear explanation of USSD codes and QMI codes, what they are used for in mobile networks, and where their specifications come from:


:white_check_mark: 1. USSD Codes (Unstructured Supplementary Service Data)

What USSD is

USSD is a signaling protocol used in GSM, UMTS, and LTE networks to send short interactive text messages between a mobile device and the mobile operator’s network.

Example codes:

  • *#06# – show IMEI
  • *100# – prepaid balance
  • *123*5# – operator-specific services

How USSD works

  • It uses the GSM control channel, not SMS.
  • The communication is real-time and session-based (like a short text-based menu).
  • Often used for balance checks, mobile banking, and provisioning menus.

Technical Specification

USSD is defined by 3GPP:

  • 3GPP TS 22.090 – Stage 1 (service description)
  • 3GPP TS 23.090 – Stage 2 (architecture, message flows)
  • 3GPP TS 24.090 – Stage 3 (protocol-level details)

USSD messages are carried over the MAP (Mobile Application Part) protocol in SS7 networks.


:white_check_mark: 2. QMI (Qualcomm MSM Interface) Codes

What QMI is

QMI stands for Qualcomm MSM Interface.
It is a proprietary control protocol used between Qualcomm modems (baseband processors) and the operating system (Linux, Android, Windows).

QMI provides API commands for:

  • SIM management
  • Network registration
  • Data call setup (PDP context)
  • SMS
  • Radio configuration (LTE bands, 5G settings)
  • Firmware updates
  • Diagnostics

Where QMI is used

Devices that use QMI:

  • Qualcomm Snapdragon smartphones
  • Qualcomm-based 4G/5G USB modems
  • Qualcomm M.2 data cards (e.g., Sierra Wireless, Telit)
  • Linux routers using ModemManager or libqmi

What “QMI codes” are

QMI is structured into services, each with numbered request/response messages.

Examples:

  • QMI_WDS — Wireless Data Service
  • QMI_DMS — Device Management Service
  • QMI_NAS — Network Access Service
  • QMI_UIM — UICC/SIM access
  • QMI_RF — Radio frequency control

Each QMI message has:

  • A service ID
  • A message ID
  • A TLV (Type-Length-Value) encoded payload

Example (simplified):
QMI_NAS_GET_SIGNAL_STRENGTH = service 0x04, message ID 0x0020.

Official Specifications?

Qualcomm does not publicly publish full official QMI specifications.

However, reverse-engineered and partially documented sources exist:

:blue_book: Public Documentation

Inside Qualcomm’s QCN/SDM developer programs, more complete documents exist, but access requires NDAs.


:magnifying_glass_tilted_left: Summary

Feature USSD QMI
Layer Network signaling (SS7/MAP) Device-to-modem interface
Purpose User/operator interactive menus Modem control & configuration
Used in GSM/UMTS/LTE networks Qualcomm-based devices
Standardized by 3GPP Not fully public (Qualcomm proprietary)
Accessibility Open specification Partials via libqmi, NDA for full docs

If you want, I can also provide:

:white_check_mark: List of common QMI commands
:white_check_mark: How QMI compares to MBIM and AT commands
:white_check_mark: Code examples (Linux qmicli, mmcli)
:white_check_mark: An overview of how Android communicates with the modem via QMI

Just tell me!

1 Like

I think the key point (perhaps missed in all of that) is that … even though you may “dial” a code, there is no dialling going on here. The dialler has to recognise the code, and not dial it, but instead convert it into the right USSD message (indirectly via the cellular modem, either via QMI where applicable or via an AT command where available). So there is ample scope for some codes not to work on the Librem 5 side because they are not recognised on the Librem 5 side.

I imagine that there is no real need for dialling obscure codes. The dialler number pad could just have a button to press (e.g. labelled USSD) that displays a different window from which you can explicitly choose what USSD function you want.

As an example of how this (doesn’t) works on the iPhone … there are some dialling codes that are so obscure that it is convenient to add a contact that records the codes. However calling that contact does not work. You have to actually dial the codes on the number pad. (That doesn’t mean that it’s pointless to create the contact because the contact at least is a record of what you need to dial.)

2 Likes

Note that there are result messages of the network to be communicated to the human dialing an USSD, sometimes even as a menu to select between options 1…5 as answer.

2 Likes