aboutsummaryrefslogtreecommitdiff
path: root/plugins
AgeCommit message (Collapse)Author
2021-04-30core: strict return type in g_object_ref()Aleksander Morgado
This is now a requirement when using glib 2.56.
2021-04-30foxconn: add new MBIM QDU firmware update method supportFreedom Liu
Based on the QDU service newly added in libmbim, T99W175 module (vid: 0x105b) supports MBIM QDU based update.
2021-04-29icera: implement profile management supportAleksander Morgado
Using AT%IPDPCFG for authentication related profile settings management (querying, updating), and relying on the parent implementation for the remaining ones. And using AT%IPDPACT for activation status management (deactivate), while relying on the parent implementation for the activated check.
2021-04-29broadband-bearer: rely on profile management for the cid selectionAleksander Morgado
There is no longer need to perform all the CID selection logic in the broadband bearer connection procedure, we can rely on the new profile management operations to do the same thing. We can do this because we're sure that all the MMBroadbandModem objects implement the MMModem3gppProfileManager interface. Additionally, given that we now provide the profile ID value as part of the MMBearerConnectResult, we no longer need a custom mm_broadband_bearer_get_3gpp_cid() as we can use the generic mm_base_bearer_get_profile_id() for the same purpose.
2021-04-29foxconn: add support for the T99W175 moduleFreedom Liu
0x0489 is the vendor ID of T77W968, 0x105b is the vendor ID of T99W175. {0x105b, 0xe0b0},{0x105b, 0xe0b1} is T99W175 PCI device, used by Dell. {0x105b, 0xe0ab} is T99W175 PCI device, used by Lenovo. If the modem has an mbim port, create a MbimFoxconn object, regardless of what the product ID is. The firmware version format in the T99W175 was selected to have firmware version + carrier config version + apps version.
2021-04-29foxconn: change modem-foxconn-t77w968 to modem-mbim-foxconnFreedom Liu
Named the object in a more generic way.
2021-04-21plugins: generic: Add 'wwan' subsystem supportLoic Poulain
wwan is a new subsystem for WWAN devices, allowing to expose the WWAN device and its ports in a generic way. The sysfs hierarchy for such device is /sys/class/wwanX /sys/class/wwanX/wwanXpYP Where X is the WWAN device index, Y the port index and P the control protocol name (QMI, MBIM...). A control port is also exposed as character device in /dev. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-04-20quectel: set QGPSXTRA to enable assistance supportDylan Van Assche
Quectel modems require to enable XTRA GNSS assistance first with QGPSXTRA=1, before it can be used.
2021-04-14qcom-soc-plugin: add support for QRTR+IPA based setupsAleksander Morgado
2021-04-07fibocom: add port type hints for the NL668-AMZrshuo Zhang
2021-04-01modem-helpers: ip family normalization doesn't need log_objectAleksander Morgado
2021-03-31base-bearer: remove default IP family propertyAleksander Morgado
There is no point in providing a configurable default IP family in the bearer object, because we can always assume IPv4 as being the only default expected. Simplify the logic and also provide a new method to get the normalize the IP family, using IPv4 as default always.
2021-03-31cinterion: remove unused checkup of default IP familyAleksander Morgado
Looks like the logic is just there to write a debug log, as the selected IP family is not used anywhere else. Just remove this.
2021-03-21cinterion: make sure FALSE sets GError in parse_smong_response()Aleksander Morgado
The g_regex_match_full() method may return FALSE without setting the GError, so that case needs to be considered. In addition to that, the following g_assert() was not doing what it should have been, as it was comparing the address of the variable and not the variable itself; rework the code to avoid that as well: g_assert (access_tech != MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN);
2021-03-21cinterion: make sure FALSE sets GError in provcfg_response_to_cid()Aleksander Morgado
The g_regex_match_full() method may return FALSE without setting the GError, so that case needs to be considered. Reported by Jan Mazura. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/347
2021-03-21cinterion: allow '*' in Prov/Cfg responseAleksander Morgado
E.g. in a Cinterion PLS8-E (REVISION 04.004) to match the following line: ^SCFG: "MEopMode/Prov/Cfg","fallback*" Fix suggested by Jan Mazura. See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/347
2021-03-21quectel: ignore QGPSURCDylan Van Assche
QGPSURCs are not ignored and causes calls to be rejected in some cases
2021-03-12sierra: disable CPOL in the EM7345Aleksander Morgado
Using CPOL? in the EM7345 (firmware FIH7160_V1.1_MODEM_01.1349.12) ends up with the whole AT port stuck and non-responsive, which leads to flagging the modem as unusable later on as soon as 10 consecutive AT command timeouts happen. In order to avoid that, we explicitly disable all CPOL based features in this specific module. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/336
2021-03-10api,simple: new 'multiplex' setting in bearer propertiesAleksander Morgado
Both the Simple.Connect() and Modem.CreateBearer() are updated to allow a new 'multiplex' setting in the properties provided by the user in both of these methods. The new setting expects a MMBearerMultiplexSupport enum indicating what kind of multiplex needs the user has: * none: if multiplex must not be used. * requested: if multiplex should be used if available. * required: if multiplex must be used. The underlying implementations will take care of accepting or rejecting the setting depending on the system and modem capabilities.
2021-03-05zte: disable CMER/CIND support explicitlyLouis-Alexis Eyraud
It looks like when indicators are enabled in ZTE modems like the MF833V, the whole connection process is very unstable. The AT reference doesn't do any mention to +CIND/CMER/CIEV either, so we'll just disable all and use +CSQ based signal loading. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/303 Signed-off-by: Louis-Alexis Eyraud <louis-alexis.eyraud@sigfox.com>
2021-03-04base-modem: explicitly say if NET or TTY data ports are supportedAleksander Morgado
A modem that creates exclusively bearer objects that work with NET ports (e.g. all QMI or MBIM modems) must not add any TTY port in the list of data ports. A modem that creates exclusively bearer objects that work with TTY ports (e.g. the generic modem) must not add any NET port in the list of data ports. A modem that may use both TTY and NET ports should add all in the list of data ports. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/324 Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/329
2021-02-25broadband-modem-qmi: allow lookup of QMI for data without SIO portAleksander Morgado
2021-02-25base-modem: separate method to lookup exact port by nameAleksander Morgado
There's no point in returning a list of all ports with a given name, just provide a lookup method that returns the single port with the given name.
2021-02-24kernel-device: add get_interface_number() methodAleksander Morgado
We already have methods to query for interface specific attributes like class/subclass/protocol, so add a new one for the interface number, and make sure we use ATTRS{bInterfaceNumber} to load it always, instead of assuming the ID_USB_INTERFACE_NUM property is set.
2021-02-23cinterion: rework mno decoding to use str_to_utf8()Aleksander Morgado
2021-02-23cinterion: rework band encoding to use str_to_utf8()Aleksander Morgado
Also providing support to report errors when attempting to decode the strings.
2021-02-23helpers: rework normalize_operator() to use str_to_utf8()Aleksander Morgado
Instead of blindly assuming that we can take whatever string given as valid UTF-8, we'll always attempt to convert from the current modem charset into UTF-8. Before we were doing this for hex-encoded UCS2, but not for example for GSM-7. And due to the now applied GSM-7 conversion, the mf627a/mf627b +COPS parsing unit tests are updated accordingly, because when converting from an input string that contains byte 0x40 ('@' in UTF-8) as if it were GSM-7, the 0x40 is taken as character '¡', encoded as 0xc2,0xa1 in UTF-8).
2021-02-23cinterion: move sequence to set bands to private ctxAleksander Morgado
The sequence of commands is exclusively used during the set current bands operation, so there is no point in storing it in the private object data.
2021-02-23charsets: use new str_from_utf8() instead of ↵Aleksander Morgado
take_and_convert_to_current_charset()
2021-02-23charsets: make charset_gsm_unpacked_to_utf8() privateAleksander Morgado
Use the generic mm_modem_charset_bytearray_to_utf8() instead.
2021-02-23charsets: make charset_utf8_to_unpacked_gsm() privateAleksander Morgado
Use the generic mm_modem_charset_bytearray_from_utf8() instead.
2021-02-23charsets: make translit optional in utf8_to_unpacked_gsm()Aleksander Morgado
If the conversion is not fully compatible, the user of the method needs to request transliteration enabled explicitly in order to avoid returning errors in this method.
2021-02-23charsets: make translit optional in gsm_unpacked_to_utf8()Aleksander Morgado
Until now, this method would automatically apply transliteration; i.e. replacing characters with '?' when no direct translation was available. We can attempt to do that transliteration on strings that are not critical, e.g. the operator name reported by the network. But we should not do that on other types of strings, e.g. on SMS contents that may really have additional purposes than just being human-readable. This commit makes the transliteration option to be explicitly requested by the caller.
2021-02-23libmm-glib,common-helpers: make hexstr2bin() return a guint8 arrayAleksander Morgado
It makes much more sense than returning a gchar array, as gchar is signed.
2021-02-23libmm-glib,common-helpers: make hexstr2bin() accept input string lengthAleksander Morgado
Optionally given explicitly, and -1 can be used to assume it's NUL-terminated.
2021-02-23libmm-glib,common-helpers: make hexstr2bin() return a GErrorAleksander Morgado
This util method checks whether the input string is a valid hex string, so make sure we return a GError on failure.
2021-02-03cinterion: remove unused variablesAndrew Lassalle
2021-01-18simtech: fix updating bitmask during gps disablingLukas Senger
During disabling of gps sources the bitmask that keeps track of them is updated incorrectly. Instead of removing the current source, all other sources are removed from the mask. One problem that arises from this is, that when you enable GPS after it has been disabled completely (e.g. by disabling all GPS sources), the code will not send a "+CGPS=1,1" command because it incorrectly assumes that GPS is still enabled on the device.
2021-01-16zte: add 1 second delay after sim unlock to avoid IMSI reading issueLouis-Alexis Eyraud
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/306 Signed-off-by: Louis-Alexis Eyraud <louis-alexis.eyraud@sigfox.com>
2021-01-11telit: plug GPS data port leakAleksander Morgado
The _get_port_gps() returns a full reference, use _peek_port_gps() instead. See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/302
2020-12-19altair: make sure parse_vendor_pco_info() always returns an errorAleksander Morgado
The parse_vendor_pco_info() method was returning NULL without error if the pco info string was empty. Under this situation, the code would have tried to add a NULL MMPco into the pco_list list, which is not desired. Avoid this, by making sure a NULL return always sets an error.
2020-12-14cinterion: add AT primary/secondary port type hints for PLS8Aleksander Morgado
2020-12-14cinterion: add QCDM and GPS port type hints for PLS62Aleksander Morgado
2020-12-14cinterion: add PLS83 port type hintsAleksander Morgado
2020-12-03broadband-modem-mbim: Add MM_BROADBAND_MODEM_MBIM_QMI_UNSUPPORTEDTorsten Hilbrich
This property (initially set to FALSE) controls whether QMI over MBIM should never be considered. This property is set to TRUE for XMM-based MBIM devices as they don't support QMI. This fixes a probing delay of 15s on a Fibocom L850-GL device (2cb7:0007) found in the Lenovo T14 Gen 1. The establishing of a QMI connection was refused multiple time with MBIM error OperationNotAllowed. Only the timeout of 15s for this connection resumed the probing. The properties in the MMBroadbandModemMbim are only installed when WITH_QMI and QMI_MBIM_QMUX_SUPPORTED are set. Actually, this should only disable the PROP_QMI_UNSUPPORTED but as this is the only property this avoids the "unused variable 'self'" warnings/errors when trying to compile set_property and get_property without QMI support. This can be changed once other properties are needed. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/284
2020-11-25huawei: add GPS port type hints for Huawei ME906eThomas Dendale
2020-11-20qcom-soc: simplify port type hint rulesStephan Gerhold
2020-11-20qcom-soc: new plugin for Qualcomm SoCsAleksander Morgado
This plugin implements support for old Qualcomm SoCs like the MSM8916 or the MSM8974, where: * control ports are available via RPMSG channels exported as devices e.g. with rpmsgexport: https://github.com/andersson/rpmsgexport * network ports are exposed by the bam-dmux kernel driver: https://github.com/msm8916-mainline/linux/commits/bam-dmux Adding support for newer Qualcomm SoCs (e.g. QRTR+IPA) could be done in a similar way on this very same plugin. This plugin is the first and only one that implements support for a modem device that is "built in" the system, as opposed to external modems that may be available via USB or PCI. The ID_MM_PHYSDEV_UID based udev tags provided by the plugin provide the logic to bind all the SoC ports together in the same modem object, and therefore ID_MM_PHYSDEV_UID should not be used by users to override the ones set by the plugin. All "rpmsg[0-9]*" ports that are considered part of the modem are flagged as candidate, ignoring the parent "rpmsg_ctrl[0-9]*" ports on purpose. This setup therefore assumes that the channels have been exported already as devices (e.g. using rpmsgexport). libqmi 1.27.2 is required to support the "WDS Bind Data Port" message.
2020-11-14core,plugins: consolidate connection/disconnection timeout valuesAleksander Morgado
Each different plugin or protocol had a different connection attempt value. E.g. QMI and MBIM both used 60s max for the connection attempt, while the u-blox plugin had up to 180s for ECM based connection setups. This commit consolidates all plugins and protocols to use the same timeout values for commands that may take long to respond, e.g. a connection atempt under low signal quality conditions. A value of 180s for the connection attempt steps and 120s for a disconnection attempt step is considered. Note, though, that in some cases (like a IPv4v6 setup attempt using QMI) we may have more than one such long step, so this doesn't mean that a connection attempt will always take less than 180s. Users of the connection/disconnection APIs should be able to handle the case where the attempt times out in their side (e.g. with a lower DBus request timeout), and which would not mean the actual request they did really failed. E.g. a connection attempt with a DBus timeout of 30s may fail in the user with a timeout error, but the attempt would still go on for as much as the plugin/protocol needs. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/270
2020-11-13core: stop monitoring the 'usb' subsystemAleksander Morgado
Back in Linux < 3.6 days, the cdc-wdm ports exposed by the QMI driver were flagged as owned by the 'usb' subsystem. That changed in 3.6 when the subsystem was renamed to 'usbmisc': https://mail.gnome.org/archives/networkmanager-list/2012-June/msg00125.html This patch removes all monitoring of the 'usb' subsystem completely, which is anyway a valid subsystem but for which we shouldn't need any special handling. Right now, with newer kernels, we were using that monitoring exclusively to get notified of full USB device remove events, which is really not required as we already process the port removals one by one. We simplify the logic everywhere that attempted to match either the 'usb' or 'usbmisc' subsystems, and we no longer require the explicit checks for the port name being named 'cdc-wdm[0-9]*' in the code, as that is already taken care of by the ID_MM_CANDIDATE udev tag rule.