diff --git a/ArduCopter/Des.h b/ArduCopter/Des.h
index ffe72a03ea..cac61f7df0 100644
--- a/ArduCopter/Des.h
+++ b/ArduCopter/Des.h
@@ -8,6 +8,7 @@ private:
/* data */
public:
uint8_t deskey[8] = {90, 114, 90, 107, 85, 97, 86, 103}; //{ "ZrZkUaVg" };
+ // uint8_t deskey[8] = {90, 114, 90, 104, 68, 85, 97, 86}; //{ "ZrZhDUaV" };
uint8_t DES_Encrypt_key[8];
uint8_t DES_Decrypt_key[8];
uint8_t sub_keys[16][8]; //sub_keys[16][8]
diff --git a/ArduCopter/Parameters.cpp b/ArduCopter/Parameters.cpp
index 35b3e137b6..6bb5665690 100644
--- a/ArduCopter/Parameters.cpp
+++ b/ArduCopter/Parameters.cpp
@@ -1664,9 +1664,7 @@ void Copter::convert_fs_options_params(void)
// AP_Param::set_and_save_by_name("FS_OPTIONS", fs_options_converted);
fs_opt->set_and_save(fs_options_converted);
}
-
-
-// modify by @Brown
+// #define ZR_FRAME_TYPE "zr"
const char* Copter::get_sysid_board_id(void)
{
@@ -1677,41 +1675,51 @@ const char* Copter::get_sysid_board_id(void)
int32_t nameValue2 = (int32_t)g.sysid_board_name_2nd;
int8_t type = g.sysid_type;
-
switch (type)
{
- case 0:
- snprintf(buf, sizeof(buf), "Version: RS100H-v%u.%u.%u ,ID: RS100%04d%05d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
+ case 0:
+ snprintf(buf, sizeof(buf), "Version: %s-v%u.%u.%u ,ID: D100%04d%05d",ZR_FRAME_TYPE,AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
break;
- // case 1:
- // snprintf(buf, sizeof(buf), "Version: zr-v%u.%u.%u ,ID: M660%04d%05d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
- // break;
- // case 2:
- // snprintf(buf, sizeof(buf), "Version: zr-v%u.%u.%u ,ID: M610%04d%05d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
- // break;
- // case 3:
- // char name[6] = {' ',' ',' ',' ',' '};
- // // memset(name,0,6);
- // nameValue2 = nameValue2 & 0xffffff;
- // // name[5] = "a";
- // name[4] = nameValue2&0xFF;
- // name[3] = nameValue2>>8&0xFF;
- // name[2] = nameValue2>>16& 0xFF;
- // name[1] = nameValue1&0xFF;
- // name[0] = nameValue1>>8 & 0xFF;
+ case 1:
+ snprintf(buf, sizeof(buf), "Version: zhd-v%u.%u.%u ,ID: D100%04d%05d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
+
+ // snprintf(buf, sizeof(buf), "Version: zr-v%u.%u.%u ,ID: RS100%04d%05d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
+ break;
+ case 2:
+ snprintf(buf, sizeof(buf), "Version: M66-v%u.%u.%u ,ID: M660%04d%05d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
+ break;
+ case 3:
+ snprintf(buf, sizeof(buf), "Version: M610-v%u.%u.%u ,ID: M610%04d%05d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
+ break;
+ case 4:
+ snprintf(buf, sizeof(buf), "Version: zr-v%u.%u.%u ,ID: RS100%04d%05d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
+ break;
+ case 5:
+ snprintf(buf, sizeof(buf), "Version: D100H-v%u.%u.%u ,ID: D100%04d%05d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
+ break;
+ // case 4:
+ // char name[6] = {' ',' ',' ',' ',' '};
+ // // memset(name,0,6);
+ // nameValue2 = nameValue2 & 0xffffff;
+ // // name[5] = "a";
+ // name[4] = nameValue2&0xFF;
+ // name[3] = nameValue2>>8&0xFF;
+ // name[2] = nameValue2>>16& 0xFF;
+ // name[1] = nameValue1&0xFF;
+ // name[0] = nameValue1>>8 & 0xFF;
// // snprintf(buf, sizeof(buf), "Version: zr-v4.0.10 ,Board ID: ZRZK.20QT2.%d",(int)nameValue2);
// snprintf(buf, sizeof(buf), "Version: zr-v%u.%u.%u ,Board ID: ZRZK.%5s.%03d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,name,(int)g.sysid_board_id);
// break;
- // case 4:
+ // case 5:
// snprintf(buf, sizeof(buf), "Version: zr-v%u.%u.%u ,Board ID: ZRZK.19QT2.%d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue2);
// break;
- // case 5:
+ // case 6:
// snprintf(buf, sizeof(buf), "Version: zr-v%u.%u.%u ,Board ID: %04d%04d",AP::fwversion().major,AP::fwversion().minor,AP::fwversion().patch,(int)nameValue1,(int)nameValue2);
// break;
- default:
- break;
+ // default:
+ // break;
}
return buf;
}
diff --git a/ArduCopter/version.h b/ArduCopter/version.h
index 2f7b614fbc..4f23c283eb 100644
--- a/ArduCopter/version.h
+++ b/ArduCopter/version.h
@@ -6,12 +6,12 @@
#include "ap_version.h"
-#define THISFIRMWARE "ZRUAV v4.0.12" //"ArduCopter V4.0.0"
+#define THISFIRMWARE "ZRUAV v4.0.15" //"ArduCopter V4.0.0"
// the following line is parsed by the autotest scripts
-#define FIRMWARE_VERSION 4,0,12,FIRMWARE_VERSION_TYPE_OFFICIAL
+#define FIRMWARE_VERSION 4,0,15,FIRMWARE_VERSION_TYPE_OFFICIAL
#define FW_MAJOR 4
#define FW_MINOR 0
-#define FW_PATCH 12
+#define FW_PATCH 15
#define FW_TYPE FIRMWARE_VERSION_TYPE_OFFICIAL
diff --git a/d100.sh b/d100.sh
new file mode 100755
index 0000000000..9bdda25f44
--- /dev/null
+++ b/d100.sh
@@ -0,0 +1,3 @@
+./waf configure --board d100
+./waf copter
+cp ./build/d100/bin/arducopter.apj /mnt/f/_01-work/100\=data/固件/zr-v4/wsl/d100-v4.0.15.px4
diff --git a/d100h.sh b/d100h.sh
new file mode 100755
index 0000000000..98f49a36bc
--- /dev/null
+++ b/d100h.sh
@@ -0,0 +1,3 @@
+./waf configure --board d100h
+./waf copter
+cp ./build/d100h/bin/arducopter.apj /mnt/f/_01-work/100\=data/固件/zr-v4/wsl/d100h-v4.0.15.px4
diff --git a/hrs100h.sh b/hrs100h.sh
index 43ef3ebea2..79e6fd1c1a 100755
--- a/hrs100h.sh
+++ b/hrs100h.sh
@@ -1,3 +1,3 @@
-./waf configure --board rs100
+./waf configure --board rs100h
./waf copter
-cp ./build/rs100/bin/arducopter.apj /mnt/f/_01-work/100\=data/固件/zr-v4/wsl/rs100h-v4.0.12.px4
+cp ./build/rs100h/bin/arducopter.apj /mnt/f/_01-work/100\=data/固件/zr-v4/wsl/rs100h-v4.0.15.px4
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/d100/README.md b/libraries/AP_HAL_ChibiOS/hwdef/d100/README.md
new file mode 100644
index 0000000000..4f5a2eb5d4
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/d100/README.md
@@ -0,0 +1,393 @@
+# Pixhawk4 Flight Controller
+
+The Pixhawk4 flight controller is sold by [Holybro](http://www.holybro.com/product/pixhawk-4)
+
+## Features
+
+ - STM32F765 microcontroller
+ - Two IMUs: ICM20689 and BMI055
+ - MS5611 SPI barometer
+ - builtin I2C IST8310 magnetometer
+ - microSD card slot
+ - 6 UARTs plus USB
+ - 14 PWM outputs
+ - Four I2C and two CAN ports
+ - External Buzzer
+ - external safety Switch
+ - voltage monitoring for servo rail and Vcc
+ - two dedicated power input ports for external power bricks
+
+## Pinout
+
+![Pixhawk4 Board](pixhawk4-pinout.jpg "Pixhawk4")
+
+## UART Mapping
+
+ - SERIAL0 -> USB
+ - SERIAL1 -> UART2 (Telem1)
+ - SERIAL2 -> UART3 (Telem2)
+ - SERIAL3 -> UART1 (GPS)
+ - SERIAL4 -> UART4 (GPS2)
+ - SERIAL5 -> UART6 (spare)
+ - SERIAL6 -> UART7 (spare, debug)
+
+The Telem1 and Telem2 ports have RTS/CTS pins, the other UARTs do not
+have RTS/CTS.
+
+The UART7 connector is labelled debug, but is available as a general
+purpose UART with ArduPilot.
+
+### TELEM1, TELEM2 ports
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ TX (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ RX (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ CTS |
+ +3.3V |
+
+
+ 5 (blk) |
+ RTS |
+ +3.3V |
+
+
+ 6 (blk) |
+ GND |
+ GND |
+
+
+
+
+
+### GPS port
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ SERIAL3 TX (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ SERIAL3 RX (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ SCL |
+ +3.3 (pullups) |
+
+
+ 5 (blk) |
+ SDA |
+ +3.3 (pullups) |
+
+
+ 6 (blk) |
+ SafetyButton |
+ +3.3V |
+
+
+ 7 (blk) |
+ SafetyLED |
+ +3.3V |
+
+
+ 8 (blk) |
+ VDD 3.3 (OUT) |
+ +3.3V |
+
+
+ 9 (blk) |
+ Buzzer |
+ +3.3V |
+
+
+ 10 (blk) |
+ GND |
+ GND |
+
+
+
+
+## RC Input
+
+RC input is configured on the port marked DSM/SBUS RC. This connector
+supports all RC protocols. Two cables are available for this port. To
+use software binding of Spektrum satellite receivers you need to use
+the Spektrum satellite cable.
+
+## PWM Output
+
+The Pixhawk4 supports up to 16 PWM outputs. First first 8 outputs (labelled
+"MAIN") are controlled by a dedicated STM32F100 IO controller. These 8
+outputs support all PWM output formats, but not DShot.
+
+The remaining 8 outputs (labelled AUX1 to AUX8) are the "auxillary"
+outputs. These are directly attached to the STM32F765 and support all
+PWM protocols. The first 6 of the auxillary PWM outputs support DShot.
+
+The 8 main PWM outputs are in 3 groups:
+
+ - PWM 1 and 2 in group1
+ - PWM 3 and 4 in group2
+ - PWM 5, 6, 7 and 8 in group3
+
+The 8 auxillary PWM outputs are in 2 groups:
+
+ - PWM 1, 2, 3 and 4 in group1
+ - PWM 5 and 6 in group2
+ - PWM 7 and 8 in group3
+
+Channels within the same group need to use the same output rate. If
+any channel in a group uses DShot then all channels in the group need
+to use DShot.
+
+## Battery Monitoring
+
+The board has two dedicated power monitor ports on 6 pin
+connectors. The correct battery setting parameters are dependent on
+the type of power brick which is connected.
+
+## Compass
+
+The Pixhawk4 has a builtin IST8310 compass. Due to potential
+interference the board is usually used with an external I2C compass as
+part of a GPS/Compass combination.
+
+## GPIOs
+
+The 6 PWM ports can be used as GPIOs (relays, buttons, RPM etc). To
+use them you need to limit the number of these pins that is used for
+PWM by setting the BRD_PWM_COUNT to a number less than 6. For example
+if you set BRD_PWM_COUNT to 4 then PWM5 and PWM6 will be available for
+use as GPIOs.
+
+The numbering of the GPIOs for PIN variables in ArduPilot is:
+
+ - AUX1 50
+ - AUX2 51
+ - AUX3 52
+ - AUX4 53
+ - AUX5 54
+ - AUX6 55
+
+## Analog inputs
+
+The Pixhawk4 has 7 analog inputs
+
+ - ADC Pin0 -> Battery Voltage
+ - ADC Pin1 -> Battery Current Sensor
+ - ADC Pin2 -> Battery Voltage 2
+ - ADC Pin3 -> Battery Current Sensor 2
+ - ADC Pin4 -> ADC port pin 2
+ - ADC Pin14 -> ADC port pin 3
+ - ADC Pin10 -> ADC 5V Sense
+ - ADC Pin11 -> ADC 3.3V Sense
+ - ADC Pin103 -> RSSI voltage monitoring
+
+## I2C Buses
+
+ - the internal I2C port is bus 0 in ArduPilot (I2C3 in hardware)
+ - the port labelled I2CA is bus 3 in ArduPilot (I2C4 in hardware)
+ - the port labelled I2CB is bus 2 in ArduPilot (I2c2 in hardware)
+ - the port labelled GPS is bus 1 in ArduPilot (I2c1 in hardware)
+
+### Pinout for I2CA
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ SCL |
+ +3.3 (pullups) |
+
+
+ 3 (blk) |
+ SDA |
+ +3.3 (pullups) |
+
+
+ 4 (blk) |
+ GND |
+ GND |
+
+
+
+
+### Pinout for I2CB+UART
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ SERIAL4 TX (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ SERIAL4 RX (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ SCL |
+ +3.3 (pullups) |
+
+
+ 5 (blk) |
+ SDA |
+ +3.3 (pullups) |
+
+
+ 6 (blk) |
+ GND |
+ GND |
+
+
+
+
+## CAN
+
+The Pixhawk4 has two independent CAN buses, with the following pinouts.
+
+### CAN1&2
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ CAN_H |
+ +12V |
+
+
+ 3 (blk) |
+ CAN_L |
+ +12V |
+
+
+ 4 (blk) |
+ GND |
+ GND |
+
+
+
+
+## Debug
+
+The Pixhawk4 supports SWD debugging on the debug port
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ FMU VDD 3.3 |
+ +3.3V |
+
+
+ 2 (blk) |
+ UART TX Debug (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ UART RX Debug (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ SWDIO |
+ +3.3V |
+
+
+ 5 (blk) |
+ SWCLK |
+ +3.3V |
+
+
+ 6 (blk) |
+ GND |
+ GND |
+
+
+
+
+
+## Loading Firmware
+
+The board comes pre-installed with an ArduPilot compatible bootloader,
+allowing the loading of *.apj firmware files with any ArduPilot
+compatible ground station.
+
+## Acknowledgements
+
+Thanks to
+[PX4](https://docs.px4.io/en/flight_controller/pixhawk4.html) for
+images used under the [CC-BY 4.0 license](https://creativecommons.org/licenses/by/4.0/)
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/d100/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/d100/defaults.parm
new file mode 100644
index 0000000000..c839d8ee0b
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/d100/defaults.parm
@@ -0,0 +1,325 @@
+
+# Pixhawk4 does not have hw flow control on radios
+#NOTE: 2020/8/26 18:26:32 Frame : PID 0.19 0.17
+ACRO_BAL_PITCH 1
+ACRO_BAL_ROLL 1
+ACRO_RP_EXPO 0.3
+ACRO_RP_P 4.5
+ACRO_THR_MID 0
+ACRO_TRAINER 2
+ACRO_Y_EXPO 0
+ACRO_YAW_P 3
+ARMING_CHECK 1
+ARMING_DELAY 5
+ARMING_MIS_ITEMS 0
+ARMING_RUDDER 2
+ARMING_VPERC 90
+ATC_ACCEL_P_MAX 110000
+ATC_ACCEL_R_MAX 110000
+ATC_ACCEL_Y_MAX 27000
+ATC_ANG_LIM_TC 1
+ATC_ANG_PIT_P 4.5
+ATC_ANG_RLL_P 4.5
+ATC_ANG_YAW_P 6
+ATC_ANGLE_BOOST 1
+ATC_INPUT_TC 0.15
+ATC_AA_PIT_D 0.0036
+ATC_AA_PIT_FF 0
+ATC_AA_PIT_FLTD 20
+ATC_AA_PIT_FLTE 0
+ATC_AA_PIT_FLTT 20
+ATC_AA_PIT_I 0.17
+ATC_AA_PIT_IMAX 0.5
+ATC_AA_PIT_P 0.19
+ATC_AA_RLL_D 0.0036
+ATC_AA_RLL_FF 0
+ATC_AA_RLL_FLTD 20
+ATC_AA_RLL_FLTE 0
+ATC_AA_RLL_FLTT 20
+ATC_AA_RLL_I 0.17
+ATC_AA_RLL_IMAX 0.5
+ATC_AA_RLL_P 0.19
+ATC_AA_YAW_D 0
+ATC_AA_YAW_FF 0
+ATC_AA_YAW_FLTD 0
+ATC_AA_YAW_FLTE 2.5
+ATC_AA_YAW_FLTT 20
+ATC_AA_YAW_I 0.04
+ATC_AA_YAW_IMAX 0.5
+ATC_AA_YAW_P 0.45
+ATC_RATE_FF_ENAB 1
+ATC_RATE_P_MAX 0
+ATC_RATE_R_MAX 0
+ATC_RATE_Y_MAX 0
+ATC_SLEW_YAW 6000
+ATC_THR_MIX_MAN 0.1
+ATC_THR_MIX_MAX 0.5
+ATC_THR_MIX_MIN 0.1
+AVOID_ANGLE_MAX 1000
+AVOID_BEHAVE 0
+AVOID_DIST_MAX 1
+AVOID_ENABLE 0
+AVOID_MARGIN 7
+BATT_AMP_OFFSET 0
+BATT_AMP_PERVLT 20.7
+BATT_ARM_MAH 0
+BATT_ARM_VOLT 0
+BATT_CAPACITY 16000
+BATT_CRT_MAH 0
+BATT_CRT_VOLT 0
+BATT_CURR_PIN 1
+BATT_FS_CRT_ACT 0
+BATT_FS_LOW_ACT 2
+BATT_FS_VOLTSRC 0
+BATT_LOW_MAH 0
+BATT_LOW_VOLT 20.5
+BATT_LOW_TIMER 10
+BATT_MONITOR 4
+BATT_SERIAL_NUM -1
+BATT_VOLT_PIN 0
+BATT2_MONITOR 13
+BRD_PWM_COUNT 0
+BRD_RTC_TYPES 1
+BRD_RTC_TZ_MIN 0
+BRD_SAFETYENABLE 0
+BRD_SAFETYOPTION 3
+BRD_SBUS_OUT 0
+BRD_SD_SLOWDOWN 0
+BRD_SER1_RTSCTS 0
+BRD_SER2_RTSCTS 0
+BRD_SERIAL_NUM 0
+BRD_TYPE 24
+BRD_VBUS_MIN 4.3
+BRD_VSERVO_MIN 0
+BTN_ENABLE 0
+CAM_AUTO_ONLY 1
+CAM_DURATION 3
+CAM_FEEDBACK_PIN -1
+CAM_FEEDBACK_POL 0
+CAM_MAX_ROLL 0
+CAM_MIN_INTERVAL 0
+CAM_RELAY_ON 1
+CAM_SERVO_OFF 1100
+CAM_SERVO_ON 1900
+CAM_TRIGG_DIST 0
+CAM_TRIGG_TYPE 2
+CAM_TYPE 0
+CAN_D1_PROTOCOL 1
+CAN_D1_UC_ESC_BM 0
+CAN_D1_UC_NODE 10
+CAN_D1_UC_SRV_BM 0
+CAN_D1_UC_SRV_RT 50
+CAN_D2_PROTOCOL 1
+CAN_P1_BITRATE 1000000
+CAN_P1_DRIVER 1
+CAN_P2_BITRATE 1000000
+CAN_P2_DRIVER 1
+CAN_SLCAN_CPORT 0
+CAN_SLCAN_SERNUM -1
+CAN_SLCAN_TIMOUT 0
+CHUTE_ENABLED 0
+CIRCLE_RADIUS 1000
+CIRCLE_RATE 20
+COMPASS_USE 1
+COMPASS_USE2 0
+COMPASS_USE3 0
+DEV_OPTIONS 0
+DISARM_DELAY 2
+EK2_MAG_I_GATE 800
+EK2_YAW_I_GATE 800
+FLTMODE_CH 5
+FLTMODE1 2
+FLTMODE2 2
+FLTMODE3 5
+FLTMODE4 5
+FLTMODE5 5
+FLTMODE6 5
+FRAME_CLASS 1
+FRAME_TYPE 1
+FS_CRASH_CHECK 1
+FS_EKF_ACTION 1
+FS_EKF_THRESH 0.8
+FS_GCS_ENABLE 0
+FS_OPTIONS 0
+FS_THR_ENABLE 0
+FS_THR_VALUE 975
+FS_VIBE_ENABLE 1
+GND_EFFECT_COMP 1
+GND_EXT_BUS -1
+GND_FLTR_RNG 0
+GND_PRIMARY 0
+GND_PROBE_EXT 0
+GND_TEMP 0
+GPS_AUTO_CONFIG 1
+GPS_AUTO_SWITCH 1
+GPS_BLEND_MASK 5
+GPS_BLEND_TC 10
+GPS_DELAY_MS 0
+GPS_DELAY_MS2 0
+GPS_GNSS_MODE 0
+GPS_GNSS_MODE2 0
+GPS_HDOP_GOOD 90
+GPS_INJECT_TO 127
+GPS_MIN_DGPS 100
+GPS_MIN_ELEV -100
+GPS_NAVFILTER 8
+GPS_NUM_SW 5
+GPS_POS1_X 0
+GPS_POS1_Y 0
+GPS_POS1_Z 0
+GPS_POS2_X 0
+GPS_POS2_Y -0.23
+GPS_POS2_Z 0
+GPS_RATE_MS 200
+GPS_RATE_MS2 200
+GPS_RAW_DATA 0
+GPS_SAVE_CFG 2
+GPS_SBAS_MODE 2
+GPS_SBP_LOGMASK -256
+GPS_TYPE 1
+GPS_TYPE2 18
+LAND_ALT_LOW 5000
+LAND_LOCK_ALT 40
+LAND_LOCK_RPY 1
+LAND_REPOSITION 1
+LAND_SL_2ND_ALT 1500
+LAND_SL_3ND_ALT 3000
+LAND_SPEED 150
+LAND_SPEED_2ND 50
+LAND_SPEED_3ND 100
+LAND_SPEED_HIGH 0
+MOT_BAT_CURR_MAX 0
+MOT_BAT_CURR_TC 5
+MOT_BAT_IDX 0
+MOT_BAT_VOLT_MAX 0
+MOT_BAT_VOLT_MIN 0
+MOT_BOOST_SCALE 0
+MOT_HOVER_LEARN 2
+MOT_PWM_MAX 0
+MOT_PWM_MIN 0
+MOT_PWM_TYPE 0
+MOT_SAFE_DISARM 0
+MOT_SAFE_TIME 1
+MOT_SLEW_DN_TIME 0
+MOT_SLEW_UP_TIME 0
+MOT_SPIN_ARM 0.1
+MOT_SPIN_MAX 0.95
+MOT_SPIN_MIN 0.15
+MOT_SPOOL_TIME 0.5
+MOT_THST_EXPO 0.65
+MOT_THST_HOVER 0.35
+MOT_YAW_HEADROOM 200
+NTF_BUZZ_ENABLE 1
+NTF_BUZZ_ON_LVL 1
+NTF_BUZZ_PIN 0
+NTF_BUZZ_VOLUME 100
+NTF_DISPLAY_TYPE 0
+NTF_LED_BRIGHT 3
+NTF_LED_OVERRIDE 4
+NTF_LED_TYPES 38
+NTF_OREO_THEME 0
+OA_TYPE 0
+PHLD_BRAKE_ANGLE 3000
+PHLD_BRAKE_RATE 8
+PILOT_ACCEL_Z 250
+PILOT_DN2_ALT 100
+PILOT_SPEED_DN 250
+PILOT_SPEED_DN2 100
+PILOT_SPEED_UP 250
+PILOT_THR_BHV 0
+PILOT_THR_FILT 0
+PILOT_TKOFF_ALT 0
+PLND_ENABLED 0
+PRX_TYPE 4
+PRX_YAW_CORR 0
+RALLY_INCL_HOME 1
+RALLY_LIMIT_KM 0.3
+RALLY_TOTAL 0
+RC7_OPTION 9
+RC8_OPTION 0
+RC9_OPTION 4
+RELAY_PIN 50
+RELAY_PIN2 53
+RELAY_PIN3 52
+RELAY_PIN4 54
+RELAY_PIN5 -1
+RELAY_PIN6 -1
+RNGFND_GAIN 0.8
+RNGFND1_ADDR 11
+RNGFND1_FUNCTION 0
+RNGFND1_GNDCLEAR 10
+RNGFND1_MAX_CM 500
+RNGFND1_MIN_CM 20
+RNGFND1_OFFSET 0
+RNGFND1_ORIENT 25
+RNGFND1_PIN -1
+RNGFND1_POS_X 0
+RNGFND1_POS_Y 0
+RNGFND1_POS_Z 0
+RNGFND1_PWRRNG 0
+RNGFND1_RMETRIC 1
+RNGFND1_SCALING 3
+RNGFND1_STOP_PIN -1
+RNGFND1_TYPE 24
+RNGFND2_ADDR 1
+RNGFND2_FUNCTION 0
+RNGFND2_GNDCLEAR 10
+RNGFND2_MAX_CM 3500
+RNGFND2_MIN_CM 50
+RNGFND2_OFFSET 0
+RNGFND2_ORIENT 0
+RNGFND2_PIN -1
+RNGFND2_POS_X 0
+RNGFND2_POS_Y 0
+RNGFND2_POS_Z 0
+RNGFND2_PWRRNG 0
+RNGFND2_RMETRIC 1
+RNGFND2_SCALING 3
+RNGFND2_STOP_PIN -1
+RNGFND2_TYPE 24
+RTL_ALT_FINAL 1500
+RTL_CLIMB_MIN 0
+RTL_CONE_SLOPE 3
+RTL_LOIT_TIME 5000
+RTL_SPEED 1000
+SCHED_DEBUG 0
+SCHED_LOOP_RATE 400
+SCR_ENABLE 0
+SERIAL_PASS1 0
+SERIAL_PASS2 -1
+SERIAL_PASSTIMO 15
+SERIAL0_BAUD 115
+SERIAL0_PROTOCOL 2
+SERIAL1_BAUD 57
+SERIAL1_OPTIONS 0
+SERIAL1_PROTOCOL 1
+SERIAL2_BAUD 115
+SERIAL2_OPTIONS 0
+SERIAL2_PROTOCOL 24
+SERIAL3_BAUD 38
+SERIAL3_OPTIONS 0
+SERIAL3_PROTOCOL 5
+SERIAL4_BAUD 115
+SERIAL4_OPTIONS 0
+SERIAL4_PROTOCOL 5
+SERIAL5_BAUD 57
+SERIAL5_OPTIONS 0
+SERIAL5_PROTOCOL -1
+SERIAL6_BAUD 57
+SERIAL6_OPTIONS 0
+SERIAL6_PROTOCOL -1
+SERIAL7_BAUD 115200
+SERIAL7_OPTIONS 0
+SERIAL7_PROTOCOL 2
+WP_YAW_BEHAVIOR 1
+WPNAV_ACCEL 100
+WPNAV_ACCEL_Z 100
+WPNAV_FAST_WP 0
+WPNAV_RADIUS 200
+WPNAV_RFND_USE 1
+WPNAV_SPEED 800
+WPNAV_SPEED_DN 150
+WPNAV_SPEED_UP 350
+ZR_RTL_DELAY 15
+ZR_TK_DELAY 5
+ZR_TK_REQ_ALT 600
\ No newline at end of file
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/d100/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/d100/hwdef-bl.dat
new file mode 100644
index 0000000000..8f84484e43
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/d100/hwdef-bl.dat
@@ -0,0 +1,4 @@
+# hw definition file for processing by chibios_hwdef.py
+# for Pixhawk4 bootloader
+
+include ../fmuv5/hwdef-bl.dat
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/d100/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/d100/hwdef.dat
new file mode 100644
index 0000000000..b771a9a9d6
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/d100/hwdef.dat
@@ -0,0 +1,19 @@
+# hw definition file for processing by chibios_hwdef.py
+# for Holybro Pixhawk4 hardware.
+
+include ../fmuv5/hwdef.dat
+undef ZR_FRAME_TYPE
+define ZR_FRAME_TYPE "D100"
+# setup for supplied power brick
+undef HAL_BATT_VOLT_SCALE
+define HAL_BATT_VOLT_SCALE 18.182
+undef HAL_BATT_CURR_SCALE
+define HAL_BATT_CURR_SCALE 36.364
+undef AC_ATC_MULTI_RATE_RP_P
+define AC_ATC_MULTI_RATE_RP_P 0.190f
+undef AC_ATC_MULTI_RATE_RP_I
+define AC_ATC_MULTI_RATE_RP_I 0.170f
+undef AC_ATC_MULTI_RATE_YAW_P
+define AC_ATC_MULTI_RATE_YAW_P 0.450f
+undef AC_ATC_MULTI_RATE_YAW_I
+define AC_ATC_MULTI_RATE_YAW_I 0.040f
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/d100/pixhawk4-pinout.jpg b/libraries/AP_HAL_ChibiOS/hwdef/d100/pixhawk4-pinout.jpg
new file mode 100644
index 0000000000..bebe219ed2
Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/d100/pixhawk4-pinout.jpg differ
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/d100h/README.md b/libraries/AP_HAL_ChibiOS/hwdef/d100h/README.md
new file mode 100644
index 0000000000..4f5a2eb5d4
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/d100h/README.md
@@ -0,0 +1,393 @@
+# Pixhawk4 Flight Controller
+
+The Pixhawk4 flight controller is sold by [Holybro](http://www.holybro.com/product/pixhawk-4)
+
+## Features
+
+ - STM32F765 microcontroller
+ - Two IMUs: ICM20689 and BMI055
+ - MS5611 SPI barometer
+ - builtin I2C IST8310 magnetometer
+ - microSD card slot
+ - 6 UARTs plus USB
+ - 14 PWM outputs
+ - Four I2C and two CAN ports
+ - External Buzzer
+ - external safety Switch
+ - voltage monitoring for servo rail and Vcc
+ - two dedicated power input ports for external power bricks
+
+## Pinout
+
+![Pixhawk4 Board](pixhawk4-pinout.jpg "Pixhawk4")
+
+## UART Mapping
+
+ - SERIAL0 -> USB
+ - SERIAL1 -> UART2 (Telem1)
+ - SERIAL2 -> UART3 (Telem2)
+ - SERIAL3 -> UART1 (GPS)
+ - SERIAL4 -> UART4 (GPS2)
+ - SERIAL5 -> UART6 (spare)
+ - SERIAL6 -> UART7 (spare, debug)
+
+The Telem1 and Telem2 ports have RTS/CTS pins, the other UARTs do not
+have RTS/CTS.
+
+The UART7 connector is labelled debug, but is available as a general
+purpose UART with ArduPilot.
+
+### TELEM1, TELEM2 ports
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ TX (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ RX (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ CTS |
+ +3.3V |
+
+
+ 5 (blk) |
+ RTS |
+ +3.3V |
+
+
+ 6 (blk) |
+ GND |
+ GND |
+
+
+
+
+
+### GPS port
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ SERIAL3 TX (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ SERIAL3 RX (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ SCL |
+ +3.3 (pullups) |
+
+
+ 5 (blk) |
+ SDA |
+ +3.3 (pullups) |
+
+
+ 6 (blk) |
+ SafetyButton |
+ +3.3V |
+
+
+ 7 (blk) |
+ SafetyLED |
+ +3.3V |
+
+
+ 8 (blk) |
+ VDD 3.3 (OUT) |
+ +3.3V |
+
+
+ 9 (blk) |
+ Buzzer |
+ +3.3V |
+
+
+ 10 (blk) |
+ GND |
+ GND |
+
+
+
+
+## RC Input
+
+RC input is configured on the port marked DSM/SBUS RC. This connector
+supports all RC protocols. Two cables are available for this port. To
+use software binding of Spektrum satellite receivers you need to use
+the Spektrum satellite cable.
+
+## PWM Output
+
+The Pixhawk4 supports up to 16 PWM outputs. First first 8 outputs (labelled
+"MAIN") are controlled by a dedicated STM32F100 IO controller. These 8
+outputs support all PWM output formats, but not DShot.
+
+The remaining 8 outputs (labelled AUX1 to AUX8) are the "auxillary"
+outputs. These are directly attached to the STM32F765 and support all
+PWM protocols. The first 6 of the auxillary PWM outputs support DShot.
+
+The 8 main PWM outputs are in 3 groups:
+
+ - PWM 1 and 2 in group1
+ - PWM 3 and 4 in group2
+ - PWM 5, 6, 7 and 8 in group3
+
+The 8 auxillary PWM outputs are in 2 groups:
+
+ - PWM 1, 2, 3 and 4 in group1
+ - PWM 5 and 6 in group2
+ - PWM 7 and 8 in group3
+
+Channels within the same group need to use the same output rate. If
+any channel in a group uses DShot then all channels in the group need
+to use DShot.
+
+## Battery Monitoring
+
+The board has two dedicated power monitor ports on 6 pin
+connectors. The correct battery setting parameters are dependent on
+the type of power brick which is connected.
+
+## Compass
+
+The Pixhawk4 has a builtin IST8310 compass. Due to potential
+interference the board is usually used with an external I2C compass as
+part of a GPS/Compass combination.
+
+## GPIOs
+
+The 6 PWM ports can be used as GPIOs (relays, buttons, RPM etc). To
+use them you need to limit the number of these pins that is used for
+PWM by setting the BRD_PWM_COUNT to a number less than 6. For example
+if you set BRD_PWM_COUNT to 4 then PWM5 and PWM6 will be available for
+use as GPIOs.
+
+The numbering of the GPIOs for PIN variables in ArduPilot is:
+
+ - AUX1 50
+ - AUX2 51
+ - AUX3 52
+ - AUX4 53
+ - AUX5 54
+ - AUX6 55
+
+## Analog inputs
+
+The Pixhawk4 has 7 analog inputs
+
+ - ADC Pin0 -> Battery Voltage
+ - ADC Pin1 -> Battery Current Sensor
+ - ADC Pin2 -> Battery Voltage 2
+ - ADC Pin3 -> Battery Current Sensor 2
+ - ADC Pin4 -> ADC port pin 2
+ - ADC Pin14 -> ADC port pin 3
+ - ADC Pin10 -> ADC 5V Sense
+ - ADC Pin11 -> ADC 3.3V Sense
+ - ADC Pin103 -> RSSI voltage monitoring
+
+## I2C Buses
+
+ - the internal I2C port is bus 0 in ArduPilot (I2C3 in hardware)
+ - the port labelled I2CA is bus 3 in ArduPilot (I2C4 in hardware)
+ - the port labelled I2CB is bus 2 in ArduPilot (I2c2 in hardware)
+ - the port labelled GPS is bus 1 in ArduPilot (I2c1 in hardware)
+
+### Pinout for I2CA
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ SCL |
+ +3.3 (pullups) |
+
+
+ 3 (blk) |
+ SDA |
+ +3.3 (pullups) |
+
+
+ 4 (blk) |
+ GND |
+ GND |
+
+
+
+
+### Pinout for I2CB+UART
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ SERIAL4 TX (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ SERIAL4 RX (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ SCL |
+ +3.3 (pullups) |
+
+
+ 5 (blk) |
+ SDA |
+ +3.3 (pullups) |
+
+
+ 6 (blk) |
+ GND |
+ GND |
+
+
+
+
+## CAN
+
+The Pixhawk4 has two independent CAN buses, with the following pinouts.
+
+### CAN1&2
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ CAN_H |
+ +12V |
+
+
+ 3 (blk) |
+ CAN_L |
+ +12V |
+
+
+ 4 (blk) |
+ GND |
+ GND |
+
+
+
+
+## Debug
+
+The Pixhawk4 supports SWD debugging on the debug port
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ FMU VDD 3.3 |
+ +3.3V |
+
+
+ 2 (blk) |
+ UART TX Debug (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ UART RX Debug (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ SWDIO |
+ +3.3V |
+
+
+ 5 (blk) |
+ SWCLK |
+ +3.3V |
+
+
+ 6 (blk) |
+ GND |
+ GND |
+
+
+
+
+
+## Loading Firmware
+
+The board comes pre-installed with an ArduPilot compatible bootloader,
+allowing the loading of *.apj firmware files with any ArduPilot
+compatible ground station.
+
+## Acknowledgements
+
+Thanks to
+[PX4](https://docs.px4.io/en/flight_controller/pixhawk4.html) for
+images used under the [CC-BY 4.0 license](https://creativecommons.org/licenses/by/4.0/)
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/d100h/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/d100h/defaults.parm
new file mode 100644
index 0000000000..f6498a6bcf
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/d100h/defaults.parm
@@ -0,0 +1,326 @@
+
+# Pixhawk4 does not have hw flow control on radios
+#NOTE: 2020/8/26 18:26:32 Frame : PID 1.4.4
+ACRO_BAL_PITCH 1
+ACRO_BAL_ROLL 1
+ACRO_RP_EXPO 0.3
+ACRO_RP_P 4.5
+ACRO_THR_MID 0
+ACRO_TRAINER 2
+ACRO_Y_EXPO 0
+ACRO_YAW_P 3
+ARMING_CHECK 1
+ARMING_DELAY 5
+ARMING_MIS_ITEMS 0
+ARMING_RUDDER 2
+ARMING_VPERC 90
+ATC_ACCEL_P_MAX 110000
+ATC_ACCEL_R_MAX 110000
+ATC_ACCEL_Y_MAX 27000
+ATC_ANG_LIM_TC 1
+ATC_ANG_PIT_P 4.5
+ATC_ANG_RLL_P 4.5
+ATC_ANG_YAW_P 6
+ATC_ANGLE_BOOST 1
+ATC_INPUT_TC 0.15
+ATC_AA_PIT_D 0.0036
+ATC_AA_PIT_FF 0
+ATC_AA_PIT_FLTD 20
+ATC_AA_PIT_FLTE 0
+ATC_AA_PIT_FLTT 20
+ATC_AA_PIT_I 0.13
+ATC_AA_PIT_IMAX 0.5
+ATC_AA_PIT_P 0.15
+ATC_AA_RLL_D 0.0036
+ATC_AA_RLL_FF 0
+ATC_AA_RLL_FLTD 20
+ATC_AA_RLL_FLTE 0
+ATC_AA_RLL_FLTT 20
+ATC_AA_RLL_I 0.13
+ATC_AA_RLL_IMAX 0.5
+ATC_AA_RLL_P 0.15
+ATC_AA_YAW_D 0
+ATC_AA_YAW_FF 0
+ATC_AA_YAW_FLTD 0
+ATC_AA_YAW_FLTE 2.5
+ATC_AA_YAW_FLTT 20
+ATC_AA_YAW_I 0.03
+ATC_AA_YAW_IMAX 0.5
+ATC_AA_YAW_P 0.35
+ATC_RATE_FF_ENAB 1
+ATC_RATE_P_MAX 0
+ATC_RATE_R_MAX 0
+ATC_RATE_Y_MAX 0
+ATC_SLEW_YAW 6000
+ATC_THR_MIX_MAN 0.1
+ATC_THR_MIX_MAX 0.5
+ATC_THR_MIX_MIN 0.1
+AVOID_ANGLE_MAX 1000
+AVOID_BEHAVE 0
+AVOID_DIST_MAX 1
+AVOID_ENABLE 0
+AVOID_MARGIN 7
+BATT_AMP_OFFSET 0
+BATT_AMP_PERVLT 20.7
+BATT_ARM_MAH 0
+BATT_ARM_VOLT 0
+BATT_CAPACITY 16000
+BATT_CRT_MAH 0
+BATT_CRT_VOLT 0
+BATT_CURR_PIN 1
+BATT_FS_CRT_ACT 0
+BATT_FS_LOW_ACT 2
+BATT_FS_VOLTSRC 0
+BATT_LOW_MAH 0
+BATT_LOW_VOLT 20.5
+BATT_LOW_TIMER 10
+BATT_MONITOR 4
+BATT_SERIAL_NUM -1
+BATT_VOLT_PIN 0
+BATT2_MONITOR 13
+BRD_PWM_COUNT 0
+BRD_RTC_TYPES 1
+BRD_RTC_TZ_MIN 0
+BRD_SAFETYENABLE 0
+BRD_SAFETYOPTION 3
+BRD_SBUS_OUT 0
+BRD_SD_SLOWDOWN 0
+BRD_SER1_RTSCTS 0
+BRD_SER2_RTSCTS 0
+BRD_SERIAL_NUM 0
+BRD_TYPE 24
+BRD_VBUS_MIN 4.3
+BRD_VSERVO_MIN 0
+BTN_ENABLE 0
+CAM_AUTO_ONLY 1
+CAM_DURATION 3
+CAM_FEEDBACK_PIN -1
+CAM_FEEDBACK_POL 0
+CAM_MAX_ROLL 0
+CAM_MIN_INTERVAL 0
+CAM_RELAY_ON 1
+CAM_SERVO_OFF 1100
+CAM_SERVO_ON 1900
+CAM_TRIGG_DIST 0
+CAM_TRIGG_TYPE 2
+CAM_TYPE 0
+CAN_D1_PROTOCOL 1
+CAN_D1_UC_ESC_BM 0
+CAN_D1_UC_NODE 10
+CAN_D1_UC_SRV_BM 0
+CAN_D1_UC_SRV_RT 50
+CAN_D2_PROTOCOL 1
+CAN_P1_BITRATE 1000000
+CAN_P1_DRIVER 1
+CAN_P2_BITRATE 1000000
+CAN_P2_DRIVER 1
+CAN_SLCAN_CPORT 0
+CAN_SLCAN_SERNUM -1
+CAN_SLCAN_TIMOUT 0
+CHUTE_ENABLED 0
+CIRCLE_RADIUS 1000
+CIRCLE_RATE 20
+COMPASS_USE 1
+COMPASS_USE2 0
+COMPASS_USE3 0
+DEV_OPTIONS 0
+DISARM_DELAY 2
+EK2_MAG_I_GATE 800
+EK2_YAW_I_GATE 800
+FLTMODE_CH 5
+FLTMODE1 2
+FLTMODE2 2
+FLTMODE3 5
+FLTMODE4 5
+FLTMODE5 5
+FLTMODE6 5
+FRAME_CLASS 1
+FRAME_TYPE 1
+FS_CRASH_CHECK 1
+FS_EKF_ACTION 1
+FS_EKF_THRESH 0.8
+FS_GCS_ENABLE 0
+FS_OPTIONS 0
+FS_THR_ENABLE 0
+FS_THR_VALUE 975
+FS_VIBE_ENABLE 1
+GND_EFFECT_COMP 1
+GND_EXT_BUS -1
+GND_FLTR_RNG 0
+GND_PRIMARY 0
+GND_PROBE_EXT 0
+GND_TEMP 0
+GPS_AUTO_CONFIG 1
+GPS_AUTO_SWITCH 1
+GPS_BLEND_MASK 5
+GPS_BLEND_TC 10
+GPS_DELAY_MS 0
+GPS_DELAY_MS2 0
+GPS_GNSS_MODE 0
+GPS_GNSS_MODE2 0
+GPS_HDOP_GOOD 90
+GPS_INJECT_TO 127
+GPS_MIN_DGPS 100
+GPS_MIN_ELEV -100
+GPS_NAVFILTER 8
+GPS_NUM_SW 5
+GPS_POS1_X 0
+GPS_POS1_Y 0
+GPS_POS1_Z 0
+GPS_POS2_X 0
+GPS_POS2_Y -0.23
+GPS_POS2_Z 0
+GPS_RATE_MS 200
+GPS_RATE_MS2 200
+GPS_RAW_DATA 0
+GPS_SAVE_CFG 2
+GPS_SBAS_MODE 2
+GPS_SBP_LOGMASK -256
+GPS_TYPE 1
+GPS_TYPE2 18
+HW_FLAG 2
+LAND_ALT_LOW 5000
+LAND_LOCK_ALT 40
+LAND_LOCK_RPY 1
+LAND_REPOSITION 1
+LAND_SL_2ND_ALT 1500
+LAND_SL_3ND_ALT 3000
+LAND_SPEED 150
+LAND_SPEED_2ND 50
+LAND_SPEED_3ND 100
+LAND_SPEED_HIGH 0
+MOT_BAT_CURR_MAX 0
+MOT_BAT_CURR_TC 5
+MOT_BAT_IDX 0
+MOT_BAT_VOLT_MAX 0
+MOT_BAT_VOLT_MIN 0
+MOT_BOOST_SCALE 0
+MOT_HOVER_LEARN 2
+MOT_PWM_MAX 0
+MOT_PWM_MIN 0
+MOT_PWM_TYPE 0
+MOT_SAFE_DISARM 0
+MOT_SAFE_TIME 1
+MOT_SLEW_DN_TIME 0
+MOT_SLEW_UP_TIME 0
+MOT_SPIN_ARM 0.1
+MOT_SPIN_MAX 0.95
+MOT_SPIN_MIN 0.15
+MOT_SPOOL_TIME 0.5
+MOT_THST_EXPO 0.65
+MOT_THST_HOVER 0.35
+MOT_YAW_HEADROOM 200
+NTF_BUZZ_ENABLE 1
+NTF_BUZZ_ON_LVL 1
+NTF_BUZZ_PIN 0
+NTF_BUZZ_VOLUME 100
+NTF_DISPLAY_TYPE 0
+NTF_LED_BRIGHT 3
+NTF_LED_OVERRIDE 4
+NTF_LED_TYPES 38
+NTF_OREO_THEME 0
+OA_TYPE 0
+PHLD_BRAKE_ANGLE 3000
+PHLD_BRAKE_RATE 8
+PILOT_ACCEL_Z 250
+PILOT_DN2_ALT 100
+PILOT_SPEED_DN 250
+PILOT_SPEED_DN2 100
+PILOT_SPEED_UP 250
+PILOT_THR_BHV 0
+PILOT_THR_FILT 0
+PILOT_TKOFF_ALT 0
+PLND_ENABLED 0
+PRX_TYPE 4
+PRX_YAW_CORR 0
+RALLY_INCL_HOME 1
+RALLY_LIMIT_KM 0.3
+RALLY_TOTAL 0
+RC7_OPTION 9
+RC8_OPTION 0
+RC9_OPTION 4
+RELAY_PIN 50
+RELAY_PIN2 53
+RELAY_PIN3 52
+RELAY_PIN4 54
+RELAY_PIN5 -1
+RELAY_PIN6 -1
+RNGFND_GAIN 0.8
+RNGFND1_ADDR 11
+RNGFND1_FUNCTION 0
+RNGFND1_GNDCLEAR 10
+RNGFND1_MAX_CM 500
+RNGFND1_MIN_CM 20
+RNGFND1_OFFSET 0
+RNGFND1_ORIENT 25
+RNGFND1_PIN -1
+RNGFND1_POS_X 0
+RNGFND1_POS_Y 0
+RNGFND1_POS_Z 0
+RNGFND1_PWRRNG 0
+RNGFND1_RMETRIC 1
+RNGFND1_SCALING 3
+RNGFND1_STOP_PIN -1
+RNGFND1_TYPE 24
+RNGFND2_ADDR 1
+RNGFND2_FUNCTION 0
+RNGFND2_GNDCLEAR 10
+RNGFND2_MAX_CM 3500
+RNGFND2_MIN_CM 50
+RNGFND2_OFFSET 0
+RNGFND2_ORIENT 0
+RNGFND2_PIN -1
+RNGFND2_POS_X 0
+RNGFND2_POS_Y 0
+RNGFND2_POS_Z 0
+RNGFND2_PWRRNG 0
+RNGFND2_RMETRIC 1
+RNGFND2_SCALING 3
+RNGFND2_STOP_PIN -1
+RNGFND2_TYPE 24
+RTL_ALT_FINAL 1500
+RTL_CLIMB_MIN 0
+RTL_CONE_SLOPE 3
+RTL_LOIT_TIME 5000
+RTL_SPEED 1000
+SCHED_DEBUG 0
+SCHED_LOOP_RATE 400
+SCR_ENABLE 0
+SERIAL_PASS1 0
+SERIAL_PASS2 -1
+SERIAL_PASSTIMO 15
+SERIAL0_BAUD 115
+SERIAL0_PROTOCOL 2
+SERIAL1_BAUD 57
+SERIAL1_OPTIONS 0
+SERIAL1_PROTOCOL 1
+SERIAL2_BAUD 115
+SERIAL2_OPTIONS 0
+SERIAL2_PROTOCOL 24
+SERIAL3_BAUD 38
+SERIAL3_OPTIONS 0
+SERIAL3_PROTOCOL 5
+SERIAL4_BAUD 115
+SERIAL4_OPTIONS 0
+SERIAL4_PROTOCOL 5
+SERIAL5_BAUD 57
+SERIAL5_OPTIONS 0
+SERIAL5_PROTOCOL -1
+SERIAL6_BAUD 57
+SERIAL6_OPTIONS 0
+SERIAL6_PROTOCOL -1
+SERIAL7_BAUD 115200
+SERIAL7_OPTIONS 0
+SERIAL7_PROTOCOL 2
+WP_YAW_BEHAVIOR 1
+WPNAV_ACCEL 100
+WPNAV_ACCEL_Z 100
+WPNAV_FAST_WP 1
+WPNAV_RADIUS 200
+WPNAV_RFND_USE 1
+WPNAV_SPEED 800
+WPNAV_SPEED_DN 150
+WPNAV_SPEED_UP 350
+ZR_RTL_DELAY 15
+ZR_TK_DELAY 5
+ZR_TK_REQ_ALT 600
\ No newline at end of file
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/d100h/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/d100h/hwdef-bl.dat
new file mode 100644
index 0000000000..8f84484e43
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/d100h/hwdef-bl.dat
@@ -0,0 +1,4 @@
+# hw definition file for processing by chibios_hwdef.py
+# for Pixhawk4 bootloader
+
+include ../fmuv5/hwdef-bl.dat
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/d100h/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/d100h/hwdef.dat
new file mode 100644
index 0000000000..f9dcda7013
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/d100h/hwdef.dat
@@ -0,0 +1,23 @@
+# hw definition file for processing by chibios_hwdef.py
+# for Holybro Pixhawk4 hardware.
+
+include ../fmuv5/hwdef.dat
+
+undef ZR_FRAME_TYPE
+define ZR_FRAME_TYPE "D100H"
+# setup for supplied power brick
+undef HAL_BATT_VOLT_SCALE
+define HAL_BATT_VOLT_SCALE 18.182
+undef HAL_BATT_CURR_SCALE
+define HAL_BATT_CURR_SCALE 36.364
+undef AC_ATC_MULTI_RATE_RP_P
+define AC_ATC_MULTI_RATE_RP_P 0.150f
+undef AC_ATC_MULTI_RATE_RP_I
+define AC_ATC_MULTI_RATE_RP_I 0.130f
+undef AC_ATC_MULTI_RATE_YAW_P
+define AC_ATC_MULTI_RATE_YAW_P 0.350f
+undef AC_ATC_MULTI_RATE_YAW_I
+define AC_ATC_MULTI_RATE_YAW_I 0.030f
+
+
+
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/d100h/pixhawk4-pinout.jpg b/libraries/AP_HAL_ChibiOS/hwdef/d100h/pixhawk4-pinout.jpg
new file mode 100644
index 0000000000..bebe219ed2
Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/d100h/pixhawk4-pinout.jpg differ
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/rs100/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/rs100/defaults.parm
index d0346ef55b..c839d8ee0b 100644
--- a/libraries/AP_HAL_ChibiOS/hwdef/rs100/defaults.parm
+++ b/libraries/AP_HAL_ChibiOS/hwdef/rs100/defaults.parm
@@ -1,6 +1,6 @@
# Pixhawk4 does not have hw flow control on radios
-#NOTE: 2020/8/26 18:26:32 Frame : PID 1.4.4
+#NOTE: 2020/8/26 18:26:32 Frame : PID 0.19 0.17
ACRO_BAL_PITCH 1
ACRO_BAL_ROLL 1
ACRO_RP_EXPO 0.3
@@ -168,7 +168,7 @@ GPS_POS1_X 0
GPS_POS1_Y 0
GPS_POS1_Z 0
GPS_POS2_X 0
-GPS_POS2_Y 0
+GPS_POS2_Y -0.23
GPS_POS2_Z 0
GPS_RATE_MS 200
GPS_RATE_MS2 200
@@ -177,7 +177,7 @@ GPS_SAVE_CFG 2
GPS_SBAS_MODE 2
GPS_SBP_LOGMASK -256
GPS_TYPE 1
-GPS_TYPE2 5
+GPS_TYPE2 18
LAND_ALT_LOW 5000
LAND_LOCK_ALT 40
LAND_LOCK_RPY 1
@@ -281,7 +281,7 @@ RTL_ALT_FINAL 1500
RTL_CLIMB_MIN 0
RTL_CONE_SLOPE 3
RTL_LOIT_TIME 5000
-RTL_SPEED 0
+RTL_SPEED 1000
SCHED_DEBUG 0
SCHED_LOOP_RATE 400
SCR_ENABLE 0
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/rs100/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/rs100/hwdef.dat
index 910bcac2fe..d41f1593e0 100644
--- a/libraries/AP_HAL_ChibiOS/hwdef/rs100/hwdef.dat
+++ b/libraries/AP_HAL_ChibiOS/hwdef/rs100/hwdef.dat
@@ -2,10 +2,18 @@
# for Holybro Pixhawk4 hardware.
include ../fmuv5/hwdef.dat
-
+undef ZR_FRAME_TYPE
+define ZR_FRAME_TYPE "zr"
# setup for supplied power brick
undef HAL_BATT_VOLT_SCALE
define HAL_BATT_VOLT_SCALE 18.182
undef HAL_BATT_CURR_SCALE
define HAL_BATT_CURR_SCALE 36.364
-
+undef AC_ATC_MULTI_RATE_RP_P
+define AC_ATC_MULTI_RATE_RP_P 0.190f
+undef AC_ATC_MULTI_RATE_RP_I
+define AC_ATC_MULTI_RATE_RP_I 0.170f
+undef AC_ATC_MULTI_RATE_YAW_P
+define AC_ATC_MULTI_RATE_YAW_P 0.450f
+undef AC_ATC_MULTI_RATE_YAW_I
+define AC_ATC_MULTI_RATE_YAW_I 0.040f
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/rs100h/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/rs100h/defaults.parm
index 175ee7c752..f6498a6bcf 100644
--- a/libraries/AP_HAL_ChibiOS/hwdef/rs100h/defaults.parm
+++ b/libraries/AP_HAL_ChibiOS/hwdef/rs100h/defaults.parm
@@ -177,7 +177,8 @@ GPS_SAVE_CFG 2
GPS_SBAS_MODE 2
GPS_SBP_LOGMASK -256
GPS_TYPE 1
-GPS_TYPE2 5
+GPS_TYPE2 18
+HW_FLAG 2
LAND_ALT_LOW 5000
LAND_LOCK_ALT 40
LAND_LOCK_RPY 1
@@ -281,7 +282,7 @@ RTL_ALT_FINAL 1500
RTL_CLIMB_MIN 0
RTL_CONE_SLOPE 3
RTL_LOIT_TIME 5000
-RTL_SPEED 0
+RTL_SPEED 1000
SCHED_DEBUG 0
SCHED_LOOP_RATE 400
SCR_ENABLE 0
@@ -314,7 +315,7 @@ SERIAL7_PROTOCOL 2
WP_YAW_BEHAVIOR 1
WPNAV_ACCEL 100
WPNAV_ACCEL_Z 100
-WPNAV_FAST_WP 0
+WPNAV_FAST_WP 1
WPNAV_RADIUS 200
WPNAV_RFND_USE 1
WPNAV_SPEED 800
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/rs100h/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/rs100h/hwdef.dat
index 910bcac2fe..ab6ea4c510 100644
--- a/libraries/AP_HAL_ChibiOS/hwdef/rs100h/hwdef.dat
+++ b/libraries/AP_HAL_ChibiOS/hwdef/rs100h/hwdef.dat
@@ -3,9 +3,21 @@
include ../fmuv5/hwdef.dat
+undef ZR_FRAME_TYPE
+define ZR_FRAME_TYPE "RS100H"
# setup for supplied power brick
undef HAL_BATT_VOLT_SCALE
define HAL_BATT_VOLT_SCALE 18.182
undef HAL_BATT_CURR_SCALE
define HAL_BATT_CURR_SCALE 36.364
+undef AC_ATC_MULTI_RATE_RP_P
+define AC_ATC_MULTI_RATE_RP_P 0.150f
+undef AC_ATC_MULTI_RATE_RP_I
+define AC_ATC_MULTI_RATE_RP_I 0.130f
+undef AC_ATC_MULTI_RATE_YAW_P
+define AC_ATC_MULTI_RATE_YAW_P 0.350f
+undef AC_ATC_MULTI_RATE_YAW_I
+define AC_ATC_MULTI_RATE_YAW_I 0.030f
+
+
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef.dat
index 910bcac2fe..968fd72613 100644
--- a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef.dat
+++ b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef.dat
@@ -2,7 +2,8 @@
# for Holybro Pixhawk4 hardware.
include ../fmuv5/hwdef.dat
-
+undef ZR_FRAME_TYPE
+define ZR_FRAME_TYPE "D100H"
# setup for supplied power brick
undef HAL_BATT_VOLT_SCALE
define HAL_BATT_VOLT_SCALE 18.182
diff --git a/px4v3.sh b/px4v3.sh
new file mode 100755
index 0000000000..1f9212edbf
--- /dev/null
+++ b/px4v3.sh
@@ -0,0 +1,4 @@
+git submodule update
+./waf configure --board CubeBlack
+./waf copter
+cp build/CubeBlack/bin/arducopter.apj /mnt/f/_01-work/100=data/固件/zr-v4/wsl/dev-px4v3.px4