aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-11-06modem-helpers-qmi: don't check result when parsing UIM Get Card Status OutputAleksander Morgado
Do it earlier, before running the parser.
2020-11-05mm-kernel-device: Fix cmp to exclude subtypesAndrew Lassalle
If multiple kernel device types inherit from MMKernerDevice, and those are compared against each other, the current logic returns TRUE if the G_OBJECT_TYPE of one of them is smaller than the other. This function is checking for equality, so returning FALSE is enough.
2020-11-04huawei: apply GETPORTMODE hints to serial ports in orderAleksander Morgado
The numbers associated to each port mode given by the AT^GETPORTMODE response are not USB interface numbers, they are 'port numbers'. Moreover, these numbers may start either at 0 or at 1, depending on the firmware. The only reasonable way to parse this response is to just gather the order of all the port modes reported, and apply the modes to each serial port found in the system in the same order. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/239
2020-11-04huawei: new ^GETPORTMODE response parserAleksander Morgado
2020-11-04huawei: plugin already processes generic tagsAleksander Morgado
So don't re-process them in the generic modem when grabbing the port.
2020-11-04huawei: don't apply multiple port type hints methodsAleksander Morgado
We will use one single method to apply port type hints, not a mix of them: * If AT^GETPORTMODE is supported, prefer its hints over any other method. * Otherwise, try to guess hints from USB interface descriptions. * And if none of the plugin-specific hints are supported, we'll default to applying generic port type hints from udev tags. Once the hints have been applied by one of the methods above, the fallback hint sequences are run: * Flag the first cdc-wdm port as primary if no other port has been flagged as primary. * Flag the USB interface 0 as PPP if no other port type hint has been set in any other port. The logic applying all these procedures has been refactored so that we have separate functions for each, which is much easier to read and follow, even if it requires multiple iterations over the port probe list. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/238
2020-11-04cinterion: fix port reference leaksAleksander Morgado
The mm_base_modem_get_port_*() returns a full reference, we should use the mm_base_modem_peek_port_*() methods instead. Also, refactor a bit the logic because both ports are really configured in the same way, so just apply the same setup to both.
2020-11-04cinterion: source reorderAleksander Morgado
The class object definition should always be last in the file, following the interface definitions. The actual method implementations should be given before any other type system method (i.e. before even the _new() method).
2020-11-04cinterion: load initial EPS bearer cid only onceAleksander Morgado
There is no need to reload it on every settings update attempt; just load it once when the 3GPP interface is initialized, and re-use the loaded value on every new update attempt.
2020-11-04cinterion: fallback to RF on on error right awayAleksander Morgado
Don't go to next step and then check if we need to jump to the RF on step, jump right away.
2020-11-04cinterion: failure to set low power in initial EPS setting is fatalAleksander Morgado
Attempting to change the initial EPS bearer settings while in full functionality mode shouldn't happen, so make sure we don't attempt to do that if going into low power mode fails.
2020-11-04cinterion: setup SGAUTH response parser as a helper methodAleksander Morgado
2020-11-04cinterion: move auth helpers to the helpers sourcesAleksander Morgado
2020-11-04cinterion: improve logging when loading initial EPS status or settingsAleksander Morgado
2020-11-04cinterion: refactor the initial EPS related logicAleksander Morgado
Multiple changes that shouldn't affect behavior: * Avoid reusing the same context and state machine for the set and the load operations, because they truly have different behaviors. * Setup the common load operation in a separate async method, and reuse the common operation for both the runtime state loading and the settings configuration loading. * Avoid having a "generic step ready" method, and instead provide proper ready methods for each step, so that we can give comprehensive warning logs when things fail. * Use the common CFUN? response parser instead of a custom implementation.
2020-10-30mm-broadband-modem: Allow hot SIM insertionAndrew Lassalle
If the QMI modem is initialized without a SIM card in it, and it goes to failed state, allow the modem to be reprobed when a SIM card is inserted.
2020-10-30base-modem: sort port info array by port nameAleksander Morgado
So that the list of ports shown in the Ports DBus property is also alphabetically sorted by port name, instead of having a mess like this: ----------------------------- System | device: qcom-soc | drivers: bam-dmux | plugin: qcom-soc | primary port: rpmsg0 | ports: rmnet5 (net), rmnet_usb0 (unknown), rmnet4 (net), | rpmsg1 (at), rmnet3 (net), rpmsg0 (qmi), rmnet2 (net), rmnet1 (net), | rmnet7 (net), rmnet0 (net), rmnet6 (net)
2020-10-30api: expose ignored ports as MM_MODEM_PORT_TYPE_IGNOREDStephan Gerhold
At the moment, ignored ports show up as (unknown) in the ports list in mmcli. This makes it look like something went wrong while probing. Actually ModemManager already tracks unknown and ignored ports separately (MM_PORT_TYPE_UNKNOWN vs MM_PORT_TYPE_IGNORED) but the API always exposes them as MM_MODEM_PORT_TYPE_UNKNOWN. Add MM_MODEM_PORT_TYPE_IGNORED and use this for ignored ports so they show up as (ignored) instead in mmcli.
2020-10-29helpers-qmi: 'illegal' card application state is fatalAleksander Morgado
No need to retry checking card status when the application state is illegal, just treat the SIM card as unusable right away. https://forum.sierrawireless.com/t/uim-card-application-state-illegal/21842
2020-10-29shared-qmi: ignore NoEffect errors on slot switchingAleksander Morgado
When "UIM Switch Slot" returns a NoEffect error it's because we're already in the desired slot, so just treat it as a successful operation.
2020-10-25log: ignore fatal flag for logging purposesAleksander Morgado
Running with G_DEBUG=fatal-warnings will end up reporting warning logs with G_LOG_FLAG_FATAL, which breaks our own logging logic.
2020-10-25libmm-glib,docs: add missing reference to mm_gdbus_sim_set_eid()Aleksander Morgado
It's a private method, so add it in the Private subsection.
2020-10-21broadband-modem-qmi: minor coding style fixAleksander Morgado
2020-10-19broadband-modem-qmi: fix crash when device removed during initAleksander Morgado
If the modem goes away (ports removed) during the initialization phase (e.g. while QMI clients are being allocated), the MMPortQmi object will be closed and it will lose its internal QmiDevice. We should therefore consider the lack of QmiDevice a valid usecase in track_qmi_device_removed() and return a GError when that happens. #0 0x00007fb544618cc9 in raise () from /lib/libc.so.6 #1 0x00007fb54461bd68 in abort () from /lib/libc.so.6 #2 0x00007fb544e2213d in g_assertion_message () from /usr/lib/libglib-2.0.so.0 #3 0x00007fb544e221ba in g_assertion_message_expr () from /usr/lib/libglib-2.0.so.0 #4 0x00000000004be584 in track_qmi_device_removed () #5 0x00000000004be5e3 in allocate_next_client () #6 0x00000000004be7b1 in qmi_port_allocate_client_ready () #7 0x00007fb5453690a3 in g_task_return_now () from /usr/lib/libgio-2.0.so.0 #8 0x00007fb54536967e in g_task_return () from /usr/lib/libgio-2.0.so.0 #9 0x00000000004dd8f8 in allocate_client_ready () #10 0x00007fb5453690a3 in g_task_return_now () from /usr/lib/libgio-2.0.so.0 #11 0x00007fb54536967e in g_task_return () from /usr/lib/libgio-2.0.so.0 #12 0x00007fb54591d4de in allocate_cid_ready () from /usr/lib/libqmi-glib.so.5 ...
2020-10-19libmm-glib,mmcli: add mm_sim_get_eid and add EID to mmcli outputEric Caruso
This exposes the new EID property of the SIM object on mmcli.
2020-10-19mm-shared-qmi: load EID during SIM slot loadingEric Caruso
SIMs can be created with an EID fetched during load_sim_slots while initializing the modem, if present. Since load_eid would be implemented with the same mechanism we avoid using it here (if Get Slot Status fails once, it probably doesn't make a lot of sense to try it again).
2020-10-19mm-base-sim: add EID D-Bus propertyEric Caruso
This provides a new D-Bus property on the Sim object that exposes the EID of the SIM, if available.
2020-10-19broadband-modem-qmi: minor coding style fixesAleksander Morgado
2020-10-16mm-modem-helpers: add low_nybble_first argument to mm_bcd_to_stringEric Caruso
All BCD-encoded strings used by MM currently have the low nybble of each byte come before the high nybble, but some strings (such as the EID string returned by QMI Get Slot Status) are meant to be read in order with the high nybble before the low one. As such, extend mm_bcd_to_string to decode both.
2020-10-14xmm: fix missing GError initializationAleksander Morgado
2020-10-14simtech: fix missing GError initializationAleksander Morgado
2020-10-14cinterion: fix missing GError initializationAleksander Morgado
2020-10-10iface-modem-location: log old and new 3GPP location ids when updatingAleksander Morgado
2020-10-10iface-modem-location: allow Cell ID only updatesAleksander Morgado
The "Serving System" indications reported via QMI when the device is moving may contain LAC/TAC+CID updates or just CID updates. E.g. this one has "CID 3GPP" (0x1e): Mon Aug 3 11:22:42 2020 daemon.debug [1567]: [/dev/cdc-wdm0] received generic indication (translated)... <<<<<< QMUX: <<<<<< length = 33 <<<<<< flags = 0x80 <<<<<< service = "nas" <<<<<< client = 3 <<<<<< QMI: <<<<<< flags = "indication" <<<<<< transaction = 4512 <<<<<< tlv_length = 21 <<<<<< message = "Serving System" (0x0024) <<<<<< TLV: <<<<<< type = "Serving System" (0x01) <<<<<< length = 6 <<<<<< value = 01:01:01:02:01:08 <<<<<< translated = [ registration_state = 'registered' cs_attach_state = 'attached' ps_attach_state = 'attached' selected_network = '3gpp' radio_interfaces = '{ [0] = 'lte '}' ] <<<<<< TLV: <<<<<< type = "Data Service Capability" (0x11) <<<<<< length = 2 <<<<<< value = 01:0B <<<<<< translated = { [0] = 'lte '} <<<<<< TLV: <<<<<< type = "CID 3GPP" (0x1e) <<<<<< length = 4 <<<<<< value = 14:C2:A8:00 <<<<<< translated = 11059732 And this one has both "CID 3GPP" (0x1e) and "LTE TAC" (0x25): Mon Aug 3 11:23:05 2020 daemon.debug [1567]: [/dev/cdc-wdm0] received generic indication (translated)... <<<<<< QMUX: <<<<<< length = 38 <<<<<< flags = 0x80 <<<<<< service = "nas" <<<<<< client = 3 <<<<<< QMI: <<<<<< flags = "indication" <<<<<< transaction = 4513 <<<<<< tlv_length = 26 <<<<<< message = "Serving System" (0x0024) <<<<<< TLV: <<<<<< type = "Serving System" (0x01) <<<<<< length = 6 <<<<<< value = 01:01:01:02:01:08 <<<<<< translated = [ registration_state = 'registered' cs_attach_state = 'attached' ps_attach_state = 'attached' selected_network = '3gpp' radio_interfaces = '{ [0] = 'lte '}' ] <<<<<< TLV: <<<<<< type = "Data Service Capability" (0x11) <<<<<< length = 2 <<<<<< value = 01:0B <<<<<< translated = { [0] = 'lte '} <<<<<< TLV: <<<<<< type = "CID 3GPP" (0x1e) <<<<<< length = 4 <<<<<< value = 32:36:BC:00 <<<<<< translated = 12334642 <<<<<< TLV: <<<<<< type = "LTE TAC" (0x25) <<<<<< length = 2 <<< We should therefore allow changes only in the CID, maintaining whatever LAC/TAC value we had before.
2020-10-10iface-modem-3gpp: print consolidated reg state info only when updatingAleksander Morgado
2020-10-08mm-bearer-qmi: remove default_ip_family_set checkEric Caruso
According to QC, we should set the IP family in both the Set IP Family and Start Network messages. After removing this check the member is never read, only written; this means it's effectively dead and can be removed.
2020-10-07broadband-modem: Disconnect bearers during disablePavan Holla
Fixes a bug introduced in commit 7e386389, which caused user requested disable operations to go to step DISABLING_STEP_FIRST_AFTER_ENABLE_FAILED. For user requested disable, the first step should be DISABLING_STEP_FIRST.
2020-10-05port-qmi: increase qmi_device_open retriesDaniele Palmas
Telit FN980 requires more time for becoming responsive to qmi requests after device appearance.
2020-10-05telit: add tag ID_MM_TELIT_PORT_DELAY for initial delay mechanismDaniele Palmas
2020-10-05telit: add initial delay for AT ports to become responsiveDaniele Palmas
Add a polling mechanism for port responsiveness, since some modem families require some time before being usable after the serial ports have been exposed by the kernel.
2020-10-05telit: add FN980 and LM9x0 MBIM compositions rulesDaniele Palmas
2020-10-05telit: fix LM9x0 udev rulesDaniele Palmas
2020-10-03broadband-modem-qmi: Report FIXED_DIALING lock correctlyPavan Holla
Querying facility locks should return a FIXED_DIALING lock if PIN2 lock is enabled.
2020-10-03broadband-modem-qmi: Return error if get_pin_status failsPavan Holla
Prior to this CL, failure to get pin status while probing facility locks would not flag an error. Failure to read a pin lock is a critical error and we return it to higher layers.
2020-10-03broadband-modem-qmi: Use UIM service for querying facility locksPavan Holla
DMS_UIM messages have been deprecated, and have been replaced by equivalent UIM messages. Use UIM_GET_CARD_STATUS while querying for facility locks if dms_uim messages were found to be deprecated.
2020-09-29ci: create release tarball and hash as build artifactswicadmin
2020-09-28shared-qmi: cleanup UIM client if SIM hot swap setup failsAleksander Morgado
The cleanup was missing in one of the steps.
2020-09-28shared-qmi: minor style changes in SIM hot swap logicAleksander Morgado
2020-09-28quectel: setup parent SIM hot swap in addition to +QUSIMAleksander Morgado
So that e.g. in QMI-based devices we have both things, not just one.
2020-09-28broadband-modem-mbim: also setup SIM hot swap with QMI over MBIMAleksander Morgado
On QMI-capable MBIM devices, also setup the SIM hot swap logic using QMI over MBIM, so that profile changes are detected.