Update ZL3073x Firmware Using Devlink¶
The devlink utility provides a standardized interface for device management in Linux, including firmware update operations. This document describes the procedure for identifying a ZL3073x device, verifying its firmware version, updating the firmware, and validating the update.
Prerequisites
Before performing a firmware update, ensure that:
Root or sudo privileges are available.
The target device is detected by the system and registered with devlink.
A valid firmware image (
.hex) is available.The ZL3073x driver supports the
devlink flash_updateoperation.
Identify Devlink Device Name¶
The device identifier used in the examples (i2c/i2c-PRP0001:01) is
platform-specific and may vary depending on:
ACPI configuration
I2C bus enumeration
Platform-specific hardware design
Driver registration order
Determine the correct device name before performing a firmware update.
Locate ZL3073x Device¶
Identify the ZL3073x device registered with devlink using the following command:
~(keystone_admin)]$ sudo devlink dev info | grep -B1 "driver zl3073x"
Example output:
i2c/i2c-PRP0001:01: driver zl3073x-i2c
Where,
i2c/i2c-PRP0001:01 is the device identifier and zl3073x-i2c is the driver.
Use the reported device identifier in all the subsequent commands.
Optionally, list all the registered devlink devices:
~(keystone_admin)]$ sudo devlink dev show
Note
The device identifier may differ between hardware platforms, firmware versions, ACPI configurations, and system implementations.
Verify Current Firmware Information¶
Display the current firmware and hardware information:
~(keystone_admin)]$ sudo devlink dev info i2c/i2c-PRP0001:01
Example output:
i2c/i2c-PRP0001:01:
driver zl3073x-i2c
versions: fixed:
asic.id 3FC4
asic.rev 300
running:
fw 7200
Where,
driver: Device driver managing the hardware
asic.id: ASIC identifier
asic.rev: ASIC hardware revision
fw: Currently running firmware version
In this example, the device is running firmware version 7108.
Perform Firmware Update¶
Install Firmware Bundle¶
Copy the firmware image to the system firmware directory:
~(keystone_admin)]$ sudo cp myfwbundlecomb.hex /lib/firmware/
If you receive the following error when copying the file to
/lib/firmware/, the file system must be unlocked before you can copy the firmware.cp: cannot create regular file '/lib/firmware/myfwbundlecomb.hex': Read-only file system
Unlock the file system temporarily:
~(keystone_admin)]$ sudo ostree admin unlock
Flash Firmware¶
Run the firmware update:
~(keystone_admin)]$ sudo devlink dev flash i2c/i2c-PRP0001:01 file myfwbundlecomb.hex
Where,
i2c/i2c-PRP0001:01: Target devlink device
file: Firmware image parameter
myfwbundlecomb.hex: Firmware bundle to be programmed
Example output:
[utility] Prepare flash mode
[utility] Downloading image 100%
[utility] Flash mode enabled
[config0] Downloading image 100%
[config0] Flashing image 100%
[config0] Flashing done
[config1] Downloading image 100%
[config1] Flashing image 100%
[config1] Flashing done
[config2] Downloading image 100%
[config2] Flashing image 100%
[config2] Flashing done
[config3] Downloading image 100%
[config3] Flashing image 100%
[config3] Flashing done
[config4] Downloading image 100%
[config4] Flashing image 100%
[config4] Flashing done
[config5] Downloading image 100%
[config5] Flashing image 100%
[config5] Flashing done
[config6] Downloading image 100%
[config6] Flashing image 100%
[config6] Flashing done
[utility] Leaving flash mode
Flashing done
Verify Firmware Update¶
After the firmware update is completed, verify the firmware version:
~(keystone_admin)]$ sudo devlink dev info i2c/i2c-PRP0001:01
Example output:
i2c/i2c-PRP0001:01:
driver zl3073x-i2c
{{versions:}}
{{fixed:}}
{{asic.id 3FC4}}
{{asic.rev 300}}
{{running:}}
{{ fw 7200}}
Confirm that the value reported in running.fw matches the expected firmware
version contained in the firmware bundle.
Troubleshooting - ZL3073x Firmware Update¶
Driver Not Loaded¶
Verify that the required kernel modules are loaded:
~(keystone_admin)]$ lsmod | grep zl
Example output:
zl3073x_spi 12288 0 regmap_spi 12288 1 zl3073x_spi zl3073x_i2c 12288 0 zl3073x 81920 2 zl3073x_spi,zl3073x_i2c If the required modules are not loaded, the device may not be registered with devlink and firmware update operations will not be available.
Verify device registration:
~(keystone_admin)]$ sudo devlink dev show
Example output:
i2c/i2c-PRP0001:01
If the device is not listed, review the driver logs:
~(keystone_admin)]$ dmesg | grep -i zl3073x
Possible causes include:
Missing kernel modules
I2C or SPI communication failures
Incorrect ACPI configuration
Firmware loading failures during driver initialization
Firmware File Not Found¶
Verify that the firmware image exists and is accessible:
~(keystone_admin)]$ ls -l /lib/firmware/myfwbundlecomb.hex
Flash Operation Failed¶
Review system logs for additional information:
~(keystone_admin)]$ dmesg | tail -100
Common causes include:
Invalid firmware image
Firmware image incompatible with the ASIC revision
Insufficient permissions
Communication failures with the target device