- Jan 21, 2018
-
-
Aleksander Morgado authored
-
Aleksander Morgado authored
-
Aleksander Morgado authored
-
- Jan 20, 2018
-
-
Aleksander Morgado authored
The +CEMODE command is defined in 3GPP TS 27.007 (e.g. in section 10.1.28 in v11.0.0). This command allows querying or updating the current UE mode, as well as checking the supported modes. We implement support for loading the current mode and updating it. It is assumed that the device does any additional operation needed by the setting update, e.g. un-registering from CS when selecting an EPS-only mode.
-
Aleksander Morgado authored
The UE modes of operation for LTE are defined in 3GPP TS 24.301 (e.g. section 4.3 in v10.3.0): * PS mode 1: EPS only, 'voice centric' * PS mode 2: EPS only, 'data centric' * CS/PS mode 1: EPS and non-EPS, 'voice centric' * CS/PS mode 2: EPS and non-EPS, 'data centric' The mode specifies, among other things, how the UE should behave w.r.t CS fallback depending on the capabilities reported by the network.
-
Aleksander Morgado authored
-
Aleksander Morgado authored
-
- Jan 18, 2018
-
-
Aleksander Morgado authored
As per USB-IF "Class definitions for Communication Devices 1.2" docs. Reported-by: Iván Sánchez Ortega <ivan@sanchezortega.es>
-
- Jan 12, 2018
-
-
When a modem is being enabled, an initial registration check is scheduled to determine the current registration state and access technology. The initial registration check is performed asynchronously and may not complete before the modem state is transitioned to 'enabled'. When the modem is disabled shortly afterwards, the registration state is transitioned to 'unknown' and the modem state is transitioned to 'disabled'. But the completion of the initial registration check after that can transition the registration state and modem state to a wrong state. This patch addresses the issue by ignoring a registration state update if the modem isn't already enabled or being enabled.
-
- Jan 06, 2018
-
-
Aleksander Morgado authored
The generic broadband modem provides a common method to load unlock retries based on CSIM queries. We modify the Telit plugin to use the generic method but keeping the CSIM locking/unlocking logic in place.
-
- Jan 04, 2018
-
-
Aleksander Morgado authored
The AT control TTYs in the u-blox modems may take some time to be usable. In order to handle this issue, we configured some longer timeouts during AT probing, but that may not be always enough. The u-blox TTYs will report readiness via a "+AT: READY" URC, which we can use during custom initialization to decide right away that the port is AT. We use up to 20s as that is close to the worst case seen during experimentation, happening after the module undergoes a full NVM reset. If the timeout is reached without receiving the URC, we still run standard AT probing afterwards. This new logic just tries to make it sure we don't do any probing before the module is ready to accept it. If the module hasn't been hotplugged (i.e. it was already there when ModemManager started) we do a quick first AT probing and if that fails we run the "+AT: READY" URC wait as if it was hotplugged.
-
- Jan 01, 2018
-
-
-
As a precursor to a generic load_unlock_retries method, move the CSIM Response parser from the Telit plugin into the core code.
-
- Dec 21, 2017
-
-
Aleksander Morgado authored
If we get an error when setting up the WDS event report indications, make sure we run connect_context_step() after having set the next step as CONNECT_STEP_LAST.
-
- Dec 18, 2017
-
-
Aleksander Morgado authored
The Microchip VID is added to the USB serial adapters greylist instead, as it is very generic. https://bugs.freedesktop.org/show_bug.cgi?id=104320
-
-
Aleksander Morgado authored
-
Aleksander Morgado authored
-
Depsite 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. Most of the UCS-2 code points are identical to their equivalent UTF-16 code points. In UTF-16, non-BMP code points are encoded in a pair of surrogate code points (i.e. a high surrogate in 0xD800..0xDBFF, followed by a low surrogate in 0xDC00..0xDFFF). An isolated surrogate code point has no general interpretation in UTF-16, but could be a valid (though unmapped) code point in UCS-2. This patch modifies the 3GPP SMS decoding to first try UTF-16BE and then fall back to UCS-2BE on failure. If both fail, an empty string is returned instead of a NULL pointer.
-
When in low-power mode, some modems will not dispatch unsolicited notifications, such as for SIM hot swapping. There is code in MMBroadbandModemTelit to handle this by checking the SIM identifier during modem power up against the identifier cached in the SIM D-Bus object. If they're different, the SIM has likely been swapped while we were powered down. We can move this code out to MMBroadbandModem because it doesn't actually rely on any Telit-specific details, and invoke it from MMIfaceModem via a new method.
-
- Dec 05, 2017
-
-
Aleksander Morgado authored
When using CPIN? to detect capabilities, use several possible +CME errors as indication that the modem is at least GSM/UMTS. E.g. to avoid situations like this one where the modem doesn't even get into Failed state as we cannot gather capabilities: debug_log(): (ttyMux1): --> 'AT+GCAP<CR>' debug_log(): (ttyMux1): <-- '<CR><LF>+CME ERROR: 100<CR><LF>' mm_serial_parser_v1_parse(): Got failure code 100: Unknown error debug_log(): (ttyMux1): --> 'ATI<CR>' debug_log(): (ttyMux1): <-- '<CR><LF>Cinterion<CR><LF>EHS5-E<CR><LF>REVISION 03.001<CR><LF><CR><LF>OK<CR><LF>' debug_log(): (ttyMux1): --> 'AT+CPIN?<CR>' debug_log(): (ttyMux1): <-- '<CR><LF>+CME ERROR: 10<CR><LF>' mm_serial_parser_v1_parse(): Got failure code 10: SIM not inserted debug_log(): (ttyMux1): --> 'AT+CGMM<CR>' debug_log(): (ttyMux1): <-- '<CR><LF>EHS5-E<CR><LF>' debug_log(): (ttyMux1): <-- '<CR><LF>OK<CR><LF>' iface_modem_initialize_ready(): Modem couldn't be initialized: couldn't load current capabilities: Failed to determine modem capabilities.
-
Aleksander Morgado authored
-
Aleksander Morgado authored
-
Aleksander Morgado authored
All the previous filter rules were applicable per-port independently. But, we also want to apply rules on a port based on the existence of other ports on the same device (e.g. allow TTY if the device also has a NET port). In this case, we need to wait for all ports to appear and then apply the additional rules. We re-use the "min wait time" timeout in the plugin-manager for this same purpose. This timeout is setup to wait for ports to appear before starting the probing process (e.g. so that plugin filters like the forbidden-drivers one work). The very same timeout can therefore be used to check whether we start the probing or not based on additional filter rules.
-
Aleksander Morgado authored
The 'default' filter policy was based on blacklisting as much as possible and otherwise allow. The new 'strict' filter policy will be based on whitelisting as much as much as possible, using custom defined rules, and otherwise forbid the ports. The new 'paranoid' filter policy is equivalent to the 'strict' filter after having applied the blacklist rules from the 'default' filter.
-
Aleksander Morgado authored
-
Aleksander Morgado authored
Don't assume that the port will be implicitly allowed afterwards.
-
Aleksander Morgado authored
Added a new '--filter-policy=[POLICY]' option in the daemon, which allows selecting between the supported filter policies. For now, only two policies are defined: * default: the default policy used by ModemManager, where it tries to probe and detect as many modem ports as possible. * whitelist-only: only devices explicitly tagged via udev (with the ID_MM_DEVICE_PROCESS tag) will be probed and used.
-
Aleksander Morgado authored
The user can tag modems (either full devices or ports independently) to be explicitly probed by ModemManager, using the new "ID_MM_DEVICE_PROCESS" udev tag, e.g.: $ sudo vim /lib/udev/rules.d/78-mm-whitelist-internal-modem.rules ACTION!="add|change|move", GOTO="mm_whitelist_internal_modem_end" ATTRS{idVendor}=="1199", ATTRS{idProduct}=="a001", ENV{ID_MM_DEVICE_PROCESS}="1" LABEL="mm_whitelist_internal_modem_end" $ sudo udevadm control --reload $ sudo udevadm trigger This rule runs before any other filter rule. This tag may be used e.g. by manufacturers building systems with built-in modems that will always be available. Distributions targeting support for multiple modem devices shouldn't use this udev tag.
-
Aleksander Morgado authored
E.g. forcing a MBIM modem to run in AT-only mode: # MM_FILTER_RULE_NET=0 \ MM_FILTER_RULE_CDC_WDM=0 \ /usr/sbin/ModemManager --debug This is just for quick testing for now.
-
Aleksander Morgado authored
The more generic filter for virtual devices already covers all cases covered by the TTY virtual console filter.
-
Aleksander Morgado authored
This new object allows configuring the filter rules applied to the device ports. By default, for now, it implements the same rules as the MMKernelDevice is_candidate() method, which is obsoleted.
-
Aleksander Morgado authored
This patch implicitly enables in the generic device backend the manual-only greylist (ID_MM_DEVICE_MANUAL_SCAN_ONLY tag) and the platform TTY whitelist (ID_MM_PLATFORM_DRIVER_PROBE), which were not being applied.
-
Aleksander Morgado authored
-
Aleksander Morgado authored
Used to filter out TTYs when not explicitly whitelisted.
-
Aleksander Morgado authored
The two connection and disconnection methods are ported to GTask, and are also updated so that the reception of the unsolicited message reporting either connect/disconnection is able to right away complete the pending connection/disconnection attempts, as done in other plugins like the Icera or HSO ones.
-
Aleksander Morgado authored
-
Aleksander Morgado authored
This block is a subclassed method from MMBaseBearer, which we just happen to also use as part of the 3GPP dial logic in the connection attempt. So make it a separate logical block, and call the processing of the connection attempt if one is found. This change makes it similar to the same logic in the Icera plugin.
-
Aleksander Morgado authored
Same amount of time as in the Icera plugin.
-
Aleksander Morgado authored
-