Firmware Endpoints
GET /api/firmware/status
Returns current firmware version, slot information, and update progress.
Response (idle):
{
"version": "1.2.0-abc1234",
"activeSlot": "A",
"inactiveSlot": "B",
"inactiveVersion": "1.1.0",
"updateInProgress": false
}
| Field | Type | Description |
|---|---|---|
version |
string | Currently running firmware version |
activeSlot |
string | Active firmware slot (A or B) |
inactiveSlot |
string | Inactive firmware slot |
inactiveVersion |
string | Firmware version on the inactive slot |
updateInProgress |
boolean | Whether an update is currently running |
updateProgress |
number | Progress percentage (0–100), present during updates |
updateMessage |
string | Human-readable status message, present during updates |
updateMode |
string | Empty for single-slot updates, "full" for both-slots updates |
updatePhase |
string | Current phase during a full update (see below) |
lastError |
string | Error message from the last failed update, if any |
Full Update Phases
| Phase | Description |
|---|---|
installing_first |
Installing firmware to the inactive slot |
rebooting |
First slot done, device is about to reboot |
installing_second |
After reboot, installing firmware to the second slot |
POST /api/firmware/update
Upload a .raucb firmware bundle for installation. Uses multipart/form-data encoding.
| Parameter | Description |
|---|---|
Form field: firmware |
The .raucb file (max 256 MiB) |
Query: mode |
Empty (default) for single slot, full for both slots |
Example — single slot:
Example — both slots:
curl -X POST -F "firmware=@firmware-1.2.0.raucb" \
"http://<device-ip>/api/firmware/update?mode=full"
Response (202 Accepted):
Installation runs asynchronously. Poll GET /api/firmware/status for progress.
In mode=full, the device reboots automatically after the first slot and installs the second slot on startup.
Errors:
400— Missing file, invalid form data, or non-.raucbfile409— Update already in progress503— Firmware manager not available
POST /api/firmware/update/url
Download and install a firmware bundle from a URL.
Request:
Only HTTPS URLs are accepted.
Response (202 Accepted):
Errors:
400— Invalid URL, missing URL, or non-HTTPS URL409— Update already in progress