Updating EM7455 (in Ubuntu 24)

I have spent a few last hours trying to update the EM7455 modem. Finally, I’ve been able to do so. No need to compile new drivers.

It seems, the description from the following website does not work:
https://github.com/danielewood/sierra-wireless-modems

$ qmi-firmware-update -v --modem-storage-index=1 --update -d 1199:9079 SWI9X30C_02.39.00.00.cwe SWI9X30C_02.39.00.00_GENERIC_002.085_000.nvu
[16 Jan 2025, 18:57:44] [Debug] [/dev/cdc-wdm1] number of consecutive timeouts: 1
[16 Jan 2025, 18:57:44] [Debug] [/dev/cdc-wdm1] open operation timed out: closed
error: couldn't open QMI device: Operation timed out: device is closed
[16 Jan 2025, 18:57:44] -Warning ** [/dev/cdc-wdm1] MBIM device wasn't explicitly closed
[16 Jan 2025, 18:57:44] [Debug] [/dev/cdc-wdm1] channel destroyed

METHOD 1

This was, what worked:
https://wiki.gentoo.org/wiki/Sierra_EM7455_(Dell_wireless_modem_DW5560)

$ systemctl stop ModemManager
$ minicom -D /dev/ttyUSB2
AT!ENTERCND="A710"
AT!BOOTHOLD

In another terminal:
sudo qmi-firmware-update -v -t /dev/ttyUSB0 --update-download SWI9X30C_02.39.00.00.cwe SWI9X30C_02.39.00.00_GENERIC_002.085_000.nvu
Immediately after AT!BOOTHOLD the /dev/cdc_wdm0 and ttyUSB* disappear and only a single ttyUSB0 is present. There is only a few seconds timeslot to flash the modem.
ttyUSB2 vs ttyUSB0

My system:

$ uname -r
6.8.0-51-generic

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 24.04.1 LTS
Release:	24.04
Codename:	noble

It seems, the method updates software. However, it does not add anything to the list of slots.

AT!IMAGE?
TYPE SLOT STATUS LRU FAILURES UNIQUE_ID   BUILD_ID
FW   1    EMPTY  0   0 0                  
FW   2    EMPTY  0   0 0                  
FW   3    EMPTY  0   0 0                  
FW   4    EMPTY  0   0 0                  
Max FW images: 4
Active FW image is at slot 255

TYPE SLOT STATUS LRU FAILURES UNIQUE_ID   BUILD_ID
PRI  FF   GOOD   0   0 0      002.085_000 02.39.00.00_GENERIC
Max PRI images: 50

METHOD 2

This method correctly adds software to the list. Taken from:
$ qmi-firmware-update --help-examples

Example: Manual process to update a Sierra Wireless MC7354.
(or other 9x15 or 9x30 devices, like the MC7304, MC7330, MC7455… ).

The upgrade of devices from the 9x15 and 9x30 families is triggered via a
‘firmware preference’ setting. If the device accepts the setting, the user
can request a device power cycle, which will boot in QDL download mode:

a) Set firmware preference setting:
$ sudo qmicli
-d /dev/cdc-wdm0
–dms-set-firmware-preference=“firmware-version=05.05.58.00,
config-version=005.025_002,
carrier=Generic”

The --override-download and --modem-storage-index=[INDEX] options that are
supported in automatic mode may be used in manual mode by passing the
additional 'override-download=yes' and 'modem-storage-index=[INDEX]' keys to the 
--dms-set-firmware-preference operation.

b) Request power cycle:
$ sudo qmicli
-d /dev/cdc-wdm0
–dms-set-operating-mode=offline
$ sudo qmicli
-d /dev/cdc-wdm0
–dms-set-operating-mode=reset

c) Wait for the /dev/ttyUSB device to appear.

d) Run updater operation while in QDL download mode:
$ sudo qmi-firmware-update
-t /dev/ttyUSB0
–update-download
SWI9X15C_05.05.58.00.cwe
SWI9X15C_05.05.58.00_Generic_005.025_002.nvu

d) Now wait for the device to fully reboot, may take up to several minutes.

TODO/QUESTIONS

  • I have no idea how to choose the right image. The at!impref=“something” changes only the PRI image with settings. The active image is the last uploaded one.

Additional notes:

  • don’t forget about:
    systemctl stop ModemManager

and it may be required:

sudo add-apt-repository universe
sudo apt update
apt-get install libqmi-glib5 libqmi-proxy libqmi-utils -y

Links

Removing fcc-lock links: