The external parameter file comparison and upload feature allows a user to load an ArduPilot
.parm or .param file that is not part of the files managed by ArduPilot Methodic Configurator
(AMC), inspect its values against the connected flight controller (FC), optionally make temporary
per-parameter changes, and selectively upload parameters.
This workflow is deliberately separate from the sequential configuration-step workflow. Opening or editing an external file does not add it to the vehicle project, change the current configuration step, write to the selected file, or ask whether temporary edits should be saved.
Compare and upload button beside the parameter-editor legend..parm and .param files.ParDict parser.Show only changed parameters checkbox.Compare and upload and Cancel buttons. Use the comparison table to
review FC values against the external file before uploading. Reuse the standard parameter
upload, reset, reconnect, re-download, validation, retry, error-reporting, and progress-window
workflows. Warn before upload when a temporary manual edit differs from the FC value but its
Upload checkbox is not selected. Close the modal after a successful upload without advancing the
AMC configuration step.The feature is launched from the normal parameter editor but owns a separate set of
ArduPilotParameter objects:
External .parm/.param file
|
v
ParDict parser
|
v
External ArduPilotParameter objects <---- FC values + parameter metadata
|
v
Configurable shared ParameterEditorTable
|
v
Selected temporary values as ParDict
|
v
Existing FC upload workflow
The active ParameterEditor.current_step_parameters remains untouched throughout this flow.
ardupilot_methodic_configurator/frontend_tkinter_parameter_editor.py_create_conf_widgets(), on_compare_and_upload_parameter_file_click().parm and .param filters.ParameterFileUploadWindow after successful parsing.The entry point does not alter current_file, the configuration-step combobox, or project
filesystem state.
ardupilot_methodic_configurator/frontend_tkinter_parameter_compare_and_upload.pyParameterFileUploadWindowThe modal upload button does not duplicate the entry-point connection-state gate. The upload precondition remains in the data model to handle a connection that disappears while the modal is open.
The window is transient to the main parameter editor. A Tk grab is used for modality on platforms other than macOS, where grabs are intentionally avoided because of known Tk freezes.
ardupilot_methodic_configurator/frontend_tkinter_parameter_editor_table.pyParameterEditorTable, ParameterTableOptionsParameterTableOptions.ParDict containing only selected external parameters.The external modal uses these options:
| Option | Value | Effect |
|---|---|---|
show_parameter_actions |
False |
Hides add/delete controls |
show_upload_column |
True |
Shows per-parameter Upload checkboxes |
show_manual_override_column |
True |
Shows per-parameter Manual checkboxes |
show_change_reason_column |
False |
Omits the change-reason field |
values_editable |
False |
Makes all values read-only initially |
skip_when_no_differences |
False |
Prevents AMC step navigation |
manual_override_for_all_parameters |
True |
Gives external parameters temporary Manual behavior |
manually_editable_parameters is an in-memory set of names whose Manual checkbox is active.
It is table-view state, not the persisted manual-override state used by forced and derived AMC
parameters.
ardupilot_methodic_configurator/data_model_parameter_editor.pyload_external_parameter_file(), update_parameter_object(),
parameters_as_par_dict()ParDict.from_file().ArduPilotParameter objects using available documentation, default
values, and current FC values.current_step_parameters.ParDict required by the upload workflow.An empty configuration-step filename is supplied while constructing external parameter objects. This prevents forced or derived definitions from the active AMC step being applied to the external file.
ardupilot_methodic_configurator/data_model_ardupilot_parameter.pyreset_new_value_to_file_value()The reset method changes only the in-memory candidate value. It performs no file I/O.
frontend_tkinter_parameter_editor.py, data_model_parameter_editor.pyParameterEditorWindow.upload_selected_params(),
ParameterEditorWindow.upload_external_params(),
ParameterEditorUiServices.upload_params_with_progress(),
ParameterEditor.upload_selected_params_workflow(),
ParameterEditor.upload_external_params_workflow()The external model entry point delegates to the common upload implementation with configuration
step-state persistence disabled. Every FC download, including one made for an external upload,
refreshes complete.param in the vehicle directory. MAVFTP-capable FCs also supply and refresh
the 00_default.param snapshot; MAVLink parameter downloads do not expose defaults. The shared
FC safety mechanics remain common, while the normal workflow continues to write the current-step
marker and reports.
Each external parameter has four relevant pieces of state:
| State | Owner | Lifetime | Persistent? |
|---|---|---|---|
| Value loaded from file | ArduPilotParameter |
Modal lifetime | No writes |
| Candidate/new value | ArduPilotParameter |
Modal lifetime | No |
| Upload selection | ParameterEditorTable.upload_checkbutton_var |
Modal lifetime | No |
| Manual selection | ParameterTableOptions.manually_editable_parameters |
Modal lifetime | No |
The FC value and parameter metadata in each external parameter object are snapshots supplied when the object is created. The shared upload workflow refreshes its FC parameter cache for verification; it does not convert the modal’s original comparison values into project state.
Compare and upload to choose an external file for comparison.ParameterEditor.load_external_parameter_file() parses the selected file.Par is converted to an ArduPilotParameter with metadata, default value, and
matching FC value when available.ParameterFileUploadWindow creates the configured shared table.manually_editable_parameters.This Manual behavior must not be confused with the persisted @manual_override mechanism for
forced and derived parameters in AMC-managed configuration steps.
Show only changed parameters repopulates the shared table.ParameterEditorTable.get_upload_selected_params() reads the visible Upload checkbox states.ArduPilotParameter objects are converted to a ParDict using their current
candidate values.ensure_upload_preconditions() rejects an empty selection or missing FC connection.ParameterEditorWindow.upload_external_params() invokes the shared progress-managed upload
UI with ParameterEditor.upload_external_params_workflow().Upload selected params to the FC.The following invariants define the boundary between external upload and project editing:
ParameterEditor.current_step_parameters.LocalFilesystem.file_parameters.write_changes_to_intermediate_parameter_file().last_uploaded_filename.txt, tuning_report.csv, or an
FC-difference export.BRD_BOOT_DELAY from the selected external payload when present, rather than
the active AMC step.on_skip_click() or changes current_file.Parameter file error dialog and do not open the modal.Compare and upload entry button;
the model precondition remains a defensive check if the connection is lost while the modal is open..parm files into independent ArduPilotParameter objects.ParDict values.current_step_parameters.The default ParameterTableOptions retain the normal parameter editor layout and behavior. Existing
parameter editor and ArduPilotParameter tests protect the managed-file editing, forced/derived
manual override, validation, bitmask, and upload workflows while the external-specific tests cover
the alternate table configuration. Model-level external upload tests exercise the shared upload
orchestration and assert that it produces no AMC project markers, reports, or exports.
ParameterTableOptions without
creating a separate table implementation.ParDict.ParameterEditor upload workflow so
both managed and external parameter uploads retain identical FC safety behavior.