Hello ArduPilot community,
Working on a type-certification for DGCA / NPNT compliance project (India) where auditors expect evidence for “firmware tamper avoidance” and an “authentication procedure to change flight parameters.”
Setup
-
Autopilot: Cube Orange+ (CubeOrangePlus)
-
Firmware: ArduCopter 4.6+
Goals
-
Firmware tamper resistance: ensure the controller runs only organization-approved firmware using secure bootloader + signed firmware.
-
Parameter tamper resistance: prevent field users from changing selected safety-critical parameters (make them effectively “read-only” in operational mode), while still allowing authorized service changes.
What’s clear from docs so far :
-
ArduPilot Secure Firmware: once installed, only firmware signed by our keys should run.
-
MAVLink2 signing can prevent unauthorized GCS from reading/writing parameters and sending commands on non‑USB serial ports unless they have the passkey.
-
MAVLink2 signing does not protect USB (USB connections are unaffected; a USB user can still modify parameters/disable signing/change passkey).
-
APJ Tools
@READONLYis not usable for us because the docs say this capability was removed as of ArduPilot 4.5+. -
OEM Customization is the recommended approach for productized builds, but the OEM page also notes read-only marking behavior changed in 4.5+.
Questions (what we’re looking for) :
-
In ArduCopter 4.6+, what is the recommended way to block PARAM_SET for a subset of parameters (LOIT_SPEED, ANG_MAX, LOIT_ANG_MAX etc)?
-
Is there a supported pattern for a service mode vs operational mode, where parameter writes are rejected unless a service condition is met ?
-
Given USB bypasses MAVLink signing, what do OEMs typically present to auditors: purely physical controls (sealed bay + SOP), or is there an ArduPilot-side hook to restrict USB parameter writes too?
-
What test evidence is considered “good enough” to demonstrate compliance (e.g., signed firmware rejection test + param-tamper attempt logs)?
References used :
-
Secure firmware (signed bootloader + signed firmware): https://ardupilot.org/dev/docs/secure-firmware.html
-
OEM customization workflow + 4.5+ note: **https://ardupilot.org/copter/docs/common-oem-customizations.html**
-
MAVLink2 signing + USB limitation: **https://ardupilot.org/copter/docs/common-MAVLink2-signing.html**
-
APJ Tools removal note (4.5+): **https://ardupilot.org/dev/docs/apjtools-intro.html**
Thanks in advance