aboutsummaryrefslogtreecommitdiff
path: root/plugins
AgeCommit message (Collapse)Author
2021-12-13ublox: add support to SIM hot swapAlexander Yashin
Main thing that's required to get modem hot-swapping to work is the UDCONF=50,1 command(see u-blox AT-command manual). But there are a lot of u-blox modules which do not support this command. So in this patch, it's supposed that this thing is configured beforehand(Like the UUSBCONF functioning mode) for modules, where SIM hot-swaping feature is possible. For the modems where it's not, the patch will not have any effects. ---- For ublox modems, CIEV: 12(X) messages allow to know if SIM is (un)plugged. The values are encoded as: - 0: no SIM detected - 1: SIM detected It's required from a modem to generate these events about the SIM detection state. To set up these `CIEV: 12,(X)` URC events the `+CMER=1,0,0,1,0` command is used. That command is supported by almost all u-blox modems except SARA-G300/SARA-G310/LEON-G1(For these models the hot-swap feature will not work). As this 12 that is used in CIEV may be completely different in other modules, the test command parsing is quite important to get that index number. So, this logic is also added in cind_simind_format_check_ready function. ---- It seems that it's necessary to issue this `+CMER` set up there despite that the `+CMER` configuration will take place later in the 3GPP interface enabling sequence. Because without it simind indications will not be enabled at all. CMER configuration may be later overwritten by 3GPP interface enabling sequence, but in the worst-case scenario only hot-swap feature will not work.
2021-12-13plugins: ublox: bearer: SIM absence should not break disconnectAlexander Yashin
If we have a modem with an established connection, and then the SIM is getting removed from that modem, this forces modem reprobing sequence. It looks like that: ``` mm-base-modem:mm_base_modem_process_sim_event -> mm-base-modem:mm_base_modem_disable -> mm-base-modem:disable -> mm-broadband-modem:common_disable -> mm-broadband-modem:disabling_step, -> ctx->step=DISABLING_STEP_FIRST -> ctx->step=DISABLING_STEP_WAIT_FOR_FINAL_STATE -> ctx->step=DISABLING_STEP_DISCONNECT_BEARERS ``` At this stage, there is no actual connection existing already, but bearer objects still exist and are still marked as connected. So, if there were any active bearers - they will be disconnected. In order to disconnect, ublox bearer sends +CGACT=0,%u, modem then will return CME ERROR: 10(SIM not inserted): ``` [modem0/ttyACM0/at] --> 'AT+CGACT=0,1<CR>' [modem0/ttyACM0/at] <-- '<CR><LF>+CME ERROR: 10<CR><LF>' [modem0/ttyACM0/at] operation failure: 10 (SIM not inserted) [modem0/bearer0] couldn't disconnect: SIM not inserted ``` this error will break disabling and reprobing. To fix that, it's require to add 'SIM not inserted' state as a valid condition to continue bearer disconnection.
2021-12-10fibocom: update FM101 port type hints to final layoutMingjie Zhang
The port type hints for the FM101 were updated to be in line with the final product layout, where USB interface #2 is now used as an AT port (not ignored) and USB interface #4 is now used as debug port. USB interface #6 is removed as it no longer exists.
2021-12-01udev: avoid [0-9]* as shell globbing patternsAleksander Morgado
The udev rules expect matches based on shell globbing pattern, not based on regex. This means that "[0-9]*" doesn't mean "zero or more digits", it actually means "one digit and zero or more other characters". So, avoid the regex like match, even if it worked for us, because it didn't mean what we thought it meant, plus, it breaks our custom udev rules processing logic, in which we convert the input patterns into real regex expressions. See https://bbs.archlinux.org/viewtopic.php?pid=1415916#p1415916 While at it, also make sure that the wildcard matching is done exclusively for prefix and suffix matches, never in the middle of a string, or our custom rules parser would not match correctly.
2021-11-17iface-modem: use external dispatcher to attempt FCC unlockAleksander Morgado
We remove the built-in FCC unlock procedures from the ModemManager, we will no longer run them automatically, and instead rely on external scripts/programs to do that. Packages providing the external FCC unlock tools can install them in ${pkglibdir}/fcc-unlock.d. Users manually enabling external FCC unlock tools can install them in ${pkgsysconfdir}/fcc-unlock.d. The user-enabled path takes precedence over the package-enabled one.
2021-11-10plugins: add fibocom FM101 to fibocom port types rules fileZhangMingjie
This patch add fibocom FM101 to 77-mm-fibocom-port-types.rules file. which contains two sets of vid and pid pairs, "2cb7:01a2" and "2cb7:01a4".
2021-11-08build,meson: Make feature options booleanIñigo Martínez
Different options are set as `feature`, also every possible plugin, but this may cause confusion. All options set as `feature` but plugins have been made `boolean` to avoid further confusions. `help2man` is also installed in the CI image because is required to build different libraries.
2021-11-04core: replace 'master' with 'main'Aleksander Morgado
2021-11-04core: replace 'dummy' with 'placeholder'Aleksander Morgado
2021-11-04core: replace 'whitelist' with 'allowlist' and 'blacklist' with 'blocklist'Aleksander Morgado
We keep the 'WHITELIST-ONLY' filter type name still as an option in --filter-policy=[POLICY], but deprecated and with the better 'ALLOWLIST-ONLY' replacement suggested from now on.
2021-10-28foxconn: delete the carrier mapping table of T99W175Freedom Liu
For T99W175, Qualcomm realized mcfg switching mechanism in FW side. It can work indepently without MM's help. Therefore, delete mcfg switching mechanism in MM.
2021-10-25telit: allow unlock retries loading for unknown error csim replyDaniele Palmas
When trying to lock the modem LE910S1 replies: 'AT+CSIM=1<CR>' '<CR><LF>ERROR<CR><LF>' but the modem actually supports CSIM unlock retries reporting.
2021-10-25telit: avoid sim hot swap procedure if #QSS is not supportedDaniele Palmas
2021-10-25telit: add port type hints for LE910S1 0x7010, 0x7011 compositionsDaniele Palmas
2021-10-22cli, plugins: factorize usage of iso8601 datetime formatFrederic Martinsons
Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com> Includes updates by Aleksander Morgado to fix coding style issues.
2021-10-18modem-helpers: setup common RSSI to signal quality converterAleksander Morgado
2021-10-15telit: remove prefix mm_shared in static function namesDaniele Palmas
2021-10-15telit: prefer qmi for set_current_bands if availableDaniele Palmas
2021-10-15telit: prefer qmi for load_current_bands if availableDaniele Palmas
2021-10-15telit: prefer qmi for load_supported_bands if availableDaniele Palmas
2021-10-15telit: Detect 4G BND format from BND test replyCarlo Lobrano
Telit modems that require hexadecimal number when specifying 4G bands also reply to #BND=? command with a 4th parameter <LTE_band_ext> (e.g. LM940, LM960, LN920, FN980). On the other hand, modems that require decimal number when specifying 4G bands only return 3 parameters to the same command. It is then possible replace the detection of ext_4g_bands via UDEV tags with an inspection of BND=? reply.
2021-10-15telit: LN920 bands supportAmol Lad
2021-10-15foxconn: add T99W265 modules, support for QDU.Freedom Liu
2021-10-14qcom-soc: require udev tag for portsAleksander Morgado
Since the 'wwan' subsystem addition to the qcom-soc plugin, the rules to say a modem is handled by this plugin are too broad, and the plugin attempts to support any kind of device exposed by the WWAN subsystem, not just those from Qualcomm SoCs. Update the plugin to require a new ID_MM_QCOM_SOC udev tag that is set in the plugin udev rules, given that these rules already check for the expected SoC drivers (bam-dmux, ipa, qcom-q6v5-mss).
2021-10-14build,meson: Add an empty line to split includes and dependenciesIñigo Martínez
2021-10-14build,meson: Improve plugins option setIñigo Martínez
Improved the way the plugins are set to allow a smaller summary.
2021-10-13quectel: fix non-initialized GErrorAleksander Morgado
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/442
2021-10-11telit: add port type hints for LN920 0x1060, 0x1061 compositionsDaniele Palmas
2021-10-11telit: fix typo in load_supported_modes_readyDaniele Palmas
2021-10-11telit: fix segmentation fault in initialize_alternate_3g_bandDaniele Palmas
Fix the following segmentation fault: ModemManager[128007]: mm_port_peek_kernel_device: assertion 'MM_IS_PORT (self)' failed Thread 1 "ModemManager" received signal SIGSEGV, Segmentation fault. 0x00005555556c6e3e in mm_kernel_device_get_global_property (self=0x0, property=0x7ffff5947480 "ID_MM_TELIT_BND_ALTERNATE") at kerneldevice/mm-kernel-device.c:309 Reported by Carlo Lobrano <c.lobrano@gmail.com>
2021-09-29telit: fix g_object_unref failed assertionDaniele Palmas
Fix the following g_object_unref failed assertion: ModemManager[385967]: <debug> [1632924639.132023] [modem0/ttyUSB2/at] --> 'AT+CSIM=1<CR>' ModemManager[385967]: <debug> [1632924639.144892] [modem0/ttyUSB2/at] <-- '<CR><LF>ERROR<CR><LF>' ModemManager[385967]: <debug> [1632924639.145021] [modem0/ttyUSB2/at] operation failure: 100 (Unknown error) (ModemManager:385967): GLib-GObject-CRITICAL **: 16:10:39.145: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
2021-09-15Revert "build,meson: Improve plugins option set"Aleksander Morgado
This reverts commit 09a5052a777c858b83baf9444306775ed5c50300. This commit breaks the default disabling of the qcom-soc plugin.
2021-09-15meson,build: don't include daemon enum sources in pluginsAleksander Morgado
We will end up exporting what we shouldn't: $ abidiff /tmp/autotools/lib/ModemManager/libmm-shared-icera.so /tmp/meson/lib/ModemManager/libmm-shared-icera.so Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 8 Added functions: [A] 'function const gchar* mm_bearer_connection_status_get_string(MMBearerConnectionStatus)' {mm_bearer_connection_status_get_string} [A] 'function GType mm_bearer_connection_status_get_type()' {mm_bearer_connection_status_get_type} [A] 'function const gchar* mm_bearer_status_get_string(MMBearerStatus)' {mm_bearer_status_get_string} [A] 'function GType mm_bearer_status_get_type()' {mm_bearer_status_get_type} [A] 'function gchar* mm_filter_rule_build_string_from_mask(MMFilterRule)' {mm_filter_rule_build_string_from_mask} [A] 'function GType mm_filter_rule_get_type()' {mm_filter_rule_get_type} [A] 'function gchar* mm_port_probe_flag_build_string_from_mask(MMPortProbeFlag)' {mm_port_probe_flag_build_string_from_mask} [A] 'function GType mm_port_probe_flag_get_type()' {mm_port_probe_flag_get_type}
2021-09-15build,meson: fix building shared utils and pluginsAleksander Morgado
When building shared utils modules or plugins, we should not link with the static libraries built under src/, because that would mean we're including their symbols as exported by the modules, and it'll break in runtime. Instead, just define the correct set of 'include_directories' to be used in each plugin. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/436
2021-09-15build,meson: rename plugin helpers library variableAleksander Morgado
So that we don't confuse the plugin-specific libhelpers with the core libhelpers built in src/.
2021-09-15novatel: avoid returning a NULL timezone without error setAleksander Morgado
Reported and fix suggested by: Frederic Martinsons <frederic.martinsons@sigfox.com> Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/438
2021-09-10build,meson: Improve plugins helper library buildingIñigo Martínez
To avoid those cases where a plugin does not need a helper library an empty array is created. However, when a helper library has to be built, it is not necessary to include the created static library in an array.
2021-09-10build,meson: Fix libmm-test-common name and dependenciesIñigo Martínez
`libmm-test-common` is created using underscores. It also uses `gio-unix-2.0` as a public dependency but actually it should be private. Both issues have been fixed.
2021-09-10build,meson: Improve plugins option setIñigo Martínez
Improved the way the plugins are set to allow a smaller summary.
2021-09-07build,meson: fix wrong install of simtech port types on thuraya pluginAleksander Morgado
2021-09-07build: Port to mesonIñigo Martínez
meson is a build system focused on speed an ease of use, which helps speeding up the software development. This patch adds meson support along autotools.
2021-08-09foxconn: add T99W175 carrier mapping tableFreedom Liu
2021-08-09foxconn: update T77W968 carrier mapping tableFreedom Liu
2021-08-09foxconn: Rename carrier-mapping to t77w968-carrier-mappingFreedom Liu
2021-08-01telit: disable +CPOL based features in the LN930Aleksander Morgado
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/414
2021-07-31fibocom: fix QMI device allowanceAleksander Morgado
E.g. for a FM150: [1627656003.230873] [cdc-wdm0] port contents loaded: [1627656003.231069] [cdc-wdm0] bus: usb [1627656003.231179] [cdc-wdm0] interface: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11.4/1-11.4.4/1-11.4.4:1.4 [1627656003.231272] [cdc-wdm0] device: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11.4/1-11.4.4 [1627656003.231364] [cdc-wdm0] driver: qmi_wwan [1627656003.231450] [cdc-wdm0] vendor: 2cb7 [1627656003.231536] [cdc-wdm0] product: 0104 [1627656003.231626] [cdc-wdm0] revision: 0414 [1627656003.231722] [base-manager] adding port cdc-wdm0 at sysfs path: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11.4/1-11.4.4/1-11.4.4:1.4/usbmisc/cdc-wdm0 ... [1627656004.333874] [plugin/fibocom] port cdc-wdm0 filtered by implicit QMI driver
2021-07-31huawei: disable CPOL based features in the R215Aleksander Morgado
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/411
2021-07-31huawei: ignore ^LWURC URCsAleksander Morgado
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/412
2021-07-30build: Rename template filesIñigo Martínez
The template files in the `build-aux` directory used in enums sources and headers generation use the `{$name}-template.[ch]` pattern. However, the examples in the official guide[0] and usually GNOME and Freedesktop packages use the `{$name}.[ch].template` pattern. Due to this, the name of the template files and build commands have been changed. [0] https://developer.gnome.org/gobject/stable/glib-mkenums.html
2021-07-29cinterion: increase ^SCFG? timeout to 120sAleksander Morgado
The timeout in this command is extremely large, because there are some modules like the EGS5 that build the response based on the current network registration, and that implies the module needs to be registered. If for any reason there is no serving network where to register, the response comes after a very long time, up to 100s. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/408