diff --git a/Kconfig b/Kconfig
index 08768add5f..4bc076893a 100644
--- a/Kconfig
+++ b/Kconfig
@@ -202,6 +202,12 @@ menu "File paths"
config BOARD_PARAM_FILE
string "Parameter file"
default "/fs/mtd_params"
+
+ config BOARD_NO_SDCARD
+ bool "Board has no SD card"
+ default n
+ help
+ Disable the SD card arming check for boards without an SD card slot.
endmenu
menu "drivers"
diff --git a/boards/atl/mantis-edu/default.px4board b/boards/atl/mantis-edu/default.px4board
index fd76e4d6ca..f3b2cc9019 100644
--- a/boards/atl/mantis-edu/default.px4board
+++ b/boards/atl/mantis-edu/default.px4board
@@ -1,5 +1,6 @@
CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
CONFIG_BOARD_ARCHITECTURE="cortex-m7"
+CONFIG_BOARD_NO_SDCARD=y
CONFIG_DRIVERS_ADC_BOARD_ADC=y
CONFIG_DRIVERS_BAROMETER_MAIERTEK_MPC2520=y
CONFIG_DRIVERS_CDCACM_AUTOSTART=y
diff --git a/boards/atl/mantis-edu/init/rc.board_defaults b/boards/atl/mantis-edu/init/rc.board_defaults
index 2264eb7c91..ed781ceaa0 100644
--- a/boards/atl/mantis-edu/init/rc.board_defaults
+++ b/boards/atl/mantis-edu/init/rc.board_defaults
@@ -7,8 +7,6 @@ param set-default SYS_AUTOSTART 4061
param set-default BAT1_V_DIV 9.0
-param set-default COM_ARM_SDCARD 0
-
param set-default SENS_EXT_I2C_PRB 0
param set-default EV_TSK_STAT_DIS 1
diff --git a/boards/gearup/airbrainh743/default.px4board b/boards/gearup/airbrainh743/default.px4board
index f5ed5b8434..03a861a752 100644
--- a/boards/gearup/airbrainh743/default.px4board
+++ b/boards/gearup/airbrainh743/default.px4board
@@ -1,6 +1,7 @@
CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
CONFIG_BOARD_ARCHITECTURE="cortex-m7"
CONFIG_BOARD_ROOT_PATH="/fs/flash"
+CONFIG_BOARD_NO_SDCARD=y
CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS6"
CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS3"
CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS4"
diff --git a/boards/gearup/airbrainh743/init/rc.board_defaults b/boards/gearup/airbrainh743/init/rc.board_defaults
index 6a67bd3226..1ea824a60c 100644
--- a/boards/gearup/airbrainh743/init/rc.board_defaults
+++ b/boards/gearup/airbrainh743/init/rc.board_defaults
@@ -19,6 +19,3 @@ param set-default SDLOG_MAX_SIZE 40
# Store missions in RAM
param set-default SYS_DM_BACKEND 1
-
-# Ignore that there is no SD card
-param set-default COM_ARM_SDCARD 0
diff --git a/boards/holybro/kakuteh7mini/default.px4board b/boards/holybro/kakuteh7mini/default.px4board
index b247fef51b..aefe298b8a 100644
--- a/boards/holybro/kakuteh7mini/default.px4board
+++ b/boards/holybro/kakuteh7mini/default.px4board
@@ -1,6 +1,7 @@
CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
CONFIG_BOARD_ARCHITECTURE="cortex-m7"
CONFIG_BOARD_ROOT_PATH="/fs/flash"
+CONFIG_BOARD_NO_SDCARD=y
CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS3"
CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS0"
CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS1"
diff --git a/boards/holybro/kakuteh7mini/init/rc.board_defaults b/boards/holybro/kakuteh7mini/init/rc.board_defaults
index a80519a8a3..4522f26827 100644
--- a/boards/holybro/kakuteh7mini/init/rc.board_defaults
+++ b/boards/holybro/kakuteh7mini/init/rc.board_defaults
@@ -29,9 +29,6 @@ param set-default CBRK_BUZZER 782090
param set-default IMU_GYRO_RATEMAX 2000
-# Ignore that there is no SD card
-param set-default COM_ARM_SDCARD 0
-
# W25N NAND flash with littlefs (128 MB): small log file size so we can keep
# a few recent logs, and fill up to 95%.
param set-default SDLOG_ROTATE 95
diff --git a/boards/holybro/kakuteh7v2/default.px4board b/boards/holybro/kakuteh7v2/default.px4board
index da707c268d..37068083b5 100644
--- a/boards/holybro/kakuteh7v2/default.px4board
+++ b/boards/holybro/kakuteh7v2/default.px4board
@@ -1,6 +1,7 @@
CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
CONFIG_BOARD_ARCHITECTURE="cortex-m7"
CONFIG_BOARD_ROOT_PATH="/fs/flash"
+CONFIG_BOARD_NO_SDCARD=y
CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS3"
CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS0"
CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS1"
diff --git a/boards/holybro/kakuteh7v2/init/rc.board_defaults b/boards/holybro/kakuteh7v2/init/rc.board_defaults
index e233c38da3..a6dc65ea50 100644
--- a/boards/holybro/kakuteh7v2/init/rc.board_defaults
+++ b/boards/holybro/kakuteh7v2/init/rc.board_defaults
@@ -32,9 +32,6 @@ param set-default IMU_GYRO_RATEMAX 2000
# Store missions in RAM
param set-default SYS_DM_BACKEND 1
-# Ignore that there is no SD card
-param set-default COM_ARM_SDCARD 0
-
# W25N NAND flash with littlefs (128 MB): small log file size so we can keep
# a few recent logs, and fill up to 95%.
param set-default SDLOG_ROTATE 95
diff --git a/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params b/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params
index 703821f110..b7ac74a8b5 100644
--- a/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params
+++ b/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params
@@ -284,7 +284,6 @@
1 1 COM_ARM_MAG_STR 2 6
1 1 COM_ARM_MIS_REQ 0 6
1 1 COM_ARM_ODID 0 6
-1 1 COM_ARM_SDCARD 1 6
1 1 COM_ARM_SWISBTN 0 6
1 1 COM_ARM_WO_GPS 1 6
1 1 COM_CPU_MAX 95.000000000000000000 9
diff --git a/docs/en/config/safety.md b/docs/en/config/safety.md
index 248fe9810c..bf689edf83 100644
--- a/docs/en/config/safety.md
+++ b/docs/en/config/safety.md
@@ -464,7 +464,6 @@ These parameters can be used to set conditions that prevent arming.
| [COM_ARM_BAT_MIN](../advanced_config/parameter_reference.md#COM_ARM_BAT_MIN) | Minimum battery level for arming. `0`: Disabled (default). Values: `0`-`0.9`, |
| [COM_ARM_WO_GPS](../advanced_config/parameter_reference.md#COM_ARM_WO_GPS) | Enable arming without GPS. `0`: Disabled, `1`: Enabled (default). |
| [COM_ARM_MIS_REQ](../advanced_config/parameter_reference.md#COM_ARM_MIS_REQ) | Require valid mission to arm. `0`: Disabled (default), `1`: Enabled . |
-| [COM_ARM_SDCARD](../advanced_config/parameter_reference.md#COM_ARM_SDCARD) | Require SD card to arm. `0`: Disabled (default), `1`: Warning, `2`: Enabled. |
| [COM_ARM_AUTH_REQ](../advanced_config/parameter_reference.md#COM_ARM_AUTH_REQ) | Requires arm authorisation from an external (MAVLink) system. Flag to allow arming (at all). `1`: Enabled, `0`: Disabled (default). Associated configuration parameters are prefixed with `COM_ARM_AUTH_`. |
| [COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) | Remote ID arming check and in-flight failsafe. `0`: Disabled (default), `1`: Warning only, `2`: Error only, `3`: Return, `4`: Land, `5`: Terminate. See [Remote ID Failsafe](#remote-id-failsafe). |
diff --git a/src/modules/commander/HealthAndArmingChecks/checks/sdcardCheck.cpp b/src/modules/commander/HealthAndArmingChecks/checks/sdcardCheck.cpp
index 6766b5376c..695f87c5b2 100644
--- a/src/modules/commander/HealthAndArmingChecks/checks/sdcardCheck.cpp
+++ b/src/modules/commander/HealthAndArmingChecks/checks/sdcardCheck.cpp
@@ -46,41 +46,30 @@ void SdCardChecks::checkAndReport(const Context &context, Report &reporter)
{
#ifdef PX4_STORAGEDIR
- if (_param_com_arm_sdcard.get() > 0) {
+#ifndef CONFIG_BOARD_NO_SDCARD
+ struct statfs statfs_buf;
- struct statfs statfs_buf;
+ if (!_sdcard_detected && statfs(PX4_STORAGEDIR, &statfs_buf) == 0) {
+ // on NuttX we get a data block count f_blocks and byte count per block f_bsize if an SD card is inserted
+ _sdcard_detected = (statfs_buf.f_blocks > 0) && (statfs_buf.f_bsize > 0);
+ }
- if (!_sdcard_detected && statfs(PX4_STORAGEDIR, &statfs_buf) == 0) {
- // on NuttX we get a data block count f_blocks and byte count per block f_bsize if an SD card is inserted
- _sdcard_detected = (statfs_buf.f_blocks > 0) && (statfs_buf.f_bsize > 0);
- }
+ if (!_sdcard_detected) {
+ /* EVENT
+ * @description
+ * Insert an SD Card to the autopilot and reboot the system.
+ */
+ reporter.armingCheckFailure(NavModes::None, health_component_t::system,
+ events::ID("check_missing_fmu_sdcard"),
+ events::Log::Error, "Missing FMU SD Card");
- if (!_sdcard_detected) {
- NavModes affected_modes{NavModes::None};
-
- if (_param_com_arm_sdcard.get() == 2) {
- // disallow arming without sd card
- affected_modes = NavModes::All;
- }
-
- /* EVENT
- * @description
- * Insert an SD Card to the autopilot and reboot the system.
- *
- *
- * This check can be configured via COM_ARM_SDCARD parameter.
- *
- */
- reporter.armingCheckFailure(affected_modes, health_component_t::system,
- events::ID("check_missing_fmu_sdcard"),
- events::Log::Error, "Missing FMU SD Card");
-
- if (reporter.mavlink_log_pub()) {
- mavlink_log_critical(reporter.mavlink_log_pub(), "Preflight Fail: Missing FMU SD Card");
- }
+ if (reporter.mavlink_log_pub()) {
+ mavlink_log_critical(reporter.mavlink_log_pub(), "Preflight Fail: Missing FMU SD Card");
}
}
+#endif // CONFIG_BOARD_NO_SDCARD
+
#ifdef __PX4_NUTTX
// Check for hardfault files
diff --git a/src/modules/commander/HealthAndArmingChecks/checks/sdcardCheck.hpp b/src/modules/commander/HealthAndArmingChecks/checks/sdcardCheck.hpp
index b8a0ac70bb..96fe1e306e 100644
--- a/src/modules/commander/HealthAndArmingChecks/checks/sdcardCheck.hpp
+++ b/src/modules/commander/HealthAndArmingChecks/checks/sdcardCheck.hpp
@@ -45,7 +45,9 @@ public:
private:
#ifdef PX4_STORAGEDIR
+#ifndef CONFIG_BOARD_NO_SDCARD
bool _sdcard_detected {false};
+#endif // CONFIG_BOARD_NO_SDCARD
#ifdef __PX4_NUTTX
bool _hardfault_checked_once {false};
@@ -53,10 +55,9 @@ private:
bool _watchdog_checked_once {false};
bool _watchdog_file_present {false};
#endif
-#endif
+#endif // PX4_STORAGEDIR
DEFINE_PARAMETERS_CUSTOM_PARENT(HealthAndArmingCheckBase,
- (ParamInt) _param_com_arm_sdcard,
(ParamBool) _param_com_arm_hardfault_check
)
};
diff --git a/src/modules/commander/commander_params.yaml b/src/modules/commander/commander_params.yaml
index 637f55ccb3..da345f8685 100644
--- a/src/modules/commander/commander_params.yaml
+++ b/src/modules/commander/commander_params.yaml
@@ -564,19 +564,6 @@ parameters:
min: -1.0
max: 5.0
decimal: 3
- COM_ARM_SDCARD:
- description:
- short: Enable FMU SD card detection check
- long: |-
- This check detects if the FMU SD card is missing.
- Depending on the value of the parameter, the check can be
- disabled, warn only or deny arming.
- type: enum
- values:
- 0: Disabled
- 1: Warning only
- 2: Enforce SD card presence
- default: 1
COM_ARM_HFLT_CHK:
description:
short: Enable FMU SD card hardfault / watchdog detection check