Matter ota provider provided the wrong ota file when I wanted to upgrade my matter device

I wanted to upgrade my matter device with chip-ota-provider-app, I have finished other prepareations and run command `chip-ota-provider-app -o otaList.json` to start ota-provider.

//otaList.json
{ "foo": 1, // ignored by parser
  "deviceSoftwareVersionModel":
  [
      { "vendorId": 65521, "productId": 32773, "softwareVersion": 1, "softwareVersionString": "v1.0", "cDVersionNumber": 18, "softwareVersionValid": true, "minApplicableSoftwareVersion": 0, "maxApplicableSoftwareVersion": 100, "otaURL": "light_ota_v1.ota" },
      { "vendorId": 4619, "productId": 4192, "softwareVersion": 17, "softwareVersionString": "1.1", "cDVersionNumber": 18, "softwareVersionValid": true, "minApplicableSoftwareVersion": 0, "maxApplicableSoftwareVersion": 100, "otaURL": "ota_test_H1_EF4_V11.ota" }
  ]
}

And then I commissioned a matter device which I want to upgrade into this matter network. Everything was ok but the ota-provider gave the wrong ota file.The correct one shall be "light_v1.ota".

What is the problem? Is this a known issue about matter ota? project-chip.github.io/.../README.html

Parents
  • Hi,

    The OTA image with the most recent software version in the JSON file will be selected and sent to the device. In your JSON file, the sw version of ota_test_H1_EF4_V11.ota is 17 while it is 1 for light_ota_v1.ota, so ota_test_H1_EF4_V11.ota will be selected as it is the most recent version. Try removing the line with ota_test_H1_EF4_V11.ota and only having light_ota_v1.ota in the JSON file.

    I recommend checking out Matter - Performing Device Firmware Upgrade in the nRF Connect examples, as it is more geared towards nRF Connect SDK than the guide you link to.

    Best regards,
    Marte

  • So it does not check Product ID and Vendor ID? It just only check the software version whatever the product ID and vendor ID is? Because my device's product ID is 32773, and it does not match the ota file whose product ID is 4192 even its software version is higher.

    And the result was that it could not ota normally because of the wrong ota file. I think it should select the correct ota file based on product ID and vendor ID to upgrade instead of selecting the ota file only based on software version. So is it a known issue of matter ota? Or I did something incorrect?

    Assume that I have many matter devices whose vendor ID and product ID are different in a matter network, how could I make them upgrade to their own ota file correctly?

  • Thank you so much!

    Actually, I did follow the documentation of nordic, but the matter light would always querying ota file "ota_test_H1_EF4_V11.ota" not "light_v1.ota", just because "ota_test_H1_EF4_V11.ota"  has a higher software version than "light_v1.ota" even "ota_test_H1_EF4_V11.ota" is not the ota firmware for matter light.

    //otaList.json
    { "foo": 1, // ignored by parser
      "deviceSoftwareVersionModel":
      [
          { "vendorId": 65521, "productId": 32773, "softwareVersion": 1, "softwareVersionString": "v1.0", "cDVersionNumber": 18, "softwareVersionValid": true, "minApplicableSoftwareVersion": 0, "maxApplicableSoftwareVersion": 100, "otaURL": "light_ota_v1.ota" },
          { "vendorId": 4619, "productId": 4192, "softwareVersion": 17, "softwareVersionString": "1.1", "cDVersionNumber": 18, "softwareVersionValid": true, "minApplicableSoftwareVersion": 0, "maxApplicableSoftwareVersion": 100, "otaURL": "ota_test_H1_EF4_V11.ota" }
      ]
    }

    I think it is a problem of chip ota provider, because in this case, I can not upgrade my matter light forever. I can only upgrade my matter sensor which fits "ota_test_H1_EF4_V11.ota".

  • Hi,

    Can you link to the guide you followed?

    We are not using JSON files in our guide, and the OTA image is only provided as an argument when running the OTA Provider, so it should not be possible for it to use a different OTA image.

    Best regards,
    Marte

  • Oh, you mean command `chip-ota-provider-app -f matter.ota`? Yes, it works well. 

    I want to think deeply about the situation that devices from different vendors and products. Because I find that it can start ota provider by json not just only one ota image.

    So I want to test whether two devices whose vendor are different can upgrade to their own corresponding ota image by using one json file, which is more convinient that I have no need to specify ota image one by one.

    Do you have any solution about this? 

  • Hi,

    There is no way for the OTA Provider itself to know which OTA image should be sent to which device based on the vendor or product ID. If you want to automate it you would have to make a script to select the correct image file and send it to the correct device.

    Best regards,
    Marte

Reply Children
No Data
Related