Is it possible to embed an Application DWL to the WPK File?

Hello,

We need to be able to install the latest firmware, and Application at one to ease our mass installation process. Is it possible to embed an Application dwl file to the WPK archive and use DWLWin to install the Firmware, Bootloader and Application at once?

DWLWin provides an API - so, even if you can’t combine the files, you can automate the proces…

Is that API available online or should we contact our distributor?

It’s in the documentation that comes with DWLWin (or, at least, it used to be…)

There is a chm help file that comes with the software. And that help file (which is last updated on 17 July 2009) contains only a list of command line parameters that we can use. Was that what you were referring to?

Have a look at the DWLWin Download Application User Manual found here:

sierrawireless.com/en/siteco … ev001.ashx

Has anybody managed to solve the problem yet? I am able to use the DWLWin API’s, but can’t seem to download the firmware and application at the same time.

WPK files are just zip files. Extract some WPK provided by SiWi and look into its content (e.g. file “control”).

best regards,
Gregor

Yes - that’s what I thought: https://forum.sierrawireless.com/t/xmodem-download-support-article-unhelpful/4938/2

I think I have found the solution (need a bit more testing to confirm, but looks good so far!). I am using the DWLWin API in C# to download the firmware and application in one go, as well as starting the application automatically. Here is how I did it:

  1. Register the DWLWin API as explained in the user guide
  2. Create a new C# application
  3. Add a reference to dwlwin in the references section
  4. Use the following code snippet to perform the download (for a WMP100):
dwlwin.dwlwin dwl = new dwlwin.dwlwin();

string package = "project_name.wpb|";
string firmware = "R7.46.0.201108091301-cus-wmp-02.wpk";
string path = @"D:\DeveloperStudioWorkspace\project_name\[Target]_ARM_EABI_GCC_Debug\";

private void cmdStart_Click(object sender, EventArgs e)
{
    lblStatus.Text = "Starting download...";

    dwl.setDownloadOptions(13, 921600, path, firmware + "|" + package , "", "", 0, 0, 0, 0, 0, 0, 7, 0, "");

    string result = dwl.getPackageStrOptions(path + firmware);
    string result2 = dwl.getPackageIntOptions(path + firmware);

    dwl.setStrExtOption(13, "WCPU_TYPE", "wmp100");
    dwl.setIntExtOption(13, "NO_DOWNLOAD", 0);
    dwl.setIntExtOption(13, "START_APPLICATION", 1);

    dwl.start(13);

    Thread.Sleep(500);

    bool bConnected = false;

    while (dwl.isDownloadOver(13) == 0)
    {
        Thread.Sleep(100);

        if (!bConnected && (dwl.isBootOk(13) == 1))
        {
            lblStatus.Text = "Target Detected";
            bConnected = true;
         }

         try
         {
             progressBar1.Value = dwl.getProgress(13);
         }
         catch (Exception ex)
         {
             lblStatus.Text = ex.Message;
         }
    }

    try
    {
        int exitCode = dwl.getErrorCode(13);
        string exitMessage = dwl.translateErrCode(exitCode);

        lblStatus.Text = exitMessage;
     }
     catch
     {
     }
}

Some things to note:

  • The firmware wpk must be in the same directory as the application wpb.
  • You must select the CPU Type (WCPU_TYPE) or the application throws an error. This is because the firmware package contains files for more than one CPU type.
  • Here I am using COM13 at 921600 baud rate.

If anyone has a better solution, let us know!

hi tomridl,

we also managed to install dwl’s using the code you posted.

but we are having some difficulties about getting different baud rate after installing the new dwl’s.

We can easily install firmware and bootloaders, but when we install the application via DWLWin, we see that the Baud rate reverts back to 57600bps.

it was 115200 when we were installing, and the AP also sets the baud rate to 115200. so I don’t understand why the baud rate is set to 57600.

Hi Everybody,

I was able to download firmware package + application using the snipset code of tomridl.

However looking at the doc of dwlwin automation there is an example where they set IMEI and VECTOR_TABLE. I would like to set the IMEI during the dwlwin in order to save time in production, but it doesn’t work.

Someone knows the variables names (and their usage ) which can be set using the API
setStrExtOption? I can’t find any documentation.

I would like also to store the charset map (at+wccs command) during this phase: is it possible to create a .cus file? How to create it?

Thanks