Skip to content

Releases: mavlink-router/mavlink-router

v4

13 Feb 17:19
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v3...v4

mavlink-router 3

13 Nov 00:01
Compare
Choose a tag to compare

Summary

This is a big release following new features and several bug fixes. It's recommended that
users upgrade to this release for both ArduPilot and PX4 flight stacks.

A note on compatibility: for ArduPilot, due to the way the log stream over mavlink is handled, it's
recommended to set LOG_DISARMED=1 when the option to log only while armed is set
in mavlink-router.

Changes

Configuration file

  • Rename the Filter option in the configuration file to AllowMsgIdOut to better indicate
    what that is doing. It also extends its handling to all kind of endpoint, fix corner cases
    and add proper documentation
  • Add AllowSrcCompOut, AllowSrcSysOut, AllowMsgIdIn, AllowSrcCompIn, AllowSrcSysIn
    to allow messages based on system/component/message IDs.
  • Add proper "sniffer" functionality: this was previously thought to be covered by the "eavesdrop"
    setting on Endpoint, but that had never been properly implemented. This is now implemented through
    a SnifferSysid in configuration file, pointing to a system id where to forward all traffic to.
  • Add "redundant data links": the configuration section for the endpoint has a new Group
    setting. Endpoints with the same Group are considered to be connecting the same systems,
    thus acting as redundant data links. The routing of messages is then tweaked to avoid cycles
    between these endpoints

General

  • Update mavlink module
  • Improve debug log output
  • Fix routing when sending messages to specific components
  • Improve compatibility with musl
  • Improve integration with github actions:
    • Cover more distros and C/C++ libraries, particularly musl.
    • Add artifacts and release binaries
  • Fix polling for events leading to not handling some of them
  • Improve installation instructions in the README, also covering more distros: Debian, Ubuntu,
    Fedora and Archlinux
  • Enable IPv6
  • Do not exit when client disconnects from TCP - just like new connections are accepted
    on the fly, also allow clients to disconnect without treating this as critical event. UART
    disconnection are still considered fatal as those should not normally happen.
  • Set TCP_NODELAY on TCP to reduce latency
  • Fix TCP reconnection logic
  • Fix warnings when platform serial ports instead of USB-serial: there is not USB-related
    tweaks to do for those related to the latency
  • Fix ArduPilot logging: do not ack and nack the same package
  • Switch to meson as build system
  • Use pre-generated mavlink library from its repository
  • Adopt clang-format to have a uniform coding style throughout the codebase
  • Improve how configuration is handled internally by mavlink-router which should avoid
    past mistakes
  • Do not spread mavlink headers throughout the codebase, but rather use them from one place
  • Fix crash when exiting due to log handlers needing to send info to the flight stack
  • Add LogSystemId to set what is the system id we should handle logs for. This improves
    the handling of multiple FC connected to mavlink-router
  • UDP-client: switch back to broadcast on inactivity. When using UDP this allows to change
    the GCS being used without worrying about IP changes due to using multiple devices.
  • Fix error when launching mavlink-router with a non-existent log directory: the error was
    also misleading, pointing to "no free disk space"
  • Reject messages on TCP when not connected

Thanks to all contributions and people involved in this release: Lucas De Marchi, Jannik Beyerstedt, Patrick José Pereira, olliw42, Pierre Kancir, bbworld, Julian Kent, Jonas Vautherin, DanielePettenuzzo, GerardHale, Guy Rodnay, Michael du Breuil, Ming Liu, OemerYilmazConsiderIt, Philipp Gorczak, Ryan Beall, Soof Golan, Stephen Dade, Windel Bouwman.

mavlink-router 2

26 Mar 16:07
Compare
Choose a tag to compare
  • Misc bug fixes on handling error handling paths and general cleanups
  • Log file is now changed to read-only when we are not saving flight stack
    log anymore
  • New "LogMode" configuration to allow logging only when armed
  • MavlinkDialect now defaults to "auto": we set it based on the flight stack:
    either ArduPilot or PX4
  • Fix logging from vehicles with systemd ID not equal 1. We will now get the
    system ID from the first message heartbeat received with MAV_COMP_ID_AUTOPILOT1
    component ID
  • Gracefully handle restarts, to reuse the same IP/port.
  • Gracefully handle errors when the UART device disappears (e.g. when disconnecting
    a USB-serial dongle)
  • Make mavlink-router compatible with musl libc
  • Tweak USB-serial configuration to ask Linux to reduce the latency
  • Add "Filter" configuration to endpoints: this allows endpoints to declare interest
    in only a subset of messages by specifying the message IDs. This allows reducing the
    the link traffic and thus mixing for e.g. low bandwidth links in a high bandwith
    network
  • We now plunge a background sync() call every 1 second when logging to avoid losing
    log data - default OS configuration in Linux is 30 seconds.
  • Always check CRC of the messages arriving independently of the link (UDP vs UART).
    Previously we would skip checking on UDP because the network layer guarantees we
    aren't receiving garbage and it's expected to have 1 message per packet. However
    we don't enforce the 1 message per packet and the source of the message
    could be unintentionally sending garbage when, for example it relays
    messages from other lossy links.
  • New MinFreeSpace and MaxLogFiles configuration to control logging maximum size
    and rotation

v1

19 Oct 20:30
Compare
Choose a tag to compare
v1
  • Route mavlink messages between endpoints
  • Support UART and UDP endpoints for flight stack (both ArduPilot and PX4) and UART, UDP and TCP endpoints for other components
  • TCP endpoints are automatically added/removed upon connection
  • Save flight stack logs for ArduPilot (binlog) and PX4 (ulog)
  • Minimal/opportunistic parsing on MAVLink messages to avoid overhead