Skip to content
Snippets Groups Projects
  1. Oct 09, 2018
    • Aleksander Morgado's avatar
      shared-qmi: implement support for the 'extended' LTE band list · c7d5902c
      Aleksander Morgado authored
      This will allow us to configure via mmcli devices that support LTE
      bands that would not fit in the standard TLVs (e.g. band 66 below)
      or bands which aren't really reported in the standard TLVs (e.g. bands
      46 and 48 below).
      
        $ sudo qmicli -d /dev/cdc-wdm0 -p --dms-get-band-capabilities
        [/dev/cdc-wdm0] Device band capabilities retrieved:
            Bands: 'wcdma-2100, wcdma-pcs-1900, wcdma-1700-us, wcdma-850-us, wcdma-800, wcdma-900, wcdma-1700-japan, wcdma-850-japan'
            LTE bands: '1, 2, 3, 4, 5, 7, 8, 12, 13, 14, 17, 18, 19, 20, 25, 38, 39, 40, 41, 42, 43'
            LTE bands (extended): '1, 2, 3, 4, 5, 7, 8, 12, 13, 14, 17, 18, 19, 20, 25, 26, 28, 29, 30, 32, 38, 39, 40, 41, 42, 43, 46, 48, 66'
      c7d5902c
    • Aleksander Morgado's avatar
  2. Oct 06, 2018
  3. Oct 04, 2018
  4. Sep 25, 2018
    • Aleksander Morgado's avatar
      udev: define all generic tags as symbols · 2a1a0b88
      Aleksander Morgado authored
      This prevents errors due to nasty typos in the strings.
      
      We define all symbols in a single header file that is NOT considered
      part of the API, as there is no need for MM clients to know about
      these tags code-wise. These tags are only meaningful when associated
      to devices in udev.
      
      Information of each tag is included in the general API documentation.
      
      #88
      2a1a0b88
    • Aleksander Morgado's avatar
      iface-modem-messaging: if only one storage supported, select it right away · a2705abb
      Aleksander Morgado authored
      Some plugins or implementations (e.g. notably MBIM) may report a
      single storage as supported and no way to update the current default
      storage. In this specific case, we will initialize the default storage
      to that single one supported right away, regardless of whether
      selecting others is implemented or not.
      a2705abb
    • Aleksander Morgado's avatar
      libmm-glib,location-3gpp: don't ignore location updates when MNC is 0 · 0ca95254
      Aleksander Morgado authored
      E.g. China Mobile (MCC 460, MNC 0).
      
          $ mmcli -m toby --location-get
      
          /org/freedesktop/ModemManager1/Modem/0
            -------------------------
            3GPP location   | Mobile country code: '460'
                            | Mobile network code: '0'
                            |  Location area code: '6188'
                            |             Cell ID: '40955'
            -------------------------
            GPS NMEA traces | Not available
            -------------------------
            Raw GPS         | Not available
            -------------------------
            CDMA BS         | Not available
      0ca95254
  5. Sep 21, 2018
  6. Sep 13, 2018
  7. Sep 12, 2018
    • Aleksander Morgado's avatar
      dell: implement Unmanaged GPS support for the DW5821e · 6e5ea39c
      Aleksander Morgado authored
      The DW5821E module is managed in MBIM mode by default, and exposes a
      NMEA capable tty in USB interface #4.
      
      Enabling/disabling the NMEA output via the TTY is done with AT
      commands, so this implementation requires also a valid AT port in the
      system.
      
      Given that the AT commands used to enable/disable this feature are
      based on modifying non-volatile memory through AT^NV, this
      implementation is very specific to the DW5821E. If we're able to do
      the same on other Dell modules in the future, we'll just rename the
      new object to a more generic one.
      6e5ea39c
    • Aleksander Morgado's avatar
      dell: port type hints for the Dell DW5821e · 02f9b5b0
      Aleksander Morgado authored
      Include port type hints to make probing quicker, and ignore the
      secondary AT port as it may not be fully functional.
      02f9b5b0
    • Aleksander Morgado's avatar
    • Aleksander Morgado's avatar
      broadband-modem-mbim: use QMI-based mode/capability switching if supported · 7f18a937
      Aleksander Morgado authored
      The implementation available in the shared QMI logic can be used
      as-is, with one important note: if the QMI-based mode/capability
      switching is used, we MUST also use QMI-based "3GPP network
      registration" logic. This is needed because the MBIM command used to
      select which 3GPP network to connect to allows specifying the mask of
      access technologies desired, and that would overwrite whatever we had
      previously set with QMI-based mode/capability switching commands.
      7f18a937
    • Aleksander Morgado's avatar
      shared-qmi: implement 3GPP network registration logic · ac69466c
      Aleksander Morgado authored
      Ported from the broadband modem QMI implementation, keeping the logic
      in place. We will need this to integrate mode/capability switching in
      MBIM devices, for nothing else really (as MBIM already supports this
      operation).
      ac69466c
    • Aleksander Morgado's avatar
      shared-qmi: implement reworked mode and capabilities management · 692d076b
      Aleksander Morgado authored
      This commit introduces several improvements and changes in the way
      modes and capabilities are managed in QMI capable devices. It is
      organized into a single commit, as all changes in all 6 operations
      (load current capabilities, load supported capabilities, set current
      capabilities, load supported modes, load current modes, set current
      modes) are related one to the other (given that the same QMI commands
      are used for both capabilities and mode management).
      
      The primary change is related to which capabilities are reported as
      supported for a given device. In the previous implementation we
      allowed switching between every combination possible for GSM/UMTS+LTE,
      CDMA/EVDO+LTE or GSM/UMTS+CDMA/EVDO+LTE devices. E.g. we would allow
      "LTE only" and "GSM/UMTS only" capabilities for GSM/UMTS+LTE devices,
      even if they would both be managed in exactly the same way. That setup
      wasn't ideal, because it meant that switching to a "LTE only"
      configuration would require a power cycle, as capability switching
      requires a power cycle, even if no change was expected in the exposed
      DBus interfaces (which is why we require the power cycle). So, instead
      of allowing every possible capability combination, we use capability
      switching logic exclusively for configuring GSM/UMTS+CDMA/EVDO devices
      (regardless of whether it has LTE or not) to add or remove the
      GSM/UMTS and CDMA/EVDO capabilities. E.g. for a GSM/UMTS+CDMA/EVDO+LTE
      device we would allow 3 combinatios: "GSM/UMTS+LTE", "CDMA/EVDO+LTE"
      and "GSM/UMTS+CDMA/EVDO+LTE".
      
      The "GSM/UMTS+CDMA/EVDO+LTE" is a special case because for this one we
      allow switching to "LTE only" capabilities while we forbid switching
      to "4G only" mode. As the same commands are used for mode and
      capability switching, if we didn't have "LTE only" and we allowed "4G
      only" mode instead and rebooted the device, we would end up not being
      able to know which other capabilities (GSM/UMTS or CDMA/EVDO or both)
      were also enabled.
      
      Now that we have capability switching confined to a very subset of
      combinations, we can use the mode switching logic to e.g. allow "4G
      only" configurations in all non multimode devices, as well as masks of
      allowed modes with one being preferred, which we didn't allow before.
      In the previous implementation all mode switching logic was disabled
      for LTE capable QMI devices. In the new implementation, we use the
      "Acquisition Order Preference" TLV in NAS Set System Selection
      Preference to define the full list of mode preferences for all
      supported modes.
      
      We also no longer just assume that NAS Technology Preference is always
      available and NAS System Selection Preference only after NAS >= 1.1.
      This logic is flawed, instead we're going to probe for those features
      once when loading current capabilities, and we then just implement the
      capabilities/mode switching logic based on that.
      692d076b
    • Aleksander Morgado's avatar
    • Aleksander Morgado's avatar
    • Aleksander Morgado's avatar
      helpers,tests: update ICCID related unit tests · 32aa8333
      Aleksander Morgado authored
      Fix the test for invalid characters, because now I allow hex chars in
      the account number.
      
      And add new tests with real China Mobile ICCIDs that contain hex chars
      in the account number.
      32aa8333
    • Aleksander Morgado's avatar
      helpers: allow [A-F] range in operator-specific ICCID account number · 099d54a4
      Aleksander Morgado authored
      There are operators (e.g. the Chinese CMCC operator) that abuse the
      fact that 4 bits are used to store the BCD encoded numbers, and also
      use the [A-F] range as valid characters for the ICCID in the operator
      specific account number part. Haven't seen any documentation where
      this format with [A-F] characters is explicitly allowed, but I have
      seen multiple real cases where it happens. E.g.:
      
        898602F9091830030220
        898602C0123456789012
      
      This patch also removes the 'last F' validation, used when reading
      19-digit ICCIDs with +CRSM, as it no longer applies.
      099d54a4
    • Aleksander Morgado's avatar
      ublox: implement custom ICCID loading · eb01914b
      Aleksander Morgado authored
      Use AT+CCID to query the SIM ICCID, and fallback to parent's +CRSM
      based method otherwise.
      eb01914b
    • Aleksander Morgado's avatar
      helpers: allow 19-digit reported ICCIDs · 02821232
      Aleksander Morgado authored
      The mm_3gpp_parse_iccid() method does validation of the ICCID string
      and was originally implemented to handle +CRSM reported values. The
      implementation was looking for 20-digit strings, even for 19-digit
      ICCIDs (those finished with a trailing 'F').
      
      We now extend the logic to also validate ICCID strings reported as
      19-digit values directly, and when that happens we won't allow
      swapping of the digits (a +CRSM specific requirement) or trailing 'F'
      characters (as that is only required when reporting 19-digit ICCIDs
      with 20-digit strings).
      
      This change allows us to e.g. use the u-blox specific AT+CCID command
      and validate the returned ICCID with the same helper method, which
      currently fails:
      
        (ttyACM2): --> 'AT+CCID<CR>'
        (ttyACM2): <-- '<CR><LF>+CCID: 8934077700015848638<CR><LF><CR><LF>OK<CR><LF>'
        couldn't load SIM identifier: 'Invalid ICCID response size (was 19, expected 20)'
      02821232
    • Aleksander Morgado's avatar
      modem-helpers: reuse nicknames for the flow control tags · 4c669d3b
      Aleksander Morgado authored
      And check that the string given in the tag is actually a valid one.
      4c669d3b
    • Aleksander Morgado's avatar
    • Aleksander Morgado's avatar
      broadband-bearer: no need for explicit flow control cleanup on disconnect · 727567cf
      Aleksander Morgado authored
      We're already configuring the flow control we expect when running
      mm_port_serial_reopen(), which will keep the udev-selected flow
      control or will otherwise reset to no flow control when the TTY is in
      command mode.
      727567cf
    • Aleksander Morgado's avatar
Loading