Firmware Update
Introduction
Zivid provides continuous updates for its cameras. This includes both what runs on the host computer and the camera itself. There are regular updates of the Zivid SDK, which improve image processing on the host computer. The SDK also includes the latest camera firmware. Camera firmware is updated less frequently than the host computer software. These updates improve stability, robustness and acquisition speed.
This tutorial will walk through how firmware updates are performed on the Zivid Camera.
Each SDK version is matched with camera firmware, and the SDK will make sure that the camera runs compatible firmware.
Note
This article was written using a discontinued camera, the Zivid One+, but the concept applies to all camera models.
Zivid Studio
When Zivid Studio connects to a camera, it will check whether the camera has matching firmware. If the firmware does not match, it will be updated automatically.
More information
Command Line Interface
It is possible to manually update the firmware on the camera through a command line interface tool ZividFirmwareUpdater. Upon execution, the tool will:
Get a list of cameras connected to the computer.
Connect to a camera in the list.
Query the current firmware version.
Update if there is a mismatch.
Repeat 2-4 for the other camera in the list.
Executing ZividFirmwareUpdater
Launch the Command Prompt by pressing Win + R keys on the keyboard, then type cmd
and press Enter.
Navigate to the folder where you installed Zivid software:
cd C:/Program Files/Zivid/bin
Execute ZividFirmwareUpdater on your camera:
ZividFirmwareUpdater.exe
ZividFirmwareUpdater is part of the Zivid-Tools package for Ubuntu. This may not have been installed when you installed Zivid SDK and Studio. Follow these steps to install Zivid-Tools:
ZividFirmwareUpdater
can be found in /usr/bin/
.
Open a terminal window by pressing Ctrl + Alt + T keys on the keyboard:
wget https://downloads.zivid.com/sdk/releases/2.14.0+e4a0c4a9-1/u24/amd64/zivid-tools_2.14.0+e4a0c4a9-1_amd64.deb
wget https://downloads.zivid.com/sdk/releases/2.14.0+e4a0c4a9-1/u22/amd64/zivid-tools_2.14.0+e4a0c4a9-1_amd64.deb
wget https://downloads.zivid.com/sdk/releases/2.14.0+e4a0c4a9-1/u20/amd64/zivid-tools_2.14.0+e4a0c4a9-1_amd64.deb
Note
Support for Ubuntu 18.04 is removed since SDK 2.10. To see Ubuntu 18.04 instructions for an earlier SDK version, change the Knowledge Base version in the top left corner.
sudo apt install ./zivid-tools_2.14.0+e4a0c4a9-1_amd64.deb
Now you may execute the ZividFirmwareUpdater via:
usr/bin/ZividFirmwareUpdater
ZividFirmwareUpdater is part of the Zivid-Tools package for Jetson Linux. This may not have been installed when you installed Zivid SDK and Studio. Follow these steps to install Zivid-Tools:
ZividFirmwareUpdater
can be found in /usr/bin/
.
Open a terminal window by pressing Ctrl + Alt + T keys on the keyboard:
wget https://downloads.zivid.com/sdk/releases/2.14.0+e4a0c4a9-1/u22/arm64/zivid-tools_2.14.0+e4a0c4a9-1_arm64.deb
wget https://downloads.zivid.com/sdk/releases/2.14.0+e4a0c4a9-1/u20/arm64/zivid-tools_2.14.0+e4a0c4a9-1_arm64.deb
sudo apt install ./zivid-tools_2.14.0+e4a0c4a9-1_arm64.deb
Now you may execute the ZividFirmwareUpdater via:
usr/bin/ZividFirmwareUpdater
More information
The ZividFirmwareUpdater source code can be found here.
Zivid API
Both Zivid Studio and ZividFirmwareUpdater CLI use the same APIs in the Zivid SDK. These APIs are available in your programming language.
Check if firmware update is required
int main()
{
try
{
Zivid::Application zivid;
auto cameras = zivid.cameras();
for(auto &camera : cameras)
{
if(!Zivid::Firmware::isUpToDate(camera))
{
std::cout << "Firmware update required" << std::endl;
}
else
{
std::cout << "Skipping update of camera " << camera.info().serialNumber()
<< ", model name: " << camera.info().modelName()
<< ", firmware version: " << camera.info().firmwareVersion() << std::endl;
}
}
}
return EXIT_SUCCESS;
}
Update firmware
int main()
{
try
{
Zivid::Application zivid;
auto cameras = zivid.cameras();
for(auto &camera : cameras)
{
if(!Zivid::Firmware::isUpToDate(camera))
{
std::cout << "Updating firmware on camera " << camera.info().serialNumber()
<< ", model name: " << camera.info().modelName()
<< ", firmware version: " << camera.info().firmwareVersion() << std::endl;
Zivid::Firmware::update(camera, [](double progressPercentage, const std::string &stageDescription) {
std::cout << std::round(progressPercentage) << " % : " << stageDescription
<< (progressPercentage < 100 ? "..." : "") << std::endl;
});
}
else
{
std::cout << "Skipping update of camera " << camera.info().serialNumber()
<< ", model name: " << camera.info().modelName()
<< ", firmware version: " << camera.info().firmwareVersion() << std::endl;
}
}
}
return EXIT_SUCCESS;
}
Tip
The firmware is always updated to match the SDK version. Thus, when an older SDK version is used with a camera with newer firmware, then the firmware is rolled back.