aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-09-15cinterion: Add SIM hot swap to AT broadband modems (PLS8 & PLAS9).Jessy Diamond Exum
Enable the SCKS Unsolicited Result Code (URC) to detect SIM hot swap, and trigger SIM redetection.
2020-09-15cinterion: Configure the PLAS9 to correctly send Unsolicited Result Codes.Jessy Diamond Exum
The PLS8 and PLAS9 modems (and likely many others modems supported by this driver) have two AT capable serial ports: The 'MODEM' AT port (default for PPP) and the 'APPLICATION' AT port (used for general control). The PLS8 modem sends URCs to the APPLICATION port by default, while he PLAS9 defaults sending URCs to the MODEM port. To get URCs to behave on both modems, it is necessary to explicitly set the URC reporting port to APPLICATION.
2020-09-14iface-modem: don't reconfigure sim hot swap context on SIM PIN unlockAleksander Morgado
If we had already successfully run the sim hot swap context setup during the initial initialization, make sure we don't re-run on SIM PIN unlock, because we may be re-creating signal handlers and such.
2020-09-11quectel: minor refactor in the sim hot swap setup logicAleksander Morgado
2020-09-08iface-modem: add mm_iface_modem_check_for_sim_swap functionTeijo Kinnunen
The function shall be needed for profile switch checking.
2020-09-07bearer-mbim: avoid attempting to load deactivated IP typesAleksander Morgado
If we're asking for IPv4v6 and we get IPv4-only connected, we shouldn't attempt to provide IPv6 addressing details in the bearer object, because we would fallback to say DHCP is needed if we were not able to load any IPv6 details from the modem. This is, instead of provinding both IPv4 and IPv6 details: ------------------------------------ Properties | apn: internet | roaming: allowed | ip type: ipv4v6 | allowed-auth: none, pap, chap, mschap, mschapv2, eap ------------------------------------ IPv4 configuration | method: static | address: 10.182.100.233 | prefix: 24 | gateway: 10.182.100.1 | dns: 80.58.61.250, 80.58.61.254 ------------------------------------ IPv6 configuration | method: dhcp | prefix: 0 We should report only IPv4 details: ---------------------------------- Properties | apn: internet | roaming: allowed | ip type: ipv4v6 | allowed-auth: none, pap, chap, mschap, mschapv2, eap ---------------------------------- IPv4 configuration | method: static | address: 10.182.100.233 | prefix: 24 | gateway: 10.182.100.1 | dns: 80.58.61.250, 80.58.61.254
2020-09-07bearer-mbim: don't fail IPv4 connection if IPv4v6 was requestedAleksander Morgado
If we ask for IPv4v6 is requested but the network only grants IPv4, we end up receiving the 'Connect Set' response with nw_error set to 'pdp-type-ipv4-only-allowed'. In this case, we should still succeed the connection attempt and only report the IPv4 info. We therefore change the logic to skip processing the nw_error unless the activation state is reported as ACTIVATED or ACTIVATING.
2020-09-07iface-modem: add an optional iccid parameter to check_for_sim_swapTeijo Kinnunen
If the new iccid is already available, reading the iccid from the card can be skipped.
2020-09-04quectel: prefer +CTZU=3 to +CTZU=1 if supportedAleksander Morgado
Some quectel modems, like the EC25, require +CTZU=3 in order to have CCLK? report localtime instead of UTC time. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/233
2020-09-04quectel: new custom +CTZU=? parserAleksander Morgado
Some quectel devices, like the EC25 have a non-standard additional '3' mode value: 0: Disable automatic time zone update via NITZ 1: Enable automatic time zone update via NITZ 3: Enable automatic time zone update via NITZ and update LOCAL time to RTC
2020-08-29simtech: add SIM7070/SIM7080/SIM7090 port type hintsAleksander Morgado
These modules have 2 different USB layouts: The default layout with PID 0x9205 (AT+CUSBSELNV=1) exposes 4 TTYs and an ECM interface: T: Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 6 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=1e0e ProdID=9205 Rev=00.00 S: Manufacturer=SimTech, Incorporated S: Product=SimTech SIM7080 S: SerialNumber=1234567890ABCDEF C: #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=500mA I: If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#=0x4 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether I: If#=0x5 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether The purpose of each TTY is as follows: * ttyUSB0: DIAG/QCDM port. * ttyUSB1: GNSS data. * ttyUSB2: AT-capable port (control). * ttyUSB3: AT-capable port (data). In the secondary layout with PID=0x9206 (AT+CUSBSELNV=86) the module exposes 6 TTY ports: T: Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 8 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=02(commc) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1e0e ProdID=9206 Rev=00.00 S: Manufacturer=SimTech, Incorporated S: Product=SimTech SIM7080 S: SerialNumber=1234567890ABCDEF C: #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=500mA I: If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#=0x3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#=0x4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#=0x5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option The purpose of each TTY is as follows: * ttyUSB0: DIAG/QCDM port. * ttyUSB1: GNSS data. * ttyUSB2: AT-capable port (control). * ttyUSB3: QFLOG interface. * ttyUSB4: DAM interface. * ttyUSB5: AT-capable port (data).
2020-08-28libmm-glib,docs: add index for 1.16Aleksander Morgado
2020-08-28shared-qmi: implement SIM slot switchingAleksander Morgado
Using the 'UIM switch slot' operation, this commit introduces the ability to change which SIM slot to be active at any given time in a Multi-SIM Single-Standby setup. There is no validation done on whether the selected SIM slot has a valid SIM card inserted or not; if the user selects a slot without any SIM card, the newly probed modem object will start in Failed state right away.
2020-08-28shared-qmi: implement SIM slots loading during initializationAleksander Morgado
This commit introduces Multi-SIM Single-Standby support in all QMI capable devices that support multiple SIM slots. The 'UIM Get Slot Status' method is used to list all available physical slots as well as the availability of SIM cards in the different slots. This method also provides UICC already, so the SIM objects are created early and exposed early in DBus. Once all slots are listed, the logic will briefly make each of the available SIM cards active in order to read additional settings like IMSI, MCCMNC or the Operator name. This brief switching is required because in a Single-Standby setup only one SIM can be active at any given time. The last slot to probe is always the one that was active originally, making sure that the modem initialization logic can go on with the correct SIM slot.
2020-08-28sim-qmi: implement explicit wait for SIM readinessAleksander Morgado
During the base SIM initialization process, where we ask the modem for the properties of the currently primary active SIM, we need to make sure that the SIM is ready before attempting to query this information. This explicit wait is required when loading properties for non active SIMs during the short period of time when they're made active.
2020-08-28sim-qmi: allow creating preinitialized SIM objectsAleksander Morgado
The default SIM creation method will attempt to initialize the SIM properties during the object creation. This new method allows creating SIM objects with already known property values, and therefore not explicitly running the asynchronous initialization process. Completely equivalent to mm_base_sim_new_initialized() but creating a subclassed MMSimQmi instead of the generic MMBaseSim.
2020-08-28helpers-qmi: fix detection of primary active SIM statusAleksander Morgado
The original logic that parsed the 'UIM Get Card Status Output' did a bit of guessing to decide what was the current lock status to consider in the modem. This guessing was fine on systems with a single SIM slot, but it was very wrong as soon as multiple SIMs had to be considered. In a Multi-SIM Multi-Standby setup, with multiple SIMs reported as active, we should look for the one flagged as "GW primary" to consider it the primary SIM card of the system,the one required to start a data connection. We explicitly ignore the ones flagged as "1X primary", as we don't consider a SIM card required in CDMA/EVDO setups.
2020-08-28helpers-qmi: move 'UIM Get Card Status Output' parsing to helpersAleksander Morgado
This is going to be used in handling the multi-SIM setup, so make it a common helper.
2020-08-28api,modem: new 'SetPrimarySimSlot' methodAleksander Morgado
This new method allows changing the SIM slot considered as primary, when the modem supports multiple SIM slots. The generic handling of this method will make sure that the modem object and all its SIM objects are re-probed from scratch as soon as a successful SIM slot switch happens. Implementations may report MM_CORE_ERROR_EXISTS when the switch doesn't need to happen (e.g. if the requested SIM slot is already the active one).
2020-08-28mmcli: also lookup SIM objects in the 'SimSlots' propertyAleksander Morgado
If the device supports multiple SIM slots, when the user provides a PATH or INDEX of a SIM card to use, don't look for the SIM object only in the 'Sim' property, also look for it in the 'SimSlots' property.
2020-08-28base-modem: SIM switch handling at base modem levelAleksander Morgado
When the SIM switch doesn't happen as part of an async hot swap detection, we should trigger the switch handling at base modem level, which e.g. doesn't require explicit cleanup of the SIM hot swap detection port context.
2020-08-28api,modem: new 'SimSlots' and 'PrimarySimSlot' propertiesAleksander Morgado
The 'SimSlots' property exposes an array of SIM object paths, with one array item for each available SIM slot in the system. If a valid SIM card is found in a given slot, the path of the SIM object will be exposed in the array item; if no valid SIM card is found, the empty object path ("/") will be exposed instead. The 'PrimarySimSlot' property exposes which of the SIM slots available in the system is the one configured as being primary. In a Multi-SIM Single-Standby setup, the primary slot will be the one corresponding to the single active SIM in the system. In a Multi-SIM Multi-Standby setup, the primary slot will be the one configured to act as primary (e.g. the one that will be used for the data connection) among all the active SIM cards found.
2020-08-28base-sim: allow explicit wait for SIM readiness during initializationAleksander Morgado
Before attempting to load any SIM property value, allow checking whether the SIM is ready for operation or not. This action is implicitly done by the "unlock required check" step that is triggered before initializing the primary SIM card, but it would not be done when initializing other available SIM cards.
2020-08-28base-sim: allow creating preinitialized SIM objectsAleksander Morgado
The default SIM creation method will attempt to initialize the SIM properties during the object creation. This new method allows creating SIM objects with already known property values, and therefore not explicitly running the asynchronous initialization process.
2020-08-28base-sim: new 'slot number' propertyAleksander Morgado
This new property helps us identify in which SIM slot the SIM card is inserted, when multiple slots are available, in the [1,N] range. For the single-SIM systems this value will always be '0'. This property is not publicly exposed in DBus, it is considered an implementation detail.
2020-08-28base-sim: only allow operations on active SIMsAleksander Morgado
If a SIM is inactive we cannot perform any SIM-PIN or SIM-PUK related operation with it.
2020-08-28api,sim: new 'Active' propertyAleksander Morgado
In preparation for the multi-SIM setup, we need a way to tell whether a given SIM card is active or not in the system. On systems with one single SIM slot, the available SIM card will always be active. On Multi-SIM Single-Standby setups we may have multiple SIM slots with multiple SIM cards, but only one of them will be active at any given time. On Multi-SIM Multi-Standby setups we may have multiple SIM slots with multiple SIM cards that may be active at the same time. E.g. the QMI protocol allows up to 5 different active SIM cards (primary, secondary, tertiary...).
2020-08-26sms: fix CMDA SMS UTF-8 translationDavid Leonard
Fixes incoming SMS translation issue seen on MC7354 when translating contents from Latin-1 encoding to UTF-8, because the encoding parameter "ISO−8859−1" used U+2212 (MINUS SIGN) instead of U+002D (HYPHEN-MINUS). [mm-sms-part-cdma.c:873] read_bearer_data_user_data(): text/data: ignored (latin to UTF-8 conversion error): 0: Conversion from character set 'ISO−8859−1' to 'UTF-8' is not supported Fix thanks to Peter Hunt
2020-08-20sms-part-3gpp: allow sending UTF-16 as if it were UCS-2Aleksander Morgado
Despite 3GPP TS 23.038 specifies that Unicode SMS messages are encoded in UCS-2, UTF-16 encoding is commonly used instead on many modern platforms to allow encoding code points that fall outside the Basic Multilingual Plane (BMP), such as Emoji. Update the logic to always use UTF-16 instead of UCS-2 when creating or parsing PDUs (even if we always report as sending or receiving UCS-2). For all purposes, UCS-2 is considered a subset of UTF-16 (assuming that code points out of the [U+0000,U+D7FF] and [U+E000,U+FFFF] ranges are not applicable in UCS-2). Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/250
2020-08-20charsets: refactor coding styleAleksander Morgado
Mostly to use GLib types like gchar or gint, and also to use G_N_ELEMENTS() instead of custom end of array terminating items.
2020-08-20charsets: add UTF-16BE as a possible modem charsetAleksander Morgado
Just as an implementation detail to be taken as an extension of UCS2BE, never really to be used as a real modem charset.
2020-08-20sms-part-3gpp: minor refactor in text split logicAleksander Morgado
2020-08-19broadband-modem-qmi: avoid unused functionsAleksander Morgado
Only applicable when building with WITH_NEWEST_QMI_COMMANDS. mm-broadband-modem-qmi.c:4741:1: error: ‘common_enable_disable_unsolicited_events_signal_strength’ defined but not used [-Werror=unused-function] 4741 | common_enable_disable_unsolicited_events_signal_strength (GTask *task) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mm-broadband-modem-qmi.c:4528:1: error: ‘serving_system_indication_cb’ defined but not used [-Werror=unused-function] 4528 | serving_system_indication_cb (QmiClientNas *client, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ mm-broadband-modem-qmi.c:3468:1: error: ‘common_enable_disable_unsolicited_registration_events_serving_system’ defined but not used [-Werror=unused-function] 3468 | common_enable_disable_unsolicited_registration_events_serving_system (GTask *task) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mm-broadband-modem-qmi.c:2812:1: error: ‘get_serving_system_3gpp_ready’ defined but not used [-Werror=unused-function] 2812 | get_serving_system_3gpp_ready (QmiClientNas *client, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mm-broadband-modem-qmi.c:1652:1: error: ‘get_signal_strength_ready’ defined but not used [-Werror=unused-function] 1652 | get_signal_strength_ready (QmiClientNas *client,
2020-08-19broadband-modem-qmi: fix type comparisonAleksander Morgado
Only applicable when building with WITH_NEWEST_QMI_COMMANDS. mm-broadband-modem-qmi.c: In function ‘process_common_info’: mm-broadband-modem-qmi.c:2924:20: error: comparison is always false due to limited range of data type [-Werror=type-limits] 2924 | if (mnc[2] == 0xFF) { | ^~
2020-08-19ci: add build test for WITH_NEWEST_QMI_COMMANDSAleksander Morgado
We keep this logic around, so lets add a build test as well.
2020-08-16 quectel: add port type hints for the Quectel 5G RM500carlyin
2020-08-16modem-helpers: ensure error is set in mm_3gpp_parse_cpms_test_response()Aleksander Morgado
If splitting the +CPMS=? response in groups fails, make sure we set the GError when returning FALSE.
2020-08-16quectel: add udev rules unit testerAleksander Morgado
2020-08-15quectel: allow MBIM devicesroot
2020-08-12bearer-qmi: if connection aborted, ensure network handles are releasedAleksander Morgado
If the connection attempt is aborted before finishing (either network triggered or user triggered), we need to make sure that we run a 'Stop Network' request for every 'Start Network' that had succeeded until then, or otherwise we'll no longer be able to re-run a 'Start Network' with the same settings and get a proper packet data handle. E.g. in this sequence we attempt a IPv4v6 connection. The logic starts setting up the IPv4 path: Wed Jul 29 14:44:06 2020 daemon.info [1567]: <info> Modem /org/freedesktop/ModemManager1/Modem/0: state changed (registered -> connecting) Wed Jul 29 14:44:06 2020 daemon.debug [1567]: <debug> Launching connection with QMI port (usb/cdc-wdm0) and data port (net/wwan0) Wed Jul 29 14:44:06 2020 daemon.debug [1567]: <debug> Defaulting to use static IP method Wed Jul 29 14:44:06 2020 daemon.debug [1567]: <debug> Running IPv4 connection setup ... The 'Start Network' for IPv4 succeeds and we get a proper packet data handle: Wed Jul 29 14:44:07 2020 daemon.debug [1567]: [/dev/cdc-wdm0] sent generic request (translated)... <<<<<< QMUX: <<<<<< length = 23 <<<<<< flags = 0x00 <<<<<< service = "wds" <<<<<< client = 20 <<<<<< QMI: <<<<<< flags = "none" <<<<<< transaction = 3075 <<<<<< tlv_length = 11 <<<<<< message = "Start Network" (0x0020) <<<<<< TLV: <<<<<< type = "APN" (0x14) <<<<<< length = 8 <<<<<< value = 69:6E:74:65:72:6E:65:74 <<<<<< translated = internet Wed Jul 29 14:44:07 2020 daemon.debug [1567]: [/dev/cdc-wdm0] received generic response (translated)... <<<<<< QMUX: <<<<<< length = 26 <<<<<< flags = 0x80 <<<<<< service = "wds" <<<<<< client = 20 <<<<<< QMI: <<<<<< flags = "response" <<<<<< transaction = 3075 <<<<<< tlv_length = 14 <<<<<< message = "Start Network" (0x0020) <<<<<< TLV: <<<<<< type = "Result" (0x02) <<<<<< length = 4 <<<<<< value = 00:00:00:00 <<<<<< translated = SUCCESS <<<<<< TLV: <<<<<< type = "Packet Data Handle" (0x01) <<<<<< length = 4 <<<<<< value = 80:CD:AD:81 <<<<<< translated = 2175651200 Then, we start the IPv6 connection path: Wed Jul 29 14:44:07 2020 daemon.debug [1567]: <debug> Running IPv6 connection setup ... But, because we suddenly are not registered in the network, the connection is aborted, and we don't cleanup the IPv4 path at this point, as this patch wasn't available. Wed Jul 29 14:44:07 2020 daemon.debug [1567]: <debug> Bearer not allowed to connect, not registered in 3GPP network Wed Jul 29 14:44:07 2020 daemon.debug [1567]: <debug> Forcing disconnection of bearer '/org/freedesktop/ModemManager1/Bearer/56' Wed Jul 29 14:44:07 2020 daemon.debug [1567]: transaction 0xe1 aborted, but message is not abortable Wed Jul 29 14:44:07 2020 daemon.info [1567]: <info> Modem /org/freedesktop/ModemManager1/Modem/0: state changed (connecting -> enabled) Wed Jul 29 14:44:07 2020 daemon.debug [1567]: <debug> Couldn't connect bearer '/org/freedesktop/ModemManager1/Bearer/56': 'operation cancelled' We then attempt a new connection request with the same settings: Wed Jul 29 14:44:22 2020 daemon.info [1567]: <info> Modem /org/freedesktop/ModemManager1/Modem/0: state changed (registered -> connecting) Wed Jul 29 14:44:22 2020 daemon.debug [1567]: <debug> Launching connection with QMI port (usb/cdc-wdm0) and data port (net/wwan0) Wed Jul 29 14:44:22 2020 daemon.debug [1567]: <debug> Defaulting to use static IP method Wed Jul 29 14:44:22 2020 daemon.debug [1567]: <debug> Running IPv4 connection setup And we see how the 'Start Network' command fails with a 'No Effect' error, as the IPv4 was left connected earlier. Due to this, the modem is assumed connected, but we won't have a valid packet data handle to stop the connection cleanly: Wed Jul 29 14:44:22 2020 daemon.debug [1567]: [/dev/cdc-wdm0] sent generic request (translated)... <<<<<< QMUX: <<<<<< length = 23 <<<<<< flags = 0x00 <<<<<< service = "wds" <<<<<< client = 20 <<<<<< QMI: <<<<<< flags = "none" <<<<<< transaction = 3080 <<<<<< tlv_length = 11 <<<<<< message = "Start Network" (0x0020) <<<<<< TLV: <<<<<< type = "APN" (0x14) <<<<<< length = 8 <<<<<< value = 69:6E:74:65:72:6E:65:74 <<<<<< translated = internet Wed Jul 29 14:44:23 2020 daemon.debug [1567]: [/dev/cdc-wdm0] received generic response (translated)... <<<<<< QMUX: <<<<<< length = 26 <<<<<< flags = 0x80 <<<<<< service = "wds" <<<<<< client = 20 <<<<<< QMI: <<<<<< flags = "response" <<<<<< transaction = 3080 <<<<<< tlv_length = 14 <<<<<< message = "Start Network" (0x0020) <<<<<< TLV: <<<<<< type = "Result" (0x02) <<<<<< length = 4 <<<<<< value = 01:00:1A:00 <<<<<< translated = FAILURE: NoEffect <<<<<< TLV: <<<<<< type = "Packet Data Handle" (0x01) <<<<<< length = 4 <<<<<< value = 00:00:00:00 <<<<<< translated = 0
2020-08-12iface-modem: avoid connection status flapping if briefly unregisteredAleksander Morgado
If the modem is connected and we receive indications of a quick unregistration cycle (i.e. unregistered, then registered again) we should not end up flagging the modem as disconnected. We already had some logic to avoid this with the "deferred 3GPP unregistration" logic in the base bearer object, but this logic only took into account the status of the bearer, not the status of the modem. Wed Jul 29 15:35:44 2020 daemon.info [1567]: <info> Modem /org/freedesktop/ModemManager1/Modem/0: 3GPP Registration state changed (home -> idle) Wed Jul 29 15:35:44 2020 daemon.debug [1567]: <debug> Modem /org/freedesktop/ModemManager1/Modem/0: 3GPP location updated (MCC: '0', MNC: '0', Location area code: '0', Tracking area code: '1CE8', Cell ID: '68F832') Wed Jul 29 15:35:44 2020 daemon.debug [1567]: <debug> Connected bearer not registered in 3GPP network Wed Jul 29 15:35:44 2020 daemon.info [1567]: <info> Modem /org/freedesktop/ModemManager1/Modem/0: state changed (connected -> enabled) Wed Jul 29 15:35:44 2020 daemon.debug [1567]: <debug> Modem /org/freedesktop/ModemManager1/Modem/0: signal quality updated (0) Wed Jul 29 15:35:44 2020 daemon.debug [1567]: <debug> Modem /org/freedesktop/ModemManager1/Modem/0: access technology changed (lte -> unknown) Wed Jul 29 15:35:44 2020 daemon.debug [1567]: <debug> Periodic signal checks disabled Wed Jul 29 15:35:44 2020 daemon.info [1567]: <info> Modem /org/freedesktop/ModemManager1/Modem/0: 3GPP Registration state changed (idle -> registering) Wed Jul 29 15:35:44 2020 daemon.debug [1567]: <debug> Modem /org/freedesktop/ModemManager1/Modem/0: 3GPP location updated (MCC: '0', MNC: '0', Location area code: '0', Tracking area code: '1C84', Cell ID: 'A3E050') Wed Jul 29 15:35:44 2020 daemon.debug [1567]: <debug> Modem /org/freedesktop/ModemManager1/Modem/0: 3GPP location updated (MCC: '238', MNC: '1', Location area code: '0', Tracking area code: '1C84', Cell ID: 'A3E050') Wed Jul 29 15:35:44 2020 daemon.info [1567]: <info> Modem /org/freedesktop/ModemManager1/Modem/0: 3GPP Registration state changed (registering -> home) Wed Jul 29 15:35:44 2020 daemon.info [1567]: <info> Modem /org/freedesktop/ModemManager1/Modem/0: state changed (enabled -> registered) We now try to improve this situation by also considering the case where modem is supposed to get into "enabled" state (i.e. not registered, not searching), but we still consider the amount of connected bearers to decide the final state reported by the modem. In other words, a modem with the 3GPP registration reported as 'idle' will still be reported as 'connected' if there is at least one bearer in connected state. This situation will end as soon as the 'deferred 3GPP unregistration' timeout expires, as that will force the bearer to be disconnected.
2020-08-11cinterion: remove limitation to IPv4 only PDP contextsGiacinto Cifelli
There was a limitation in the past in the plugin, because one of the steps during the dial (CONNECT_3GPP_CONTEXT_STEP_PDP_CTX) was to reconfigure a specific CID hardcoding the IP type to IPv4. That logic was removed in commit af2d6c1c4b7f815862313bf0f84b1ff0e91ccd60, but we didn't remove the IPv4 limitation at that point.
2020-08-11cinterion: clarify role of the AT ports for the ELS61/PLS62 familyGiacinto Cifelli
2020-08-11cinterion: setup initial LTE parametersGiacinto Cifelli
2020-08-10sierra: XMM-specific features in XMM based modems (e.g. EM7345)Aleksander Morgado
We create XMM-based modems like the EM7345 with XMM-specific features like the AT+XLCSLSR based GNSS support. E.g.: $ mmcli -m a --location-status ------------------------ Location | capabilities: 3gpp-lac-ci, gps-raw, gps-nmea, agps-msa, agps-msb | enabled: 3gpp-lac-ci | signals: no ------------------------ GPS | refresh rate: 30 seconds $ sudo mmcli -m a --location-enable-gps-nmea successfully setup location gathering $ sudo mmcli -m a --location-get -------------------------- 3GPP | operator code: 214 | operator name: 7 | location area code: 0000 | tracking area code: 6FFE | cell id: 0465CD20 -------------------------- GPS | nmea: $GPGSA,A,1,,,,,,,,,,,,,,,*1E | $GNGSA,A,1,,,,,,,,,,,,,,,,1*1D | $GNRMC,235951.000,V,,,,,,,,,,N,V*20 | $GNVTG,,T,,M,,N,,K,N*32 | $GNGGA,235951.000,,,,,0,0,,,M,,M,,*5F Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/25
2020-08-04cinterion: fixed cast from wrong objectGiacinto Cifelli
MM_BROADBAND_MODEM_CINTERION shall be applied to a *MMBaseModem (ctx->modem here) and not to a *MMBaseBearer (self here)
2020-08-01mmcli,output: use 'path' instead of 'dbus path' in field descriptionsAleksander Morgado
2020-08-01broadband-modem: minor method renameAleksander Morgado
2020-08-01iface-modem: move sim hot swap ready to correct place in sequenceAleksander Morgado
2020-07-27cinterion: IMT family SGAUTHGiacinto Cifelli
some ITM family modems require full parameters: AT^SGAUTH=cid,type,user,pwd even when type is AUTH_NONE. Fortunately, all modules of the IMT family tolerate this syntax, so it can be adopted for the entire family.