aboutsummaryrefslogtreecommitdiff
path: root/plugins
AgeCommit message (Collapse)Author
2022-09-15foxconn: carrier mapping conf file shouldn't be executableAleksander Morgado
2022-09-15fibocom: source files shouldn't be executableAleksander Morgado
2022-09-08quectel: add MM_PLUGIN_REQUIRED_QCDM flagIvan Mikhanchuk
EM120/160 uses QCDM port for firmware updates. fwupd lists all known ports from ModemManager and uses QCDM port to reboot the modem into the firmware download mode.
2022-09-08cinterion: add support thales PCIE vid(0x1269) in the cinterion.Fanice.luo
For SDX55 and SDX65 can identify the corrrect plugin(cinterion), and the plugin is updated to support the wwan subsystem.
2022-09-05modem-helpers-ublox: rework +UIPADDR response parserAleksander Morgado
We setup all output variables with g_autofree and then use g_steal_pointer() to return the needed ones.
2022-09-05modem-helpers-cinterion: rework CNMI test response parserAleksander Morgado
We setup all output variables with g_autoptr() and then use g_steal_pointer() to return the needed ones.
2022-09-05core: port GRegex/GMatchInfo to use autoptr()Aleksander Morgado
The behavior of GRegex changed in 2.73.2 once it was ported from pcre1 to pcre2. In some cases it was made more strict, which is fine, in other cases it exposed some change in how it behaves on certain matches that is not extremely clear whether it's ok or not. See https://gitlab.gnome.org/GNOME/glib/-/issues/2729 See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/601 See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/621 Either way, one thing that was assumed was that initializing all GRegex/GMatchInfo variables to NULL and making sure they're NULL before they're initialized by glib (especially the GMatchInfo) was a good and safer approach. So, whenever possible, g_autoptr() is used to cleanup the allocated GMatchInfo/GRegex variables, and otherwise, g_clear_pointer() is used to ensure that no free/unref is attempted unless the given variable is not NULL, and also so that the variable is reseted to NULL after being disposed.
2022-09-05plugins,telit: add missing 4G BND HEX format modem modelsCarlo Lobrano
Currently, supported band AT query #BND=? is failing with LM9x0 because it expects BND 4G decimal format instead than hexadecimal. Adding also LN920 and FN980 for completeness. They do not fail right now because they have also "4g band extended" which format is always hexadecimal.
2022-08-25mtk: fix task completion when loading supported modesAleksander Morgado
2022-08-25icera: fix double free on %%IPSYS=? response processingAleksander Morgado
2022-08-18broadband-modem-qmi: choose endpoint number based on data portStephan Gerhold
At the moment the endpoint type/number is chosen based on the QMI control port. The assumption is that multiplexing is implemented using an additional protocol layer (e.g. QMAP) or that each network interface has its own QMI control port. This is not necessarily the case for BAM-DMUX. To use the built-in multiplexing the WDS client must be bound to the correct data port. This works already for older firmware versions using "Bind Data Port" (SIO port numbers), but not for newer ones using "Bind Mux Data Port" (endpoint type/interface numbers). Make it work for newer firmware versions as well by choosing the endpoint type/number based on the data port similar to the existing implementation for SIO port numbers. Note: The correct endpoint interface number is currently only used for the steps in mm-bearer-qmi. Ideally more refactoring should be done in mm-port-qmi to call WDA Set Data Format for each of the endpoints. In practice it usually works fine without because the data format is set correctly by default.
2022-08-18qcom-soc: simplify QMI port lookup for BAM-DMUXStephan Gerhold
mm_broadband_modem_qmi_peek_port_qmi() already looks up a QMI port exactly the same way it is implemented in the BAM-DMUX variant of peek_port_qmi_for_data(), so we can just reuse it to simplify the code. No functional change.
2022-07-20sierra: disable CPOL in the GL7600Dan Carpenter
Similar to the EM7345 (also from Sierra Wireless), the GL7600 becomes unresponsive after using "AT+CPOL?". Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/595
2022-07-16mm-iface-modem,mm-broadband-modem,mm-shared-qmi: support SIM IMSI switchPrakash Pabba
It is possible that SIM IMSI might change in roaming conditions for a sim. Register for UIM refresh indication always and reprobe if ICCID or IMSI changes for QMI modem.
2022-07-14foxconn: updating the T77W968 carrier mapping tableFanice Luo
add new MCCMNC of EE UK(23430,23431,23432,23433,23434,23476,23501,23502,23577) add new MCCMNC of ATT(310650,310980,90118) add new MCCMNC of Verizon(312770) add new MCCMNC of Vodafone(46601,46603) add new MCCMNC of Orange(21409,23105,26005)
2022-07-12dell: Add DW5829e(T77W968) modulesFanice Luo
add new device(0x413c:0x81e4 0x413c:0x81e6)
2022-07-11fibocom: Ignore +SIM READY URCSven Schwermer
This URC is emitted when the SIM phonebook is initialized. We don't care about that but don't want this URC to mess with the initialization sequence either. Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2022-07-08fibocom: Add alternative MA510 USB configSven Schwermer
Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2022-07-08fibocom: Add alternative L610 USB configSven Schwermer
This is the factory-default setting. Make sure to support it as well as the ECM/RNDIS settings. The L610 in GTUSBMODE=31 only enumerates with serial USB interfaces using the option driver, so we need to allow that driver too. Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2022-06-28fibocom: Fix GTRNDIS parsing functionSven Schwermer
This fixes a bug introduced in a2a0e2d754. Since the state pointer is always non-NULL, the function will always fail if GTRNDIS is inactive, i.e. the modem will return state=0 and no cid field. Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2022-06-27fibocom: ensure RNDIS disconnected before a new connection attemptSven Schwermer
The ECM dialling guide requires to check whether RNDIS is already active before attempting to establish an ECM/RNDIS connection. If it is active (regardless of its settings), we will disconnect it first, before attempting the new connection with the user-provided settings. Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2022-06-22telit:broadband-mbim: save MBIM originated revision into ↵Carlo Lobrano
software_package_version Currently, MBIM broadband Telit modem does not store firmware revision into 'software_package_version', so it won't be possible to specialize behavior based on modem model (using mm_telit_model_from_revision). This change overloads load-revision in MBIM broadband Telit in order to call parent's loading and store the returned 'caps_firmware_info' into 'software_package_version' via mm_shared_telit_store_revision.
2022-06-22telit: add function to store revisionCarlo Lobrano
2022-06-19telit: add support for QCDM portsDaniele Palmas
The new QCDM probing mechanism does not probe and grab QCDM ports if the plugin is not allowed, so QCDM ports currently ignored in compositions can be safely marked as ID_MM_PORT_TYPE_QCDM.
2022-06-19plugins: add MM_PLUGIN_REQUIRED_QCDM to plugins requiring QCDMDaniele Palmas
The new QCDM port probing and grabbing mechanism implements a new property for detecting the plugins which require the QCDM port to be probed and grabbed. Add the property to the affected plugins.
2022-06-09plugins,telit: do not crash if revision is not setCarlo Lobrano
In mm_telit_model_from_revision there is nothing that prevents to use the input revision string if it is NULL, which currently happens if the modem is pure MBIM (i.e. LE910-V2 pid:0x0032). Fix the above error returning a default safe value and not using the NULL variable.
2022-06-09suspend: add suspend/resume support with powerd on ChromeOSRukun Mao
ModemManager handles suspend and resume signals sent from powerd Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/547
2022-05-24telit: add LE910Cx MBIM composition port hintsDaniele Palmas
2022-05-24telit: add wwan supportDaniele Palmas
2022-05-24base-modem: add subsystem vendor ID propertyDaniele Palmas
Subsystem vendor ID can be used for identifying PCI modems, so expose the property.
2022-05-20iface-modem: common SIM event reporting logicAleksander Morgado
We no longer have separate mm_base_modem_process_sim_event() and mm_broadband_modem_sim_hot_swap_detected() methods. The only difference between both of them was that one of them would attempt to cleanup the ports context associated to the SIM hot swap event logic as soon as a swap was detected, in order to avoid queueing up multiple such events. The previous logic wasn't working well, though, as there could be mixed AT+QMI or AT+MBIM devices that would also require that same cleanup and so we didn't always know which one should have been called. Now we have a single mm_iface_modem_process_sim_event() method, which will trigger the reprobe and disabling, but which will also perform the cleanup of the SIM ports swap setup as specified by the implementation. So, if a plugin explicitly initializes the serial ports context for SIM hot swap handling, it should also explicitly clean it up. Also, the initialization of the serial ports context for SIM hot swap handling is no longer done automatically for all modems, it will be done only for those modems using it; i.e. the modems that explicitly report support SIM hot swap handling using AT URCs.
2022-05-20broadband-modem-mbim-quectel: SIM hot swap supported by default in MBIMAleksander Morgado
2022-05-20iface-modem: remove MM_IFACE_MODEM_SIM_HOT_SWAP_CONFIGURED propertyAleksander Morgado
This property is used in the MMIfaceModem to flag whether the SIM hot swap setup has been performed or not. The flag is now moved to the iface-specific private context. The property was also used in AT-based modems, so that implementations supporting the SIM hot swap via AT URCs could flag the upper layers whether the enabling of the feature was done correctly or not, and if so, create and keep the AT ports context open. But this feature only made sense in AT-based modems, i.e. an MBIM modem that detects SIM hot swaps via MBIM indications exclusively should not require the AT ports context open for anything. The check in the MMBroadbandModem object has therefore been removed, and the logic will be updated so that it only applies to AT-based modems.
2022-05-19xmm: wait for +XLSRSTOP URC before starting next sessionAleksander Morgado
It is important to gracefully stop the session before starting the next session, making sure the engine is completely stopped. This can be ensured by waiting for the +XLSRSTOP URC just after having received the +XLSRSTOP command response. We'll do an explicit wait for that URC with a 10s timeout, in order to avoid waiting forever if the URC is never received. It will be assumed that the engine is off if the 10s timeout happens, in the same way as we were doing until now. During the wait time for the URC, the operation task ownership is shared among the response processor, the URC handler and the timeout source. Once any of them decides to complete the task, the others will automatically avoid attempting to complete the same task. Based on a patch originally developed by: Som_SP <somashekhar.puttagangaiah@intel.com>
2022-05-09Revert "plugins,fibocom: Add udev filter for pci wwan"Andrew Lassalle
This reverts commit 115a5d876ee57943f1ec6d8ebcb3328d821ec80a.
2022-05-05plugins,fibocom: Add udev filter for pci wwanAndrew Lassalle
Add a udev filter to identify pci wwan ports from fibocom modems.
2022-04-15huawei: disable +CPOL based features in Huawei E226Aleksander Morgado
Issue and bugfix suggestion by Alex Leopoldo Villacís Lasso. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/552
2022-04-13cinterion: add PLS63 port type hintsKonrad Zapałowicz
The PLS63 is a drop-in replacement for PLS62 model, however it uses different USB SoC and enumerates differently on the USB bus. This commit adds relevant type hints with a correct Vendor and Product IDs so that the device is correctly discovered. Without these type hints the modem would not work correctly as it uses wrong port for PPP.
2022-04-12plugins,telit: SWPKGV parsing needs more permissive regexCarlo Lobrano
In some cases the "base" software package string does not have the currently expected format of \d{2}.\d{2}.\d{3}. Specifically the last triplet of characters might not be digits. For example a valid version string might be 25.20.-04, which the current regex is unable to parse. This change replace the previous regex with one less restrictive, checking only the first part of the version's format.
2022-04-11test,modem-helpers-telit: fix test inputsCarlo Lobrano
test input strings for test_telit_parse_swpkgv_response invert <CR> and <LF>. The correct match is \r for <CR> and \n for <LF>.
2022-04-08sms: prevent crash if date is out of rangeCarlo Lobrano
g_date_time_new, and g_date_time_new_utc return NULL if inputs are out of range, and currently mm_new_iso8601_time passes the GDateTime created by those two functions to date_time_format_iso8601 without checking for NULL values, causing a g_date_time_format_iso8601 crash if PDU data is corrupted with wrong date. To prevent this, mm_new_iso8601_time now can return NULL and set a new GError if GDateTime created by g_date_time_new is NULL. Fixes #546
2022-04-07plugins,telit: remove unnecessary after sim unlock 1s delayCarlo Lobrano
Currently the Telit modem implements modem_after_sim_unlock() with 1s timeout, however the #QSS URC management (introduced later) waits for QSS=1 URC in csim_unlock_periodic_check up to 3s, which makes this 1s delay not necessary anymore. see also: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/3
2022-03-29telit: reorganize common_parse_bnd_response for readabilityCarlo Lobrano
2022-03-29telit: fix AT#BND parsing for LE910C1-EUXCarlo Lobrano
Some modems, like LE910C1-EUX, express the LTE part of #BND output in HEX format, but currently the MM parser for such case is limited to modems that have "ext_4g_bands". This commits use the new MMTelitModel info to decide how to parse #BND command output. Fixes #487
2022-03-29telit: detect modem model from revisionCarlo Lobrano
Telit revision string can be used to identify the specific model, which in turn is useful to specialize the behavior of the plugin. This change adds revision parsing to detect some telit modems. Initially it adds the ones that have different behaviors in #BND output parsing for example.
2022-03-29telit: override load revisionCarlo Lobrano
Currently, firmware revision string is obtained via AT+CGMR or AT+GMR commands from the default mm-broadband-modem. For a class of Telit modems however this command does not return the actual Telit Software Package version, but the "Modem FW Version", which is only a component of the whole firmware. For this class of modems, the correct string is obtained with "AT#SWPKGV" command. This change overrides load_revision* functions to add the ability to parse "AT#SWPKGV" command for the modems that support it, and falls back to the same logic that was implemented in mm-broadband-modem otherwise.
2022-03-28foxconn: consolidate checks for T99W175 and T99W265Aleksander Morgado
These two devices require QDU and MCFG+APPS version string comparison. We now have a single place where we check for this requirements.
2022-03-28foxconn: consolidate logic deciding required update methodsAleksander Morgado
2022-03-28foxconn: consolidate logic deciding requested firmware version typeAleksander Morgado
We don't want to have in two different places the vid:pid match list when selecting the type of firmware version we ask for.
2022-03-28foxconn: switch to use autoptr() in firmware info loadingAleksander Morgado