Welcome to Firefly
Switch language
Firefly Docsss
Last Updated: 2026-07-30 15:08:26

Firmware Upgrade

Introduction

Firmware upgrade is a unified remote firmware operation and maintenance service provided by the array server to internal sub-nodes. It integrates the three core capabilities of firmware package upload, batch node upgrade, and full-process task monitoring, and supports sub-node firmware version iteration, downgrade rollback, and standardized batch deployment. Firmware upgrade.

  1. Firmware upload: Supports two interaction channels, the Web management interface and the CLI command line, to upload the firmware image package to the unified storage of the cluster management node.
  2. Batch upgrade: For scenarios such as the factory firmware version is old or business adaptation requires switching to specified firmware, users can obtain the standard firmware package from official channels, or compile customized firmware independently based on the open source SDK; after uploading the image, select the target sub-node to batch issue the upgrade, and flexibly complete firmware version switching, downgrade rollback operations.
  3. Upgrade task monitoring: Visually display the real-time status of all upgrade tasks, including single node upgrade progress, global success/failure node statistics, and retain all upgrade logs to facilitate fault tracing.

Development Vision

  1. Provide lightweight remote sub-node firmware delivery capabilities. Operation and maintenance personnel do not need to contact the physical server offline. They can complete firmware upload and batch deployment through Web pages or terminal commands, simplifying the underlying hardware operation and maintenance workload and allowing R&D and operation and maintenance personnel to focus on upper-level business development. Create a standardized, high-efficiency, and highly secure on-site business delivery link: It is recommended that users use the official original firmware package, supporting the official secondary packaging tool, integrating the self-developed business program with the underlying firmware to generate an integrated customized firmware image with built-in business applications; relying on the batch upgrade capability of the array server, all sub-nodes of the cluster can be deployed simultaneously at one time. The R&D side can complete full firmware debugging and verification in the laboratory before delivering it to the site for implementation. The core values are as follows: 1.1 Significantly shorten the on-site deployment cycle and reduce offline manual implementation costs; 1.2 Unify the laboratory debugging environment and the on-site production environment to eliminate adaptation failures caused by version inconsistencies; 1.3 Ensure customer business code security from the root: Under the traditional outsourcing delivery model, customers need to hand over business programs to equipment manufacturers. In order to prevent core code leakage, complex network/local key activation mechanisms are often additionally developed, which not only increases customer R&D costs, but also increases the complexity of the manufacturer's production process management and control. Through the official packaging tool, users can independently complete the integration of firmware and business software locally without exposing the core source code to third parties, completely avoiding the risk of business asset leakage.

Feature Usage

Upgrade array sub-node firmware

Please confirm before upgrading

Firmware upgrades rewrite the underlying software of the target array's subnodes and may trigger a device reboot. Before execution, you must confirm that the firmware package, firmware type, device model, and hardware version match, and ensure that the power supply and management network are stable. During the upgrade process, do not power off, restart the device, or submit tasks repeatedly.

Open the firmware upgrade page

  1. Select Operations in the main navigation on the left.
  2. Select Firmware in the secondary navigation.
  3. View the number of tasks in each status at the top of the page.
  4. View the upgrade tasks being processed in the Upgrade Queue.
  5. View the execution progress and final results in Upgrade Progress and Upgrade Result.
  6. Click Add Sub-board Firmware Upgrade to open the upgrade configuration window.

Open firmware upgrade page

Empty list description

When the page displays No Data or No Data Available, it means that there is currently no corresponding queue, progress or result record, and it does not mean that the page has failed to load.

Configure upgrade task

  1. Select the firmware that matches the target device in Select Upgrade Firmware; when the required firmware is not in the list, click Upload Firmware to upload.
  2. Select the platform type corresponding to the firmware in Select Firmware Type.
  3. Check the target device in the device list on the left and use the right arrow to move it to the list on the right.
  4. Review the target devices one by one in Upgrade Devices and remove nodes that should not participate in the upgrade.
  5. After double-checking the firmware, type, and target device, click Confirm to submit the task.

Configure sub01 firmware upgrade task

Real machine upgrade example

For this actual machine operation, select CS-B1-3576-JD4-SUB-MINIMAL_Debian_debug_250428.img, the firmware type is Rockchip, and the target device is only sub01. Before submission, the page displays Upgrade Devices 1/1, and no other sub-boards are selected.

Upgrade parameter description

Parameter or areaDescriptionUsage requirements
Select Upgrade FirmwareSelect the firmware image that has been uploaded to aBMC.Must check complete file name, applicable model, hardware version and release notes.
Upload FirmwareOpen the firmware upload window.Only upload firmware from trusted sources and that pass integrity verification.
Select Firmware TypeSelect the firmware type corresponding to the target hardware platform.Must match firmware package and target device, e.g. Rockchip.
All DevicesSelect all devices in the list on the left.Only works if all devices have the same firmware.
Upgrade DevicesDisplays the devices actually upgraded in this task.The number and name of the equipment must be verified before submission.
ConfirmCreate and execute upgrade tasks.After clicking, the actual upgrade operation will occur. Do not submit repeatedly.

Monitor the upgrade process

  1. Confirm that the task enters Preparing or Starting in the top status summary.
  2. Confirm in the Upgrade Queue that the Board is the device planned to be upgraded.
  3. Continue to observe Status, Progress and Message to confirm that the progress is increasing normally.
  4. Do not power off the device, restart the target device, or create the same task again during task execution.

Monitor sub01 firmware upgrade progress

This actual machine upgrade goes through Preparing and Starting in sequence. When the task enters Preparing, the page displays Try to Loader 1/3; after entering Starting, the progress continues to increase from 0% to 96%, and then transfers to Completed.

Upgrade status description

StatusDescriptionProcessing Suggestions
NewThe upgrade task has been created and will usually enter Pending soon.Confirm that the target device and firmware information are correct.
PendingThe task has entered the scheduling queue and is waiting for execution or required resources.Continue to wait; if there is no change for a long time, check other upgrade tasks and resource usage.
PreparingChecking the firmware, preparing the upgrade environment, and putting the target device into upgrade mode.Keep the power supply and network stable, and do not submit upgrade tasks repeatedly.
StartingFlashing firmware to target device has started.Continuously observe Progress and Message, do not restart or power off.
CompletedThe firmware flashing process has ended successfully, and the task progress is 100%.Continue to wait for the device to start and verify the online status, firmware information, alarms and business functions.
FailedThe upgrade task failed.Check firmware compatibility, device status, network, power and error logs.

Confirm upgrade result

  1. Confirm that the number of Completed at the top of the page has increased, and the number of Failed has not increased.
  2. Confirm the target Board, Start Time and Status in the Upgrade Result.
  3. Read the Message. If the page prompts you to wait for the system to start, you should continue to wait as prompted and do not immediately cut off the power or repeat the upgrade.
  4. After the device is restored, check the power status, system status, firmware version, alarms, logs, and key business functions.

Confirm sub01 firmware upgrade result

The results of this actual machine upgrade are as follows:

Check itemsActual results
target devicesub01
Task start time2026-07-24T23:49
.198+08
Final statusCompleted
Result messageWait for the system to start normally, this process usually does not exceed 5 minutes
PowerStateOn
StateSocReady
ComputerSystem HealthCritical
Operating SystemDebian GNU/Linux 12 (bookworm)
KernelVersion6.1.84
Firmware Date2025-04-28T12:44
.000Z

Device still needs to be verified after Completed

Completed means that the upgrade task process has ended, but it does not mean that the target device and business have been restored immediately. In this actual machine verification, sub01 has been restored to PowerState: On and StateSoc: Ready, but ComputerSystem Health is still Critical. You should continue to check device alarms and logs, and do not judge the overall health of the device solely based on task completion and system accessibility.

Batch upgrade equipment

  1. Only perform batch upgrades when the models, hardware versions, and target firmware of multiple devices are exactly the same.
  2. Use the search box to select devices one by one, or select All Devices when you confirm that all devices are available.
  3. After moving the devices into Upgrade Devices, check the number and names of the devices.
  4. After submission, check the status of each device in the queue and result area. Do not judge the success of all devices based solely on the overall progress.

It is recommended to verify with a single node first

Before batch upgrade, it is recommended to select a non-critical node for actual machine verification. After confirming that the firmware is compatible, the device can start normally, and the business verification is passed, expand the scope of the upgrade.

FAQ

There is no target firmware in Select Upgrade Firmware

Confirm whether the firmware has been uploaded and recognized by the page. When there is no available firmware, click Upload Firmware to upload an image from a trusted source that matches the device, and then reopen the upgrade window.

The task stays in Pending or Preparing for a long time

Check whether there are other tasks, whether the target device can enter upgrade mode, whether the management network is stable, and view Message and related logs. Do not submit again before the reason is confirmed.

Firmware preprocessing

firmware-kits is used to preprocess BM1684 and RK3588 firmware packages before official firmware upgrade. It can unpack the original firmware according to the specified process, adjust the size of ROOTFS/DATA/CUSTOM and other partitions, mount rootfs for manual modification of system content, and repackage it after the modification is completed to generate a firmware package that can be used for delivery or upgrade.

This tool is suitable for scenarios where you need to customize firmware content before upgrading, such as expanding partitions, preconfiguring files, adjusting rootfs configuration, and generating TFTP or SD card upgrade packages. Ordinary firmware upgrades should still give priority to using the upgrade management function mentioned earlier on this page; firmware-kits should be used only when the firmware needs to be modified or repackaged first.

Here are instructions on how to unpack, modify and repackage BM1684 and RK3588 firmware using firmware-kits. Please follow the steps strictly.

All commands are executed in the firmware-kits directory.

Preparation

1.1 Operating system requirements

It is recommended to use Ubuntu 20.04/22.04 x86_64 host.

1.2 Install dependencies

sudo apt-get update
sudo apt-get install -y u-boot-tools qemu-user-static p7zip-full unzip e2fsprogs

1.3 Check toolkit directory

Enter the toolkit directory:

cd firmware-kits

Verify that the directory has at least these contents:

firmware-kits
flow/
scripts/
tools/
bin/

Confirm that the main program can be executed:

./firmware-kits --help

Firmware processing performs mounting, chrooting, file system adjustments, and repackaging, so formal operations require the use of sudo.

Basic commands

Processing the firmware from scratch:

sudo ./firmware-kits run -l <flow-file> -f <firmware-file>

To continue the process after it has been paused:

sudo ./firmware-kits resume

Parameter description:

ParametersDescription
runExecute a firmware processing flow from scratch
resumeResume execution from the last paused position
-lSpecify the process file, such as flow/bm1684_tftp_data.yaml
-fSpecify the original firmware file
-oAdvanced parameters, appended to the processing script; do not use without special instructions

When the tool reaches a position that requires manual processing, it will automatically pause and prompt what command to execute next. After the manual operation is completed, execute sudo ./firmware-kits resume to continue.

Important Notes

  1. Do not delete out/, .firmware-kits_state.json or tools/.env while the process is paused.
  2. Do not shut down the host with rootfs mounted unless the uninstallation is confirmed to be complete.
  3. Only process one firmware process at a time. Do not open multiple terminals and run multiple firmware-kits run/resume at the same time.
  4. The output directory is out/. After confirming that the product is not needed, you can use sudo rm -rf out/ to clear the space.
  5. If the process prompts that there is an interruption record, execute sudo ./firmware-kits resume first and do not directly restart run.

BM1684 firmware operation

4.1 Input files

BM1684 uses zip firmware packages, for example:

Public-All-1684-Ubuntu2004-Sdk2309LTS_SP5-Build20260522.zip

Place the firmware file in the firmware-kits directory and execute subsequent commands.

4.2 Select output type and flow

BM1684 has multiple flows. The main differences between different flows are the output type, whether to process BOOT/DATA partitions, and whether to process CUSTOM partitions.

flow fileapplicable scenariosoutput productpause pointkey parameters
flow/bm1684.yamlBasic SD card upgrade package; only handles ROOTFSout/bm1684/ubuntu20/update/sdcard-YYYY-MM-DD.zipROOTFS partition size, rootfs content modificationPackaging parameters sdcard
flow/bm1684_tftp.yamlBasic TFTP upgrade package; only handles ROOTFSout/bm1684/ubuntu20/update/tftp-YYYY-MM-DD.zipROOTFS partition size, rootfs content modificationPackaging parameters tftp
flow/bm1684_sdcard_data.yamlSD card upgrade package; processing ROOTFS, BOOT, DATAout/bm1684/ubuntu20/update/sdcard-YYYY-MM-DD.zipROOTFS partition size, DATA partition size, rootfs content modificationPackaging parameters sdcard; BOOT automatic processing
flow/bm1684_tftp_data.yamlTFTP upgrade package; processing ROOTFS, BOOT, DATAout/bm1684/ubuntu20/update/tftp-YYYY-MM-DD.zipROOTFS partition size, DATA partition size, rootfs content modificationPackaging parameters tftp; BOOT automatic processing
flow/bm1684_custom_overlay.yamlTFTP upgrade package; add or expand CUSTOM, and bind CUSTOM/DATA to rootfsout/bm1684/ubuntu20/update/tftp-YYYY-MM-DD.zipROOTFS partition size, CUSTOM partition size, DATA partition size, rootfs content modificationThe default size in the CUSTOM bind parameter is 20; packaging parameters tftp
flow/bm1684_custom_ro.yamlTFTP upgrade package; CUSTOM is processed according to the read-only scheme and BOOT/DATA is processed at the same timeout/bm1684/ubuntu20/update/tftp-YYYY-MM-DD.zipROOTFS partition size, DATA partition size, rootfs content modificationPackaging parameters tftp custom_ro; CUSTOM/BOOT is processed automatically

Notes:

  1. The input firmware is all BM1684 zip package, such as Public-All-1684-Ubuntu2004-Sdk2309LTS_SP5-Build20260522.zip.
  2. At the ROOTFS partition size pause point, you can view or expand ROOTFS.
  3. At the DATA partition size pause point, you can view or expand DATA. It appears only in flows containing _data or custom.
  4. The CUSTOM partition size pause point appears only in bm1684_custom_overlay.yaml.
  5. If you do not need to modify the content of a certain pause point, just execute sudo ./firmware-kits resume directly.

Common command examples:

Generate TFTP upgrade package and process ROOTFS/BOOT/DATA:

sudo ./firmware-kits run -l flow/bm1684_tftp_data.yaml -f ./Public-All-1684-Ubuntu2004-Sdk2309LTS_SP5-Build20260522.zip

Generate SD card upgrade package and process ROOTFS/BOOT/DATA:

sudo ./firmware-kits run -l flow/bm1684_sdcard_data.yaml -f ./Public-All-1684-Ubuntu2004-Sdk2309LTS_SP5-Build20260522.zip

Only process ROOTFS and generate TFTP upgrade package:

sudo ./firmware-kits run -l flow/bm1684_tftp.yaml -f ./Public-All-1684-Ubuntu2004-Sdk2309LTS_SP5-Build20260522.zip

Only process ROOTFS and generate SD card upgrade package:

sudo ./firmware-kits run -l flow/bm1684.yaml -f ./Public-All-1684-Ubuntu2004-Sdk2309LTS_SP5-Build20260522.zip

If there are no special requirements, follow the flow specified by the delivery personnel.

4.3 First pause: Modify ROOTFS partition size

The program will display similar information:

[Step 3/13] Modify the root file system size
Firmware processing is paused. After completing the manual operation above, run `sudo ./firmware-kits resume` to continue.

Check the current size of ROOTFS:

sudo ./tools/chroot-p-bm1684.sh -p ROOTFS -r

If expansion is required, for example to 4000 MB:

sudo ./tools/chroot-p-bm1684.sh -p ROOTFS -w 4000

If you do not need to modify the size, you can continue directly:

sudo ./firmware-kits resume

If the size has been modified, also execute the same continue command:

sudo ./firmware-kits resume

4.4 Second pause: Modify DATA partition size

The program will display similar information:

[Step 7/13] Modify the DATA partition size
Firmware processing is paused. After completing the manual operation above, run `sudo ./firmware-kits resume` to continue.

View the current size of DATA:

sudo ./tools/chroot-p-bm1684.sh -p DATA -r

If you need to expand the capacity, for example to 6000 MB:

sudo ./tools/chroot-p-bm1684.sh -p DATA -w 6000

If you do not need to modify the size, you can continue directly:

sudo ./firmware-kits resume

4.5 The third pause: modify rootfs content

The program will display similar information:

[Step 9/13] Modify the root file system contents
Firmware processing is paused. After completing the manual operation above, run `sudo ./firmware-kits resume` to continue.

Execute the command within rootfs:

sudo ./tools/chroot-e.sh 'apt-get update'

Example of installing a package:

sudo ./tools/chroot-e.sh 'apt-get install -y figlet'

Copy local files to rootfs, for example, copy a.txt in the current directory to /home/ in the target system:

sudo ./tools/chroot-c.sh -s ./a.txt -d /home/

Notes:

OperationsCommand
Execute a command in rootfssudo ./tools/chroot-e.sh 'COMMAND'
Copy files or directories to rootfssudo ./tools/chroot-c.sh -s <local-path> -d <target-path-in-rootfs>

Continue after modifications are completed:

sudo ./firmware-kits resume

Afterwards, the program will automatically uninstall DATA, BOOT, ROOTFS, and repackage the firmware.

4.6 BM1684 output file

TFTP flow output:

out/bm1684/ubuntu20/update/tftp-YYYY-MM-DD.zip

SD card flow output:

out/bm1684/ubuntu20/update/sdcard-YYYY-MM-DD.zip

Actual verification example:

out/bm1684/ubuntu20/update/tftp-2026-07-28.zip

Output files may belong to the root user. If you have insufficient permissions to copy or delete, use sudo.

RK3588 firmware operation

5.1 Input files

RK3588 supports direct input of .7z, .zip or .img. For example:

CS-B1-N10-SUB-3588JD4_Debian12-Xfce-r1275_debug_260710.7z

The tool will automatically extract .img from .7z/.zip and continue processing.

5.2 Start processing

sudo ./firmware-kits run -l flow/rk3588.yaml -f ./CS-B1-N10-SUB-3588JD4_Debian12-Xfce-r1275_debug_260710.7z

5.3 First pause: Modify ROOTFS partition size

The program will display similar information:

[Step 3/7] Modify the root file system size
Firmware processing is paused. After completing the manual operation above, run `sudo ./firmware-kits resume` to continue.

View the current size of rootfs:

sudo ./tools/chroot-p-rk3588.sh -p rootfs -r

If expansion is required, for example to 4000 MB:

sudo ./tools/chroot-p-rk3588.sh -p rootfs -w 4000

If you do not need to modify the size, you can continue directly:

sudo ./firmware-kits resume

5.4 Second pause: modify rootfs content

The program will display similar information:

[Step 5/7] Modify the root file system contents
Firmware processing is paused. After completing the manual operation above, run `sudo ./firmware-kits resume` to continue.

Execute the command within rootfs:

sudo ./tools/chroot-e.sh 'apt-get update'

Copy files to rootfs:

sudo ./tools/chroot-c.sh -s ./a.txt -d /home/

Continue after modifications are completed:

sudo ./firmware-kits resume

Afterwards, the program will automatically uninstall rootfs and repackage the RK3588 firmware.

5.5 RK3588 output file

Output file location:

out/rk3588/ubuntu20/update/rockdev/rk3588-YYYY-MM-DD.img

Actual verification example:

out/rk3588/ubuntu20/update/rockdev/rk3588-2026-07-28.img

Output files may belong to the root user. If you have insufficient permissions to copy or delete, use sudo.

Interruption recovery

If you see a similar prompt when executing run:

An interrupted run was found. Use `sudo ./firmware-kits resume` to continue.

It means that the last process was not completed. Please execute:

sudo ./firmware-kits resume

If you confirm that the last process is no longer needed, clean up the status and output:

sudo rm -f .firmware-kits_state.json tools/.env
sudo rm -rf out/

run can be re-executed after cleaning.

Execution records

Two actual execution records are provided with the package, which can be downloaded to view the complete operation process:

Only the firmware processing commands, terminal output, pause point operations, command execution demonstrations in rootfs, file copy demonstrations, final product paths and mount check results that customers care about are retained in the logs.

Firmware-kits FAQ

8.1 Prompt for insufficient permissions

Firmware processing involves mounting, chrooting, and root-owned files. Please confirm that the command uses sudo.

If deleting the output directory fails, execute:

sudo rm -rf out/

8.2 Not sure what to do now

If the process is paused, the terminal usually prompts for the next command. Generally you only need:

  1. Follow the prompts to view or modify the partition size, or modify the rootfs content.
  2. Execute sudo ./firmware-kits resume after completion.

8.3 What to do if you don’t need to modify the partition size?

At the partition size pause point, if no modification is needed, execute directly:

sudo ./firmware-kits resume

8.4 What to do if there is no need to modify the rootfs content?

Modify the pause point in the rootfs content. If no modification is required, execute directly:

sudo ./firmware-kits resume

8.5 Locale or /dev/pts warning appears in apt command

Some rootfs environments may display locale or /dev/pts related warnings. As long as the command is ultimately executed successfully, it generally does not affect firmware production.

8.6 How to confirm that there are no residual mounts

There are usually no remaining mounts after the normal process is completed. Execute when inspection is required:

mount | grep firmware-kits/out

No output means there are no residual mounts.

If there is output, please contact the delivery personnel for processing, and do not delete the directory being mounted at will.

On this page