Modem Manager 1.24.0

ModemManager is a system daemon which controls WWAN (2G/3G/4G/5G) devices and connections. Alongside NetworkManager, ModemManager is the default mobile broadband management system in most standard GNU/Linux distributions (Debian, Fedora, Ubuntu, Arch Linux…), and is also available in custom systems built with e.g. buildroot, yocto/openembedded or ptxdist. ModemManager may also be used in routers running openwrt (integrated with netifd as a new protocol handler), or to manage both voice and data in mobile phones running postmarketos (PINE64 PinePhone, BQ Aquaris X5, OnePlus 6…). libqmi, libmbim and libqrtr-glib are additional libraries that are developed under the umbrella of the ModemManager project, but which can also be used independently with their own command line tools.

Tags modems network broadband mobile voip c python
License GNU GPLv3
State stable

Recent Releases

1.24.004 Jun 2025 22:45 major feature: This is a new stable release of ModemManager. The following notes are directed to package maintainers: This version now requires: libmbim = 1.32.0 (for the optional MBIM support) libqmi = 1.36.0 (for the optional QMI support). The most important features and changes in this release are the following: API: Add new TIMEOUT, PROTOCOL, and THROTTLED core errors Add new MMCarrierLockError errors Add new Messaging interface SetDefaultStorage method MM_BEARER_IP_FAMILY_ANY ABI break introduced in 1.20 Add new Cell Broadcast API Report sub-system vendor and product IDs in Firmware device IDs. Core: Improved handling of odd +CGDCONT responses Add support for putting modems in low-power mode during suspend Retry AT+CNUM a couple times if the SIM is busy probing of modems that only expect a single AT port Reprobe modems on late port additions; ensures modems use the optimal control channel regardless of kernel/udev timing Ignore FASTBOOT ports during probing Better logging of user requests probing of single-port devices by starting support check on first port addition Don't crash as often due to assumption that a primary modem port always exists Add support for loading and setting initial EPS bearer settings Quite a few memory leak Lay groundwork for Intel XMM7xxx RPC-based devices restart AT probing if a port is stuck in PPP mode when modem is detected Serialize core modem operations to prevent multiple D-Bus clients from interrupting each other's operations Work around elogind sometimes not sending the PrepareForSleep signal Add generic Qualcomm Firehose and Sahara firmware update support. Translations: Updated Brazilian Portuguese and Polish translations. Modem interface: Logic to detect SIM swaps has been improved Do not set up carrier configs if the eSIM has no profiles Add delay between consecutive power state transitions for reliability Allow low-power state change while modem is enabled. 3GPP interface: Add 'NetworkRejection' property reporting errors du
1.22.006 Feb 2024 13:56 major feature: The most important features and changes in this release are the following: * A new "MSG" (message) log verbosity level is introduced, which is also the new default one if none explicitly defined. This level takes the place of the old "INFO" level, as a level including the most important messages that should be logged without needing to be warnings or errors. The new "INFO" level is more verbose than "MSG" but less verbose than "DBG", and may be useful as default in systems where active debugging of WWAN related issues is required. E.g. all user operations triggered via DBus method calls are logged in "INFO" level. * Introduced the concept of "personal information" which should by default not be included in log messages. Enabling personal information in logs requires to run the daemon with the '--log-personal-info' option. This feature is mostly implemented for QMI and MBIM specific logs, but hasn't yet been included in generic daemon logs or when using the AT protocol. Changes and fixes related to this feature will be cherry-picked and included in the future stable branch updates. * API: ** Added new 'Modem.Physdev' property to unconditionally publish the physical modem device path. ** Updated the 'Modem.GetCellInfo()' method to include serving cell type and bandwidth information in LTE and 5GNR cells. ** New 'Modem3gpp.SetCarrierLock()' method to send the list of carrier network information to the modem. ** The 'SetLogging()' method allows a new "MSG" log level. * Core: ** The codebase has been updated to use GTask in all operations and there are no longer any deprecated methods from GLib being used. ** The port probing logic is now able to guess port type hints during runtime, e.g. based on the kernel driver in use or the wwan subsystem port 'type' attributes. ** Default probing and wait times have been increased, in order to cope with slow kernel events r