Copter-4.3.0 released!

After months of beta testing Copter-4.3.0 has been released as the official (e.g. default) firmware for multicopters and helicopters.

If upgrading from an earlier firmware version there should be no need to backup and restore parameters. This should all be done automatically.

The full list of changes are in the ReleaseNotes and copied below.

Changes from 4.2.3

  1. New autopilot support and autopilot specific enhancements
    a) AtomRCF405
    b) CubeOrange-SimOnHardWare
    c) DevEBoxH7v2
    d) KakuteH7Mini-Nand
    e) KakuteH7v2
    f) Mamba F405 Mk4
    g) SkystarsH7HD
    h) bi-directional dshot (aka “bdshot”) versions for CubeOrange, CubeYellow, KakuteF7, KakuteH7, MatekF405-Wing, Matek F765, PH4-mini, Pixhawk-1M, SkystarsH7HD-bdshot
    i) AIRLink autopilot supports UART2
    j) CUAV V6X supports CAN battery monitor by default
    k) MatekF405-CAN board uses less memory to fix compass calibration issues
    l) Pixhawk1-1M only supports uBlox and NMEA GPSs to save flash space
    m) SkystarsH7HD supports VTX power by default
    n) Pixhawk1-1M, fmuv2, fmuv3 display warning if firmware mismatches board’s flash size (1M and 2M)
  2. EKF enhancements and fixes
    a) EK3_GPS_VACC_MAX threshold to control when GPS altitude is used as alt source
    b) EKF ring buffer fix for very slow sensor updates (those that update once every few seconds)
    c) EKF3 source set change captured in Replay logs
    d) EKF3 altitude error fix when using dual GPSs and affinity enabled
    e) EKF3 alt discrepancy if GPS or baro alt changed soon after startup fixed
  3. Gimbal enhancements
    a) Angle limit params renamed and scaled to degrees (e.g. MNT1_ROLL_MIN, MNT1_PITCH_MIN, etc)
    b) BrushlessPWM driver (set MNT1_TYPE = 7) is unstabilized Servo driver
    c) Dual mount support (see MNT1_, MNT2 params)
    d) Gremsy driver added (set MNT1_TYPE = 6)
    e) MAVLink gimbalv2 support including sending GIMBAL_DEVICE_STATUS_UPDATE (replaces MOUNT_STATUS message)
    f) “Mount Lock” auxiliary switch supports follow and lock modes in RC targetting (aka earth-frame and body-frame)
    g) RC channels to control gimbal set using RCx_OPTION = 212 (Roll), 213 (Pitch) or 214 (Yaw)
    h) RC targetting rotation rate in deg/sec (see MNT1_RC_RATE which replaces MNT_JSTICK_SPD)
    i) Yaw can be disabled on 3-axis gimbals (set MNTx_YAW_MIN = MNTx_YAW_MAX)
  4. Navigation and Flight mode enhancements
    a) Auto mode ATTITUDE_TIME command allows specifying lean angle for specified number of seconds (GPS not required)
    b) Auto mode support of DO_GIMBAL_MANAGER_PITCHYAW command
    c) Auto mode LOITER_TURNS command max radius increased to 2.5km
    d) AutoTune allows higher ANGLE_P gains
    e) Guided mode support DO_CHANGE_SPEED commands
    f) Manual modes throttle mix reduced (improves landing)
    g) Payload touchdown detection reliability improved
    h) Takeoff detection improved to reduce chance of flip before takeoff if GPS moves
    i) TKOFF_SLEW_TIME allows slower takeoffs in Auto, Guided, etc
  5. Notch filter enhancements
    a) Attitude and filter logging at main loop rate
    b) Batch sampler logging both pre and post-filter
    c) FFT frame averaging
    d) In-flight throttle notch parameter learning using averaged FFTs
    e) Triple harmonic notch
    f) Notch filter slew limit reduces chance of notch freq moving incorrectly
  6. RemoteId and SecureBoot enhancements
    a) Remote update of secure boot’s public keys (also allows remote unlocking of bootloader)
  7. Safety enhancements
    a) Arming checks of FRAME_CLASS/TYPE made mandatory (even if ARMING_CHECK=0)
    b) crash_dump.bin file saved to SD Card on startup (includes details re cause of software failures)
    c) Dead-reckoning for 30sec on loss of GPS (requires wind estimation be enabled)
    d) Dead-reckoning Lua script (On loss of GPS flies towards home for specified number of seconds)
    e) Disabling Fence clears any active breaches (e.g. FENCE_TYPE = 0 will clear breaches)
    f) “GPS Glitch” message clarified to “GPS Glitch or Compass error”
    g) Pre-arm check that configured AHRS is being used (e.g. checks AHRS_EKF_TYPE not changed since boot)
    h) Pre-arm check that gimbals are healthy (currently only for Gremsy gimbals, others in future release)
    i) Pre-arm check that all motors are setup
    j) Pre-arm check that scripts are running
    k) Pre-arm check that terrain data loaded if RTL_ALT_TYPE set to Terrain
    l) Pre-arm messages are correctly prefixed with “PreArm:” (instead of “Arm:”)
    m) RC auxiliary switch option for Arm / Emergency Stop
    n) RC failsafe made pre-arm check (previously only triggered at arming)
    o) RC failsafe option (see FS_OPTIONS) to continue in Guided obeyed even if GCS failsafe disabled
    p) TKOFF_RPM_MIN checks all motors spinning before takeoff
    q) Vibration compensation disabled in manual modes
    r) Arming check that SPIN_MIN less than 0.3 and greater than SPIN_ARM
  8. Scripting enhancements and fixes
    a) CAN2 port bindings to allow scripts to communicate on 2nd CAN bus
    b) ESC RPM bindings to allow scripts to report engine RPM
    c) Gimbal bingings to allow scripts to control gimbal
    d) Pre-arm check bindings (allows scripts to check if pre-arm checks have passed)
    e) Semicolon (:slight_smile: and period (.) supported (e.g both Logger:write() and Logger.write will work)
    f) Scripting support for multi-byte i2c reads
    g) Scripting supports implementing AUX functions
    h) Scripting random number generator fix
  9. Sensor driver enhancements
    a) Benewake H30 radar support
    b) BMI270 IMU performance improvements
    c) IRC Tramp VTX suppor
    d) Logging pause-able with auxiliary switch. see RCx_OPTION = 165 (Pause Stream Logging)
    e) Proximity sensor support for up to 3 sensors
    f) Precision Landing consumes LANDING_TARGET MAVLink message’s PositionX,Y,Z fields
    g) RichenPower generator maintenance-required messages can be suppressed using GEN_OPTIONS param
    h) TeraRanger Neo rangefinder support
    i) GPS support to provide ellipsoid altitude instead of AMSL (see GPS_DRV_OPTIONS)
    j) W25N01GV 1Gb flash support
  10. EFI support
    a) Currawong ECU support (added as Electronic Fuel Injection driver)
    b) Scripting support for EFI drivers (allows writing EFI drivers in Lua)
    c) SkyPower and HFE CAN EFI drivers (via scripting)
  11. Other minor enhancements
    a) Autopilot board names max length increased to 23 characters (was 13)
    b) CAN actuators can report PWM equivalent values (eases debugging)
    c) Log download speed improved for boards with “block” backends
    e) SLCAN disabled when vehicle is armed to reduce CPU load
  12. Bug fixes
    a) Accel calibration throws away queued commands from GCS (avoids commands being run long after they were sent)
    b) Airmode throttle mix at zero throttle fix
    c) Cygbot proximity sensor fix to support different orientations (see PRXx_ORIENT)
    d) Loiter fix to avoid potential wobble on 2nd takeoff (was not clearing non-zero attitude target from previous landing)
    e) Lutan EFI message flood reduced
    f) Missions download to GCS corruption avoided by checking serial buffer has space
    g) Payload place fix so vehicle flies to specified Lat,Lon (if provided). Previously it could get stuck
    h) Safety switch disabled if IOMCU is disabled (see BRD_IO_ENABLE=0)
    i) Script restart memory leak fixed
    j) Takeoff vertical velocity limits enforced correctly even if PILOT_TKOFF_ALT set to a significant height
    k) DO_JUMP mission command fixed if active command changed before changing to Auto mode
    l) FFT indexing bug fixed
    m) Gimbal mount fix to default mode (see MNTx_DEFLT_MODE parameter)
    n) MSP fix to report arm status to DJI FPV goggles
    o) Notch fix for non-throttle notch (was being incorrectly disabled)
    p) OSD fixes for params, font and resolution
    q) RPM reporting from harmonic notch fixed
    r) “Sending unknown message (50)” warning removed
    s) SBF/GSOF/NOVA GPS auto detction of baud rate fixed
    t) VideoTX fixes for buffer overruns and Tramp video transmitter support
    u) Airspeed CAN sensor ordering fixed (ordering could change if using multiple airspeed sensors)
    v) BRD_SAFETY_MASK fix for enabling outputs when safety is on
    w) Defaults.parm file processing fixed when a line has >100 characters and/or no new line (developer only)
    x) NMEA serial output precision fixed (was only accurate to 1m, now accurate to 1cm)
    y) BMI085 accel scaling fixed
    z) Harmonic Notch and ESC telem fix when motor outputs are non-contiguous
    aa) NMEA GPS’s KSXT message parsing fixed (affected position accuracy)
  13. Developer items
    a) Custom controller support
    b) Fast loop task list available in real-time using @SYS/tasks.txt
    c) Parameter defaults sent to GCS with param FTP and recorded in onboard logs
    d) ROS+ArduPilot environment installation script
    e) Sim on Hardware allows simulator to run on autopilot (good for exhibitions)
    f) Timer info available in real-time using @SYS/timers.txt
    g) Build with gcc 11.3 fixed (developer only)

Thanks very much to all the developers and beta testers who contributed to this release!

If you find any issues please feel free to create a new topic and if possible include an onboard log file.


Hi @rmackay9 i have contacted benewake for H30 radar but they said we don’t have such sensor like this.
Do you have any data sheets or purchase link where it will be available ?

Hi @kalai1219,

Perhaps there was some miscommunication somewhere so I’ve asked @tridge if he can clarify (the PR to add support for the driver is here)

I’ve been scouring web😂

@kalai1219, @X1aero1,

I checked with Benewake and they say that the H30 hasn’t completed certification yet so it isn’t on sale yet… so I guess it will be a couple more months.


1 Like

What is this new > “Motors spin underscore on higher than spin underscore min” speech that now won’t allow me to arm my craft?

What’s the actual error message?

1 Like

Something is wrong with your MOT_SPIN_ARM and MOT_SPIN_MIN values. Likely the min value is less than the arm value. ARM should be less than MIN. This has always been the case but now it’s part of the arming checks. See item 7-r above.


Yes, thanks. Went on the Ardupilot fb forum and said the same thing. So MOT_SPIN_ARM became from 0.08 to 0.03 and MOT_SPIN_MIN became 0.03 to 0.08, it worked without really understanding these 2 setting values.

Does the “–enable-opendroneid” is enabled in this release?


RemoteId support is included in 4.3. You’ll need to compile your own firmware though as described in the video on the AP RemoteId wiki page. Support isn’t included by default because the US regulations include a “tamper resistant” requirement which means some additional configuration is required.

1 Like

I got an internal error after updating to 4.3.0, flow of control

Maybe you @rmackay9 could take a look, you seem to know alot ablut the firmware changes. My craft flew fine on 4.2.x

@rmackay9, I may be doing something incorrectly, but 4.3 seems to not update the S-Bus output when commanded by the Herelink. We use the S-Bus to control a Gremsy gimbal angle. I used an O-Scope to look at the S-Bus data stream, and none of the PWM channels change when the scroll wheel is used, or the joy sticks are manipulated. I don’t think it is a Herelink problem, because when I downgraded the cube to 4.1.5 (our latest tested version) the S-Bus performs properly with channels changing based on inputs. Is there some parameter you need to set for the S-Bus signals from the Orange Cube to mirror the RC control inputs? I posted in the developer channel, but I don’t seem to be getting any traction. We were planning to go into production shortly and need to get the S-Bus issue resolved. Thank you!

1 Like

Hi @Bridgerman,

OK, I’ve added it to the 4.3 issues list.

I suspect you don’t want to change the setup close to production but in case you didn’t see it we have an improve Gremsy driver in 4.3.

@rmackay9 ,
Possibly loosely related to Bridgerman’s finding, after upgrading to 4.3 from 4.1.5, I am receiving the following prearm error: RNGFND1_PIN=103, set SERVO3_FUNCTION=-1.

Pin 103 is of course the SBUS port, which I’m using to read an analog ultrasonic rangefinder - this works fine in 4.1.5, and the sensor data is being read correctly* in 4.3. Servo 3 is the third motor on the quadrotor, so obviously disabling that wouldn’t be good, haha.



*Edit: while data is being read, the reported ranges are not correct in 4.3, and were in 4.1.5; going to roll back to 4.1.5, to see if it’s just a coincidental hardware issue, or something else. Should have mentioned, this is on an Orange Cube.

**Confirmed that rolling back to 4.1.5 produces normal/correct rangefinder values (calculated range and voltage).


I have a downward-facing LW20C rangefinder, I like to know what can this new param PRX_IGN_GND help me with.

I also like to know how critical the TKOFF_SLEW_TIME setting is.

When I load 4.2.3 params onto a 4.3.0 drone, I get this error in MP:

Is this something I should worry about? I set up a notch filter in 4.2.3 but do I have to do it again?

They were not found because the default for INS_HNTCH_ENABLE is 0. If you were to enable it 1st, which will then load all the optional parameters, and then load the 4.2.3 file you wouldn’t see that.

I rarely load a parameter file for any reason. But if you do then go thru the Full Parameter list and make sure everything is right.

1 Like

Okay, so basically it is a quirk of MP. One would think that to load params from a file, you would enable the “parent” params first and then set the “children” params that were dependent on those. As it is, after loading the params I see the “INS_HNTCH_ENABLE” is set to 1 (the box is filled in green) but “INS_HNTCH_ATT” etc do not exist.