aleksander/qmi-firmware-update v2: dms-list-stored-images on MC7430

Bjørn Mork bjorn at mork.no
Wed Jan 18 13:38:29 UTC 2017


Aleksander Morgado <aleksander at aleksander.es> writes:

> On Wed, Jan 18, 2017 at 1:21 PM, Bjørn Mork <bjorn at mork.no> wrote:
>>> 2) In List Stored Images response, index of running image is given but it is
>>>> "2" with only image 0 and 1 after. Maybe it is a storage index and not an
>>>> index in the table of answers. Do you know that?
>>>>
>>>
>>> Your QMI response for List Stored Images says:
>>>   index_of_running_image = '2'
>>> But the list of images only contains 2 items (indices 0 and 1).
>>>
>>> I rechecked what that value is supposed to mean, and it is the index
>>> of the image in the list returned, not the storage index.
>>
>> well, I've consistenly seen the same issue with the MC7455 and EM7455
>> modems...
>>
>>
>>> If it were
>>> the storage index, you wouldn't have seen CURRENT before the firmware
>>> upgrade (as the CURRENT was index_of_running_image = '0' and your
>>> storage index was 1).
>>
>> True. That doesn't add up.  Unless '0' has a different meaning.
>> Guessing wildly again, but could this indicate a "directly uploaded
>> image"?  I'm thinking about the case where you've updloaded an image
>> directly to the modem partition, any not into any of the 4 slots.  Like
>> you will do if you do AT!BOOTHOLD to switch into QDL mode.
>>
>> Just a random thought
>
> I really believe this is a firmware bug of some sort, nothing to do with libqmi.
>
> Could it be that whenever an image is uploaded, the
> "index_of_running_image" gets the value from the "storage index", but
> then after doing selections with --dms-select-stored-image the
> "index_of_running_image" is again the correct one, i.e. the index from
> the list reported?

No, that does not change anything.


0) initial state:

[18 Jan 2017, 14:12:32] [Debug] [/dev/cdc-wdm0] Registered 'dms' (version unknown) client with ID '3'
[18 Jan 2017, 14:12:32] [Debug] Asynchronously listing stored images...
[18 Jan 2017, 14:12:32] [Debug] [/dev/cdc-wdm0] Sent message...
<<<<<< RAW:
<<<<<<   length = 13
<<<<<<   data   = 01:0C:00:00:02:03:00:01:00:49:00:00:00

[18 Jan 2017, 14:12:32] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< QMUX:
<<<<<<   length  = 12
<<<<<<   flags   = 0x00
<<<<<<   service = "dms"
<<<<<<   client  = 3
<<<<<< QMI:
<<<<<<   flags       = "none"
<<<<<<   transaction = 1
<<<<<<   tlv_length  = 0
<<<<<<   message     = "List Stored Images" (0x0049)

[18 Jan 2017, 14:12:32] [Debug] [/dev/cdc-wdm0] sending message as MBIM...
[18 Jan 2017, 14:12:32] [Debug] [/dev/cdc-wdm0] Received MBIM message
[18 Jan 2017, 14:12:32] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 238
>>>>>>   data   = 01:ED:00:80:02:03:02:01:00:49:00:E1:00:02:04:00:00:00:00:00:01:D7:00:02:00:04:01:04:01:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:32:33:2E:30:30:2E:30:30:5F:3F:02:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:30:38:2E:30:32:2E:30:30:5F:3F:03:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:31:34:2E:30:33:2E:30:30:5F:3F:04:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:31:38:2E:30:32:2E:30:30:5F:3F:01:32:00:02:FF:FF:30:30:32:2E:30:31:38:5F:30:30:30:00:00:00:00:00:13:30:32:2E:32:33:2E:30:30:2E:30:30:5F:47:45:4E:45:52:49:43:FF:FF:30:30:32:2E:30:30:36:5F:30:30:30:00:00:00:00:00:15:30:32:2E:30:38:2E:30:32:2E:30:30:5F:4F:52:41:4E:47:45:2D:45:55

[18 Jan 2017, 14:12:32] [Debug] [/dev/cdc-wdm0] Received message (translated)...
>>>>>> QMUX:
>>>>>>   length  = 237
>>>>>>   flags   = 0x80
>>>>>>   service = "dms"
>>>>>>   client  = 3
>>>>>> QMI:
>>>>>>   flags       = "response"
>>>>>>   transaction = 1
>>>>>>   tlv_length  = 225
>>>>>>   message     = "List Stored Images" (0x0049)
>>>>>> TLV:
>>>>>>   type       = "Result" (0x02)
>>>>>>   length     = 4
>>>>>>   value      = 00:00:00:00
>>>>>>   translated = SUCCESS
>>>>>> TLV:
>>>>>>   type       = "List" (0x01)
>>>>>>   length     = 215
>>>>>>   value      = 02:00:04:01:04:01:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:32:33:2E:30:30:2E:30:30:5F:3F:02:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:30:38:2E:30:32:2E:30:30:5F:3F:03:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:31:34:2E:30:33:2E:30:30:5F:3F:04:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:31:38:2E:30:32:2E:30:30:5F:3F:01:32:00:02:FF:FF:30:30:32:2E:30:31:38:5F:30:30:30:00:00:00:00:00:13:30:32:2E:32:33:2E:30:30:2E:30:30:5F:47:45:4E:45:52:49:43:FF:FF:30:30:32:2E:30:30:36:5F:30:30:30:00:00:00:00:00:15:30:32:2E:30:38:2E:30:32:2E:30:30:5F:4F:52:41:4E:47:45:2D:45:55
>>>>>>   translated = { [0] = '[ type = 'modem' maximum_images = '4' index_of_running_image = '1' sublist = '{ [0] = '[ storage_index = '1' failure_count = '0' unique_id = '{ [0] = '63 ' [1] = '95 ' [2] = '63 ' [3] = '0 ' [4] = '0 ' [5] = '0 ' [6] = '0 ' [7] = '0 ' [8] = '0 ' [9] = '0 ' [10] = '0 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.23.00.00_?' ] ' [1] = '[ storage_index = '2' failure_count = '0' unique_id = '{ [0] = '63 ' [1] = '95 ' [2] = '63 ' [3] = '0 ' [4] = '0 ' [5] = '0 ' [6] = '0 ' [7] = '0 ' [8] = '0 ' [9] = '0 ' [10] = '0 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.08.02.00_?' ] ' [2] = '[ storage_index = '3' failure_count = '0' unique_id = '{ [0] = '63 ' [1] = '95 ' [2] = '63 ' [3] = '0 ' [4] = '0 ' [5] = '0 ' [6] = '0 ' [7] = '0 ' [8] = '0 ' [9] = '0 ' [10] = '0 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.14.03.00_?' ] ' [3] = '[ storage_index = '4' failure_count = '0' unique_id = '{ [0] = '63 ' [1] = '95 ' [2] = '63 ' [3] = '0 ' [4] = '0 ' [5] = '0 ' [6] = '0 ' [7] = '0 ' [8] = '0 ' [9] = '0 ' [10] = '0 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.18.02.00_?' ] '}' ] ' [1] = '[ type = 'pri' maximum_images = '50' index_of_running_image = '0' sublist = '{ [0] = '[ storage_index = '255' failure_count = '255' unique_id = '{ [0] = '48 ' [1] = '48 ' [2] = '50 ' [3] = '46 ' [4] = '48 ' [5] = '49 ' [6] = '56 ' [7] = '95 ' [8] = '48 ' [9] = '48 ' [10] = '48 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.23.00.00_GENERIC' ] ' [1] = '[ storage_index = '255' failure_count = '255' unique_id = '{ [0] = '48 ' [1] = '48 ' [2] = '50 ' [3] = '46 ' [4] = '48 ' [5] = '48 ' [6] = '54 ' [7] = '95 ' [8] = '48 ' [9] = '48 ' [10] = '48 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.08.02.00_ORANGE-EU' ] '}' ] '}



1) running qmicli -v -p --device-open-mbim -d /dev/cdc-wdm0 --dms-select-stored-image="modem0,pri0" 

[18 Jan 2017, 14:14:34] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< QMUX:
<<<<<<   length  = 84
<<<<<<   flags   = 0x00
<<<<<<   service = "dms"
<<<<<<   client  = 3
<<<<<< QMI:
<<<<<<   flags       = "none"
<<<<<<   transaction = 2
<<<<<<   tlv_length  = 72
<<<<<<   message     = "Set Firmware Preference" (0x0048)
<<<<<< TLV:
<<<<<<   type       = "List" (0x01)
<<<<<<   length     = 69
<<<<<<   value      = 02:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:32:33:2E:30:30:2E:30:30:5F:3F:01:30:30:32:2E:30:31:38:5F:30:30:30:00:00:00:00:00:13:30:32:2E:32:33:2E:30:30:2E:30:30:5F:47:45:4E:45:52:49:43
<<<<<<   translated = { [0] = '[ type = 'modem' unique_id = '{ [0] = '63 ' [1] = '95 ' [2] = '63 ' [3] = '0 ' [4] = '0 ' [5] = '0 ' [6] = '0 ' [7] = '0 ' [8] = '0 ' [9] = '0 ' [10] = '0 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.23.00.00_?' ] ' [1] = '[ type = 'pri' unique_id = '{ [0] = '48 ' [1] = '48 ' [2] = '50 ' [3] = '46 ' [4] = '48 ' [5] = '49 ' [6] = '56 ' [7] = '95 ' [8] = '48 ' [9] = '48 ' [10] = '48 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.23.00.00_GENERIC' ] '}

[18 Jan 2017, 14:14:34] [Debug] [/dev/cdc-wdm0] sending message as MBIM...
[18 Jan 2017, 14:14:34] [Debug] [/dev/cdc-wdm0] Received MBIM message
[18 Jan 2017, 14:14:34] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 24
>>>>>>   data   = 01:17:00:80:02:03:02:02:00:48:00:0B:00:02:04:00:00:00:00:00:01:01:00:00

[18 Jan 2017, 14:14:34] [Debug] [/dev/cdc-wdm0] Received message (translated)...
>>>>>> QMUX:
>>>>>>   length  = 23
>>>>>>   flags   = 0x80
>>>>>>   service = "dms"
>>>>>>   client  = 3
>>>>>> QMI:
>>>>>>   flags       = "response"
>>>>>>   transaction = 2
>>>>>>   tlv_length  = 11
>>>>>>   message     = "Set Firmware Preference" (0x0048)
>>>>>> TLV:
>>>>>>   type       = "Result" (0x02)
>>>>>>   length     = 4
>>>>>>   value      = 00:00:00:00
>>>>>>   translated = SUCCESS
>>>>>> TLV:
>>>>>>   type       = "Image Download List" (0x01)
>>>>>>   length     = 1
>>>>>>   value      = 00
>>>>>>   translated = {}



2) qmicli -v -p --device-open-mbim -d /dev/cdc-wdm0 --dms-set-operating-mode=reset

[18 Jan 2017, 14:15:46] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< QMUX:
<<<<<<   length  = 16
<<<<<<   flags   = 0x00
<<<<<<   service = "dms"
<<<<<<   client  = 3
<<<<<< QMI:
<<<<<<   flags       = "none"
<<<<<<   transaction = 1
<<<<<<   tlv_length  = 4
<<<<<<   message     = "Set Operating Mode" (0x002E)
<<<<<< TLV:
<<<<<<   type       = "Mode" (0x01)
<<<<<<   length     = 1
<<<<<<   value      = 04
<<<<<<   translated = reset

[18 Jan 2017, 14:15:46] [Debug] [/dev/cdc-wdm0] sending message as MBIM...
[18 Jan 2017, 14:15:46] [Debug] [/dev/cdc-wdm0] Received MBIM message
[18 Jan 2017, 14:15:46] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 20
>>>>>>   data   = 01:13:00:80:02:03:02:01:00:2E:00:07:00:02:04:00:00:00:00:00

[18 Jan 2017, 14:15:46] [Debug] [/dev/cdc-wdm0] Received message (translated)...
>>>>>> QMUX:
>>>>>>   length  = 19
>>>>>>   flags   = 0x80
>>>>>>   service = "dms"
>>>>>>   client  = 3
>>>>>> QMI:
>>>>>>   flags       = "response"
>>>>>>   transaction = 1
>>>>>>   tlv_length  = 7
>>>>>>   message     = "Set Operating Mode" (0x002E)
>>>>>> TLV:
>>>>>>   type       = "Result" (0x02)
>>>>>>   length     = 4
>>>>>>   value      = 00:00:00:00
>>>>>>   translated = SUCCESS



3) qmicli -v -p --device-open-mbim -d /dev/cdc-wdm0 --dms-list-stored-images


[18 Jan 2017, 14:17:11] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< QMUX:
<<<<<<   length  = 12
<<<<<<   flags   = 0x00
<<<<<<   service = "dms"
<<<<<<   client  = 3
<<<<<< QMI:
<<<<<<   flags       = "none"
<<<<<<   transaction = 1
<<<<<<   tlv_length  = 0
<<<<<<   message     = "List Stored Images" (0x0049)

[18 Jan 2017, 14:17:11] [Debug] [/dev/cdc-wdm0] sending message as MBIM...
[18 Jan 2017, 14:17:11] [Debug] [/dev/cdc-wdm0] Received MBIM message
[18 Jan 2017, 14:17:11] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 238
>>>>>>   data   = 01:ED:00:80:02:03:02:01:00:49:00:E1:00:02:04:00:00:00:00:00:01:D7:00:02:00:04:01:04:01:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:32:33:2E:30:30:2E:30:30:5F:3F:02:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:30:38:2E:30:32:2E:30:30:5F:3F:03:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:31:34:2E:30:33:2E:30:30:5F:3F:04:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:31:38:2E:30:32:2E:30:30:5F:3F:01:32:00:02:FF:FF:30:30:32:2E:30:31:38:5F:30:30:30:00:00:00:00:00:13:30:32:2E:32:33:2E:30:30:2E:30:30:5F:47:45:4E:45:52:49:43:FF:FF:30:30:32:2E:30:30:36:5F:30:30:30:00:00:00:00:00:15:30:32:2E:30:38:2E:30:32:2E:30:30:5F:4F:52:41:4E:47:45:2D:45:55

[18 Jan 2017, 14:17:11] [Debug] [/dev/cdc-wdm0] Received message (translated)...
>>>>>> QMUX:
>>>>>>   length  = 237
>>>>>>   flags   = 0x80
>>>>>>   service = "dms"
>>>>>>   client  = 3
>>>>>> QMI:
>>>>>>   flags       = "response"
>>>>>>   transaction = 1
>>>>>>   tlv_length  = 225
>>>>>>   message     = "List Stored Images" (0x0049)
>>>>>> TLV:
>>>>>>   type       = "Result" (0x02)
>>>>>>   length     = 4
>>>>>>   value      = 00:00:00:00
>>>>>>   translated = SUCCESS
>>>>>> TLV:
>>>>>>   type       = "List" (0x01)
>>>>>>   length     = 215
>>>>>>   value      = 02:00:04:01:04:01:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:32:33:2E:30:30:2E:30:30:5F:3F:02:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:30:38:2E:30:32:2E:30:30:5F:3F:03:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:31:34:2E:30:33:2E:30:30:5F:3F:04:00:3F:5F:3F:00:00:00:00:00:00:00:00:00:00:00:00:00:0D:30:32:2E:31:38:2E:30:32:2E:30:30:5F:3F:01:32:00:02:FF:FF:30:30:32:2E:30:31:38:5F:30:30:30:00:00:00:00:00:13:30:32:2E:32:33:2E:30:30:2E:30:30:5F:47:45:4E:45:52:49:43:FF:FF:30:30:32:2E:30:30:36:5F:30:30:30:00:00:00:00:00:15:30:32:2E:30:38:2E:30:32:2E:30:30:5F:4F:52:41:4E:47:45:2D:45:55
>>>>>>   translated = { [0] = '[ type = 'modem' maximum_images = '4' index_of_running_image = '1' sublist = '{ [0] = '[ storage_index = '1' failure_count = '0' unique_id = '{ [0] = '63 ' [1] = '95 ' [2] = '63 ' [3] = '0 ' [4] = '0 ' [5] = '0 ' [6] = '0 ' [7] = '0 ' [8] = '0 ' [9] = '0 ' [10] = '0 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.23.00.00_?' ] ' [1] = '[ storage_index = '2' failure_count = '0' unique_id = '{ [0] = '63 ' [1] = '95 ' [2] = '63 ' [3] = '0 ' [4] = '0 ' [5] = '0 ' [6] = '0 ' [7] = '0 ' [8] = '0 ' [9] = '0 ' [10] = '0 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.08.02.00_?' ] ' [2] = '[ storage_index = '3' failure_count = '0' unique_id = '{ [0] = '63 ' [1] = '95 ' [2] = '63 ' [3] = '0 ' [4] = '0 ' [5] = '0 ' [6] = '0 ' [7] = '0 ' [8] = '0 ' [9] = '0 ' [10] = '0 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.14.03.00_?' ] ' [3] = '[ storage_index = '4' failure_count = '0' unique_id = '{ [0] = '63 ' [1] = '95 ' [2] = '63 ' [3] = '0 ' [4] = '0 ' [5] = '0 ' [6] = '0 ' [7] = '0 ' [8] = '0 ' [9] = '0 ' [10] = '0 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.18.02.00_?' ] '}' ] ' [1] = '[ type = 'pri' maximum_images = '50' index_of_running_image = '0' sublist = '{ [0] = '[ storage_index = '255' failure_count = '255' unique_id = '{ [0] = '48 ' [1] = '48 ' [2] = '50 ' [3] = '46 ' [4] = '48 ' [5] = '49 ' [6] = '56 ' [7] = '95 ' [8] = '48 ' [9] = '48 ' [10] = '48 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.23.00.00_GENERIC' ] ' [1] = '[ storage_index = '255' failure_count = '255' unique_id = '{ [0] = '48 ' [1] = '48 ' [2] = '50 ' [3] = '46 ' [4] = '48 ' [5] = '48 ' [6] = '54 ' [7] = '95 ' [8] = '48 ' [9] = '48 ' [10] = '48 ' [11] = '0 ' [12] = '0 ' [13] = '0 ' [14] = '0 ' [15] = '0 '}' build_id = '02.08.02.00_ORANGE-EU' ] '}' ] '}




Still getting "index_of_running_image = '1'", which can only be correct
if it either
 a) refer to the storage_index, or
 b) the list index starts at 1


I do agree that both cases are inconsistent with the 'pri' index, but
that's the way it appears to be.

What does this look like on the MC73xx series? I know they can't store
more than one modem image, but there should still be a single element
list returned?



Bjørn


More information about the libqmi-devel mailing list