Update Firmware
Source: OCPP 2.0.1 Part 2 — Specification (Edition 2, 2022-12-15) — Section 1.64 (Messages); Use Cases L01 — Secure Firmware Update, L02 — Non-Secure Firmware Update (Functional Block L. FirmwareManagement)
Overview
The CSMS sends UpdateFirmwareRequest to instruct the Charging Station to download and install new firmware. OCPP 2.0.1 unifies the OCPP 1.6 UpdateFirmware and SignedUpdateFirmware into a single message — the firmware element carries the location, retrieval/installation times, and (for secure updates, L01) the signing certificate and signature.
Progress is reported by the CS via FirmwareStatusNotification messages sharing the same requestId. If a previous update is still pending or installing when a new request arrives, the CS may respond with AcceptedCanceled.
Sequence Diagram
CSMS ──── UpdateFirmwareRequest ────▶ Charging Station
(requestId, firmware{location, retrieveDateTime, installDateTime?,
signingCertificate?, signature?},
retries?, retryInterval?)
CSMS ◀─── UpdateFirmwareResponse ──── Charging Station
(status, statusInfo?)
(then FirmwareStatusNotification.req messages with same requestId)
Initiator
CSMS → Charging Station
Fields
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| retries | integer | 0..1 | Optional. Maximum number of download retries. 0 = no retries. |
| retryInterval | integer | 0..1 | Optional. Interval (s) between retries. |
| requestId | integer | 1..1 | Required. Id of this request. |
| firmware | FirmwareType | 1..1 | Required. Specifies the firmware to be updated on the CS. |
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| status | UpdateFirmwareStatusEnumType | 1..1 | Required. Whether the CS was able to accept the request. |
| statusInfo | StatusInfoType | 0..1 | Optional. Detailed status information. |
FirmwareType
| Field | Type | Card. | Description |
|---|---|---|---|
| location | string [0..512] | 1..1 | Required. URI defining the origin of the firmware. |
| retrieveDateTime | dateTime | 1..1 | Required. When the firmware shall be retrieved. |
| installDateTime | dateTime | 0..1 | Optional. When the firmware shall be installed. |
| signingCertificate | string [0..5500] | 0..1 | Optional. PEM-encoded X.509 certificate that signed the firmware (used for L01 secure updates). |
| signature | string [0..800] | 0..1 | Optional. Base64-encoded firmware signature (L01). |
UpdateFirmwareStatusEnumType values
Accepted— Update accepted.Rejected— Update rejected.AcceptedCanceled— Accepted, canceled an ongoing update.InvalidCertificate— Certificate is invalid.RevokedCertificate— Failure end state. Firmware signing certificate has been revoked.
Examples
{
"requestId": 123,
"retries": 3,
"retryInterval": 600,
"firmware": {
"location": "https://firmware.example.com/cp/2.1.0/firmware.bin",
"retrieveDateTime": "2026-04-28T02:00:00Z",
"installDateTime": "2026-04-28T03:00:00Z",
"signingCertificate": "-----BEGIN CERTIFICATE-----\nMIIE...\n-----END CERTIFICATE-----",
"signature": "MEUCIQDg7v9...base64...kIM2Q=="
}
}{
"requestId": 124,
"firmware": {
"location": "https://firmware.example.com/cp/2.1.0/firmware.bin",
"retrieveDateTime": "2026-04-28T02:00:00Z"
}
}{
"status": "Accepted"
}Schema
Source:
schemas/UpdateFirmwareRequest.json,schemas/UpdateFirmwareResponse.json(OCPP 2.0.1 FINAL)