Firmware Update Walkthrough
Firmware Update Walkthrough
This walkthrough demonstrates how a backend deployment request reaches an in-vehicle ECU Updater through Symphony and uProtocol.
Simulation boundary: the ECU Updater records deployment state in memory. It does not fetch the example URLs, flash an ECU, or call CDA. The logs demonstrate orchestration, not successful firmware installation on hardware.
Before You Begin
Complete Getting Started and verify Symphony is reachable. You need Bash, curl, and jq. Keep two terminals open at the repository root and optionally open the Symphony Portal.
The target specification describes the firmware components. The trigger script authenticates to the local Symphony API as the demo admin user, creates ecu-updater-target, waits for Enter, and then deletes that target.
1. Watch the Vehicle-Side Logs
In the first terminal:
docker compose logs --follow --tail=50 symphony-agent ecu-updater
Leave this running while you trigger the deployment in the second terminal. Dozzle at http://localhost:8080 is an alternative log viewer.
2. Create the Deployment Target
In the second terminal:
bash scripts/trigger_ecu_update.sh
The script pauses at:
Target registered. Press Enter to remove...
Do not press Enter yet. This prompt only means the script reached its waiting point; confirm the target and vehicle-side logs below to verify that registration and reconciliation succeeded.
3. Verify the Deployment State
In the Symphony Portal, log in with user admin and an empty password. Open Targets and look for ecu-updater-target.
In the ECU Updater logs, expect entries containing:
installing firmware [name: Engine Controller, FW Image: "https://acme.io/fw/engine-control-1.45.img"]
installing firmware [name: Telematics Unit, FW Image: "https://non-existent.io/fw/telematics-unit-2.0.img"]
Timestamps and log prefixes vary. These URLs identify example firmware; they do not need to resolve because this updater does not download them.
4. Remove the Deployment Target
Return to the script terminal and press Enter. The script sends a DELETE request to Symphony. After reconciliation, the ECU Updater logs should contain:
removing firmware [Engine Controller]
removing firmware [Telematics Unit]
The target should disappear from the Symphony Portal after a few seconds. Press Ctrl+C in the log terminal to stop following logs; the containers continue running.
You have completed the walkthrough when target creation and deletion are both visible in the portal and reflected in the ECU Updater logs.
Message Flow
Retry or Recover
If you interrupt the script before pressing Enter, the target may remain registered. Use the interrupted firmware script recovery steps before retrying. For a target with no vehicle-side activity, inspect the Symphony and MQTT troubleshooting steps.
Next, try the ECU Configuration Walkthrough, which reaches the ECU Simulator through CDA and UDS.