Commit Graph

2843 Commits

Author SHA1 Message Date
Matthias Grob 0e9d563570 fix(mavlink): limit ADSB transponder reporting to 5Hz to not spam the link (#26733)
Note that internally higher update rates are likely also not useful but this needs to be carefully checked with the interface. It seems like the ADSB driver keeps track of what to publish when which is not a scalable/well-testable solution.
2026-03-14 00:57:07 -08:00
Ramon Roche e303e4ccfb mavlink: log handler cleanup: remove unused filepath and opendir
- Use %*s in state_listing() to skip filepath that was parsed but never used
- Remove unused opendir()/closedir() in log_entry_from_id()

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-03-13 18:08:29 -07:00
Ramon Roche 616b25a280 mavlink: fix stack buffer overflow in log handler filepath parsing
- Size LogEntry.filepath to PX4_MAX_FILEPATH instead of hardcoded 60 bytes
- Add width specifier to sscanf calls to prevent buffer overflow
- Move platform defines from .cpp to .h for reuse
- Add static_assert to enforce scanf width < buffer size at compile time

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-03-13 18:08:29 -07:00
Ramon Roche 73884312da fix(mavlink): remove all stale mavlink_tests references
The mavlink_tests module was deleted in 1009268d31 but several
references were left behind, breaking builds on all targets.

Removed:
- CMakeLists.txt: add_subdirectory(mavlink_tests)
- mavlink_ftp.cpp: #include of deleted mavlink_ftp_test.h
- mavlink_ftp.h: MavlinkFtpTest forward decl and friend class
- posix-configs/SITL/init/test/test_mavlink: dead init script
- sitl_tests.cmake: sitl-mavlink CTest target
- install-voxl.sh: px4-mavlink_tests symlink

Ref: https://github.com/PX4/PX4-Autopilot/issues/26738
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-03-13 10:49:02 -07:00
Ramon Roche afd327b322 fix(mavlink): correct session validation in FTP write and burst operations
Use logical OR (||) instead of AND (&&) in _workWrite() and _workBurst()
session validation, matching the correct logic already used in _workRead()
and _workTerminate(). The AND operator allowed operations to proceed with
an invalid session ID as long as a valid file descriptor existed.

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-03-13 09:34:27 -07:00
Ramon Roche 1009268d31 refactor(mavlink): remove dead FTP unit test code
Remove the old MAVLINK_FTP_UNIT_TEST infrastructure that has been dead
code for years (not enabled in any board config). This includes:

- src/modules/mavlink/mavlink_tests/ directory (test suite, CMakeLists)
- All #ifdef MAVLINK_FTP_UNIT_TEST blocks in mavlink_ftp.cpp
- set_unittest_worker() callback mechanism in mavlink_ftp.h
- Conditional uAvionix include in mavlink_bridge_header.h

The test suite will be ported to GTest as a follow-up.

Ref: https://github.com/PX4/PX4-Autopilot/issues/26738
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-03-13 09:31:20 -07:00
Ramon Roche 4e6e2c059c fix(mavlink): reject path traversal sequences in FTP operations
Add _validatePath() that rejects paths containing ".." components,
preventing directory traversal outside the FTP root directory.
Applied to all FTP operation handlers (list, open, remove, truncate,
rename, mkdir, rmdir, CRC32).

Fixes GHSA-fh32-qxj9-x32f, GHSA-pm28-2j4f-8jxv

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-03-13 09:31:20 -07:00
Matthias Grob 6361b4cd7e Unify motor function mapping checks to only depend on the interface 2026-03-12 18:30:51 +01:00
Jacob Dahl 55b62e5f2b fix(mavlink): use >= for depth check to match MAX_DEPTH semantics 2026-03-11 19:50:36 -07:00
Jacob Dahl 8d99569643 fix(mavlink): bound recursion depth in delete_all_logs
Prevent potential stack overflow from symlink loops or deeply nested
directories by capping recursion to 3 levels. Also fixes dot-entry
skipping to use strcmp instead of prefix check, and deduplicates the
filepath construction.
2026-03-11 19:50:36 -07:00
yulianoifa-mobius 358574f9f6 feat(mavlink): mavlink signing support (#25284)
* Applying PR #17084

* Comitting missing changes

* Adding incoming SETUP_SIGNING handling

* Adding proper message decoding for SETUP_SIGNING

* Adding persistance of sign key in chunks of 32 bits into parameters

* Allowing SETUP_SIGNING to be handled only on usb_uart

* Removing unused type and variable

* Changing the default for Mavlink Timestamp

* Fixing styling

* Merging

* Merging submodules

* Replacing parameters with sdcard storage for secured key and ts

* Fixing styles

* Isolating signing related items in separate class

* Adding new files

* Syncing with main

* Fixing styles

* Changing the signing logic to work only if key and ts properly initialized, adding store the ts on stop

* Updated submodules to latest versions

* Updated gz to proper version

* libfc-sensor-api to proper version

* libcanard to proper version

* Updated fuzztest to proper version

* Updated public_regulated_data_types to proper version

* Updated mip_sdk to proper version

* Updated pydronecan to proper version

* Updated rosidl to proper version

* Fixing styles

* Fixing cyclonedds version

* initializing sign control in the member declaration

* Update src/modules/mavlink/mavlink_main.h

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>

* Fixing comments

* Fixing duplicate method

* Fixing defines

* Fixing styles

* Fixing the define errors

* replace duplicate logic with write_key_and_timestamp() function

* add docs

* Update docs/en/mavlink/message_signing.md

Co-authored-by: Julian Oes <julian@oes.ch>

* Update src/modules/mavlink/mavlink_sign_control.cpp

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>

* Update src/modules/mavlink/mavlink_sign_control.h

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>

* Update docs/en/mavlink/message_signing.md

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>

* rename to MAV_SIGN_CFG, fix copyright dates, fix docs SHA type, rename secrets file

* fix newlines

---------

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
Co-authored-by: Julian Oes <julian@oes.ch>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2026-03-09 12:47:03 -08:00
ttechnick 1dadd92a86 refactor(mavlink): reword mission transfer timeout 2026-03-09 16:26:41 +01:00
Matthias Grob 18a07d2d7c mavlink_receiver: revert blanket command rejection by frame enum (#26626) 2026-03-03 12:09:47 -09:00
zhaosheng.tan d495014878 mavlink: fix invalid param handle check in send_autopilot_capabilities
Fix logic error where `mnt_mode_in` (value) was checked against `PARAM_INVALID`
instead of `param_handle`. This caused `param_get` to be called with an invalid
handle if the parameter was missing.
2026-02-27 19:32:32 -09:00
Marco Hauswirth fab9874183 Mavlink: GLOBAL_POSITION for aux positioning (#26307)
* mavlink: add GLOBAL_POSITION message handling
- Add handler for incoming GLOBAL_POSITION MAVLink messages
- Publish received positions to aux_global_position uORB topic
- Update GLOBAL_POSITION stream to use aux_global_position topic
* correctly handle multi AGP in mavlink pub
* move from GLOBAL_POSITION to GLOBAL_POSITION_SENSOR
* mavlink: update submodule to include GLOBAL_POSITION_SENSOR in common.xml
2026-02-27 17:50:45 +01:00
Hamish Willee 8a8496d57e mavlink:COMMAND_INT - reject invalid frame (#26408)
* mavlink:COMMAND_INT - reject invalid frame

* Add msg version for new command and use

* Delete msg/px4_msgs_old/msg/VehicleCommandAck.msg:Zone.Identifier

* Fix up translation

* fix: translation_node build

Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>

---------

Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
Co-authored-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2026-02-25 20:29:59 +13:00
Marco Hauswirth 8a9be9a8f0 ekf2: update logger, mavlink, DDS, and replay for AuxGlobalPosition
Update integrations to use the new AuxGlobalPosition message instead
of the VehicleGlobalPosition-based aux_global_position topic.
2026-02-20 17:43:45 +01:00
Claudio Chies 05de941399 Add Traffic Avoidance System (ADSB/FLARM) Arming Check (#26390)
* Add traffic avoidance system checks

* Update msg/px4_msgs_old/msg/VehicleStatusV1.msg

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>

* docs: add arming check for traffic avoidance systems in ADS-B/FLARM documentation

* fix formating

* trafficAvoidanceCheck: switch case for configuration options

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
Co-authored-by: Matthias Grob <maetugr@gmail.com>
2026-02-18 17:37:03 +01:00
Matthias Grob adc9a6d35d Report nav_state of mission executor via MAVLink 2026-02-18 17:37:03 +01:00
Eric Katzfey eb43d21730 voxl2_io: Added UART passthru 2026-02-08 20:51:31 -07:00
Hamish Willee 271d3f01a3 Update mavlink/mavlink to latest[A (#26410) 2026-02-06 08:17:44 +13:00
Pernilla 8d97013822 Mavlink: increase stream rate of GIMBAL_DEVICE_ATTITUDE_STATUS 2026-01-30 13:06:58 +01:00
David Meng 1cfab8feb2 mavlink: odometry: Initialize the covariance matrix to 0 to prevent the entire matrix from becoming invalid after mavros performs coordinate transformation. (#26321) 2026-01-24 12:52:13 -09:00
Julian Oes aed8a78c1d mavlink: accept broadcast commands (#26311)
I think - per MAVLink spec - PX4 ought to accept broadcast commands
which are aimed at system ID 0, so anyone/all.
2026-01-23 06:55:34 +13:00
Julian Oes 02103b9100 mavlink: fix deadlock on USB disconnect/reconnect (#26297)
Commit 5fe82aa added mutex protection in ~Mavlink() to fix a race
condition when start_helper() deleted an instance without holding the
mutex. However, this caused a deadlock because stop_command() and
destroy_all_instances() already hold mavlink_module_mutex when calling
delete, and the mutex is non-recursive.

Fix by moving instance cleanup to the callers:
- All callers now hold the mutex and remove the instance from
  mavlink_module_instances BEFORE calling delete
- The destructor no longer touches mavlink_module_instances
- Event handoff remains in destructor (works because `this` is already
  removed from the list when destructor runs)

This hopefully fixes the original race condition while avoiding the
deadlock that caused USB mavlink to hang on reconnect.
2026-01-19 12:25:50 -09:00
fakerror f4247aee58 rover_mecanum: enable yaw control via MAVLink SET_POSITION_TARGET commands (#26218)
* rover_mecanum: enable yaw control via MAVLink SET_POSITION_TARGET commands

* Maintain the original judgment conditions

---------

Co-authored-by: V <null>
2026-01-09 08:08:53 -05:00
Julian Oes aa850d5c1c mavlink: don't send out GPS_GLOBAL_ORIGIN too early (#26115)
This prevents PX4 from sending out the GPS_GLOBAL_ORIGIN message
immediately when a SET_GPS_GLOBAL_ORIGIN message arrives.

Instead, we apply the new origin in the EKF, and only then send out
the new origin, which is much more intuitive and doesn't confuse a user
of the API.
2025-12-30 07:31:00 +13:00
Tom Willow 1e618a7eb0 gps: use UTC timestamp when GPS fixed (#26127) 2025-12-26 15:50:37 -09:00
Julian Oes 5fe82aa485 [Sponsored by CubePilot] Try to fix potential mavlink segfaults on USB disconnect (#26083)
* mavlink: fix potential use-after-free

If a mavlink instance is force stopped, the main thread might be out of
scope and the receiver thread would be doing a use-after-free.

Instead the receiver thread needs to check its own _should_exit flag.

* mavlink: protect shared data by mutex in dtor

I'm not sure if this potentially fixes any of the segfaults we have seen
on stopping mavlink instances but it potentially could matter if the
mavlink_receiver thread is killed after a timeout and tries to send any
messages as a zombie.
2025-12-12 12:24:02 -09:00
mahima-yoga ca83b8330d autotune: enable autotune in mission mode
When operating fully autonomously (i.e., without manual control or a guaranteed link to the ground station), tuning a vehicle can be difficult since the current autotune process requires either RC input or a GCS command. For these scenarios, it it useful to be able to start autotune inside a mission.
2025-12-05 14:03:10 +01:00
Julian Oes 0618b0b529 mavlink: GNSS_INTEGRITY and GLOBAL_POSITION are WIP (#26012)
These two messages are still work in progress, only defined in the
development.xml MAVLink dialect. Therefore, we need to ifdef them.
2025-11-28 11:41:38 +13:00
Onur Özkan 8874d533bb add fast-path mavlink forwarding for single instance
Counts active mavlink instances atomically when instances
are claimed or released and uses that value to early-exit
the forwarding logic.

It means on single-instance scenarios this will skip taking
the mavlink_module_mutex lock and will not iterate over
mavlink_module_instances on every received message.

Signed-off-by: Onur Özkan <work@onurozkan.dev>
2025-11-26 10:35:40 -09:00
Michael Schaeuble a2299b02c8 modes: make available modes user selectable with a registration option
Some modes should only be run within the context of a mode executor and the user should not be able
to select them in the GCS. With this change, the external component registration request can be
used to set if a mode is selectable or not.
2025-11-26 10:04:53 +01:00
Julian Oes 276cab8d3c mavlink: don't silently ignore mavlink dev streams
I don't think it makes sense to ignore required streams that easily.

If we do use some streams that are only in the MAVLink development.xml
dialect, then we will have to properly and explicitly ifdef them
everywhere that we use them. Otherwise, this basically means that we
will just swallow this warning on most (non mavlink-dev) platforms which
can mask issues.
2025-11-26 09:51:15 +01:00
Julian Oes 8f3442b358 mavlink: update submodule 2025-11-20 23:23:40 -09:00
Henry Kotzé 25138d0a12 MavlinkTimeSync: Specify compid & Sysid (#25949)
Co-authored-by: henrykotze <henry@autonosky.com>
Co-authored-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-11-20 12:43:46 +00:00
Jacob Dahl efbc9e64a4 mavlink: esc: fix ESC_STATUS and ESC_INFO message emission. (#25849)
* mavlink: esc: fix ESC_STATUS and ESC_INFO message emission.

Fixes mavlink messages emission for ESC messages. Actuator --> MotorNumber mapping was not respected, the mavlink messages should be reporting the ESC status in motor number order not actuator order.

* Update src/modules/mavlink/streams/ESC_STATUS.hpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/modules/mavlink/streams/ESC_INFO.hpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove dependency on mixer_module/output_functions.hpp

* add actuator function definitions to EscReport.msg

* clean up

* add missing header

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-20 06:51:42 +13:00
Beat Küng f9595319b8 mavlink: remove ODOMETRY stream from ONBOARD_LOW_BANDWIDTH mode
It's not used in our setups and it reduces the TX rate from 11.8 KB/s to
4.4 KB/s on a bench setup.
2025-10-29 13:53:09 -04:00
Hamish Willee 7d509d832a Update to latest mavlink that includes support for WIP warnings (#25804)
* Update to latest mavlink that includes support for WIP warnings

* mavsdk_tests: pass build for now

We need this until the figure eight stuff has moved to common.

---------

Co-authored-by: Julian Oes <julian@oes.ch>
2025-10-29 12:43:10 +11:00
Jacob Dahl d30fa62f40 mavlink: take in @dakejahl 's refactoring and extend it 2025-10-21 10:24:30 +02:00
Alexander Sherikov 6e8f61c551 various cmake fixes (#25748)
- enable building in a cmake subdirectory:
    - use consistent path to "etc" in build directory
    - add a quick fix for mavlink inclusion with
      `mavlink/<version>/mavlink.h`, presumably the problem does not
      appear normally since somewhere the build root directory is added
      to include paths.
- install gazebo config and plugins, the goal is to enable packaging of
  PX4 sitl binaries.
- fix dependency on dds_topics.h generation in uxrce_dds_client:
  *** No rule to make target 'PX4-Autopilot/src/modules/uxrce_dds_client/dds_topics.h', needed by 'PX4-Autopilot/events/px4.json'.  Stop.
  https://github.com/PX4/PX4-Autopilot/issues/21788

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-10-17 11:11:00 -08:00
Hamish Willee f03131cfd3 MAVLink PARAM_ERROR support (#25699)
Co-authored-by: PX4BuildBot <bot@pixhawk.org>
2025-10-17 13:29:23 +11:00
Hamish Willee 104759b90c Update mavlink with more PARAM_ERROR values (#25772) 2025-10-16 14:09:02 +11:00
Alexander Lerach 376f52f51d mavlink: add som/fmu config params 2025-10-14 19:14:41 +02:00
Matthias Grob 7706aae67d mavlink_receiver: only switch outgoing MAVLink version to 2 if it was 1 before
to avoid the message that comes with it being spammed.
2025-10-14 18:38:02 +02:00
Matthias Grob 12035682d7 Use MAVLink v1 only as opt-in (#25583)
* Remove support for MAVLink 1

* Add back support for MAVLink 1 but don't default to it

* Update src/modules/mavlink/mavlink_params.c

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>

---------

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-10-13 20:58:34 -08:00
Hamish Willee 7565318107 Update MAVLink to latest (#25692)
Co-authored-by: PX4BuildBot <bot@pixhawk.org>
2025-10-01 10:54:18 -08:00
airpixel-cz 2b0ea50d16 mavlink: parameters: fix camera and cannode param message routing 2025-09-26 23:16:05 -08:00
Hamish Willee cbf39f5ceb msg: AirspeedValidated - uorb topic to standard (#25579)
* AirspeedValidated - uorb topic to standard

* Apply suggestions from code review

* Update msg/versioned/AirspeedValidated.msg

* Fix up links to renamed uORB constants

---------

Co-authored-by: PX4BuildBot <bot@pixhawk.org>
2025-09-25 11:02:02 +02:00
Louis-max-H e71faf38a0 Septentrio GNSS resilience reporting (#25012)
Co-authored-by: Tory9 <vvpost05@gmail.com>
2025-09-24 11:08:10 -04:00