Overview of changes in libmbim 1.28 ---------------------------------------- * There is no longer an upstream-provided source tarball, please use the signed git tag '1.28.0' instead to refer to the sources of this release. * License boilerplate in the sources has been changed by SPDX identifiers. * This version includes support for most operations in MBIM Extensions v2 (for 5G NSA) and v3 (for 5G SA). The enabling of the updated extensions requires the user of the library to explicitly request what version wants to be used, via the new 'MBIM_DEVICE_OPEN_FLAGS_MS_MBIMEX_V2' or 'MBIM_DEVICE_OPEN_FLAGS_MS_MBIMEX_V3' flags in the device open request. Please note that if one process enables the v2 or v3 support, it will apply to operations done by other processes as well. When using the proxy, the current version support is propagated to all clients of the proxy automatically. * The verbose message logging will now by default hide all fields that are considered personal information. Extended message logging including all field contents should be explicitly requested. * Build: ** The GNU autotools (autoconf/automake/libtool) support has been fully removed, this release requires the use of the meson build system. ** The 'instrospection' meson option is now a boolean. ** New boolean 'man' meson option to allow disabling the man page generation. * Extended the Basic Connect service, including the following operations: * MBIM_CID_BASIC_CONNECT_REGISTER_STATE (MBIMEx v2.0) * MBIM_CID_BASIC_CONNECT_PACKET_SERVICE (MBIMEx v2.0) * MBIM_CID_BASIC_CONNECT_SIGNAL_STATE (MBIMEx v2.0) * MBIM_CID_BASIC_CONNECT_SUBCRIBER_READY_STATUS (MBIMEx v3.0) * MBIM_CID_BASIC_CONNECT_PACKET_SERVICE (MBIMEx v3.0) * MBIM_CID_BASIC_CONNECT_CONNECT (MBIMEx v3.0) * MBIM_CID_BASIC_CONNECT_IP_PACKET_FILTERS (MBIMEx v3.0) * Extended the Microsoft-defined Basic Connect Extensions service, including the following operations: * MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_LOCATION_INFO_STATUS (MBIMEx v1.0) * MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_PROVISIONED_CONTEXTS (MBIMEx v1.0) * MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_BASE_STATIONS_INFO (MBIMEx v1.0) * MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_VERSION (MBIMEx v2.0) * MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_DEVICE_CAPS (MBIMEx v3.0) * MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_MODEM_CONFIGURATION (MBIMEx v3.0) * MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_REGISTRATION_PARAMETERS (MBIMEx v3.0) * MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_LTE_ATTACH_INFO (MBIMEx v3.0) * MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_BASE_STATIONS_INFO (MBIMEx v3.0) * MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_WAKE_REASON (MBIMEx v3.0) * Extended the Microsoft-defined UICC Low Level Access service, including the following operations: * MBIM_CID_MS_UICC_LOW_LEVEL_ACCESS_APPLICATION_LIST * MBIM_CID_MS_UICC_LOW_LEVEL_ACCESS_FILE_STATUS * MBIM_CID_MS_UICC_LOW_LEVEL_ACCESS_READ_BINARY * MBIM_CID_MS_UICC_LOW_LEVEL_ACCESS_READ_RECORD * New Microsoft-defined Voice Extensions service, including the following operations: * MBIM_CID_MS_VOICE_EXTENSIONS_NITZ * Extended the Intel-defined Firmware Update service, including the following operations: * MBIM_CID_INTEL_FIRMWARE_UPDATE_MODEM_REBOOT (MBIMEx v2.0) * New Intel-defined Thermal RF service, including the following operations: * MBIM_CID_INTEL_THERMAL_RF_RFIM * Extended the QDU service, including the following operations: * MBIM_CID_QDU_QUECTEL_REBOOT * MBIM_CID_QDU_QUECTEL_READ_VERSION * libmbim-glib: ** Updated the net link operations to support devices exposed by the wwan subsystem. ** New mbim_message_get_printable_full() method to print the contents of a given message specifying the specific MBIMEx version in use. ** New mbim_message_validate() method to validate the contents of the headers in a MBIM message, to be used before accessing its contents. ** Updated all MbimMessage getters so that an implicit validation is done in the g_return_* macros. This validation will not be done if those macros are disabled during build. ** New MBIM_DEVICE_CONSECUTIVE_TIMEOUTS signal in the MbimDevice to report the number of consecutive MBIM request timeouts detected. ** New mbim_device_[get|set|check]_ms_mbimex_version() methods to manage the MBIMEx version support in the MbimDevice. ** New MBIM_DEVICE_OPEN_FLAGS_MS_MBIMEX_[V2|V3] flags in mbim_device_open_full() to allow enabling MBIMEx v2.0 or v3.0 support. ** New MbimTlv type to support the variable-sized fields in MBIMEx v3.0 operations. ** Ensure CLOSED state always in mbim_device_close(), even on error. ** Disallow device close if an open operation is ongoing. ** Extended MbimDataClass with 5G NSA/SA values, used in MBIMEx v2.0, and added new MbimDataClassV3 and MbimDataSubclass types, used in MBIMEX v3.0. ** Extended MbimCtrlCaps and MbimSubscriberReadyState with values reported in MBIMEX v3.0 extensions. ** New MbimWakeType, MbimAccessMediaType, MbimModemConfigurationStatus, MbimFrequencyRange, MbimContextRoamingControl, MbimContextMediaType, MbimContextState, MbimContextOperation, MbimMicoMode, MbimLadnInfo, MbimDefaultPduActivationHint, MbimDrxCycle, MbimSubscriberReadyStatusFlag enums used in MBIMEx v3.0 specific operations. ** New MbimUiccApplicationType, MbimUiccFileAccessibility, MbimUiccFileType and MbimUiccFileStructure enums, used in the MS UICC Low Level Access service. ** New MbimIntelServingCellInfo enum, used in the Intel Thermal RF service. ** New MbimIntelBootMode enum, used in the Intel Firmware Update service. ** New MbimQduQuectelRebootType and MbimQduQuectelVersionType enums used in the Quectel-defined QDU service updates. ** Extended the list of MbimNwError values with values from the 3GPP specs. ** Deprecated MBIM_NW_ERROR_UNKNOWN, use NONE instead. ** Deprecated MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_NETWORK_BLACKLIST, use NETWORK_DENYLIST instead. ** Fixed the public format for CDMA language in the SMS service. * mbimcli: ** New '--device-open-ms-mbimex-v2' option to request to enable MBIMEX v2.0 support. ** New '--device-open-ms-mbimex-v3' option to request to enable MBIMEX v3.0 support. ** New '--verbose-full' option to request enabling logs that include personal information. ** New '--set-ip-packet-filters' action. ** New '--set-provisioned-contexts' action. ** New '--set-signal-state' action. ** New '--set-network-idle-hint' action. ** New '--query-network-idle-hint' action. ** New '--set-emergency-mode' action. ** New '--query-emergency-mode' action. ** New '--set-service-activation' action. ** New '--ms-query-location-info-status' action. ** New '--ms-query-provisioned-contexts' action. ** New '--ms-set-provisioned-contexts' action. ** New '--ms-query-base-stations' action ** New '--ms-query-version' action. ** New '--ms-query-registration-parameters' action. ** New '--ms-set-registration-parameters' action. ** New '--ms-query-modem-configuration' action. ** New '--ms-query-wake-reason' action. ** New '--ms-query-uicc-application-list' action. ** New '--ms-query-uicc-file-status' action. ** New '--ms-query-uicc-read-binary' action. ** New '--ms-query-uicc-read-record' action. ** New '--ms-set-uicc-open-channel' action. ** New '--ms-set-uicc-close-channel' action. ** New '--ms-query-uicc-atr' action. ** New '--ms-set-uicc-apdu' action. ** New '--ms-set-uicc-reset' action. ** New '--ms-query-uicc-reset' action. ** New '--ms-set-uicc-terminal-capability' action. ** New '--ms-query-uicc-terminal-capability' action. ** New '--ms-query-nitz' action. ** New '--intel-query-rfim' action. ** New '--intel-set-rfim' action. ** Updated '--connect' action to deprecate 'apn' and prefer 'access-string'. ** Updated '--connect' action to support 'compression' and 'context-type'. ** Updated '--intel-modem-reboot' action to optionally receive the boot mode type argument. ** Fixed the Quectel specific operations so that they have the --quectel prefix and do not overwrite the ones in the Basic Connect service. * Several other improvements and fixes. The following features which were backported to 1.26.x releases are also present in libmbim 1.28.0: * mbim-codegen: explicitly require python3. * compat: deprecate the MbimLteAttachStatus type. * libmbim-glib: added support for a new Quectel service. * mbimcli: new '--quectel-query-radio-state' and '--quectel-set-radio-state' operations, which provide a way to FCC unlock EM120 modules in new Lenovo laptops. Overview of changes in libmbim 1.26 ---------------------------------------- * Build now requires GLib/GObject/GIO 2.56. * The GUdev optional build/runtime requirement is now fully dropped, it's no longer used. * Building from git no longer requires autoconf-archive, the needed AX_ macros are now shipped inside m4/. * In addition to building from a source release tarball, or building from git checkouts using the GNU autotools suite (autoconf/automake/libtool), this release includes the initial support for the meson build system. The meson port is not fully complete yet, as there are some missing things in the doc generation steps, but for system integration or development purposes, the port should be fully operational. This major release, including all its stable updates in the 1.26.x series, will be the last ones providing support for GNU autotools. The next major release will likely be a meson-only one, and will therefore not be based on a source release tarball any more, but on specific git tags instead. * Implemented new link management operations, exclusively for the cdc_mbim driver for now. These new operations allow creating or deleting VLAN network interfaces in order to run multiplexed data sessions over one single physical network interface. * Added support for the Microsoft-defined SAR service, including the following operations: ** MBIM_CID_MS_SAR_CONFIG ** MBIM_CID_MS_SAR_TRANSMISSION_STATUS * Added support for the Microsoft-defined UICC Low Level Access service, including the following operations: ** MBIM_CID_MS_UICC_LOW_LEVEL_ACCESS_ATR ** MBIM_CID_MS_UICC_LOW_LEVEL_ACCESS_OPEN_CHANNEL ** MBIM_CID_MS_UICC_LOW_LEVEL_ACCESS_CLOSE_CHANNEL ** MBIM_CID_MS_UICC_LOW_LEVEL_ACCESS_APDU ** MBIM_CID_MS_UICC_LOW_LEVEL_ACCESS_TERMINAL_CAPABILITY ** MBIM_CID_MS_UICC_LOW_LEVEL_ACCESS_RESET * Added support for the Qualcomm-defined QDU service, including the following operations: ** MBIM_CID_QDU_UPDATE_SESSION ** MBIM_CID_QDU_FILE_OPEN ** MBIM_CID_QDU_FILE_WRITE * Extended the Microsoft-defined Basic Connect Extensions service, including the following operations: ** MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_DEVICE_CAPS ** MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_SYS_CAPS ** MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_SLOT_INFO_STATUS ** MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_DEVICE_SLOT_MAPPINGS * libmbim-glib: ** Logic updated to make sure full packets are written at once, instead of writing them in chunks. ** Updated the "LTE attach status" APIs in order to avoid creating unneeded struct types in the interface. The older methods have been deprecated and maintained in the library for compatibility purposes only. * mbim-proxy: ** Internal buffer size updated from 512 bytes to 4096 bytes. * mbimcli: ** New '--ms-set-sar-config' and '--ms-query-sar-config' actions. ** New '--ms-set-transmission-status' and '--ms-query-transmission-status' actions. ** Updated '--enter-pin', '--disable-pin' and '--unlock-pin' to allow other PIN types, not just assuming PIN1. ** New '--link-add', '--link-delete', '--link-list' and '--link-delete-all' actions. ** New '--ms-query-sys-caps' action. ** New '--ms-query-slot-info-status' action. ** New '--ms-query-device-slot-mappings' and '--ms-set-device-slot-mappings' actions. ** Renamed '--ms-query-lte-attach-status' to '--ms-query-lte-attach-info', and kept the old name for compatibility purposes. * mbim-network: ** When using the mbim-proxy, skip trying to manage the MBIM session and transaction ids as that is implicitly done by the proxy already. * Several other minor improvements and fixes. The following features which were backported to 1.24.x releases are also present in libmbim 1.26.0: * Fixed merged subscribe list reporting and handling in the proxy. * Fixed transaction id handling when multiple fragments are involved. * Fixed read overflows on malformed messages. * Skip warnings if descriptors file cannot be read, as in new MBIM backends other than cdc_mbim. Overview of changes in libmbim 1.24 ---------------------------------------- * Build now requires GLib/GObject/GIO 2.48. * Added new GObject Introspection support in the library, that can be explicitly requested during configure with --enable-introspection=yes. With the new introspection support, the libmbim-glib library can now be used directly from e.g. python programs, as in the example included with the release. * Added release version information to all the types and methods of the public library API, and added new per-version indices in the documentation. * Added g_autoptr() support to all public types. * Several other minor improvements and fixes. Overview of changes in libmbim 1.22 ---------------------------------------- * Build updated with several improvements: ** The build has been updated to use by default all warnings enabled by AX_COMPILER_FLAGS(), and therefore when building the release from a git checkout, autoconf-archive >= 2017.03.21 is now required. This new build dependency isn't required when building from the release tarball. ** Also when building from a git checkout, beware because by default --enable-compile-warnings=error is enabled, which implies -Werror. If you'd like to build from git and avoid -Werror, you should explicitly use --enable-compile-warnings=yes (to keep the warnings but without being errors), --enable-compile-warnings=no (to disable all the extra warnings enabled by default) or --disable-Werror (to unconditionally make all compiler warnings non-fatal). * libmbim-glib: ** Message parsing logic improved to avoid reading fields out of bounds, e.g. if the messages sent by the modem are malformed or not in line with the specs. * Several other minor improvements and fixes. The following features which were backported to 1.20.x releases are also present in libmbim 1.22.0: * libmbim-glib: fixed handling of fragmented indication messages. * mbimcli: added --query-provisioned-contexts. * mbim-proxy: fix logic when symlinks to cdc-wdm ports are used. Overview of changes in libmbim 1.20 ---------------------------------------- * Build updated with several fixes: ** Explicitly define max allowed GLib version. ** Fix issues with -Werror=type-limits. ** Made compiler warning options compatible with clang. * mbim-proxy: ** Fixed client subscription to service indications using wildcard. ** Fixed client subscription update logic when services/cids are being removed. ** New '--empty-timeout=[SECS}' option to specify the empty lifetime duration. ** New '--no-exit' option to avoid the proxy from exiting. * Several other minor improvements and fixes. The following features which were backported to 1.18.x releases are also present in libmbim 1.20.0: * mbim-proxy: default empty lifetime set to 300s. Overview of changes in libmbim 1.18 ---------------------------------------- * Build now looks for the correct python provider in the system during configure. * New Microsoft Basic Connect Extensions service, that includes new commands to manage Protocol Configuration Operations (PCO) as well as LTE attach status and settings. * libmbim-glib: ** Added support to fully print all message contents, including all fields, when traces are enabled. ** Added support for QMI indications over MBIM. ** Added additional cause codes to MbimNwError. ** Fixed signal emission in device, so that it's done before completing transaction task. * mbim-proxy: ** Fixed the management of subscribed events, so that the lists are maintained per-device. * mbimcli: ** New '--ms-query-pco' action. ** New '--ms-query-lte-attach-configuration' action. ** New '--ms-query-lte-attach-status' action. * Several other minor improvements and fixes. The following features which were backported to 1.16.x releases are also present in libmbim 1.18.0: * mbimcli: ** Fix SNR reporting in --atds-query-signal output. ** Longer timeout (60s) in --disconnect. ** Add "ip-type" property to --connect * libmbim-glib: ** Fix printing message in Intel Firmware Update service. ** Fix error reporting when unknown status. Overview of changes in libmbim 1.16 ---------------------------------------- * Build now requires GLib 2.36. * All the code base was ported to use the GTask based asynchronous operations support instead of the deprecated GSimpleAsyncResult. * New AT&T Device Service support, that includes operator-specific commands to query signal info or cell location. * New Intel Firmware Update Service support, that includes commands to request the Intel-based module to reboot in firmware download mode. * libmbim-glib: ** Added MBIM_STATUS_ERROR_CONTEXT_NOT_SUPPORTED to MbimStatusError. ** Avoid using iconv() directly for the UTF-16BE conversions, which makes it possible to use libmbim on systems with a stub iconv() implementation. ** Added support to detect already open MBIM channels on the Sierra Wireless EM7345. * mbimcli: ** New '--query-ip-packet-filters' action. ** New '--query-pin-list' action. ** New '--atds-query-signal' and '--atds-query-location' actions. ** New '--intel-modem-reboot' action. * Several other minor improvements and fixes. The following features which were backported to 1.14.x releases are also present in libmbim 1.16.0: * libmbim-glib: ** Prefer realpath() to canonicalize_file_name(). ** Added MBIM_READY_INFO_FLAG_NONE to MbimReadyInfoFlag. * mbim-proxy: ** Avoid receiving signals from the parent process. * mbimcli: ** Add cancellability to the query-ip-configuration action. Overview of changes in libmbim 1.14 ---------------------------------------- * New support for the 'QMI over MBIM' service, so that clients can use libqmi to build messages and libmbim to transport them. * The GUDev library, which we use to read the max message size from the USB descriptor, is now optional. When configuring, it will be used by default only if it's found. It can also be explicitly disabled using the new configure switch '--without-udev' or explicitly enabled using '--with-udev'. If GUDev isn't used, libmbim-glib will rely on sysfs directly. * libmbim-glib updates: ** Added support for building messages of custom services. * mbim-network updates: ** Added support for loading profiles from different paths using the new '--profile' option. This makes it possible to use mbim-network with multiple devices running in the same system. ** Added support to allow specifying APN user (APN_USER), password (APN_PASS) and authentication type (APN_AUTH) in the profile. ** Added support to allow using the mbim-proxy setup by configuring it in the profile file (PROXY=yes). * Several other minor improvements and fixes. The following features which were backported to 1.12.x releases are also present in libmbim 1.14.0: * mbimcli updates: ** Updated '--connect' arguments to allow specifying "key=value" pairs. The old legacy "[(APN),(PAP|CHAP|MSCHAPV2),(Username),(Password)]" format is kept as valid for backwards compatibility, although it should be assumed deprecated. ** Longer timeouts for connect/register operations. ** Report IP configuration when connected. ** Allow specifying session ids. * libmbim-glib updates: ** Probing retry interval increased to 5s. Overview of changes in libmbim 1.12 ---------------------------------------- * New `--enable-mbim-username' option during configure, which allows specifying which will be the user owning the /dev/cdc-wdm character devices of all MBIM modems (udev rules are installed to change file ownership). If this option is used, the mbim-proxy will only allow connections from processes running by the specified user or by the root user. * Function error messages can now be returned by the MbimDevice as responses to `Command', `Open' or `Close' messages. Users of the library should not assume the type of message returned to the previous actions. * The MbimProxy will monitor for 'NotOpened' errors, and when one detected it will directly close the internal MbimDevice. Any subsequent request sent by clients to that specific device will be aborted with a proxy-generated 'NotOpened' error. Clients will need to explicitly reopen the ports in that case. * The API now has a new mbim_message_response_get_result() method which allows getting a GError from a message which may be of a specific type (e.g. a `Command Done' message in response to a `Command' request) or instead the generic `Function Error' message type. Users of the library can use this new method to avoid assuming the type of message returned. E.g. the following check: mbim_message_command_done_get_result (response, &error); Can be updated as: mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &error); And the same logic can be applied to `Open' and `Close' messages. * Other bugfixes and minor improvements: ** Attach timeout and idle events to the thread-default context. ** Fix bashisms in the mbim-network script. Overview of changes in libmbim 1.10 ---------------------------------------- * API break: Flag values in 'MbimRegistrationFlag' were updated to match the ones in the MBIM documentation. * Implemented a new 'mbim-proxy', which allows sharing a single MBIM control port among different processes. The usage of the proxy is optional, and can be requested by specifying the MBIM_DEVICE_OPEN_FLAGS_PROXY flag in the new mbim_device_open_full() method. The 'mbimcli' command line tool was also extended with a new '--device-open-proxy,-p' option, to allow requesting the use of the proxy process. * New 'removed' signal added to the MbimDevice, to notify when the underlying connection to the device is lost (e.g. lost connection to the mbim-proxy, or lost access to the MBIM control port). * Added support for registering and using custom services. * Added additional GMM cause codes to MbimNwError. * Transactions are now matched not only by ID but also by type. * Several other minor improvements and fixes. Overview of changes in libmbim 1.8 ---------------------------------------- * Added support for additional MBIM messages: MBIM_CID_MS_FIRMWARE_ID_GET MBIM_CID_MS_HOST_SHUTDOWN_NOTIFY * Updated mbimcli with new commands: --set-radio-state --ms-query-firmware-id --ms-notify-host-shutdown --dss-connect --dss-disconnect * Several enums and functions were renamed, and marked as deprecated. A small layer is given to provide backwards compatibility. * Several other minor improvements and fixes. Overview of changes in libmbim 1.6 ---------------------------------------- * Updated mbimcli with new commands: --phonebook-query-configuration --phonebook-read --phonebook-read-all --phonebook-write --phonebook-delete --phonebook-delete-all * Added generation of man pages for mbimcli and mbim-network. * Several other minor improvements and fixes. Overview of changes in libmbim 1.4 ---------------------------------------- * Added support for additional MBIM messages: MBIM_SMS_CONFIGURATION MBIM_SMS_READ MBIM_SMS_SEND MBIM_SMS_DELETE MBIM_SMS_MESSAGE_STORE_STATUS MBIM_USSD MBIM_PHONEBOOK_CONFIGURATION MBIM_PHONEBOOK_READ MBIM_PHONEBOOK_DELETE MBIM_PHONEBOOK_WRITE MBIM_STK_PAC MBIM_STK_TERMINAL_RESPONSE MBIM_STK_ENVELOPE MBIM_DEVICE_SERVICE_SUBSCRIBER_LIST MBIM_AUTH_AKA MBIM_AUTH_AKAP MBIM_AUTH_SIM MBIM_PACKET_STATISTICS MBIM_NETWORK_IDLE_HINT MBIM_EMERGENCY_MODE MBIM_IP_PACKET_FILTERS MBIM_DSS_CONNECT MBIM_MULTICARRIER_PROVIDERS * Updated mbimcli with new commands: --query-packet-statistics * Use gtester to run unit tests. Overview of changes in libmbim 1.2 ---------------------------------------- * Added support for additional MBIM messages: MBIM_VISIBLE_PROVIDERS MBIM_PREFERRED_PROVIDERS MBIM_HOME_PROVIDER MBIM_SERVICE_ACTIVATION * Updated mbimcli with new commands: --query-visible-providers --query-preferred-providers --query-home-provider --query-signal-state --no-open --noop * Updated mbim-network with session support, keeping TRID sequence between commands. * New symbols to check library version. Overview of changes in libmbim 1.0 ---------------------------------------- * Updated mbimcli with new commands: --enter-pin --change-pin --enable-pin --disable-pin --enter-puk --query-registration-state --register-automatic --query-packet-service-state --attach-packet-service --detach-packet-service --query-connection-state --connect --disconnect --no-close * Removed the 'basic-connect' prefix from mbimcli commands. * New 'mbim-network' script to help launch a connection through the shell. * Added gtk-doc documentation Overview of changes in libmbim 0.0.1 ---------------------------------------- Initial release.