Publish Firmware
Source: OCPP 2.0.1 Part 2 — Specification (Edition 2, 2022-12-15) — Section 1.41 (Messages); Use Case L03 — Publish Firmware file on Local Controller (Functional Block L. FirmwareManagement)
Overview
The CSMS sends PublishFirmwareRequest to a Local Controller (acting as Charging Station in the OCPP topology) instructing it to download a firmware file from a URI and republish it locally — so downstream Charging Stations can fetch the firmware from the Local Controller instead of the public internet.
The Local Controller verifies the file using the MD5 checksum and then makes it available via the URIs reported in subsequent PublishFirmwareStatusNotification messages.
Sequence Diagram
CSMS ──── PublishFirmwareRequest ────▶ Charging Station (Local Controller)
(location, checksum, requestId, retries?, retryInterval?)
CSMS ◀─── PublishFirmwareResponse ──── Charging Station (Local Controller)
(status, statusInfo?)
(then PublishFirmwareStatusNotificationRequest messages with same requestId)
Initiator
CSMS → Charging Station (Local Controller)
Fields
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| location | string [0..512] | 1..1 | Required. URI from which the firmware is retrieved. |
| retries | integer | 0..1 | Optional. Maximum number of download retries. |
| checksum | identifierString [0..32] | 1..1 | Required. MD5 checksum (hex string of length 32) over the firmware file. |
| requestId | integer | 1..1 | Required. Id of the request. |
| retryInterval | integer | 0..1 | Optional. Interval (s) between retries. |
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| status | GenericStatusEnumType | 1..1 | Required. Whether the request was accepted. |
| statusInfo | StatusInfoType | 0..1 | Optional. Detailed status information. |
GenericStatusEnumType values
Accepted, Rejected.
Examples
{
"location": "https://firmware.example.com/cp/2.1.0/firmware.bin",
"checksum": "9e107d9d372bb6826bd81d3542a419d6",
"requestId": 55,
"retries": 3,
"retryInterval": 600
}{
"status": "Accepted"
}Schema
Source:
schemas/PublishFirmwareRequest.json,schemas/PublishFirmwareResponse.json(OCPP 2.0.1 FINAL)