Skip to content

v25.0

Latest
Compare
Choose a tag to compare
@jluebbe jluebbe released this 07 May 14:21
v25.0
6d8febb

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 the display option to qemu-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 and rsync in the SSHDriver.
  • 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 the AndroidFastbootDriver.

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 the DockerDaemon.
  • 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 by coordinator_address. The environment variable LG_CROSSBAR was replaced by LG_COORDINATOR.
  • The labgrid environment config option crossbar_realm is now obsolete as well as the environment variable LG_CROSSBAR_REALM.
  • The coordinator is available as labgrid-coordinator (instead of crossbar 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

Full Changelog: v24.0...v25.0