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

  • Thanks for answering so patiently!

    Sorry, maybe I wasn't clear enough that you didn't understand what I mean.

    I mean, I have two devices, one is matter light (PID:65521 VID:32773), and the other one is matter sensor(PID:4619 VID:4192). I have commissioned them into the same matter network successfully now. 

    And, I have prepared two ota firmware, one is for the matter light, firmware's PID and VID is 65521, 32773; the other ota firmware is for the matter sensor, firmware's PID and VID is 4619, 4192. And I start chip-ota-provider-app by running command `chip-ota-provider-app -o otaList.json`. This json includes these two different ota firmwares which are different in PID and VID.

    //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" }
      ]
    }

    After that, I can control devices normally.

  • Hi,

    The OTA Provider does not take PID or VID into account, so there is no way to distinguish between the two devices using this. Additionally, the guide you are following does not use node ID or any other way to identify the devices. The guide in our documentation uses node ID to send the OTA image to a specific device. Node ID is not related to PID or VID in any way, but is a unique identifier for the device on the network.

    Please try using the guide in our documentation for the OTA Provider instead of the guide you have been following previously: Matter - Performing Device Firmware Upgrade in the nRF Connect examples.

    Best regards,
    Marte

  • 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? 

Related