Hi folks,
The 2026.01 tag has been pushed to master on gitlab.com/lava/lava.
.deb packages have been built in GitLab CI and are published at
https://apt.lavasoftware.org/release
Docker images for amd64 and arm64 have been built in GitLab CI and
are available from
https://registry.gitlab.com/
and
https://hub.docker.com/u/lavasoftware
Changes in this release
==================
# Device-types
## New device-types
* imx952-19x19-evk
* osm-imx93
* r8a779g3-sparrow-hawk
* juno-r2
* mt8188-geralt-ciri-sku4
* RZV2L
# LAVA Server
## LAVA monitoring
Two scripts for exporting test job data and device transitions as JSON was
added.
The scripts can be called with:
```shell
lava-server manage testjob_exporter --output-dir data/
lava-server manage transition_exporter --output-dir data/
```
The json files can then be consumed by [lava-dashboard](
https://gitlab.com/lava/dashboard/lava-dashboard) to generate graphs of the
device and job usages.
## UI improvements
Interminent worker to server communications errors used to be displayed at
the
top of the job details page. This is now collapsed by default for complete
jobs
and visible for incomplete jobs.
A link to the failing job is now available when the health of the device is
bad
(after a failed check for the device).
Improve test job table filtering
The following views are now properly checking properly user permissions::
* Plain device dictionary download
* Device health check list
* Worker details
## XMLRPC API
Allow to add a reason when updating the health. This was already available
in
the web interface and the REST API.
The reason of the latest health change is also shown on the device details
page.
# LAVA Worker
## Labgrid support
LAVA now supports running labgrid tests natively or within the LAVA Docker
test shell.
Native run example:
```shell
$ cd share/labgrid2lava/
$ python3 ./converter.py -l examples/uboot.yaml -o output/ -d
bcm2837-rpi-3-b-32
$ sudo lava-run --job-id 1 \
--output-dir ./1 \
--device ./output/device.yaml \
./output/job.yaml
```
Job definition example with LAVA Docker test shell:
```yaml
actions:
- test:
docker:
image: python:3.13
local: true
definitions:
- repository: https://github.com/Linaro/test-definitions.git
from: git
path: automated/linux/labgrid/labgrid.yaml
parameters:
UPDATE_ENV: true
LG_ENV: "./tests/example/env.yaml"
LG_TEST: "./tests/example/test_shell_strategy.py"
DEB_PKGS: "usbrelay"
name: labgrid-shell-strategy-example
```
## Misc
When manipulating cpio archives all operations are performed using
`fakeroot`.
This is fixing issues with devices nodes (like /dev/null) that where lost in
the process.
## Docker test shell
### Environment variables
Boot and test character delay are now available as environment variables
inside
the docker test shell: `LAVA_BOOT_CHARACTER_DELAYS` and
`LAVA_TEST_CHARACTER_DELAYS`.
### Serial disconnect
Test shell running in docker can now disconnect device connection to allow
test definition to use it. Test shell also has access to connection
specific environment variables.
Add this snippet to the job definition:
```yaml
- test:
docker:
image: debian:trixie
disconnect_connection: True
```
## FVP
Add support for running fvp shell commands. The `commands` are executed in
the
FVP Docker container after the FVP model has started. It allows running
custom
shell commands or a script that is already in the container to communicate
with
the model.
## usbg-ms deploy action
Allow users to run `usbg_ms_commands.disable` command in the job
definition, to disable usbg-ms whenever needed.
In order to call this function, add to the job definition:
```yaml
- command:
name: usbg_ms_commands_disable
```
## Boot action
### boot to bootloader
By default LAVA will reset the previous connection and the board power when
executing
the boot action. Users can skip this step by adding `reset_connection:
false` and `reset_device: false` respectively.
This version allows to skip reset with the boot to bootloader action.
### Transfer overlay
LAVA will now check that the overlay is properly downloaded and deployed
when using `transfer_overlay`. In case of failure, LAVA will fail the job.
## List of expected tests
List of expected tests is now supported in test definitions or job
definitions. Missing test cases are reported as fail, while extra test
cases are logged as warnings. These cases are always checked and reported
either after the test finishes or right before the job exists on errors.
All three test actions (definitions, monitors and interactive) support
providing the list in the same way.
Test definition example:
```yaml
metadata:
format: Lava-Test Test Definition 1.0
name: expected-testdef-example
run:
steps: []
expected:
- tc1
- tc2
- tc3
- tc4
```
Job definition example:
```yaml
- test:
definitions:
- repository: https://gitlab.com/lava/functional-tests.git
from: git
path: functional/expected-tests.yaml
name: expected-tests
expected:
- tc1
- tc2
```
## Fixed SShSession action raising exception
It became broken in 2025.10 release.
## Fixed RunNodebooterContainer action raising exception
It was broken since 2023.06 release.
# CI
Enable more pylint checks and fix code that wasn't compliant before.
Enabled checks include: C0121, C0123, C0201, C0206, C0207, C2801, R1701,
R1718, R1719, R1721, R1728, R1729, R1731, R1733, R1734, R1735, W0101,
W0102, W0106, W0108, W0127, W0130, W0640, W0706, W0715, W3101 and W4701
More details on the meaning of the codes can be found in [pylint wiki](
http://pylint-messages.wikidot.com/all-codes)
Rgds
--
Rémi Duraffort
Principal Tech Lead
LAVA Tech Lead
Automation Software Team
Linaro