Skip to content

method to list the available firmwares to be used with upgradefirmware.#709

Open
sujithhanwha wants to merge 11 commits into
developmentfrom
device/firmwarelist
Open

method to list the available firmwares to be used with upgradefirmware.#709
sujithhanwha wants to merge 11 commits into
developmentfrom
device/firmwarelist

Conversation

@sujithhanwha

Copy link
Copy Markdown
Contributor

Provides a device‑side method for listing available firmware, serving as an alternative to the cloud‑based getAvailableFWImages in the CloudIntegration specification.
Please review.

@ocampana-videotec

Copy link
Copy Markdown
Collaborator

@sujithhanwha what do you mean with official? Do you want to support release candidates or similar versions?

@sujithhanwha

sujithhanwha commented Jan 24, 2026

Copy link
Copy Markdown
Contributor Author

@sujithhanwha what do you mean with official? Do you want to support release candidates or similar versions?
We could also list non official firmware some thing like customized FW or Beta FW with some fix etc., that was the intention.

@HansBusch

Copy link
Copy Markdown
Member

Like the approach.

Only suggested change is to default the API to released versions which the customer can use with guaranteed functionality.

Not sure whether we want to promote distribution of unofficial aka beta software as for some companies betas may only be provided after signing some special agreement. Due to this I suggest to change the option to IncludeBeta and write in the text that beta versions may not be available for devices via this channel. Similarly I suggest to invert the property Official to Beta as by default firmware should be released.

@sujithhanwha

Copy link
Copy Markdown
Contributor Author

Like the approach.

Only suggested change is to default the API to released versions which the customer can use with guaranteed functionality.

Not sure whether we want to promote distribution of unofficial aka beta software as for some companies betas may only be provided after signing some special agreement. Due to this I suggest to change the option to IncludeBeta and write in the text that beta versions may not be available for devices via this channel. Similarly I suggest to invert the property Official to Beta as by default firmware should be released.

Agree with your suggestion and have updated the flag accordingly. Please review.

Comment thread wsdl/ver10/device/wsdl/devicemgmt.wsdl Outdated
</xs:element>
<xs:complexType name="FirmwareInfo">
<xs:sequence>
<xs:element name="FirmwareName" type="xs:string">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this intended to be the version or more a friendly name? Maybe Version is more appropriate name.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this intended to be the version or more a friendly name? Maybe Version is more appropriate name.

@cpiette-gen , Agree, version is more appropriate will update it to version.

Comment thread doc/Core.xml Outdated
<section xml:id="_Ref276040130">
<title>GetAvailableFirmwares</title>
<para>This operation retrieves a list of available firmware versions for the device.</para>
<para>The returned list contains firmware information including name, description, and optional information about the release date, whether it is a beta version, and whether it is a bridge firmware essential for upgrade or downgrade. The firmware names returned can be used with the <emphasis role="bold">UpgradeFirmware</emphasis> operation.</para>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reading this and the UpgradeFirmware call, it is unclear to me how the device (or client?) has to handle Bridge Firmwares. I've seen devices where bridge firmwares are partial firmwares, where the device is essentially not functional, and simply expects a further upgrade to a "real" firmware. In those scenarios, I would expect that UpgradeFirmware handles those seemlessly for the user.

Scenario 1

I am on firmware 1.23
There is version 2.00 available, but it requires a bridge firmware 1.99

GetAvailableFirmwares list 2.00 as available. And UpgradeFirmware to 2.00 will automatically fetch 1.99, install it, then install 2.00 as the user requested. This step by step process would be implemented by the device itself (and any necessary supporting services from the manufacturer) without intervention from the User.

Is that scenario correct? Am I expecting too much from the device? What are the other options?

Scenario 2

I am on firmware 1.23
There is a version 2.00 available, but it requires a bridge firmware 1.99

GetAvailableFirmwares list 1.99 available only, flagged as bridge firmware. 2.00 is not available (the device can't jump to it directly)

The user will UpgradeFirmware to 1.99, and since the bridge firmware was enabled, it will be expected to immediately query GetAvailableFirmwares again, find 2.00 and then upgrade to it immediately, as the bridge firmware is not expected to be fully features (but will at the very least need to connect to the uplink for example?)


I'm curious about which scenario is the expected one, we don't seem to require one of them (but I feel we probably should). We're partial to scenario 1, as it is much more straightforward. But I'm wondering what the manufacturers think about it?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jmelancondev , my original idea was more aligned with the Scenario 2 (though its not explicitly mentioned in the description and that was the intention behind providing is latest flag also). Scenario 1 is also not bad, we can discuss this in next telco.

<xs:documentation>The release date of the firmware version.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first Vendor then ONVIF -->

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the ##any to be added at the end i.e after IsLatest attribute?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

xs:any is fine here, as it must be part of the sequence.

@kieran242 kieran242 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sujithhanwha I have reviewed this PR via the rendering engine and GIT and don't see any major issues.

I further agree with this functionality and believe it will be a very useful feature for both NVR and cloud.

I am providing an approval now based on my comments. If there should be further needed changes then I will re-review.

Comment thread wsdl/ver10/device/wsdl/devicemgmt.wsdl Outdated
Comment thread wsdl/ver10/device/wsdl/devicemgmt.wsdl
<xs:documentation>The release date of the firmware version.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first Vendor then ONVIF -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

xs:any is fine here, as it must be part of the sequence.

@HansBusch

Copy link
Copy Markdown
Member

Thanks for the quick fix, now the schema compiles nicelyl

Comment thread doc/Core.xml Outdated
<section xml:id="_Ref276040130">
<title>GetAvailableFirmwares</title>
<para>This operation retrieves a list of available firmware versions for the device.</para>
<para>The returned list contains firmware information including version, description, and optional information about the release date and whether it is a beta version. The firmware versions returned can be used with the <emphasis role="bold">UpgradeFirmware</emphasis> operation.</para>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggest to change
The firmware versions returned can be used with the <emphasis role="bold">UpgradeFirmware</emphasis> operation.
to
The firmware version strings returned shall be valid parameters of the <emphasis role="bold">UpgradeFirmware</emphasis> operation.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated this. Please check.

Comment thread doc/Core.xml Outdated
<title>GetAvailableFirmwares</title>
<para>This operation retrieves a list of available firmware versions for the device.</para>
<para>The returned list contains firmware information including version, description, and optional information about the release date and whether it is a beta version. The firmware versions returned can be used with the <emphasis role="bold">UpgradeFirmware</emphasis> operation.</para>
<para>The device shall list only firmware versions that are valid upgrade or downgrade from the current firmware version. If none of the returned firmware versions have the IsLatest flag set, the client may call this operation again after completing a firmware upgrade to obtain an updated list of available versions.</para>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unclear what happens if the device is on latest firmware. Should that entry be returned or an empty list? If latest shoult be returned as well the previous sentence with valid upgrade/downgrade needs to be rephrased. Otherwise the empty result case needs to be stated.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated this, please check.

<xs:documentation>The release date of the firmware version.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first Vendor then ONVIF -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggest to add an optional item for link to release information like release letter.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added this optional ReleaseInfoUri param.

@HansBusch

Copy link
Copy Markdown
Member

Thanks for the quick update.

@kieran242 kieran242 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sujithhanwha re-reviewed the PR and still was happy with the content.

@ocampana-videotec

Copy link
Copy Markdown
Collaborator

@sujithhanwha I just merged #769 into your branch. Please check that everything is ok.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants