{"id":19195450,"url":"https://github.com/ardupilot/methodicconfigurator","last_synced_at":"2026-04-15T23:05:06.905Z","repository":{"id":231126692,"uuid":"778163871","full_name":"ArduPilot/MethodicConfigurator","owner":"ArduPilot","description":"A clear ArduPilot configuration sequence","archived":false,"fork":false,"pushed_at":"2026-04-13T00:40:33.000Z","size":70067,"stargazers_count":121,"open_issues_count":23,"forks_count":57,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-04-13T02:25:23.531Z","etag":null,"topics":["arducopter","ardupilot","configuration-management","devsecops","parameters","traceability"],"latest_commit_sha":null,"homepage":"https://ardupilot.github.io/MethodicConfigurator/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ArduPilot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":"GOVERNANCE.md","roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-27T07:46:58.000Z","updated_at":"2026-04-12T10:40:29.000Z","dependencies_parsed_at":"2026-01-09T02:09:41.365Z","dependency_job_id":"56028969-79dc-4a31-8473-cceae194f01e","html_url":"https://github.com/ArduPilot/MethodicConfigurator","commit_stats":null,"previous_names":["ardupilot/methodicconfigurator"],"tags_count":153,"template":false,"template_full_name":null,"purl":"pkg:github/ArduPilot/MethodicConfigurator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArduPilot%2FMethodicConfigurator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArduPilot%2FMethodicConfigurator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArduPilot%2FMethodicConfigurator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArduPilot%2FMethodicConfigurator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArduPilot","download_url":"https://codeload.github.com/ArduPilot/MethodicConfigurator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArduPilot%2FMethodicConfigurator/sbom","scorecard":{"id":641009,"data":{"date":"2025-08-21T08:48:29Z","repo":{"name":"github.com/ArduPilot/MethodicConfigurator","commit":"085090c8a854dfb3fdf08a3fbd09654783fd9560"},"scorecard":{"version":"v5.2.1","commit":"ab2f6e92482462fe66246d9e32f642855a691dc1"},"score":7.9,"checks":[{"name":"Code-Review","score":1,"reason":"Found 1/8 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 24 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#maintained"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1","Info: detected update tool: RenovateBot: renovate.json:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dependency-update-tool"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/bump_version_and_tag.yml:23","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:31","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:32","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/i18n-extract.yml:23","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/pytest.yml:167","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pytest.yml:228","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/renovate_pre_commit_hooks.yml:18","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/update_configuration_steps_translation.yaml:27","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/update_flightcontroller_ids.yml:14","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/update_magfit_pdef_xml.yml:16","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/update_mo_files.yml:20","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/update_motor_diagrams.yml:14","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/update_vehicle_components_translation.yaml:29","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/update_vehicle_templates.yml:25","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/windows_build.yml:26","Info: jobLevel 'actions' permission set to 'read': .github/workflows/windows_build.yml:28","Warn: jobLevel 'packages' permission set to 'write': .github/workflows/windows_build.yml:29","Info: topLevel 'contents' permission set to 'read': .github/workflows/bump_version_and_tag.yml:16","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:24","Info: topLevel 'contents' permission set to 'read': .github/workflows/dependabot-apt-update.yml:9","Info: topLevel 'contents' permission set to 'read': .github/workflows/dependency-review.yml:13","Info: topLevel 'contents' permission set to 'read': .github/workflows/generate_apm.pdef.xml.yml:12","Info: topLevel 'contents' permission set to 'read': .github/workflows/gitavscan.yml:11","Info: topLevel 'contents' permission set to 'read': .github/workflows/i18n-extract.yml:18","Info: topLevel 'contents' permission set to 'read': .github/workflows/markdown-link-check.yml:12","Info: topLevel 'contents' permission set to 'read': .github/workflows/markdown-lint.yml:12","Info: topLevel 'contents' permission set to 'read': .github/workflows/mypy.yml:21","Info: topLevel 'contents' permission set to 'read': .github/workflows/pylint.yml:21","Info: topLevel 'contents' permission set to 'read': .github/workflows/pyright.yml:19","Info: topLevel 'contents' permission set to 'read': .github/workflows/pytest.yml:21","Info: topLevel 'contents' permission set to 'read': .github/workflows/python-publish.yml:15","Info: topLevel 'contents' permission set to 'read': .github/workflows/renovate_pre_commit_hooks.yml:12","Info: topLevel 'contents' permission set to 'read': .github/workflows/reuse.yml:8","Info: topLevel 'contents' permission set to 'read': .github/workflows/ruff.yml:21","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:18","Info: topLevel 'contents' permission set to 'read': .github/workflows/update_configuration_steps_translation.yaml:22","Info: topLevel 'contents' permission set to 'read': .github/workflows/update_flightcontroller_ids.yml:9","Info: topLevel 'contents' permission set to 'read': .github/workflows/update_magfit_pdef_xml.yml:11","Info: topLevel 'contents' permission set to 'read': .github/workflows/update_mo_files.yml:15","Info: topLevel 'contents' permission set to 'read': .github/workflows/update_motor_diagrams.yml:9","Info: topLevel 'contents' permission set to 'read': .github/workflows/update_vehicle_components_translation.yaml:24","Info: topLevel 'contents' permission set to 'read': .github/workflows/update_vehicle_templates.yml:19","Info: topLevel 'contents' permission set to 'read': .github/workflows/windows_build.yml:16"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":5,"reason":"badge detected: Passing","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: pipCommand not pinned by hash: SetupDeveloperPC.sh:41","Warn: npmCommand not pinned by hash: install_wsl.bash:16","Warn: pipCommand not pinned by hash: tests/test_annotate_params.sh:16","Warn: pipCommand not pinned by hash: tests/test_extract_param_defaults.sh:16","Warn: pipCommand not pinned by hash: tests/test_param_pid_adjustment_update.sh:16","Warn: pipCommand not pinned by hash: .github/workflows/bump_version_and_tag.yml:56","Warn: pipCommand not pinned by hash: .github/workflows/bump_version_and_tag.yml:67","Warn: pipCommand not pinned by hash: .github/workflows/generate_apm.pdef.xml.yml:41","Warn: pipCommand not pinned by hash: .github/workflows/i18n-extract.yml:76","Warn: pipCommand not pinned by hash: .github/workflows/mypy.yml:64","Warn: pipCommand not pinned by hash: .github/workflows/update_flightcontroller_ids.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/update_motor_diagrams.yml:47","Info:  57 out of  57 GitHub-owned GitHubAction dependencies pinned","Info:  65 out of  65 third-party GitHubAction dependencies pinned","Info:   0 out of  11 pipCommand dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#sast"}},{"name":"CI-Tests","score":-1,"reason":"internal error: internal error: Client.Repositories.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#ci-tests"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#license"}},{"name":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: ardupilot_methodic_configurator_setup_2.0.3.exe.sig: https://github.com/ArduPilot/MethodicConfigurator/releases/tag/latest","Info: signed release artifact: ardupilot_methodic_configurator_setup_2.0.3.exe.sig: https://github.com/ArduPilot/MethodicConfigurator/releases/tag/v2.0.3","Info: signed release artifact: ardupilot_methodic_configurator_setup_2.0.2.exe.sig: https://github.com/ArduPilot/MethodicConfigurator/releases/tag/v2.0.2","Info: signed release artifact: ardupilot_methodic_configurator_setup_2.0.1.exe.sig: https://github.com/ArduPilot/MethodicConfigurator/releases/tag/v2.0.1","Info: signed release artifact: ardupilot_methodic_configurator_setup_2.0.0.exe.sig: https://github.com/ArduPilot/MethodicConfigurator/releases/tag/v2.0.0","Warn: release artifact latest does not have provenance: https://api.github.com/repos/ArduPilot/MethodicConfigurator/releases/241367572","Warn: release artifact v2.0.3 does not have provenance: https://api.github.com/repos/ArduPilot/MethodicConfigurator/releases/240376022","Warn: release artifact v2.0.2 does not have provenance: https://api.github.com/repos/ArduPilot/MethodicConfigurator/releases/237615351","Warn: release artifact v2.0.1 does not have provenance: https://api.github.com/repos/ArduPilot/MethodicConfigurator/releases/235753004","Warn: release artifact v2.0.0 does not have provenance: https://api.github.com/repos/ArduPilot/MethodicConfigurator/releases/233698246"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/python-publish.yml:18"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":4,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'master'","Info: 'stale review dismissal' is required to merge on branch 'master'","Warn: branch 'master' does not require approvers","Info: codeowner review is required on branch 'master'","Info: 'last push approval' is required to merge on branch 'master'","Info: 'up-to-date branches' is required to merge on branch 'master'","Info: status check found to merge onto on branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#branch-protection"}},{"name":"Contributors","score":10,"reason":"project has 7 contributing companies or organizations","details":["Info: found contributions from: Pythonista-Tools, TheAlgorithms, christian clauss, cpplint, iav gmbh, motioneye-project, stepsecurity"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#contributors"}}]},"last_synced_at":"2025-08-21T10:44:57.367Z","repository_id":231126692,"created_at":"2025-08-21T10:44:57.367Z","updated_at":"2025-08-21T10:44:57.367Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31863501,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arducopter","ardupilot","configuration-management","devsecops","parameters","traceability"],"created_at":"2024-11-09T12:10:00.246Z","updated_at":"2026-04-15T23:05:06.888Z","avatar_url":"https://github.com/ArduPilot.png","language":"Python","readme":"# Correctly configure ArduPilot for your vehicles on your first attempt\r\n\r\n| Lint | Quality | Test | Security | Deploy | Maintain |\r\n| ---- | ------- | ---- | -------- | ------ | -------- |\r\n| [![Pylint](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/pylint.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/pylint.yml) | [![Codacy Badge](https://app.codacy.com/project/badge/Grade/720794ed54014c58b9eaf7a097a4e98e)](https://app.codacy.com/gh/amilcarlucas/MethodicConfigurator/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade) | [![pytest status](https://gist.githubusercontent.com/amilcarlucas/81b511dc0ff92b8072613d1cd100832e/raw/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/pytest.yml) | [![Known Vulnerabilities](https://snyk.io/test/github/amilcarlucas/MethodicConfigurator/badge.svg)](https://app.snyk.io/org/amilcarlucas/project/c8fd6e29-715b-4949-b828-64eff84f5fe1) | [![pages-build-deployment](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/pages/pages-build-deployment) | [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/ArduPilot/MethodicConfigurator.svg)](http://isitmaintained.com/project/ArduPilot/MethodicConfigurator) |\r\n| [![test Python cleanliness](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/ruff.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/ruff.yml) | [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9101/badge)](https://www.bestpractices.dev/projects/9101) | [![Pytest tests](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/pytest.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/pytest.yml) | [![CodeQL](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/github-code-scanning/codeql) | [![Upload MethodicConfigurator Package](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/python-publish.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/python-publish.yml) | [![Percentage of issues still open](http://isitmaintained.com/badge/open/ArduPilot/MethodicConfigurator.svg)](http://isitmaintained.com/project/ArduPilot/MethodicConfigurator) |\r\n| [![mypy](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/mypy.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/mypy.yml) | [![REUSE status](https://api.reuse.software/badge/github.com/ArduPilot/MethodicConfigurator)](https://api.reuse.software/info/github.com/ArduPilot/MethodicConfigurator) | [![Coverage Status](https://coveralls.io/repos/github/ArduPilot/MethodicConfigurator/badge.svg?branch=master)](https://coveralls.io/github/ArduPilot/MethodicConfigurator?branch=master) | [![gitavscan](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/gitavscan.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/gitavscan.yml) | [![pypi](https://img.shields.io/pypi/v/ardupilot-methodic-configurator.svg)](https://pypi.org/project/ardupilot-methodic-configurator/) | [![python versions](https://img.shields.io/pypi/pyversions/ardupilot-methodic-configurator.svg)](https://pypi.python.org/pypi/ardupilot-methodic-configurator) |\r\n| [![Pyright](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/pyright.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/pyright.yml) | [![md-link-check](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/markdown-link-check.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/markdown-link-check.yml) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/30346/badge.svg)](https://scan.coverity.com/projects/ardupilot-methodic-configurator) | [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/ArduPilot/MethodicConfigurator/badge)](https://scorecard.dev/viewer/?uri=github.com/ArduPilot/MethodicConfigurator) | [![PyPI - Downloads](https://img.shields.io/pypi/dm/ardupilot-methodic-configurator?link=https%3A%2F%2Fpypi.org%2Fproject%2Fardupilot-methodic-configurator%2F)](https://pypistats.org/packages/ardupilot-methodic-configurator) | [![Code Climate](https://codeclimate.com/github/amilcarlucas/MethodicConfigurator.png)](https://codeclimate.com/github/amilcarlucas/MethodicConfigurator) |\r\n| [![markdown-lint](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/markdown-lint.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/markdown-lint.yml) | [![pre-commit](https://results.pre-commit.ci/badge/github/ArduPilot/MethodicConfigurator/master.svg)](https://results.pre-commit.ci/latest/github/ArduPilot/MethodicConfigurator/master) | [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord\u0026logoColor=white)](https://discord.com/channels/674039678562861068/1308233496535371856) | | [![Windows Build](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/build_windows_macos.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/windows_build.yml) | [![Update Flight Controller IDs](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/update_flightcontroller_ids.yml/badge.svg)](https://github.com/ArduPilot/MethodicConfigurator/actions/workflows/update_flightcontroller_ids.yml) |\r\n\r\n*ArduPilot Methodic Configurator* is a software, developed by ArduPilot developers, that semi-automates a\r\n[clear, proven and safe configuration sequence for ArduCopter](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter) drones.\r\nWe are working on extending it to [ArduPlane](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduPlane),\r\n[Heli](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_Heli) and\r\n[Rover](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_Rover) vehicles.\r\nBut for those it is still very incomplete.\r\n\r\n- **clear**: the semi-automated sequence is linear, executed one step at the time with no hidden complex dependencies\r\n- **proven**: the software has been used by hundreds of ArduPilot developers and users. From beginners to advanced. On big and small vehicles.\r\n- **safe**: the sequence reduces trial-and-error by following established best practices and reduces the amount of flights required to configure the vehicle\r\n- **Parameter management**: Upload, download, and edit parameters with full documentation\r\n- **Vehicle templates**: Start from empty templates or from pre-configured settings for common vehicle types\r\n- **Traceability**: Documents every parameter change with reasons\r\n\r\nHere are some YouTube video tutorials from the [AMC YouTube Channel](https://www.youtube.com/@AmilcardoCarmoLucas):\r\n\r\n[![YouTube tutorial - intro](https://github.com/ArduPilot/MethodicConfigurator/blob/master/images/Video1_Thumbnail_yt.png?raw=true)](https://www.youtube.com/watch?v=47RjQ_GarvE\u0026list=PL1oa0qoJ9W_89eMcn4x2PB6o3fyPbheA9)\r\n[![YouTube tutorial - usecase](https://github.com/ArduPilot/MethodicConfigurator/blob/master/images/Video2_Thumbnail_yt.png?raw=true)](https://www.youtube.com/watch?v=9n4Wh6wBuHQ\u0026list=PL1oa0qoJ9W_89eMcn4x2PB6o3fyPbheA9)\r\n\r\n[![YouTube tutorial - beginners](https://github.com/ArduPilot/MethodicConfigurator/blob/master/images/Video3_Thumbnail_yt.png?raw=true)](https://www.youtube.com/watch?v=tM8EznlNhgs\u0026list=PL1oa0qoJ9W_89eMcn4x2PB6o3fyPbheA9)\r\n\r\nAnd here is a presentation explaining it:\r\n\r\n[![ArduPilot methodic configurator power point presentation](https://github.com/ArduPilot/MethodicConfigurator/blob/master/images/ArduPilot_Methodic_Configurator_presentation.png?raw=true)](https://github.com/ArduPilot/MethodicConfigurator/blob/master/images/ArduPilot_Methodic_Configurator.pdf?raw=true)\r\n\r\nComparison with Ground Control Station (GCS) software, traditionally used to configure ArduPilot before AMC existed:\r\n\r\n| Feature | Mission Planner, QGroundControl, ... etc | ArduPilot Methodic Configurator |\r\n| ------- | ---------------------------------------- | ------------------------------- |\r\n| full automatic configuration | No | No |\r\n| configuration type | manual [^1] | semi-automated [^2] |\r\n| explains what to do | No | Yes |\r\n| explains when to do something | No | Yes, explains the path |\r\n| explains why do something | No | Yes |\r\n| configuration method | a different menu for each task, some tasks have no menu, so you need to dig into the 1200 parameters | each task only presents you a relevant subset of parameters |\r\n| parameter documentation | Yes, only on the full-parameter tree view | Yes |\r\n| displays relevant documentation | No | Yes |\r\n| makes sure you do not forget a step | No | Yes |\r\n| checks that parameters get correctly uploaded | No (MP), unsure (QGCS), yes (MAVProxy) | Yes |\r\n| reuse params in other vehicles | No, unless you hand edit files | Yes, out-of-the-box |\r\n| documents why you changed each parameter | No | Yes |\r\n| tutorials and learning resources | No, scattered and not integrated | Yes, context-aware help integrated |\r\n| auto. install lua scripts on the FC | No | Yes |\r\n| auto. backup of parameters before changing them | No | Yes |\r\n\r\n[^1]: you need to know what/when/why you are doing\r\n[^2]: it explains what you should do, when you should do it and why\r\n\r\n\u003c!-- ![When to use ArduPilot Methodic Configurator](https://github.com/ArduPilot/MethodicConfigurator/blob/master/images/when_to_use_amc.png?raw=true) --\u003e\r\n\r\nIt's simple graphical user interface (GUI) manages and visualizes ArduPilot parameters, parameter files and documentation.\r\n\r\n![Application Screenshot](https://github.com/ArduPilot/MethodicConfigurator/blob/master/images/App_screenshot1.png?raw=true)\r\n\r\nNo visible menus, no hidden menus, no complicated options, what you see is what gets changed.\r\n\r\n## Table of Contents\r\n\r\n- [Quick Start](#quick-start)\r\n  - [What You'll Accomplish](#what-youll-accomplish)\r\n  - [Important Tips for Success](#important-tips-for-success)\r\n- [1. Quick overview of the entire process](#1-quick-overview-of-the-entire-process)\r\n  - [1.1 Select the vehicle components](#11-select-the-vehicle-components)\r\n  - [1.2 Download and install software](#12-download-and-install-software)\r\n  - [1.3 Input vehicle components and component connections into ArduPilot Methodic Configurator](#13-input-vehicle-components-and-component-connections-into-ardupilot-methodic-configurator)\r\n  - [1.4 Perform IMU temperature calibration before assembling the autopilot into the vehicle (optional)](#14-perform-imu-temperature-calibration-before-assembling-the-autopilot-into-the-vehicle-optional)\r\n  - [1.5 Assemble all components except the propellers](#15-assemble-all-components-except-the-propellers)\r\n  - [1.6 Basic mandatory configuration](#16-basic-mandatory-configuration)\r\n  - [1.7 Assemble propellers and perform the first flight](#17-assemble-propellers-and-perform-the-first-flight)\r\n  - [1.8 Minimalistic mandatory tuning](#18-minimalistic-mandatory-tuning)\r\n  - [1.9 Standard tuning (optional)](#19-standard-tuning-optional)\r\n  - [1.10 Improve altitude under windy conditions (optional)](#110-improve-altitude-under-windy-conditions-optional)\r\n  - [1.11 System identification for analytical PID optimization (optional)](#111-system-identification-for-analytical-pid-optimization-optional)\r\n  - [1.12 Position controller tuning (optional)](#112-position-controller-tuning-optional)\r\n  - [1.13 Everyday use](#113-everyday-use)\r\n- [Documentation and Support](#documentation-and-support)\r\n- [Contributing](#contributing)\r\n- [Internationalization](#internationalization)\r\n- [Code of Conduct](#code-of-conduct)\r\n- [License](#license)\r\n- [Credits](#credits)\r\n\r\n## Quick Start\r\n\r\n### What You'll Accomplish\r\n\r\nBy the end of this process, your flight controller will be fully configured with:\r\n\r\n- ✅ All parameters optimized for your specific vehicle\r\n- ✅ Complete documentation of every change made\r\n- ✅ Backup files for easy restoration\r\n- ✅ Ready-to-fly configuration\r\n\r\n### Important Tips for Success\r\n\r\n💡 **Pro Tips:**\r\n\r\n- **Take your time**: Read parameter descriptions - they contain valuable insights\r\n- **Test incrementally**: The step-by-step approach allows testing between changes\r\n- **Keep backups**: The software creates them automatically in the vehicle project directory\r\n- **Document changes**: Always fill in the \"Change Reason\" field - future you will thank you\r\n\r\n⚠️ **Common Mistakes to Avoid:**\r\n\r\n- **Rushing through steps**: Each parameter has a purpose - understand before changing\r\n- **Skipping component validation**: Incorrect component settings can cause crashes\r\n- **Ignoring warnings**: Red backgrounds and error messages are there for your safety\r\n- **Forgetting calibrations**: Some parameters require physical calibration procedures:\r\n  - IMU temperature, analog voltage and current measurement, gyro, accelerometers\r\n\r\n## 1. Quick overview of the entire process\r\n\r\nTo methodically build, configure and tune ArduPilot vehicles follow this sequence of steps:\r\n\r\n### 1.1 Select the vehicle components\r\n\r\n- while [choosing an Autopilot](https://ardupilot.org/copter/docs/common-autopilots.html) and\r\n  [other hardware](https://ardupilot.org/copter/docs/common-optional-hardware.html) components\r\n  [avoid these components](https://discuss.ardupilot.org/t/hardware-to-avoid-when-building-your-first-multirotor/114014/1)\r\n- Use [ecalc for multirotor](https://www.ecalc.ch/index.htm) to select the propulsion system.\r\n- follow [hardware best practices](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#11-multicopter-hardware-best-practices)\r\n\r\n### 1.2 Download and install software\r\n\r\n- Install ArduPilot Methodic Configurator on [MS windows](https://ardupilot.github.io/MethodicConfigurator/INSTALL.html#ms-windows-installation),\r\n  [Linux](https://ardupilot.github.io/MethodicConfigurator/INSTALL.html#linux-installation) or\r\n  [macOS](https://ardupilot.github.io/MethodicConfigurator/INSTALL.html#macos-installation)\r\n- [Install the latest Mission Planner version](https://ardupilot.github.io/MethodicConfigurator/INSTALL.html#install-mission-planner-software-on-a-pc-or-mac)\r\n- [Install the latest ArduPilot firmware on your flight controller board](https://ardupilot.github.io/MethodicConfigurator/INSTALL.html#install-ardupilot-firmware-on-the-flight-controller)\r\n\r\n### 1.3 Input vehicle components and component connections into ArduPilot Methodic Configurator\r\n\r\nThe software needs this information to automatically preselect configuration settings relevant to your specific vehicle\r\n\r\n- [Start the ArduPilot Methodic Configurator and select a vehicle that resembles yours](https://ardupilot.github.io/MethodicConfigurator/USECASES.html#use-the-ardupilot-methodic-configurator-software-for-the-first-time)\r\n  and input vehicle components and component connections information into the ArduPilot Methodic Configurator *component editor window*\r\n\r\n### 1.4 Perform IMU temperature calibration before assembling the autopilot into the vehicle (optional)\r\n\r\nIMU temperature calibration reduces the probability of *Accel inconsistent* and *Gyro inconsistent* errors and reduces the time required to arm the vehicle.\r\nIMU temperature calibration requires lowering the temperature of the autopilot (flight controller) to circa -20°C.\r\nThat is harder to do once the autopilot is assembled inside the vehicle, hence it is done now.\r\n\r\n- [start the software](https://ardupilot.github.io/MethodicConfigurator/USECASES.html#use-the-ardupilot-methodic-configurator-software-for-the-first-time)\r\n- Perform [IMU temperature calibration](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#41-setup-imu-temperature-calibration)\r\n\r\nFollow [starting the software after having created a new vehicle](https://ardupilot.github.io/MethodicConfigurator/USECASES.html#use-the-ardupilot-methodic-configurator-software-after-having-created-a-vehicle-from-a-template)\r\ninstructions once the calibration procedure is finished.\r\n\r\n### 1.5 Assemble all components except the propellers\r\n\r\nAssemble and connect all components. Make sure you [follow best practices](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#11-multicopter-hardware-best-practices)\r\n\r\n### 1.6 Basic mandatory configuration\r\n\r\nAgain using the [*ArduPilot Methodic configurator* software GUI](https://ardupilot.github.io/MethodicConfigurator/USECASES.html#use-the-ardupilot-methodic-configurator-software-after-having-created-a-vehicle-from-a-template)\r\nperform the following steps:\r\n\r\n- [04_board_orientation.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#61-configure-flight-controller-orientation) flight controller orientation\r\n- [05_remote_controller.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#62-configure-the-rc-receiver) remote controller connections and protocol\r\n- [06_telemetry.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#63-configure-telemetry) telemetry transceiver connections and protocol (optional)\r\n- [07_esc.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#64-configure-the-esc) Electronic-Speed-Controller connections and protocol\r\n- [08_batt1.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#65-configure-the-primary-battery-monitor) Battery health and state of charge monitoring\r\n- [10_gnss.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#67-configure-the-gnss-receivers) GNSS receiver connection and protocol\r\n- [11_initial_atc.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#68-initial-attitude-pid-gains-vehicle-size-dependent) initial attitude\r\n  PID gains (vehicle size dependent)\r\n\r\nNow use [Mission Planner](https://firmware.ardupilot.org/Tools/MissionPlanner/) to do:\r\n\r\n- [12_mp_setup_mandatory_hardware.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#69-configure-mandatory-hardware-parameters)\r\n  calibrate vehicle sensors\r\n\r\nAnd continue with the [*ArduPilot Methodic configurator* software GUI](https://ardupilot.github.io/MethodicConfigurator/USECASES.html#use-the-ardupilot-methodic-configurator-software-after-having-created-a-vehicle-from-a-template)\r\n:\r\n\r\n- [13_general_configuration.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#610-general-configuration) general misc configuration\r\n- [Test if the hardware diagnostics are OK](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#611-ardupilot-hardware-report)\r\n- [14_logging.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#612-configure-logging) configure Dataflash/SDCard logging (black box data)\r\n- [15_motor.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#613-motorpropeller-order-and-direction-test) motor order and direction tests.\r\n  ESC linearization.\r\n- [16_pid_adjustment.parm](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#614-optional-pid-adjustment) attitude PID gains (vehicle size dependent)\r\n- [17_remote_id.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#615-remote-id-aka-drone-id) required by law in many countries\r\n- [18_notch_filter_setup.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#616-notch-filters-setup) to remove motor noise,\r\n  reduce power consumption and increase flight stability\r\n\r\n### 1.7 Assemble propellers and perform the first flight\r\n\r\nNow that all mandatory configuration steps are done you can [perform the first flight](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#7-assemble-propellers-and-perform-the-first-flight)\r\n\r\n### 1.8 Minimalistic mandatory tuning\r\n\r\nThese are the very [minimum tuning steps](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#8-minimalistic-mandatory-tuning)\r\nrequired for a stable flight:\r\n\r\n- Load the `.bin` log file from the first flight into [Notch filter webtool](https://firmware.ardupilot.org/Tools/WebTools/FilterReview/)\r\n- [19_notch_filter_results.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#81-notch-filter-calibration) use the webtool information to\r\n  configure the notch filter(s)\r\n- [20_throttle_controller.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#82-configure-the-throttle-controller) the altitude controller\r\n  depends on the power-to-thrust ratio found in the first flight\r\n- [21_ekf_config.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#83-configure-the-ekf-altitude-source-weights) sometimes\r\n  the EKF3 needs a tune to maintain altitude\r\n- [22_quick_tune_setup.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#84-second-flight-pid-vtol-quiktune-lua-script-or-manual-pid-tune) and\r\n  [23_quick_tune_results.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#84-second-flight-pid-vtol-quiktune-lua-script-or-manual-pid-tune),\r\n  you need lua scripting support to do this if not available you can tune manually.\r\n\r\nThat is it, if you are impatient and do not want an optimized vehicle you can skip to [everyday use](#113-everyday-use).\r\n\r\n### 1.9 Standard tuning (optional)\r\n\r\nThese are the [standard tuning steps](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#9-standard-tuning-optional) required for an optimized flight:\r\n\r\n- [24_inflight_magnetometer_fit_setup.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#91-third-flight-magfit), use lua scripted\r\n  flight path or fly manually, store the results using\r\n  [25_inflight_magnetometer_fit_results.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#912-calculate-inflight-magfit-calibration), use the\r\n  [magfit webtool](https://firmware.ardupilot.org/Tools/WebTools/MAGFit/) to calculate a file that the ardupilot methodic configurator can use\r\n- [26_quick_tune_setup.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#921-setup-quicktune) and\r\n  [27_quick_tune_results.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#922-store-quicktune-results-to-file) Redo quick-tune now that\r\n  the compass magnetic interference is fully calibrated\r\n- [28_evaluate_the_aircraft_tune_ff_disable.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#93-fifth-flight-evaluate-the-aircraft-tune---part-1)\r\n  and\r\n  [29_evaluate_the_aircraft_tune_ff_enable.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#94-sixth-flight-evaluate-the-aircraft-tune---part-2)\r\n- [30_autotune_roll_setup.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#95-autotune-flights) and\r\n  [31_autotune_roll_results.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#951-roll-axis-autotune) tune roll axis rate and angle PIDs\r\n- [32_autotune_pitch_setup.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#952-pitch-axis-autotune) and\r\n  [33_autotune_pitch_results.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#952-pitch-axis-autotune) tune pitch axis rate and angle PIDs\r\n- [34_autotune_yaw_setup.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#953-yaw-axis-autotune) and\r\n  [35_autotune_yaw_results.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#953-yaw-axis-autotune) tune yaw axis rate and angle PIDs\r\n- [36_autotune_yawd_setup.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#954-yaw-d-axis-autotune-optional) and\r\n  [37_autotune_yawd_results.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#954-yaw-d-axis-autotune-optional) tune yawd axis rate and\r\n  angle PIDs\r\n- [38_autotune_roll_pitch_retune_setup.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#955-roll-and-pitch-axis-re-autotune) and\r\n  [39_autotune_roll_pitch_retune_results.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#955-roll-and-pitch-axis-re-autotune) re-tune roll\r\n  and pitch pitch axis rate and angle PIDs\r\n\r\nNow the standard tuning is complete you can skip to [everyday use](#113-everyday-use)\r\n\r\n### 1.10 Improve altitude under windy conditions (optional)\r\n\r\n- [40_windspeed_estimation.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#10-improve-altitude-under-windy-conditions-optional)\r\n  estimates the wind speed\r\n- [41_barometer_compensation.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#102-baro-compensation-flights)\r\n  Uses the estimated wind speed to improve altitude stability\r\n\r\n### 1.11 System identification for analytical PID optimization (optional)\r\n\r\n- [42_system_id_roll.param, 43_system_id_pitch.param, 44_system_id_yaw.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#11-system-identification-for-analytical-pid-optimization-optional)\r\n- [46_analytical_pid_optimization.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#112-analytical-multicopter-flight-controller-pid-optimization)\r\n\r\n### 1.12 Position controller tuning (optional)\r\n\r\n- [47_position_controller.param, 48_guided_operation.param, 49_precision_land.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#12-position-controller-tuning-optional)\r\n\r\n### 1.13 Everyday use\r\n\r\nNow that tuning and configuration are done, some logging and tests can be disabled and some more safety features enabled:\r\n\r\n- [53_everyday_use.param](https://ardupilot.github.io/MethodicConfigurator/TUNING_GUIDE_ArduCopter#13-productive-configuration)\r\n\r\nCongratulations your flight controller is now fully configured in the safest and fastest way publicly known.\r\n\r\nEnjoy your properly configured vehicle.\r\n\r\n## Documentation and Support\r\n\r\nNeed [help or support](https://ardupilot.github.io/MethodicConfigurator/SUPPORT.html)\r\n\r\nThere is also [documentation on other use cases](https://ardupilot.github.io/MethodicConfigurator/USECASES.html)\r\nand a detailed but generic [Usermanual](https://ardupilot.github.io/MethodicConfigurator/USERMANUAL.html).\r\n\r\n## Contributing\r\n\r\nWant [to help us and contribute](https://github.com/ArduPilot/MethodicConfigurator/blob/master/CONTRIBUTING.md)?\r\n\r\n## Internationalization\r\n\r\nThe software is available in [multiple languages](https://github.com/ArduPilot/MethodicConfigurator/tree/master/ardupilot_methodic_configurator/locale).\r\nOn MS Windows the language is selected during install and that selection is stored in the desktop icon.\r\nYou can manually create multiple desktop icons, each will run the software in a different language.\r\nOn Linux and macOS the language is selectable by the `--language` command line argument.\r\n\r\nSee [contributing page](https://github.com/ArduPilot/MethodicConfigurator/blob/master/CONTRIBUTING.md) if you want to help us translate the software into your language.\r\n\r\n## Code of Conduct\r\n\r\nTo use and develop this software you must obey the [ArduPilot Methodic Configurator Code of Conduct](https://github.com/ArduPilot/MethodicConfigurator/blob/master/CODE_OF_CONDUCT.md).\r\n\r\n## License\r\n\r\nThis software is cost free.\r\nThis project is licensed under the [GNU General Public License v3.0](https://github.com/ArduPilot/MethodicConfigurator/blob/master/LICENSE.md).\r\n\r\n## Credits\r\n\r\nIt builds upon other [open-source software packages](https://ardupilot.github.io/MethodicConfigurator/credits/CREDITS.html)\r\n\r\n\u003c!-- Gurubase Widget --\u003e\r\n\u003cscript async src=\"https://widget.gurubase.io/widget.latest.min.js\"\r\n    data-widget-id=\"uE4kxEE4LY3ZSyfNsF5bU6gIOnWGTBOL_e16KwDH-0g\"\r\n    data-text=\"Ask AI\"\r\n    data-margins='{\"bottom\": \"1rem\", \"right\": \"1rem\"}'\r\n    data-light-mode=\"true\"\r\n    id=\"guru-widget-id\"\u003e\r\n\u003c/script\u003e\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fardupilot%2Fmethodicconfigurator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fardupilot%2Fmethodicconfigurator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fardupilot%2Fmethodicconfigurator/lists"}