Deploy System Updates
Deploy a published system image to a device, track an update channel, and inspect the result in Nexigon. A device-side updater installs the image; Nexigon stores the release, selects the desired version, and records progress.
Before You Start
You need a connected device with a system update integration and a release published to a repository in the format that integration expects. For Rugix, use the release workflow so the published bundle filename and image-version metadata match the device.
For a private repository, link it to the device’s project under Project Settings → Repositories so the device can download its software.
If your image does not yet include an updater, follow
Set Up Rugix OTA Updates for Rugix Bakery or Yocto.
For RAUC, use the meta-nexigon-rauc Yocto layer from
meta-nexigon; its
Kas examples
provide reference configurations.
A custom integration must implement the system update property protocol.
How the Update Is Coordinated
The update integration connects four parts of Nexigon. The protected
dev.nexigon.ota.config property records the desired update source. The device
publishes its installed version and progress in dev.nexigon.ota.status.
The nexigon.ota.check command requests a check, and events record what
happened during the update. The web interface, Nexigon CLI, and fleet
operations use these same interfaces, so the deployment workflow can work
with different device-side updaters.
A deployment changes the desired state. The device’s updater resolves the selected repository version, downloads its files, installs them, and reports the result. A successful configuration write therefore does not establish that installation succeeded. Check the reported version and device health to confirm the outcome.
Deploying an Update to a Device
- Open a device that reports the
dev.nexigon.ota.statusproperty. - Choose Configure Updates.
- Under Release, enter the tag to follow or search for the version to pin. The tag field suggests the package’s tags and the version each one points to. The version search matches version names, IDs, and tags.
- Choose Follow or Pin and monitor the device’s update status.
A package groups releases of the same system. A version contains the files
and metadata for one release; a tag is a name that resolves to a version.
Tracking a floating tag such as stable follows new versions when that tag
is reassigned. Pinning selects one version until you change the configuration.
Use a channel when devices should follow promotions, and pin a version when
you need to hold a device at a particular release.
The panel writes dev.nexigon.ota.config and requests an immediate check
through nexigon.ota.check when that command is available.
Configuring Updates for a Device Profile
A device profile sets property values on all devices that apply it, including
dev.nexigon.ota.config. To configure the updates of these devices in one
place:
- Open the profile under Project Settings → Profiles.
- Open its System Updates page and choose Configure System Updates.
- Choose the settings the profile should set, for example a tag to follow or a version to pin, and choose Save Settings.
Saving creates a new revision of the profile. A setting that the profile leaves at Not set by this profile comes from the device’s other profiles or from the defaults built into its image. A value that a device sets itself takes precedence over its profiles.
Change the Update Channel with Nexigon CLI
For example, set a per-device override from a configured workstation:
nexigon-cli devices properties set --protected=true <device-id> dev.nexigon.ota.config \
'{"path": "my-repo/my-package/beta"}'
The path has the format <repository>/<package>/<version-tag>. In this
example, the device follows the beta channel of my-repo/my-package.
The protected property keeps the operator’s selection separate from the
status that the device reports. The updater reads it on its next check.
To restore the defaults built into the image, remove the override:
nexigon-cli devices properties remove <device-id> dev.nexigon.ota.config
Staged Rollouts
For a rollout with per-device progress and advancement guards, use
Run a Fleet Operation. A property-driven update operation
sets dev.nexigon.ota.config and waits for
dev.nexigon.ota.status.currentVersion to report the expected build.
A canary channel lets a small group exercise a release before the rest of the fleet follows it. Promoting a tag changes what devices resolve on their next check; it does not require rebuilding or uploading the same release again.
For example, a simple channel-based rollout is:
-
Publish a release and tag it
canary. -
Point test devices at that tag with per-device overrides.
-
Check update status, device events, and application health.
-
Reassign
stableto the tested version:nexigon-cli repositories versions tag <version-id> --tag stable,reassign
Devices tracking stable pick up the version on their next check.
Monitoring Update Progress
The device header shows the reported firmware version and update state. During an update, inspect the target version and state, such as installing or rebooting. After reboot, confirm the expected installed version and device health.
On failure, inspect the error in the status badge and the device’s event log. The interface shows the failure count and offers Retry Update when the check command is available. Events include structured version and error data; dedicated instances can also use OTLP export.
Troubleshooting
| Symptom | What to Check |
|---|---|
| No new version is detected | Confirm the device is online, its OTA service is running, and the configured repository tag resolves to the intended version. Use Check Now when available. |
| Installation repeatedly fails | Read the reported error. Check free storage, download connectivity, and the bundle’s verification requirements. |
| Installing or rebooting remains reported | Inspect the device’s boot state and OTA service logs through the remote terminal. Confirm that the updater has run since reboot and is publishing current status. |