As announced before, this is the first release using gRPC instead of crossbar/autobahn for communication between client/exporter and coordinator.
Crossbar/autobahn are unfortunately not very well maintained anymore. In labgrid, the crossbar component was moved to its own virtualenv to cope with the high number of conflicts caused by outdated dependencies. Also, Python 3.13 is not supported in an official crossbar release.
That's why labgrid moves to gRPC with this release. gRPC is a well maintained RPC framework with a lot of users. As a side effect, the message transfer is more performant and the import times are shorter.
This is a breaking change. Version 25.0 exporters / coordinators / clients can not communicate with Version 24.0 and earlier exporters / coordinators / clients. All exporters, coordinators and clients in a deployment have to be updated at the same time. See the "Breaking changes in 25.0" section below for more information.
New Features in 25.0
- All components can be installed into the same virtualenv again.
- Add support for Python 3.13.
- The
QEMUDriver
now supports setting thedisplay
option toqemu-default
, which will neither set the QEMU-display
option or pass along-nographic
. - The amount of buffering in GStreamer video pipelines was reduced to improve latency for
USBVideoDriver
network streaming. - The
RawNetworkInterfaceDriver
now supports live streaming of captured packets, setting/getting various configuration options and reporting statistics. - Add support for LogiLink UA0379 / Microdia cameras to the
USBVideoDriver
. - Add more backends to the
NetworkPowerDriver
:- Gude 87-1210-18
- Digital Loggers PDUs via the REST API
- Ubiquity mFi mPower power strips
- Add support for sigrok's channel-group parameter.
- Make USB hubs exportable for easier monitoring of large bus topologies.
- Add support for Digital Loggers PDUs via the REST API.
- Add support for custom paths for
ssh
,scp
,sshfs
andrsync
in theSSHDriver
. - Make the
QEMUDriver
configuration more flexible and improve startup error reporting. - Support labgrid-client power via GPIOs.
- The Getting Started chapter in the docs was improved.
- The systemd service for the labgrid-exporter is now configured with
Restart=always
. - Support listing only unused/released places with
labgrid-client places
. - Replace deprecated SmartStrip class with IotStrip in the tplink power backend.
- Add a
erase()
method to theAndroidFastbootDriver
.
Bug fixes in 25.0
- Fix ShellDriver to correctly match network interfaces names with dots and/or dashes in
get_default_interface_device_name()
. - Fix reservations for multiple matching tags or values starting with a number.
- Fix concurrent access to USB HID relays.
- Fix support for networks without SSID in the agent used by the NetworkInterfaceDriver.
- Add new stlink USB IDs for the
USBDebugger
resource. - Fix code coverage reporting and submit test results to codecov.
- Fix waiting for
NetworkService
created by theDockerDaemon
. - Fix error handling for missing interfaces in the
NetworkInterfaceDriver
's agent. - Fix
pip install
for archives auto-generated by GitHub.
Breaking changes in 25.0
Maintaining support for both crossbar/autobahn as well as gRPC in labgrid would be a lot of effort due to their different architectures. Therefore, hard migration to gRPC is required.
Previously, the coordinator was running as a component started by the crossbar. Now, it is a standalone service which exposes a gRPC API directly.
Due to the gRPC migration, 25.0 includes the following breaking changes:
- The labgrid environment config option
crossbar_url
was replaced bycoordinator_address
. The environment variableLG_CROSSBAR
was replaced byLG_COORDINATOR
. - The labgrid environment config option
crossbar_realm
is now obsolete as well as the environment variableLG_CROSSBAR_REALM
. - The coordinator is available as
labgrid-coordinator
(instead ofcrossbar start
). No additional configuration file is required. - The systemd services in
contrib/systemd/
were updated.
To update your deployment to 25.0, you'll need to:
- Update the coordinator, all clients and all exporters to the new release.
- Start
labgrid-coordinator
directly (instead of via the crossbar configuration file). If needed, you can set the listening address using the--listen
option. - Update any existing client and exporter configuration by replacing the crossbar URL with the coordinator address.
Other breaking changes include:
- Support for Python 3.8 was dropped.
- The siglent power backend is deprecated because it uses the no longer maintained vxi11 module which again uses the deprecated (and in Python 3.13 removed) xdrlib. See issue #1507.
Known issues in 25.0
- gRPC sometimes prints a confusing error message during shutdown. We've worked around this by closing stderr on shutdown. See issue #1544 and PR #1605.
New Contributors
- @enkiusz made their first contribution in #1491
- @tretter made their first contribution in #1494
- @nvincent-vossloh made their first contribution in #1518
- @QSchulz made their first contribution in #1543
- @moto-timo made their first contribution in #1512
- @idan-arm made their first contribution in #1591
- @pslldq made their first contribution in #1562
- @alextercete made their first contribution in #1558
- @pmelange made their first contribution in #1611
- @lemoer made their first contribution in #1619
- @istepic made their first contribution in #1581
- @hundeboll made their first contribution in #1638
Full Changelog: v24.0...v25.0