Batch Firmware Update Using fdt2.exe

I have been trying to do a batch LTE module (EM7565) firmware update using fdt2.exe (3 modules in one go).

Each of these modules are assembled into individual M.2 NGFF wireless WWAN to USB adapter card and they are all connected to a USB hub and the hub is connected to a Windows 10 computer.

When I tried to perform update simultaneously on all three modules by launching 3 instances of fdt2.exe using the following arguments set:-

1st instance: fdt2.exe -d g5k -usbport20 -a -force -multi -f SWI9X50C_01.14.02.00.cwe SWI9X50C_01.14.02.00_ATT_002.047_002.nvu -log C:\fdtlogs

2nd instance: fdt2 -d g5k -usbport24 -a -force -multi -f SWI9X50C_01.14.02.00.cwe SWI9X50C_01.14.02.00_ATT_002.047_002.nvu -log C:\fdtlogs

3rd instance: fdt2.exe -d g5k -usbport26 -a -force -multi -f SWI9X50C_01.14.02.00.cwe SWI9X50C_01.14.02.00_ATT_002.047_002.nvu -log C:\fdtlogs

only one of the instances work and other 2 instances would not work and replied with following error(s):

FDT version: 2.0.2012.0
Awaiting adapter …
Setting images preference …
Disabling selective suspend …
Firmware download failed.
Primary error code: 51 - Failed to switch device to BOOT&HOLD mode.
Secondary error code: 201 - Failed to switch device to QDL mode.
Device error code: 0x0 - Unknown device error code.

Is there mistake in my arguments setting on the fdt2.exe console?

Similarly, if I just run one instance but specify only the usbhub argument (i.e., usbhub7 since the hub port number is 7) and removed usbport argument, only one modules gets updated while the other 2 modules are not updated.

how about typing AT!BOOTHOLD first on each module

Also did you miss a space after -usbport ?

how about typing AT!BOOTHOLD first on each module

Doing this will disconnect the module from the computer (i.e., WWAN modem under Modems disappeared in Device Manager) and set the module into QDLoader mode (which appeared as a COM port device in Device Manager). However when I tried to run the fdt2 using that QDLoader COM port number, it complained about no MBN adapter available.

fdt2 -d g5k -usbport13 -a -force -multi -f SWI9X50C_01.14.02.00.cwe SWI9X50C_01.14.02.00_ATT_002.047_002.nvu -log C:\fdtlogs
FDT version: 2.0.2012.0
Awaiting adapter …
Firmware download failed.
Primary error code: 14 - No MBN adapter available.
Secondary error code: 0 - Not applicable.
Device error code: 0x0 - Unknown device error code.

Also did you miss a space after -usbport ?

Don’t think this is the issue as I used the same usbport setting.

how about just one module with only one DM port after AT!BOOTHOLD?
e.g.
fdt2 SWI9X50C_01.14.02.00.cwe

how about just one module with only one DM port after AT!BOOTHOLD?

That would work (programming a single module) regardless whether I set AT!BOOTHOLD or not. My goal is to program maybe up to 20 modules at one go in parallel.

That means "-d g5k -usbport13 -a -force -multi -f " is making the NO MBN problem???
if so, which parameter makes the problem?

That means "-d g5k -usbport13 -a -force -multi -f " is making the NO MBN problem???

It’s programming the modules in parallel that’s problematic. It doesn’t work when all instances (i.e. running 3 fdt2.exe at the same time) are run at the same time. Only one of the instances will go through and able to program successfully.

could it be PC problem?

Here says no problem to upgrade multiple modules:

@kean-fei.woo

I got this working on my PC, just change the .txt to .bat, its just a text file so you can open it with any text editor.
Multipe running.txt (184 Bytes)

Regards

Matt

@mlw

How is the *.spk file created? I specify *.cwe and *.nvu files instead using -f argument.

@kean-fei.woo

So the spk file is a combined nvu (carrier config files)/cwe (signaling firmware) file, we prefer to push spk files out because it means there is limited scope for customers to pair them incorrectly which can cause nasty side effects.

The spk files are on the source but of you have nvu/cwe files you can create an spk using swicwe (which has to be used on Linux and is only for WP units, not for EM/MC but you could try it I guess).

Regards

Matt

@mlw

Here’s what I did, I launched two fdt2.exe instances at the same time but somehow only one module gets updated while the other one is stuck in Awaiting DM Port…

Both of them connected to a Windows computer via a 7 ports USB-hub

Try just using -usbport, for each command run:

-usbport 1
-usbport 2
-usbport 3
-usbport 4

Works for me, even though windows reports the usb COM port to be 43, 47, 51, 62, etc. I’ve done this with the EM7565 and flashed 4 at once on Windows 10 with a powered usb hub.
Make sure there is a space in there in: -usbport 1

Here is an example of one of my commands:

fdt2.exe -d g5k -f fw1.cwe fw2.cwe pri1.nvu pri2.nvu -usbport 1 -multi -mi -impref fw1.cwe pri1.nvu