From 8f2c36689d77e835a6e371be0f25032a76bfed83 Mon Sep 17 00:00:00 2001 From: Alexander Lerach Date: Wed, 27 Aug 2025 15:44:36 +0200 Subject: [PATCH] logging: allow logging backend config * logging: allow logging backend config * correct board comments * documentation: updated logging section --- ROMFS/px4fmu_common/init.d/rc.logging | 25 ++++++++++++++++++- .../auterion/fmu-v6s/init/rc.board_defaults | 2 +- .../kakuteh7mini/init/rc.board_defaults | 4 +-- .../holybro/kakuteh7v2/init/rc.board_defaults | 4 +-- docs/en/dev_log/logging.md | 5 ++-- src/lib/parameters/param_translation.cpp | 13 ++++++++++ src/modules/logger/params.c | 24 +++++++++++++++++- 7 files changed, 68 insertions(+), 9 deletions(-) diff --git a/ROMFS/px4fmu_common/init.d/rc.logging b/ROMFS/px4fmu_common/init.d/rc.logging index d5a7bf293a..621dd36712 100644 --- a/ROMFS/px4fmu_common/init.d/rc.logging +++ b/ROMFS/px4fmu_common/init.d/rc.logging @@ -8,6 +8,9 @@ # End Setup for board specific configurations. # ############################################################################### +# +# Set SD logging mode +# if param compare SDLOG_MODE 1 then set LOGGER_ARGS "${LOGGER_ARGS} -e" @@ -28,8 +31,28 @@ then set LOGGER_ARGS "${LOGGER_ARGS} -a" fi +# +# Set logging backend +# +if param compare SDLOG_BACKEND 1 +then + set LOGGER_ARGS "${LOGGER_ARGS} -m file" +fi -if ! param compare SDLOG_MODE -1 +if param compare SDLOG_BACKEND 2 +then + set LOGGER_ARGS "${LOGGER_ARGS} -m mavlink" +fi + +if param compare SDLOG_BACKEND 3 +then + set LOGGER_ARGS "${LOGGER_ARGS} -m all" +fi + +# +# Start logger if any logging backend is enabled +# +if ! param compare SDLOG_BACKEND 0 then logger start -b ${LOGGER_BUF} -t ${LOGGER_ARGS} fi diff --git a/boards/auterion/fmu-v6s/init/rc.board_defaults b/boards/auterion/fmu-v6s/init/rc.board_defaults index df993da594..012605bee3 100644 --- a/boards/auterion/fmu-v6s/init/rc.board_defaults +++ b/boards/auterion/fmu-v6s/init/rc.board_defaults @@ -14,7 +14,7 @@ param set-default SYS_DM_BACKEND 1 # Set TELEM1 as default mavlink connection param set-default MAV_0_CONFIG 0 # Disable logger writing to FRAM, only stream over MAVLINK -set LOGGER_ARGS "-m mavlink" +param set-default SDLOG_BACKEND 2 # 200kOhm/10kOhm voltage divider on V_BAT param set-default BAT1_V_DIV 21 diff --git a/boards/holybro/kakuteh7mini/init/rc.board_defaults b/boards/holybro/kakuteh7mini/init/rc.board_defaults index a0ccc7e101..f2534d1709 100644 --- a/boards/holybro/kakuteh7mini/init/rc.board_defaults +++ b/boards/holybro/kakuteh7mini/init/rc.board_defaults @@ -38,5 +38,5 @@ param set-default SYS_DM_BACKEND 1 # Ignore that there is no SD card param set-default COM_ARM_SDCARD 0 -# Don't try to log onto SD card -param set-default SDLOG_MODE -1 +# Disable logging +param set-default SDLOG_BACKEND 0 diff --git a/boards/holybro/kakuteh7v2/init/rc.board_defaults b/boards/holybro/kakuteh7v2/init/rc.board_defaults index a0ccc7e101..f2534d1709 100644 --- a/boards/holybro/kakuteh7v2/init/rc.board_defaults +++ b/boards/holybro/kakuteh7v2/init/rc.board_defaults @@ -38,5 +38,5 @@ param set-default SYS_DM_BACKEND 1 # Ignore that there is no SD card param set-default COM_ARM_SDCARD 0 -# Don't try to log onto SD card -param set-default SDLOG_MODE -1 +# Disable logging +param set-default SDLOG_BACKEND 0 diff --git a/docs/en/dev_log/logging.md b/docs/en/dev_log/logging.md index de8de43b9e..e2c91e56d5 100644 --- a/docs/en/dev_log/logging.md +++ b/docs/en/dev_log/logging.md @@ -35,14 +35,15 @@ The parameters you are most likely to change are listed below. | Parameter | Description | | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [SDLOG_MODE](../advanced_config/parameter_reference.md#SDLOG_MODE) | Logging Mode. Defines when logging starts and stops.
- `-1`: Logging disabled.
- `0`: Log when armed until disarm (default).
- `1`: Log from boot until disarm.
- `2`: Log from boot until shutdown.
- `3`: Log based on the [AUX1 RC channel](../advanced_config/parameter_reference.md#RC_MAP_AUX1).
- `4`: Log from first armed until shutdown. | +| [SDLOG_MODE](../advanced_config/parameter_reference.md#SDLOG_MODE) | Logging Mode. Defines when logging starts and stops.
- `0`: Log when armed until disarm (default).
- `1`: Log from boot until disarm.
- `2`: Log from boot until shutdown.
- `3`: Log based on the [AUX1 RC channel](../advanced_config/parameter_reference.md#RC_MAP_AUX1).
- `4`: Log from first armed until shutdown. | +| [SDLOG_BACKEND](../advanced_config/parameter_reference.md#SDLOG_BACKEND) | Logging Backend (bitmask). Setting a bit enables the corresponding backend. If no backend is selected, the logger is disabled.
- bit `0`: SD card logging.
- bit `1`: Mavlink logging. | [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) | Logging profile. Use this to enable less common logging/analysis (e.g. for EKF2 replay, high rate logging for PID & filter tuning, thermal temperature calibration). | | [SDLOG_MISSION](../advanced_config/parameter_reference.md#SDLOG_MISSION) | Create very small additional "Mission Log".
This log can _not_ be used with [Flight Review](../log/flight_log_analysis.md#flight-review-online-tool), but is useful when you need a small log for geotagging or regulatory compliance. | Useful settings for specific cases: - Raw sensor data for comparison: [SDLOG_MODE=1](../advanced_config/parameter_reference.md#SDLOG_MODE) and [SDLOG_PROFILE=64](../advanced_config/parameter_reference.md#SDLOG_PROFILE). -- Disabling logging altogether: [SDLOG_MODE=`-1`](../advanced_config/parameter_reference.md#SDLOG_MODE) +- Disabling logging altogether: [SDLOG_BACKEND=`0`](../advanced_config/parameter_reference.md#SDLOG_BACKEND) ### Logger module diff --git a/src/lib/parameters/param_translation.cpp b/src/lib/parameters/param_translation.cpp index 01879113d6..3a8d63bbf6 100644 --- a/src/lib/parameters/param_translation.cpp +++ b/src/lib/parameters/param_translation.cpp @@ -150,5 +150,18 @@ param_modify_on_import_ret param_modify_on_import(bson_node_t node) } } + // 2025-08-22: translate SDLOG_MODE (disabled) to SDLOG_BACKEND (no logging backend) + { + if (strcmp("SDLOG_MODE", node->name) == 0) { + if (node->i32 == -1) { + node->i32 = 0; + + int32_t sdlog_backend_val = 0; + param_set(param_find("SDLOG_BACKEND"), &sdlog_backend_val); + PX4_INFO("migrating %s -> %s", "SDLOG_MODE", "SDLOG_BACKEND"); + } + } + } + return param_modify_on_import_ret::PARAM_NOT_MODIFIED; } diff --git a/src/modules/logger/params.c b/src/modules/logger/params.c index cb734ac1af..97eafb2cac 100644 --- a/src/modules/logger/params.c +++ b/src/modules/logger/params.c @@ -55,7 +55,10 @@ PARAM_DEFINE_INT32(SDLOG_UTC_OFFSET, 0); * Determines when to start and stop logging. By default, logging is started * when arming the system, and stopped when disarming. * - * @value -1 disabled + * Note: The logging start/end points that can be configured here only apply to + * SD logging. The mavlink backend is started/stopped independently + * of these points. + * * @value 0 when armed until disarm (default) * @value 1 from boot until disarm * @value 2 from boot until shutdown @@ -67,6 +70,25 @@ PARAM_DEFINE_INT32(SDLOG_UTC_OFFSET, 0); */ PARAM_DEFINE_INT32(SDLOG_MODE, 0); +/** + * Logging Backend (integer bitmask). + * + * If no logging is set the logger will not be started. + * + * Set bits true to enable: + * 0: SD card logging + * 1: Mavlink logging + * + * @min 0 + * @max 3 + * @bit 0 SD card logging + * @bit 1 Mavlink logging + * + * @reboot_required true + * @group SD Logging + */ +PARAM_DEFINE_INT32(SDLOG_BACKEND, 3); + /** * Battery-only Logging *