EM7455 brick?.

Hi to all, I have one EM7455.

When execute list stored images only get modem image, not have a pri image.

root@elmemis-VirtualBox:/tmp/cosas# qmicli -d /dev/cdc-wdm0 --dms-list-stored-images
[/dev/cdc-wdm0] Device list of stored images retrieved:

	[0] Type:    'modem'
	    Maximum: '4'

		Unique ID:     '?_?'
		Build ID:      ''
		Storage index: '1'
		Failure count: '0'

How to fix it? is possible?.

For example, the tool qmi-firmware-update I give an error on execution:

root@elmemis-VirtualBox:/tmp/cosas# qmi-firmware-update     --update     -d 413c:81b6     --device-open-mbim     SWI9X30C_02.20.03.00.cwe     SWI9X30C_02.20.03.00_Generic_002.017_000.nvu -L qmi.log
loading device information before the update...
setting firmware preference:
  firmware version: ''
  config version:   '002.017_000'
  carrier:          'GENERIC'
rebooting in download mode...
error: error waiting for TTY: waiting for device at '/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1' timed out

Help me please :neutral_face:

I believe you should using windows for firmware update instead because so much “internal factors” which might causes “software bricks”. I had same problems where end up with device totally not detected. If still want to use unix flavours then please use tools that provided by sierra itself.

The updater depends on serial driver support. Do you have the qcserial driver installed, and is it patched to match the configured boot device ID? Assuming that this matches your Dell application device ID, you can find out with something like

modinfo qcserial|grep 81b5

This device ID is a very recent addition (only in v4.11-rc4+, v4.4.58+, v4.9.19+), so it’s likely missing unless you have built the driver/kernel yourself.

Look at that the kernel log (dmesg) when you run the updater and see what happens. You should see the modem disconnect and the reconnect with a single serial interface and the boot device ID. But if the qcserail support is missing, then there won’t be any driver binding and the update will fail.

The modem is hardly bricked as long as you can talk QMI over MBIM to it… Looks like it is fully functional to me. But it will probably be in low power mode until you have either updated the firmware or set the firmware preference back to whatever it was before you started.


T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  6 Spd=480 MxCh= 0
D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=413c ProdID=81b6 Rev=00.06
S:  Manufacturer=Sierra Wireless, Incorporated
S:  Product=DW5811e Snapdragon™ X7 LTE
S:  SerialNumber=LF62075045031013
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=500mA
/usr/bin/usb-devices: line 79: printf: c: invalid number
I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
/usr/bin/usb-devices: line 79: printf: d: invalid number
I:  If#= 0 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim


root@elmemis-VirtualBox:/home/elmemis# lsusb
Bus 001 Device 006: ID 413c:81b6 Dell Computer Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

uname: (upgrade to 4.9.24)

root@elmemis-VirtualBox:/home/elmemis# uname -a
Linux elmemis-VirtualBox 4.9.24-040924-generic #201704210431 SMP Fri Apr 21 08:33:06 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux


root@elmemis-VirtualBox:/home/elmemis# modinfo qcserial
filename:       /lib/modules/4.9.24-040924-generic/kernel/drivers/usb/serial/qcserial.ko
license:        GPL v2
description:    Qualcomm USB Serial driver
author:         Qualcomm Inc
srcversion:     8A251BB3467F817808216B7
alias:          usb:v03F0p581Dd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81B6d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81B5d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81B3d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81B1d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81A9d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81A8d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81A4d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81A3d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81A2d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9079d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9078d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9071d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9070d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9061d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9060d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9056d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9055d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9054d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9053d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9051d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9041d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9040d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p901Fd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p901Cd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p68C0d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p68A2d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v114Fp68A2d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0F3Dp68A2d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v03F0p4E1Dd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0AF0p8120d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v12D1p14F1d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v12D1p14F0d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p901Bd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9019d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9018d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9015d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9014d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9013d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9012d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9010d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p68A9d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p68A8d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p68A5d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p68A4d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81A6d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp8194d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp8193d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA021d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA020d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p920Dd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p920Cd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v03F0p371Dd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9205d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9204d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v16D8p8002d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v16D8p8001d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9011d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p900Ad*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9009d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9008d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9007d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9006d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9005d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9004d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9003d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9002d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9001d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1199p9000d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9275d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9274d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9235d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9234d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9265d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9264d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9215d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9214d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v03F0p251Dd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v03F0p241Dd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9245d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9244d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9225d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9224d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p920Bd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9208d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp8186d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp8185d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA014d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA013d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA012d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA011d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA010d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1BC7p900Ed*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1F45p0001d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9231d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9221d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9201d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9009d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9008d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9222d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9203d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9202d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9002d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9001d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1557p0A80d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v19D2pFFF2d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v19D2pFFF3d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0B05p1774d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0B05p1776d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA008d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA007d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA006d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA005d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA004d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA003d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA002d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1410pA001d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp8171d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp8172d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v04DAp250Cd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v04DAp250Dd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v03F0p201Dd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v03F0p1F1Dd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9212d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05C6p9211d*dc*dsc*dp*ic*isc*ip*in*
depends:        usb_wwan,usbserial
intree:         Y
vermagic:       4.9.24-040924-generic SMP mod_unload

root@elmemis-VirtualBox:/home/elmemis# modinfo qcserial | grep -P 81[bB][56]
alias:          usb:v413Cp81B6d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp81B5d*dc*dsc*dp*ic*isc*ip*in*


Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5444.972842] usb 1-1: new high-speed USB device number 6 using ehci-pci
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.137620] usb 1-1: config 1 has an invalid interface number: 12 but max is 1
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.137623] usb 1-1: config 1 has an invalid interface number: 13 but max is 1
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.137625] usb 1-1: config 1 has an invalid interface number: 13 but max is 1
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.137626] usb 1-1: config 1 has no interface number 0
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.137627] usb 1-1: config 1 has no interface number 1
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.147481] usb 1-1: New USB device found, idVendor=413c, idProduct=81b6
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.147483] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.147484] usb 1-1: Product: DW5811e Snapdragon™ X7 LTE
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.147484] usb 1-1: Manufacturer: Sierra Wireless, Incorporated
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.147485] usb 1-1: SerialNumber: LF62075045031013
Apr 22 13:30:26 elmemis-VirtualBox mtp-probe: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1"
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.301939] cdc_mbim 1-1:1.12: cdc-wdm0: USB WDM device
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.302087] cdc_mbim 1-1:1.12 wwan0: register 'cdc_mbim' at usb-0000:00:0b.0-1, CDC MBIM, a6:3a:ae:34:65:78
Apr 22 13:30:26 elmemis-VirtualBox mtp-probe: bus: 1, device: 6 was not an MTP device
Apr 22 13:30:26 elmemis-VirtualBox kernel: [ 5445.320856] cdc_mbim 1-1:1.12 wwp0s11u1i12: renamed from wwan0
Apr 22 13:30:26 elmemis-VirtualBox NetworkManager[724]: <info>  [1492878626.4285] devices added (path: /sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1/1-1:1.12/net/wwp0s11u1i12, iface: wwp0s11u1i12)
Apr 22 13:30:26 elmemis-VirtualBox NetworkManager[724]: <info>  [1492878626.4285] device added (path: /sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1/1-1:1.12/net/wwp0s11u1i12, iface: wwp0s11u1i12): no ifupdown configuration found.

Modem status:

root@elmemis-VirtualBox:~# qmicli --device=/dev/cdc-wdm0 --device-open-mbim --dms-get-operating-mode
[/dev/cdc-wdm0] Operating mode retrieved:
	Mode: 'online'
	HW restricted: 'no'

Upgrade command:

root@elmemis-VirtualBox:~# qmi-firmware-update     --update     -d 413c:81b6     --device-open-mbim   SWI9X30C_02.08.02.00.cwe SWI9X30C_02.08.02.00_GENERIC_002.007_000.nvu  -L qmi.log --ignore-mm-runtime-check
loading device information before the update...
setting firmware preference:
  firmware version: ''
  config version:   '002.007_000'
  carrier:          'GENERIC'
rebooting in download mode...
error: error waiting for TTY: waiting for device at '/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1' timed out

Never reboot to download mode… :frowning:

Maybe, maybe not. One valid reason not to do that is if the modem considers it unnecessary (because it already has the required firmware files).

You write a verbose “qmi.log” file, as recommended. But what does it tell you? It should show the QMI requests and the replies from the modem. It should also show any detected udev activity.

Modem is missing files. It only has the img of the modem, but the img of the pri.
I do not see udev activity.
Attach qmi.log.

qmi.log (40.5 KB)

This is weird. I see that the modem requests the missing pri image and the responds successfully to the set-operating-mode ‘reset’ request. Then there is nothing more. The modem should reset here. I cannot explain why it doesn’t.

You might try other ways to switch it into ‘boot-and-hold’ mode, like AT command. But you’ll have to enable serial functions first then.

@dl5162 thanks for all.

How to activate AT interfaces?
I use EM7445 module with m2 to USB2 adapter.


You can use “minicom” tools (shall be installed on ubuntu) or other same tools. I believe below tools is useful enough for firmware update (mork.no/~bjorn/MC7455-fix.txt)

The commands action is RESET, don’t work.

qmi-firmware-update --reset

Is it possible to debug this problem?


I believe AT Commands “AT!RESET” should works, but for “qmi-firmware_update”, please do check a proper commands via “qmi-firmware-update -H” where it shows all related commands. Please do check from that “website” link where it shows another “perl” commands how to reset as well as “boot and hold” (qdl).


Return OK but not reset the device. AT!BOOTHOLD is the same. Tomorrow record a video.


Have you try tools from this website ((mork.no/~bjorn/MC7455-fix.txt)). I’ve done for device checking and working fine and believe should work for rest and “qdl” mode. for that “AT” commands, have you done "AT!ENTERCND=“A710” prior AT!RESET or AT!BOOTHOLD ? in order any actions to be activated.

Those methods are unsupported and very risky, and depends on being able to boot into “boot-and-hold” (QDL) mode anyway. Which is the problem here… If that had worked, then the normal qmi-firmware-update would work too.

Don’t work :frowning:


So weird for me. Anyway, I’ve tested on my MC7455 installed on Ubuntu 17.04. I’m using “picocom” to access that module as below:

if not been installed, please install it “sudo apt-get install picocom

sudo picocom /dev/ttyUSB2

Terminal ready
ati5 # this command shows detail about product.
atz # echo on
Config Index: 1
Config Type: 1 (Generic)
Interface bitmask: 0000050D (diag,nmea,modem,rmnet0,rmnet1)

Please do test from your end and no harm for that module.

To exit from “picocom”, press Ctrl-A followed by Ctrl-X


So weird for me. Please do test using “picocom” (if not exists, please install)

sudo picocom /dev/ttyUSB2

Terminal Ready
ati5 # shows product details
atz # echo on
Config Index: 1
Config Type: 1 (Generic)
Interface bitmask: 0000050D (diag,nmea,modem,rmnet0,rmnet1)
APP : 9071
BOOT: 9070

you can try and no harm for that module, to exit press Ctrl-A followed by Ctrl-X. If you got that result, I believe AT!RESET or AT!BOOTHOLD should work.


So weird for me. Based on previous info that module is “DELL Branded” and looks like all “AT” was disabled.

You can try checking which current “Current USB composition” configured for that module and no harm to use below tool.

$ sudo /usr/local/bin/swi_setusbcomp.pl --device=/dev/cdc-wdm1 # default device=/dev/cdc-wdm0
Running in QMI mode (driver=qmi_wwan)
QMI msg ‘0x0021’ returned status = 1
QMI support verified
supports 33 QMI subsystems:


Current USB composition: 6 # this is mine and please do check yours.

If set to “9” which means only MBIM and all “AT” are disabled.

AT!RESET or AT!BOOTHOLD do not do anything :frowning:


That means your EM7455 module is configured for MBIM only and all “AT” commands are disabled. You can try “swi_setusbcomp.pl” from that website link (no harm for that module) just to verify which “Current USB composition” currently configured for that EM7455 module and believe configured as “9” and for my module is configured with “6” as below:

$ sudo /usr/local/bin/swi_setusbcomp.pl --device=/dev/cdc-wdm1

Current USB composition: 6