This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3220MODA: OTA not found from SmartConfig

Part Number: CC3220MODA
Other Parts Discussed in Thread: UNIFLASH, CC3200

Dear TI,

For my custom application I created and uploaded a .tar file to Dropbox. However, when the link to the tar file is copied into the SmartConfig OTA, the SmartConfig is not able to fetch the file. I see the text "Error" under "New SW version" field on the OTA tab in SmartConfig.

Notes:

1) when creating OTA through Uniflash, an "OTA private key file name" was asked. I didn't enter anything and proceeded by clicking  "skip security". The user files already contain certificate from Dropbox. What is the "OTA private key file name" used for?

2) when generating the link for a .tar file, Dropbox generated a secure path starting with https://. In .tar file generation the "skip security" was used. is that ok?

3) The name of actual Dropbox certificate is "DigiCert High Assurance EV Root CA". It includes spaces and combination of capital and small letters. As the capital letters are being converted to small letters during Uniflash upload, I used all small letters when defining OTA_SERVER_ROOT_CA_CERT in otauser.h file. Also I replaced  spaces with underscores in both the filename and the definition in otauser.h file. Is that ok?

Could you please advise what can be missing? I need to be able to use SmartConfig OTA for my custom application. Your prompt response is much appreciated.

Thanks,

David

  • After several trials and errors I tried clicking "PROGRAM" regardless the fact that "New SW version" field was showing "Error". Interestingly, there were a bunch of messages printed over UART, and along the lines I could see the path that I had entered in SmartConfig OTA:

    [OtaArchive_RunParseTar] unsupported FileType=58, FileName=/www.dropbox.com/s/xxxxxxxxxxxxxxx/20180218191706_CC3200_pro_dev2.tar" name="twitter:url" /><meta content="20180218191706_CC320¼

    The update eventually fails with the following error:

    [OtaArchive_RunParseTar] error in filename pattern
    [OtaArchive_Rollback] ERROR sl_FsCtl, Status=-10282
    [ota report task] OTA progress 12%
    [Link local task] OtaArchive error -20102
    [Link local task] ota put done. status=-1
    [Link local task] waiting for signal from report server
    [ota report task] OTA progress failed, aborting...

    Seems like SmartConfig is able to take my .tar file path entry and pass the .tar file path to the device, but it doesn't show the .tar version in the "New SW version" section of the app. Why does it happen?

    Hope the above data would help the debug. Let me know if you need more details to resolve the issue.


    Thanks,
    David

  • Hi David,

    Are you referring to the Out of Box application? I believe that application only does local OTA.
    For cloud OTA with Dropbox, you should check out the cloud_OTA application. There is also a detailed SimpleLink Academy on this demo: dev.ti.com/.../

    Best regards,
    Sarah
  • Hi Sarah,

    Yes, my application is based on OOB. I have read the link you sent and to the best of my knowledge I did all necessary changes to the otauser.h file to make OTA work in OOB example. I guess I will need to modify ota_task.c as well. Could you advise what changes need to be made in OOB example to get the OTA to work? Any such  "how-to" guide?

    I also posted several questions in my original post to confirm if I did everything correctly. I have already resolved questions (1) and (2) by selecting dummy_ota_vendor_key certificate for security. Could you please help with question (3) and confirm if there is a specific reason why SmartConfig app shows "Error" in "New SW version" section?

    Thanks,

    David

  • Hi Sarah, I replied above with follow up questions. Thanks for helping resolving this issue.

  • Update:

    Please help with these OTA_* functions. Those are unresolved.


    Description Resource Path Location Type
    unresolved symbol OTA_get, first referenced in ./ota_task.obj myproject_v_2d0 C/C++ Problem
    unresolved symbol OTA_init, first referenced in ./ota_task.obj myproject_v_2d0 C/C++ Problem
    unresolved symbol OTA_run, first referenced in ./ota_task.obj myproject_v_2d0 C/C++ Problem
    unresolved symbol OTA_set, first referenced in ./ota_task.obj myproject_v_2d0 C/C++ Problem

    undefined first referenced
    symbol in file
    --------- ----------------
    OTA_get ./ota_task.obj
    OTA_init ./ota_task.obj
    OTA_run ./ota_task.obj
    OTA_set ./ota_task.obj


    Thanks,
    David
  • Hi David,

    The Out of Box example only uses local OTA, so it does not use the OTA library. You need to edit the OTA library for your cloud setup, recompile the library, and link to it in your application project. Again, I suggest starting with the Cloud OTA example in the SDK as this is already done for you.

    In order to get the OOB to handle cloud OTA, you will also have to change the behavior of the browser HTML since the existing demo requires the mobile device to download the image from the cloud (instead of the CC3220 downloading from the cloud itself) before performing local OTA.

    Best regards,
    Sarah

  • Hi Sarah,

    Thank you for advice and guidance. I was able to compile the Cloud OTA example. It seems to progress up to pinging step and stop there. The connection to AP is successful, however pinging GW results 0% success rate. Could you kindly advise here?

    Thanks,

    David

  • Hi David,

    Can you print out the error code from sl_NetAppPing()? What kind of AP are you using?

    Best regards,
    Sarah
  • Hi Sarah,

    I added UART_PRINT command to cloud_ota.c as follows:


    /* Ping the GW */
    retVal = sl_NetAppPing((SlNetAppPingCommand_t*)&pingParams,\
    SL_AF_INET, (SlNetAppPingReport_t*)&pingReport,\
    SimpleLinkPingReport);
    ASSERT_ON_ERROR(retVal);

    // print the code

    UART_PRINT("The error code from sl_NetAppPing is %d \n\r", retVal);

    The result is 0, the following is printed in the terminal:

    The error code from sl_NetAppPing is 0

    My AP is a Netgear router. Let me know if you need more details.

    Thanks,

    David

  • Hi David,

    Are you able to ping your router from another device in network (your computer, etc.) connected by WiFi? It seems that you have deactivated ICMP echo (ping) on your router.

    Jan
  • Hi Jan,

    You are right, I was testing on a guest network that didn't have "Allow guest to access My Local Network" enabled. After enabling, the ping went through. Thank you!

    Could you kindly help with the next obstacle with OTA example? Below is the link:

    https://e2e.ti.com/support/wireless_connectivity/simplelink_wifi_cc31xx_cc32xx/f/968/t/668746

    Thanks,
    David