Upgrade Notes
-
lager installexits1when it cannot record what it installed. After the deploy, install writes/etc/lager/version,/etc/lager/refand the build hash on the box. Before this version, install ignored a failed write and printed success, solager helloshowed the previous release. Install now checks each write and reads the version file back. On a failure, it names the file, prints the manual fix, and exits1. In that case, the box runs the new software. A script that reads any non-zero exit as a failed deploy must check the message. Install now writes these files with mode0644, owned by the login user. Before, the version file was root-owned with mode0666. -
The
lager-cliwheel no longer contains thecli.vendorpackage. That package held a vendored copy of the PyCRC library. Code that importscli.vendor.PyCRCnow fails withModuleNotFoundError. For the same CRC-16/CCITT-FALSE value, callbinascii.crc_hqx(data, 0xFFFF)from the Python standard library.
Features
-
lager nets add --interfaceputs an FTDIgpio,i2corspinet on any channel of its part. An FT2232H has channelsAandB, and an FT4232H has channelsAtoD. The command refuses a channel that the part does not have for that net type. I2C and SPI need MPSSE, so an FT4232H carries them on channelsAandBonly. A net without--interfaceuses channelA. The same pin on two channels makes two different nets. The box must run this version, so runlager updatefirst. See the nets reference. -
lager boxesshows each box as it answers. The command queries all boxes in parallel, so a box that is powered off or in an update costs only its own timeout. On a terminal, the table appears at once and fills in as replies arrive. Each unanswered row shows a spinner, and a countdown shows the time that remains. PressCtrl+Cto stop the wait and keep the replies that arrived. The other boxes showcancelled. Piped output does not change. - The documentation is available in Simplified Chinese. A language selector in the navigation bar switches the site between English and Simplified Chinese. All 118 guide and reference pages have a translation. Release notes stay in English only.
Bug Fixes
-
FT2232H and FT4232H
gpio,i2candspinets did not open the part that they name. The I2C and SPI dispatchers on the box refused both parts.lager gpiandlager gpoopened every FTDI part as an FT232H on channelA. The box now opens the part and the channel that the net names. -
lager nets addrefused a seconddebugnet on another channel of an FT2232H or FT4232H. For example, it refusedNRF52840_XXAA@Bnext toSTM32F4x@Aon one part.lager nets add-alland the Net Manager TUI already allowed onedebugnet per channel. Nowlager nets addallows it too. -
The first
lager boxesagainst an access-gated box reportedno response. The first request to a gated box gets a sign-in challenge, and Lager then sends the request again with a token. That retry used a fixed 30-second budget, longer than the deadline oflager boxes. So the command gave up on a box that still answered. The retry now uses the time budget of the request that it replays. - A DA1469x flash or erase failed when the flash loader did not start. The loader sometimes never reported ready, and the step stopped at its 10-second timeout. A fresh bring-up of the loader usually clears the fault. The box now runs the whole loader bring-up up to three times after a readiness timeout. The progress output names each failed attempt. Any other loader error still fails on the first attempt. No timeout changes. The box must run this version.
-
lager installreported a version that it did not write. When the write to/etc/lager/versionfailed,lager helloshowed the previous release, and install still printed success. Install now writes the version, ref and build hash withoutsudo, and checks each write. See the Upgrade Notes for the new exit code. -
lager installstopped the box before it downloaded the box image. The box was down for the whole download, and a missed pull meant a build with an empty cache. Install now pulls the pre-built image of a release while the old containers still run. When install builds the image on the box instead, it keeps the Docker build cache for the next build. -
The box SSH key sync deleted keys that another key manager publishes. Two managers that
publish from one key directory each keep a marked block in
authorized_keys. The box sync emptied the other block on every pass, and a peer that follows the same rule emptied the Lager block in return. The sync now leaves every block that another manager marks unchanged. It still drops a loose copy of a key that it publishes. The box must run this version. -
lager ssh-setupsuggested a sudoers grant on a box that a control plane manages. It gave that advice when the key did not register in the key directory of the box. That grant lets a box account add its own key, which no control plane approves or revokes. Nowssh-setupwarns that the key lasts only until the control plane rebuildsauthorized_keys. Register your public key with the control plane instead.
Improvements
-
From the next release on, a box image pull downloads only the layers that the release
changes. The release workflow now keeps its build cache in the container registry. This
release fills that cache, so its first pull is still a full download.
lager installpulls a release image by default, andlager updatepulls one with--pull. -
The
lager-clipackage contains no third-party code. The CLI computes its HDLC frame checksum withbinascii.crc_hqxfrom the Python standard library. The wheel and the sdist now include the full text of the Apache License 2.0.
Known Limitations
-
The Net Manager TUI has no channel picker. It adds an FT2232H or FT4232H net on channel
A. Uselager nets add --interfacefor another channel. -
lager nets add-batchdrops theparamsof a net, includinginterface(#516). Add these nets one at a time withlager nets add. - The channels of one FTDI part share one device lock. Commands on two channels of one part run one at a time.
-
A slow auth server can delay gated boxes in
lager boxes(#539). When the auth server does not answer, a gated box can showno response.

