And a real example upgrading a EM7455 running in MBIM mode (with QMI over MBIM) in an OpenWRT based system:
# qmicli -d /dev/cdc-wdm0 -p --dms-set-firmware-preference="02.24.03.00,002.023_000,ATT"
# qmicli -d /dev/cdc-wdm0 -p --dms-set-operating-mode=offline
# qmicli -d /dev/cdc-wdm0 -p --dms-set-operating-mode=reset
(wait for single ttyUSB0 to appear)
# qmi-firmware-update -t /dev/ttyUSB0 --update-qdl \
/tmp/firmware-EM7455/SWI9X30C_02.24.03.00.cwe \
/tmp/firmware-EM7455/SWI9X30C_02.24.03.00_ATT_002.023_000.nvu
downloading cwe image: SWI9X30C_02.24.03.00.cwe (64.4 MB)...
finalizing download... (may take more than one minute, be patient)
successfully downloaded in 73.46s (877.1 kB/s)
downloading cwe image: SWI9X30C_02.24.03.00_ATT_002.023_000.nvu (11.1 kB)...
finalizing download... (may take more than one minute, be patient)
successfully downloaded in 0.06s (200.2 kB/s)
rebooting in normal mode...
firmware update operation finished successfully
# qmicli -d /dev/cdc-wdm0 -p --dms-swi-get-current-firmware
[/dev/cdc-wdm0] Successfully retrieved current firmware:
Model: EM7455
Boot version: SWI9X30C_02.24.03.00
AMSS version: SWI9X30C_02.24.03.00
SKU ID: 1102527
Package ID: unknown
Carrier ID: 4
Config version: 002.023_000