Upgrade Notes
- Update your boxes. BLE sessions and the BLE and DA1469x fixes run on the box. Run
lager update --box <box-name>after you upgrade the CLI.
Features
lager leaseruns a command on any available box from a pool.lager lease --pool <name> -- <command>asks a lease server for a box that agrees with the requirements of the pool.- The command runs with
LAGER_BOXset to that box. - The CLI renews the lease while the command runs, and releases the box when the command stops.
- It exits with the status of the command, or 75 when no box is available.
- The command runs with
- The box HTTP API can hold one BLE GATT connection open across many requests. Before,
each
read,writeornotifyon/ble/commandconnected and disconnected on its own.session_openconnects and returns asession_id.session_read,session_write,session_pair,session_notify_start,session_notify_pollandsession_notify_stopuse the same link.session_closeends it.- A box holds one session at a time. While it is open, other BLE and BluFi requests get a
409.
session_closewithforcecloses a session whosesession_idwas lost. - The box closes a session after
idle_timeoutwith no requests (60 s by default), or atmax_lifetime(300 s by default, at most 1800 s). - Each notification has a sequence number and a timestamp. Notifications that were not read stay readable for 60 s after a session ends, for example when the device disconnects.
/statusreports thebleSessioncapability. The Rust cratelager-netwraps the session asBleSessionandAsyncBleSession, from its next release.
Bug Fixes
- BLE connects to a device that the box already knows. A second
info,read,write,notifyorpairto the same device could fail with “Device … was not found”. BlueZ does not announce a device that it already holds, so the scan before the connection missed it. The box now connects through BlueZ’s record of the device. - DA1469x flashing no longer resets the chip while the flash loader starts. A halt that came while the bootloader ran on its PLL clock left the loader on a clock it does not set up, and the chip reset. The box now switches the chip back to its crystal clock first. It retries the start if the chip resets during it.
lager whoamino longer calls a session active when it cannot renew. It used to reportactive (renews automatically)for any session with a stored refresh cookie.- When the access token has expired,
whoaminow tries the renewal that every command uses. - A renewal reads as
active. A refusal reads asexpired, with thelager login <url>to run. - When the auth server gives no answer,
whoamisays that it could not check.
- When the access token has expired,

