diff --git a/.gitignore b/.gitignore
index 66ba90e87bc5c9e05ea62a90757d8186f81e94af..9dc9f14471a36dcb8fae4e6bfc8532f5db45d895 100644
--- a/.gitignore
+++ b/.gitignore
@@ -89,3 +89,5 @@ coverage.info
 posix-configs/SITL/init/test/*_generated
 
 parameters.md
+airframes.md
+airframes.xml
diff --git a/.travis.yml b/.travis.yml
index a57302b5e5230da29a231286cbbf4f86261d1d43..08472d4c9e7202025bf5019a5cb69a029294663d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -33,7 +33,7 @@ matrix:
       sudo: required
       services:
         - docker
-      env: BUILD_TARGET=parameters_markdown
+      env: BUILD_TARGET=px4_metadata
     - os: osx
       sudo: true
       osx_image: xcode8
@@ -64,8 +64,8 @@ script:
       ./Tools/docker_run.sh 'make check_format';
     elif [[ "${BUILD_TARGET}" = "tests_linux" ]]; then
       ./Tools/docker_run.sh 'make tests';
-    elif [[ "${BUILD_TARGET}" = "parameters_markdown" ]]; then
-      ./Tools/docker_run.sh 'make parameters_markdown';
+    elif [[ "${BUILD_TARGET}" = "px4_metadata" ]]; then
+      ./Tools/docker_run.sh 'make px4_metadata';
     elif [[ "${BUILD_TARGET}" = "clang-tidy" ]]; then
       PX4_DOCKER_REPO=px4io/px4-dev-clang:2017-04-22 ./Tools/docker_run.sh 'make clang-tidy-parallel';
     elif [ "${TRAVIS_OS_NAME}" = "osx" ]; then
@@ -78,7 +78,7 @@ after_success:
          ./Tools/docker_run.sh 'make s3put_firmware AWS_S3_BUCKET="px4-travis/archives/Firmware/${TRAVIS_BRANCH}/${TRAVIS_BUILD_ID}"'
       && ./Tools/docker_run.sh 'make s3put_qgc_firmware AWS_S3_BUCKET="px4-travis/Firmware/${TRAVIS_BRANCH}"';
     fi
-  - if [[ "${BUILD_TARGET}" = "parameters_markdown" && "${TRAVIS_PULL_REQUEST}" == "false" && "${TRAVIS_BRANCH}" != "coverity" ]]; then
+  - if [[ "${BUILD_TARGET}" = "px4_metadata" && "${TRAVIS_PULL_REQUEST}" == "false" && "${TRAVIS_BRANCH}" != "coverity" ]]; then
          ./Tools/docker_run.sh 'make s3put_parameters_markdown AWS_S3_BUCKET="px4-travis/Firmware/${TRAVIS_BRANCH}"';
     fi
 
diff --git a/Makefile b/Makefile
index bab3c0db97fa49f6dd945fccf92418ca22835e50..520e003d0461485c423d6cdcd7b054f308803384 100644
--- a/Makefile
+++ b/Makefile
@@ -182,8 +182,9 @@ excelsior_legacy_default: posix_excelsior_legacy qurt_excelsior_legacy
 
 # QGroundControl flashable NuttX firmware
 qgc_firmware: \
-	check_auav-x21_default \
+	check_aerocore2_default \
 	check_aerofc-v1_default \
+	check_auav-x21_default \
 	check_crazyflie_default \
 	check_mindpx-v2_default \
 	check_px4fmu-v1_default \
@@ -192,7 +193,6 @@ qgc_firmware: \
 	check_px4fmu-v3_default \
 	check_px4fmu-v4_default \
 	check_tap-v1_default \
-	check_aerocore2_default \
 	check_sizes
 
 # Other NuttX firmware
@@ -222,7 +222,6 @@ uavcan_firmware:
 	@BOARD=s2740vc_1_0 make --silent --no-print-directory
 	@BOARD=px4esc_1_6 make --silent --no-print-directory && $(SRC_DIR)/Tools/uavcan_copy.sh)
 
-
 sizes:
 	@-find build_* -name firmware_nuttx -type f | xargs size 2> /dev/null || :
 
@@ -240,11 +239,17 @@ check_%:
 
 # Documentation
 # --------------------------------------------------------------------
-.PHONY: parameters_markdown
+.PHONY: parameters_metadata airframe_metadata px4_metadata
 
-parameters_markdown: posix_sitl_default
+parameters_metadata: posix_sitl_default
 	@python $(SRC_DIR)/Tools/px_process_params.py -s $(SRC_DIR)/src --markdown
 
+airframe_metadata:
+	@python ${SRC_DIR}/Tools/px_process_airframes.py -v -a ${SRC_DIR}/ROMFS/px4fmu_common/init.d --markdown
+	@python ${SRC_DIR}/Tools/px_process_airframes.py -v -a ${SRC_DIR}/ROMFS/px4fmu_common/init.d --xml
+
+px4_metadata: parameters_metadata airframe_metadata
+
 # S3 upload helpers
 # --------------------------------------------------------------------
 # s3cmd uses these ENV variables
@@ -261,11 +266,12 @@ s3put_firmware: Firmware.zip
 	$(SRC_DIR)/Tools/s3put.sh Firmware.zip
 
 s3put_qgc_firmware: qgc_firmware
-	@$(SRC_DIR)/Tools/s3put.sh $(SRC_DIR)/build_px4fmu-v3_default/airframes.xml
-	@$(SRC_DIR)/Tools/s3put.sh $(SRC_DIR)/build_px4fmu-v3_default/parameters.xml
 	@find $(SRC_DIR)/build_* -name "*.px4" -exec $(SRC_DIR)/Tools/s3put.sh "{}" \;
 
-s3put_parameters_markdown: parameters_markdown
+s3put_metadata: px4_metadata
+	@$(SRC_DIR)/Tools/s3put.sh airframes.md
+	@$(SRC_DIR)/Tools/s3put.sh airframes.xml
+	@$(SRC_DIR)/Tools/s3put.sh build_posix_sitl_default/parameters.xml
 	@$(SRC_DIR)/Tools/s3put.sh parameters.md
 
 # Astyle
@@ -304,8 +310,6 @@ tests_coverage:
 	@genhtml --legend --show-details --function-coverage --quiet --output-directory coverage-html coverage.info
 	@$(MAKE) --no-print-directory posix_sitl_default test_results_junit
 
-
-
 # Clang analyzers
 # --------------------------------------------------------------------
 .PHONY: scan-build clang-check clang-tidy