aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-08-18libmm-glib: add MMPco for handling raw PCO dataBen Chan
2018-08-14po: add Turkish translationAleksander Morgado
From: Emin Tufan Çetin <etcetin@gmail.com> https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/80
2018-08-14broadband-modem-mbim: explicitly ignore SMS storage initializationAleksander Morgado
The MBIM protocol hides to the user the concept of SMS storages, so we should explicitly ignore the initialization step so that it isn't run with the parent AT-based implementation.
2018-08-10broadband-modem: initialize 'tac' in registration_status_check_ready()Ben Chan
mm-broadband-modem.c:4395:13: error: variable 'tac' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] if (act == MM_MODEM_ACCESS_TECHNOLOGY_LTE) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mm-broadband-modem.c:4407:75: note: uninitialized use occurs here mm_iface_modem_3gpp_update_location (MM_IFACE_MODEM_3GPP (self), lac, tac, cid); ^~~ mm-broadband-modem.c:4395:9: note: remove the 'if' if its condition is always true if (act == MM_MODEM_ACCESS_TECHNOLOGY_LTE) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mm-broadband-modem.c:4380:9: error: variable 'tac' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized] if (cgreg) { ^~~~~ mm-broadband-modem.c:4407:75: note: uninitialized use occurs here mm_iface_modem_3gpp_update_location (MM_IFACE_MODEM_3GPP (self), lac, tac, cid); ^~~ mm-broadband-modem.c:4380:5: note: remove the 'if' if its condition is always false if (cgreg) { ^~~~~~~~~~~~ mm-broadband-modem.c:4280:15: note: initialize the variable 'tac' to silence this warning gulong tac; ^ = 0
2018-08-10broadband-modem-mbim: fallback to trying AT+CESQ if ATDS signal unsupportedAleksander Morgado
2018-08-10broadband-modem-mbim: implement extended signal support with ATDSAleksander Morgado
2018-08-10broadband-modem-mbim: implement 3GPP location support with ATDSAleksander Morgado
2018-08-10broadband-modem: check if modem implements MBIM_CID_USSDAleksander Morgado
2018-08-10port-probe: no AT probing on possible QCDM portAleksander Morgado
Ports flagged as being QCDM will not be probed for AT. QCDM probing will be performed normally, the udev tags only give hints, we still need to know whether the TTYs are QCDM-capable or not.
2018-08-10base-modem: load AT port type hints when adding portAleksander Morgado
We keep the pflags input in mm_base_modem_grab_port() so that plugins can use other methods to gather port type hints (e.g. querying with AT commands as in Huawei/Telit or looking at sysfs properties as in HSO). For standard udev tag port type hints, it will be the base modem looking them up. Note that there is no longer any need to ignore non-flagged ports for those modems that require primary/secondary flags. They will be implicitly ignored when mm_base_modem_organize_ports() decides which ports to use, as the flagged ones are preferred over the non-flagged ones.
2018-08-10port-probe: no QCDM probing on possible AT portAleksander Morgado
Ports flagged with one of the common AT port type hints will not be probed for QCDM. AT probing will be performed normally, the udev tags only give hints, we still need to know whether the TTYs are AT-capable or not.
2018-08-10plugins: consolidate ID_MM_PORT_TYPE_AT_* flag namesAleksander Morgado
We define 3 common udev tag ids to be used by all plugins: * ID_MM_PORT_TYPE_AT_PRIMARY: the primary modem port. It will be used for AT control and also as PPP if there is no other port flagged explicitly to do PPP. * ID_MM_PORT_TYPE_AT_SECONDARY: the secondary modem port. It will be used when/if the primary port gets connected to do PPP. * ID_MM_PORT_TYPE_PPP: the port to be used to do PPP only. This tag makes sense only when the primary port shouldn't be used for PPP, i.e. when there is a port dedicated to do PPP and one port dedicated for control.
2018-08-10port-probe: explicitly report GPS port type if port flaggedAleksander Morgado
And remove all custom logic from all plugins that were doing just that.
2018-08-10port-probe: don't do AT or QCDM probing on ports flagged as GPSAleksander Morgado
2018-08-10plugins: consolidate ID_MM_PORT_TYPE_GPS flag nameAleksander Morgado
Use the same flag name across all plugins with support for NMEA-capable TTYs.
2018-08-09cli,signal: print unset signal values as n/aAleksander Morgado
2018-08-09libmm-glib,signal: fix MM_SIGNAL_UNKNOWN symbol valueAleksander Morgado
Unfortunately, G_MINDOUBLE is basically 0.0, so MM_SIGNAL_UNKNOWN ends up giving us a value that may fall in the range of expected values for the signal component. Update the MM_SIGNAL_UNKNOWN symbol to match a value which is definitely out any other possible valid range, so that we can easily detect which values are set and which aren't. While API is maintained, this fix is introducing an ABI break. Not a big deal anyway, as the purpose of the value is just to detect unset fields.
2018-08-09build: require libmbim 1.17.3Ben Chan
libmbim 1.17.3 adds the support for MBIM_CID_PCO, which is used by commit d68078b2ce0f ("broadband-modem-mbim: check if modem implements MBIM_CID_PCO").
2018-08-09iface-modem-3gpp: fix location update when LAC=0 but TAC givenAleksander Morgado
2018-08-08api,location: give Tracking Area Code field in 3GPP location infoAleksander Morgado
The "location area code" field is given in GSM/UMTS networks exclusively. LTE networks use the concept of "tracking area code" instead. This patch updates the Location interface to Provide separate fields for LAC and TAC, instead of giving TAC values in the LAC field.
2018-08-08broadband-modem-qmi: fix build using WITH_NEWEST_QMI_COMMANDSAleksander Morgado
2018-08-08iface-modem: reload current bands after settingAleksander Morgado
Setting bands is a very device-specific operation. Sometimes the device requires specific band combinations, or sometimes the 'any' specific logic doesn't apply to all supported bands (e.g. may apply only to the currently selected modes, as in XMM based devices). So, don't assume that if the set command succeeds we have set all expected bands. Instead, do an explicit loading of the current bands after the set operation, same thing as we do when setting modes.
2018-08-08helpers-qmi: fix UMTS band 6 and 19 definitionsAleksander Morgado
Also bump required libqmi version, as this change uses flags from the latest available API. UMTS B19 is NTT DoCoMo's 800MHz band. UMTS B6 is NTT DoCoMo's 850MHz band
2018-08-08dell: don't ignore TTYs in QMI/MBIM modemsAleksander Morgado
When we detect that the modem is QMI-capable or MBIM-capable, we still want to be able to use TTYs, for features unsupported by the main protocols. So, don't flag all the TTYs as non-AT non-QCDM, let them probe as usual instead.
2018-08-08broadband-modem: allow Enable() if disabling or initializingAleksander Morgado
The first step in the Enable() processing is to wait for a final state, so we can definitely wait for the ongoing disabling or initializing states to finish before we go on with the enable operation, there is no need to early fail if the disabling or initializing intermediate states are detected.
2018-08-08base-modem: allow parallel Enable() and Disable() requestsAleksander Morgado
If additional Enable() requests are received while one is already ongoing, we queue them and will end up completing all with the same result once the first one finishes. Same logic also for Disable(). https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/8
2018-08-08broadband-modem-mbim: subscribe to MBIM_CID_PCO notificationsBen Chan
This patch changes MMBroadbandModem to subscribe to MBIM_CID_PCO notifications if the modem supports that.
2018-08-08broadband-modem-mbim: check if modem implements MBIM_CID_PCOBen Chan
Being a part of a series that adds PCO support for MBIM modems that implement the MBIM_CID_PCO extension, this patch issues a MBIM_CID_DEVICE_SERVICES query during the modem initialization to check if a modem implements MBIM_CID_PCO. If the modem does, ModemManager will subscribe to MBIM_CID_PCO notifications to get PCO updates.
2018-08-06docs/ModemManager.8: document --filter-policy optionLubomir Rintel
2018-08-06docs: move mmcli(8) to section 1Lubomir Rintel
Section (8) is for tools that require root privileges.
2018-08-05signal: cleanup previous extended info if no new one givenAleksander Morgado
E.g. if the modem switches from 4G to 3G while the extended signal information is enabled, we should no longer expose LTE specific signal quality values, only the UMTS specific ones. E.g. to avoid this: $ mmcli -m 1 --signal-get ------------------------- UMTS | RSSI: '0,00' dBm | RSCP: '-92,00' dBm | EcIo: '-13,00' dB ------------------------- LTE | RSSI: '0,00' dBm | RSRQ: '-6,50' dB | RSRP: '-96,00' dBm | SNR: '0,00' dB
2018-08-04build: ignore all tester programs for plugin-specific modem helpersAleksander Morgado
2018-07-31cinterion: fix band related unit testsAleksander Morgado
The sort_band() method used in the tester was totally wrong, it was comparing the addresses of the variables instead of the MMModemBand values. Use the common mm_common_bands_garray_sort() instead, which works as expected.
2018-07-30broadband-modem-mbim: avoid use of uninitialized variableAleksander Morgado
2018-07-30mm-modem-helpers-cinterion: update band table for PLS8-JReinhard Speyerer
The default AT^SCFG="Radio/Band" value for Cinterion PLS8-J devices is "16819472". Add UMTS band 19 and LTE band 19 entries based on the information given in the PLS8 datasheet.
2018-07-27iface-modem-voice: fix ordering of D-Bus signals for call addition/deletionBob Ham
To have proper ordering in the D-Bus signals, the skeleton's property changes must be flushed before the Call{Add,Delet}ed signals are emitted. Without this flush, the emission of the PropertiesChanged signal is delayed until the main loop is idle. This causes problems on the client side, for example the CallAdded signal being received before the Calls property contains the call. Closes: #81
2018-07-27man,mmcli: fix documentation for --set-current-bandsAleksander Morgado
Reported by: Matthew Stanger <stangerm2@gmail.com>
2018-07-27mm-modem-helpers-cinterion: update freq/band tablemstanger
This info comes from PLS8-X/E/J/V/US, HC25 & PHS8 references, the last two can be found publicly via Google search. Swapped bit-mask locations for G850 & PCS bands as they may have changed with FW or where accidently put in the wrong place. Updated many 3G & 4G bit-mask fields.
2018-07-19broadband-modem-mbim: show USB product attribute as modelAleksander Morgado
2018-07-19kerneldevice: allow loading physdev product stringAleksander Morgado
2018-07-19blacklist: include all devices from Prusa ResearchAleksander Morgado
2018-07-10broadband-modem-qmi: plug memleak when processing a factory resetAleksander Morgado
2018-07-10broadband-modem: skip concatenated AT commandsAleksander Morgado
Not all modems support AT command concatenation (e.g. u-blox TOBY-L4 doesn't, according to a specific note about it in the AT command reference). So just skip concatenation in the few places where it's used.
2018-07-10ublox: always send user/pass strings, even if no authentication requestedAleksander Morgado
The TOBY-L2 allowed to skup the user/pass string fields when no authentication was requested, but according to the AT command reference, all the remaining u-blox modules do require these two fields given always (e.g. just as empty strings). As per this sequence in a TOBY-L4: (ttyACM2): --> 'AT+UAUTHREQ=?<CR>' (ttyACM2): <-- '<CR><LF>+UAUTHREQ: (1-4),(0-2),,<CR><LF><CR><LF>OK<CR><LF>' (ttyACM2): --> 'AT+UAUTHREQ=1,0<CR>' (ttyACM2): <-- '<CR><LF>+CME ERROR: 4<CR><LF>' It should have been: AT+UAUTHREQ=1,0,"",""
2018-07-10iface-modem-simple: no need for an extra 'self' reference when using GTaskAleksander Morgado
2018-07-10iface-modem-time: make sure timezone context is cleaned up properlyAleksander Morgado
If we're going to overwrite the timezone context, make sure everything is cleaned up, including the signal handler. Otherwise, we may end up running the signal handler without a context attached: (gdb) bt #0 network_timezone_state_changed (self=0x6aa1e8) at mm-iface-modem-time.c:266 #1 0x76a8d418 in g_closure_invoke (closure=0x6c9810, return_value=0x0, return_value@entry=0x1, n_param_values=2, param_values=0x7edb58c0, param_values@entry=0x6cdab8, invocation_hint=invocation_hint@entry=0x7edb585c) at gclosure.c:804 #2 0x76a9e674 in signal_emit_unlocked_R (node=node@entry=0x6794d0, detail=0, detail@entry=391, instance=instance@entry=0x6aa1e8, emission_return=0x6794a8, emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7edb58c0) at gsignal.c:3629 #3 0x76aa31f4 in g_signal_emit_valist (instance=instance@entry=0x6aa1e8, signal_id=signal_id@entry=1, detail=detail@entry=6767564, var_args=..., var_args@entry=...) at gsignal.c:3385 #4 0x76aa34ec in g_signal_emit (instance=instance@entry=0x6aa1e8, signal_id=signal_id@entry=1, detail=391) at gsignal.c:3441 #5 0x76a91698 in g_object_dispatch_properties_changed (object=0x6aa1e8, n_pspecs=1, pspecs=<optimized out>) at gobject.c:1062 #6 0x76a90e7c in g_object_notify_queue_thaw (object=object@entry=0x6aa1e8, nqueue=nqueue@entry=0x75409418) at gobject.c:296 #7 0x76a9470c in g_object_set_valist (object=object@entry=0x6aa1e8, first_property_name=first_property_name@entry=0xad566 "iface-modem-state", var_args=..., var_args@entry=...) at gobject.c:2171 #8 0x76a94b18 in g_object_set (_object=_object@entry=0x6aa1e8, first_property_name=0xad566 "iface-modem-state") at gobject.c:2275 #9 0x0004b8a4 in __iface_modem_update_state_internal (self=0x6aa1e8, new_state=MM_MODEM_STATE_DISABLED, reason=MM_MODEM_STATE_CHANGE_REASON_USER_REQUESTED, failed_reason=MM_MODEM_STATE_FAILED_REASON_NONE) at mm-iface-modem.c:1487 #10 0x0007047c in disabling_context_free (ctx=0x6ba850) at mm-broadband-modem.c:9053 #11 0x76b4e538 in g_task_finalize (object=0x682488) at gtask.c:636 #12 0x76a92800 in g_object_unref (_object=0x682488) at gobject.c:3183 #13 0x00072154 in iface_modem_disable_ready (self=0x6aa1e8, result=0x7011b0, task=0x682488) at mm-broadband-modem.c:9101 #14 0x76b4e6ec in g_task_return_now (task=0x7011b0) at gtask.c:1107 #15 0x76b4e720 in complete_in_idle_cb (task=0x7011b0) at gtask.c:1121 #16 0x7694d144 in g_main_dispatch (context=0x6765a8) at gmain.c:3154 #17 g_main_context_dispatch (context=context@entry=0x6765a8) at gmain.c:3769 #18 0x7694d40c in g_main_context_iterate (context=0x6765a8, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840 #19 0x7694d838 in g_main_loop_run (loop=0x6750d0) at gmain.c:4034 #20 0x0002bec0 in main (argc=<optimized out>, argv=<optimized out>) at main.c:181
2018-07-10blacklist: remove OpenMoko Hubs from the blacklistAlexander Couzens
The problem of full vendor blacklist are hubs. Because ATTRS{} matches all devices in the tree, a modem connected to a OpenMoko hub will be blacklisted as well.
2018-06-29libmm-glib: reference dup_equipment_identifier instead of dup_pluginEnrico Mioso
Fix the comment.
2018-06-28libmm-glib,location-gps-raw: plug memleakAleksander Morgado
==8663== 1 bytes in 1 blocks are definitely lost in loss record 5 of 4,864 ==8663== at 0x4C2CEDF: malloc (vg_replace_malloc.c:299) ==8663== by 0x669FAC9: g_malloc (in /usr/lib/libglib-2.0.so.0.5600.1) ==8663== by 0x66B9AEA: g_strndup (in /usr/lib/libglib-2.0.so.0.5600.1) ==8663== by 0x66ACE52: g_match_info_fetch (in /usr/lib/libglib-2.0.so.0.5600.1) ==8663== by 0x4E96DD2: mm_location_gps_raw_add_trace (mm-location-gps-raw.c:208) ==8663== by 0x18721E: mm_iface_modem_location_gps_update (mm-iface-modem-location.c:264) ==8663== by 0x1B9C7F: loc_location_nmea_indication_cb (mm-shared-qmi.c:712) ==8663== by 0x640C9E7: g_cclosure_marshal_VOID__BOXEDv (in /usr/lib/libgobject-2.0.so.0.5600.1) ==8663== by 0x6409C95: ??? (in /usr/lib/libgobject-2.0.so.0.5600.1) ==8663== by 0x64259E8: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.5600.1) ==8663== by 0x642612F: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.5600.1) ==8663== by 0x54AAB2D: process_indication (qmi-loc.c:7454) Reported by: Thomas Weißschuh <thomas@weissschuh.net>
2018-06-26broadband-modem-qmi: fix segfault due to NULL task contextAleksander Morgado
ModemManager[18223]: <debug> [1530023432.028473] Modem has 3GPP capabilities, enabling the Modem 3GPP interface... Thread 1 "ModemManager" received signal SIGSEGV, Segmentation fault. 0x0000555555618baa in common_enable_disable_unsolicited_events_signal_strength (task=0x5555558e4440) at mm-broadband-modem-qmi.c:6545 6545 if (ctx->enable) (gdb) bt #0 0x0000555555618baa in common_enable_disable_unsolicited_events_signal_strength (task=0x5555558e4440) at mm-broadband-modem-qmi.c:6545 #1 0x0000555555618d70 in common_enable_disable_unsolicited_events (self=0x55555597a3f0, enable=1, callback=0x5555555c8c20 <enable_unsolicited_events_ready>, user_data=0x5555559779b0) at mm-broadband-modem-qmi.c:6719 #2 0x0000555555618e5b in modem_3gpp_enable_unsolicited_events (self=0x55555597a3f0, callback=0x5555555c8c20 <enable_unsolicited_events_ready>, user_data=0x5555559779b0) at mm-broadband-modem-qmi.c:6749 #3 0x00005555555c9095 in interface_enabling_step (task=0x5555559779b0) at mm-iface-modem-3gpp.c:1907 #4 0x00005555555c8c0a in setup_unsolicited_events_ready (self=0x55555597a3f0, res=0x5555558efad0, task=0x5555559779b0) at mm-iface-modem-3gpp.c:1795 #5 0x00007ffff681e204 in () at /usr/lib/libgio-2.0.so.0 #6 0x00007ffff681e239 in () at /usr/lib/libgio-2.0.so.0 #7 0x00007ffff62731d6 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0 #8 0x00007ffff62735b1 in () at /usr/lib/libglib-2.0.so.0 #9 0x00007ffff62738e2 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0 #10 0x000055555559182c in main (argc=2, argv=0x7fffffffe4a8) at main.c:181 Fixes: baefe53ab9c0ea0612d2bf7da64b6f6cf9753bcd