parsing ^NDISSTATQry response from Huawei E353

Aleksander Morgado aleksander at aleksander.es
Sat Mar 28 10:37:47 PDT 2015


On Sat, Mar 28, 2015 at 11:32 AM, Mikko Vinni <mmvinni at yahoo.com> wrote:
> Hi,
>
> Testing a Huawei E353 directly connected to my laptop (instead of a WLAN router) gives this
> debug output (note the lowercase ry in ^NDISSTATQry):
>
>
> maalis 27 22:09:02 ubium-1 ModemManager[2508]: <debug> [1427486942.121397] [mm-port-serial-at.c:440] debug_log(): (cdc-wdm0): --> 'AT^NDISSTATQRY?<CR><LF>'
> maalis 27 22:09:02 ubium-1 ModemManager[2508]: <debug> [1427486942.128666] [mm-port-serial-at.c:440] debug_log(): (cdc-wdm0): <-- '<CR><LF>^NDISSTATQry:1<CR><LF><CR><LF>OK<CR><LF>'
> maalis 27 22:09:02 ubium-1 ModemManager[2508]: <debug> [1427486942.128827] [huawei/mm-broadband-bearer-huawei.c:161] connect_ndisstatqry_check_ready(): Unexpected response to ^NDISSTATQRY command: Missing ^NDISSTAT / ^NDISSTATQRY prefix (Attempts so far: 11)
> maalis 27 22:09:02 ubium-1 ModemManager[2508]: <debug> [1427486942.128886] [mm-port-serial.c:1294] _close_internal(): (cdc-wdm0) device open count is 0 (close)
> maalis 27 22:09:02 ubium-1 ModemManager[2508]: <debug> [1427486942.128924] [mm-port-serial.c:1310] _close_internal(): (cdc-wdm0) closing serial port...
> maalis 27 22:09:02 ubium-1 ModemManager[2508]: <debug> [1427486942.131157] [mm-port-serial.c:1359] _close_internal(): (cdc-wdm0) serial port closed
> maalis 27 22:09:02 ubium-1 ModemManager[2508]: <debug> [1427486942.755252] [mm-port-serial-at.c:440] debug_log(): (ttyUSB2): <-- '<CR><LF>^DSFLOWRPT:000001F6,00000000,00000000,0000000000000000,0000000000000288,000B4000,00290400<CR><LF>'
> maalis 27 22:09:02 ubium-1 ModemManager[2508]: <debug> [1427486942.755416] [huawei/mm-broadband-modem-huawei.c:1650] huawei_status_changed(): Duration: 502 Up: 0 Kbps Down: 0 Kbps Total: 0 Total: 0
> maalis 27 22:09:03 ubium-1 ModemManager[2508]: <debug> [1427486943.120052] [mm-base-bearer.c:465] connect_ready(): Couldn't connect bearer '/org/freedesktop/ModemManager1/Bearer/0': 'Connection attempt not supported.'
> maalis 27 22:09:03 ubium-1 ModemManager[2508]: <info>  [1427486943.120152] [mm-iface-modem.c:1392] __iface_modem_update_state_internal(): Modem /org/freedesktop/ModemManager1/Modem/0: state changed (connecting -> registered)
> ---
>
>
>
> The connection doesn't work.
>
> I recall this modem having worked before, so something must have changed (not the parsing of
> '^NDISSTATQRY:' in http://cgit.freedesktop.org/ModemManager/ModemManager/tree/plugins/huawei/mm-modem-helpers-huawei.c though, which seems to be hardcoded to look for the string in uppercase).
>
> Currently running
> ModemManager (version 1.4.6) and NetworkManager (version 1.0.0) on Arch Linux (kernel 3.19.2-1-ARCH). The modem is:
>
>
> # mmcli -m 0
>
> /org/freedesktop/ModemManager1/Modem/0 (device id '3433326290b146a4ae694d0a9d6ba061292e957b')
> -------------------------
> Hardware |   manufacturer: 'huawei'
> |          model: 'E353'
> |       revision: '21.137.05.00.864'
> |      supported: 'gsm-umts'
> |        current: 'gsm-umts'
> |   equipment id: '867989013808965'
> -------------------------
> System   |         device: '/sys/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1.2'
> |        drivers: 'huawei_cdc_ncm, option1'
> |         plugin: 'Huawei'
> |   primary port: 'ttyUSB2'
> |          ports: 'ttyUSB0 (at), ttyUSB2 (at), cdc-wdm0 (at), wwp0s26u1u2i1 (net)'
> -------------------------
> Numbers  |           own : 'unknown'
> -------------------------
> Status   |           lock: 'none'
> | unlock retries: 'sim-pin (3), sim-pin2 (3), sim-puk (10), sim-puk2 (10)'
> |          state: 'registered'
> |    power state: 'on'
> |    access tech: 'umts'
> | signal quality: '25' (recent)
> -------------------------
> Modes    |      supported: 'allowed: 2g, 3g; preferred: none
> |                  allowed: 2g, 3g; preferred: 2g
> |                  allowed: 2g, 3g; preferred: 3g
> |                  allowed: 2g; preferred: none
> |                  allowed: 3g; preferred: none'
> |        current: 'allowed: 2g, 3g; preferred: 3g'
> -------------------------
> Bands    |      supported: 'unknown'
> |        current: 'unknown'
> -------------------------
> IP       |      supported: 'ipv4'
> -------------------------
> 3GPP     |           imei: '867989013808965'
> |  enabled locks: 'none'
> |    operator id: '24405'
> |  operator name: 'elisa'
> |   subscription: 'unknown'
> |   registration: 'home'
> -------------------------
> SIM      |           path: '/org/freedesktop/ModemManager1/SIM/0'
>
> -------------------------
> Bearers  |          paths: 'none'
>
> ----
>
> Is this a known issue or something that should be debugged further?
>

The issue really is the NDISSTATQRY? response parsing:

        /* Give up if too many unexpected responses to NIDSSTATQRY are
encountered. */
        if (ctx->failed_ndisstatqry_count > 10) {
            /* Clear context */
            ctx->self->priv->connect_pending = NULL;
            g_simple_async_result_set_error (ctx->result,
                                             MM_MOBILE_EQUIPMENT_ERROR,

MM_MOBILE_EQUIPMENT_ERROR_NOT_SUPPORTED,
                                             "Connection attempt not
supported.");
            connect_3gpp_context_complete_and_free (ctx);
            return;
        }

I'll change that to make it case insensitive.

Someone at Huawei deserves a punishment for this ^NDISSTATQry thing.

-- 
Aleksander
https://aleksander.es


More information about the ModemManager-devel mailing list