Developer Docs

Devices

Register hardware UUIDs, provision per-device licenses, and manage boot config overrides.


What is a device?

A device is one physical board registered in your company workspace. Each device has a unique device UUID that cryptographically binds its license.bin — licenses cannot be copied between boards.

Devices always belong to a project group inside a project. Platform, display integration, and default boot config are inherited from that group.


Where devices live in the UI

  • Devices in the top navigation — company-wide list of all registered boards.
  • Inside a group overview — devices for that group only.
  • Register device — create form at /devices/create.

Registering a device

  1. Ensure the target group has platform, display, and (when enforced) boot config set, and that the parent project has free license slots.
  2. Go to Devices → Register device (or Add device on a group page).
  3. Enter the Device UUID:
    • Scan the QR code on the device screen — opens /?prov=UUID and prefills the form after login.
    • Or read the UUID from manufacturing output / label.
    • On Linux: cat /sys/class/dmi/id/product_uuid or cat /etc/machine-id on boards without DMI.
  4. Enter a human-readable Name (e.g. Panel-12).
  5. Select the Project group. Groups with no free slots show no free licenses and cannot be selected.
  6. Click Save.

Registration consumes one project license slot immediately, even before you provision the license file. The portal generates a device API token at registration time.


Device overview page

Each device has a detail page with these sections:

Status and metadata

  • Licensed / Unlicensed badge — whether a provisioned license exists.
  • Project, platform, and display (via group inheritance).
  • Last seen — last connectivity report, if any.
  • Owner — user who registered the device (if tracked).

Boot config resolution

  • Effective boot config — device override, or group default if none set.
  • Installed boot config — what the device last reported (revision, up-to-date vs update available).
  • See Boot Config Editor for building configs.

Device API token

Reveal and copy the token from the overview page. Send it as header X-Device-Token on provision, config, bundle, and boot-config API calls. Generated at registration; treat it as a secret.


Provisioning

Registration reserves a license slot; provisioning creates the signed license.bin bound to this device's UUID.

  1. Open the device overview.
  2. Click Provision device (or Re-provision for a new generation).
  3. Download the license via Download license file or copy the provision URL.
  4. Deploy to hardware — USB serial tool in the portal (Chrome/Edge), SD card, or your factory process.

Re-provisioning increments the generation counter. Previous generations remain in Provisioning History for audit.

For automated lab workflows, use CLI Provisioning with a group token instead of the web form.


Boot config API URLs

On the device page you will find:

  • Metadata URL — poll revision and SHA-256 with X-Device-Token.
  • Binary download URL — fetch initstub.bin when an update is available.

Poll metadata with optional X-Installed-Boot-Config-Id and X-Installed-Boot-Revision; the API returns 304 when the device is up to date.


Editing a device

Edit device lets you change:

  • Name
  • Project group — moves the device to another group (same company)
  • Status — online / offline (manual or operational label)
  • Boot Config Override — per-device splash/timings instead of the group default; only configs matching the group's platform + display appear

The device UUID cannot be changed after registration.


Deleting a device

Removing a device frees its project license slot for reuse. Confirm you no longer need the provisioning history before deleting.


Troubleshooting

Issue What to check
Cannot register — no groups available Project allocation full, or no group has free slots
Group disabled in dropdown Group missing platform/display/boot config, or no free slots
UUID already registered Each UUID can exist only once in the portal
Provision button fails Project allocation, device license product mismatch (GraphLab Boot vs GraphLab Boot - Development), or missing company license
Boot config download 404 Assigned config not built yet — finish VPS build in the editor
QR UUID not prefilled Scan before login — UUID is kept in session until registration

See also