I’m looking for advice on updating an X20 Edge (X20EDS410) in a more automated way, ideally without relying on the web interface for every update.
B&R provides Kernel and Full update images, and the normal update flow is done via System Management > OS Update in the web interface. For our use case, we’d like to know whether anyone has found a supported or reliable way to automate this process, for example via script, SSH, or another mechanism.
What we are trying to understand:
Is there a recommended way to trigger OS updates without manual browser interaction?
Are there any pitfalls when trying to automate Kernel or Full updates?
Does anyone have experience with update workflows that include rollback/fallback handling?
Are there better alternatives than trying to automate the update itself?
Has anyone run into issues with unsupported package updates or post-update persistence?
We want to keep the system maintainable and avoid risky workarounds, so any guidance, best practices, or lessons learned would be appreciated.
Hi @koenigf ,
Welcome to our B&R community!
You deserve an answer after waiting a week. However, our community team is currently unable to assist with your specific questions. Please contact our local support team in your area. We hope to be of more help to you next time.
Ciao
Valerio
This should be possible via the device’s REST API. The “System Management → OS Update” page is really just an HTTP API on port 8080, so you can script the whole flow without a browser.
IP=192.168.1.1
# 1. Login → get a token
TOKEN=$(curl -s -F username=admin -F password=***** \
http://$IP:8080/api/auth/login | jq -r .access_token)
# 2. Check current version (reads don't need auth)
curl -s http://$IP:8080/api/system/version
# {"middleware":"25.07.0729","bsp":"BR-X20_1v8.3.3\_..."}
# 3. Upload the image (.bsp), token as Bearer header
curl -s -H "Authorization: Bearer $TOKEN" \
-F "file=@BR-X20_update_XXXX.bsp" \
http://$IP:8080/api/system/bsp/upgrade/upload
# 4. Trigger the flash
curl -s -H "Authorization: Bearer $TOKEN" -X POST \
http://$IP:8080/api/system/bsp/upgrade
The device then reflashes and reboots on its own, poll /api/system/version afterward to confirm.
A couple of things worth knowing:
There’s no official/public API doc for this - these are the internal endpoints the web UI uses. The easiest way to verify them for your firmware version is to open the OS Update page with your browser’s DevTools → Network tab and watch the calls it makes.
A Full (BSP) update behaves like a factory reset — the device comes back at 192.168.1.1 and config/users don’t persist, so plan a step afterward to reconnect and re-provision. A Kernel update is much less invasive.
Since it’s an undocumented internal API, treat it as version-dependent and test on a spare device first.
Thanks a lot — this is exactly what I was looking for.
It would be great if this became an official API. Especially in the context of the CRA and the growing importance of reliable updates, more and more of our customers are looking to automate update processes, and this would be a very good step in that direction.