Upgrading FuriosaAI’s Software#
Note
Furiosa SDK 2026.4 requires the 2026.4.0 RNGD driver. Upgrade
furiosa-driver-rngd before running Furiosa-LLM 2026.4. Using a
2026.3.x driver may cause unexpected issues. Also review the CLI and
Python configuration migration table in 🚨 Breaking Changes & Deprecations.
The high-level upgrade workflow is as follows:
Upgrade the driver package.
Upgrade the firmware tool and image if a new version is available.
Perform a cold reboot of the system to apply the changes if the device firmware is upgraded.
Run the
furiosa-smi infoCLI tool to confirm the new driver and firmware versions in all devices.Upgrade Furiosa-LLM if necessary.
Warning
Make sure to stop all running applications using NPUs before upgrading the SDK. Otherwise, the new driver kernel module won’t be loaded. In that case, you will need to reboot the system to load the new driver kernel module.
Upgrading the Driver, Firmware, and furiosa-smi#
Please follow the steps below to upgrade the Furiosa software stack:
sudo apt update && sudo apt install -y furiosa-driver-rngd furiosa-smi
sudo dnf makecache && sudo dnf upgrade -y furiosa-driver-rngd furiosa-smi
sudo dnf makecache && sudo dnf upgrade -y furiosa-driver-rngd furiosa-smi
Usually, major releases of the Furiosa SDK include a firmware upgrade. Before upgrading the firmware, install the firmware updater and firmware image packages:
sudo apt install -y furiosa-firmware-tools-rngd furiosa-firmware-image-rngd
sudo dnf install -y furiosa-firmware-tools-rngd furiosa-firmware-image-rngd
sudo dnf install -y furiosa-firmware-tools-rngd furiosa-firmware-image-rngd
To upgrade the firmware on all RNGD devices, run:
sudo furiosa_rngd_updater_all
Alternatively, you can upgrade the firmware on a specific RNGD by specifying its BDF and the firmware image:
sudo furiosa_rngd_updater -b <BDF> -f <firmware image>
# Example:
# sudo furiosa_rngd_updater -b 0000:43:00.0 -f /usr/lib/firmware/furiosa-rngd/rngd_fw_v2026.3.0.bin
Note
Before the 2026.3 release, the firmware updater was executed automatically when the firmware image package was installed. Starting with the 2026.3 release, you must run the firmware updater manually after installing the firmware image package.
Note
Please remember to cold reboot the system after the firmware upgrade process is completed. If the firmware upgrade process is interrupted, the device may become unusable. In this case, please contact FuriosaAI support for assistance.
To check if the new driver and firmware were installed successfully in all devices, run the following command:
$ furiosa-smi info
+------+--------+-------------------+---------+---------+--------------+
| Arch | Device | Firmware | Temp. | Power | PCI-BDF |
+------+--------+-------------------+---------+---------+--------------+
| rngd | npu0 | 2026.3.0, 2d3f72a | 28.01°C | 37.00 W | 0000:83:00.0 |
+------+--------+-------------------+---------+---------+--------------+
| rngd | npu1 | 2026.3.0, 2d3f72a | 27.25°C | 37.00 W | 0000:84:00.0 |
+------+--------+-------------------+---------+---------+--------------+
| rngd | npu2 | 2026.3.0, 2d3f72a | 27.95°C | 37.00 W | 0000:c3:00.0 |
+------+--------+-------------------+---------+---------+--------------+
| rngd | npu3 | 2026.3.0, 2d3f72a | 29.12°C | 37.00 W | 0000:c4:00.0 |
+------+--------+-------------------+---------+---------+--------------+
Upgrading Furiosa-LLM#
To upgrade Furiosa-LLM, use uv pip:
uv pip install --upgrade --torch-backend=auto furiosa-llm
Migrating the Furiosa SMI Python Package#
When upgrading from Furiosa SDK 2026.3.0 or earlier to 2026.4.0, follow
this guide if your Python application uses furiosa-smi-py and you are
migrating it to furiosa-smi.
Replace furiosa-smi-py with furiosa-smi in your application’s
Python dependencies, then install the new package:
pip install furiosa-smi
The packages have separate import names, so installing furiosa-smi does
not update existing furiosa_smi_py imports. Update your imports and API
calls as follows:
Previous API ( |
New API ( |
|---|---|
|
|
|
Remove the call; explicit initialization is no longer required. |
|
|
|
|
|
|
|
|
|
|
|
|
The following examples query the same device information and list available cores before and after migration.
Before: furiosa-smi-py
import furiosa_smi_py as smi
smi.init()
print("Driver:", smi.driver_info())
for device in smi.list_devices():
info = device.device_info()
print(info.name().split("/")[-1], info.uuid(), info.firmware_version())
for pe_status in device.core_status().pe_status():
if pe_status.status() == smi.CoreStatus.Available:
print("Available core:", pe_status.core())
After: furiosa-smi
import furiosa_smi as smi
print("Driver:", smi.driver_info())
for device in smi.list_devices():
print(device.device_name(), device.uuid(), device.firmware_version())
for core, status in device.core_status().items():
if status == smi.CoreStatus.Available:
print("Available core:", core)
core_status() now returns a dictionary mapping core indices to
CoreStatus values. Compare these values with ==, as shown above;
is compares Python object identity and should not be used here.