Copter-4.0.0 released!

After two months of beta testing Copter-4.0.0 has been released as the official multicopter and helicopter firmware. This is a major release that includes a huge number of improvements over 3.6.12. The most important of these are listed in the ReleaseNotes and copied below.

Changes from 3.6.12

  1. Path Planning for Object Avoidance (aka Bendy Ruler and Dijkstra’s) replaces “Dodge” avoidance
  2. Complex Fence support (aka stay-out zones)
  3. Lua scripting support on the flight controller
  4. New flight controllers including Hex Cube Orange and Holybro Durandal
  5. Attitude Control changes:
    a) Attitude Control filters on target, Error and D-term (see ATC_RAT_x_FLTT/FLTE/FLTD)
    b) Harmonic notch filter
  6. Flight mode changes:
    a) ZigZag mode (designed for crop spraying)
    b) SystemId for “chirping” attitude controllers to determine vehicle response
    c) StandBy mode for vehicles with multiple flight controllers
    d) SmartRTL provides warnings when buffer is nearly full
    e) Follow mode offsets reset to zero when vehicle leaves follow mode
    f) Upward facing surface tracking using lidar
    g) Circle mode points more accurately towards center
  7. Traditional Heli:
    a) Removed the parameter H_LAND_COL_MIN and functionality now uses H_COL_MID. CAUTION: ensure H_COL_MID is set to collective blade pitch that produces zero thrust
    b) Incorporated a rotor speed governor in rotor speed control (RSC)
    c) Moved all RSC parameters to the RSC library
    d) Converted throttle curve parameters to percent
    e) Converted RSC_CRITICAL, RSC_IDLE, and RSC_SETPOINT to percent
    f) Created swashplate library that has presaved swashplate types for use with Heli_Single and Heli_Dual frames
    g) Motor interlock with passthrough settable through RC option feature
    h) Removed collective too high pre-arm check
    i) Added virtual flybar for Acro flight mode
    j) Fixed H_SV_MAN minimum and maximum settings for Heli_Dual
    k) Autonomous autorotation (compile time option, not available in stable firmware)
    l) CCW Direct Drive Fixed Pitch tail support (see H_TAIL_TYPE parameter)
    m) STAB_COL_1/2/3 param range changed to 0 to 100 (was 0 to 1000)
  8. Frames:
    a) BiCopter support
    b) OctoV mixing improvements
  9. RC input/output changes:
    a) Serial protocols supported on any serial port
    b) IBUS R/C input support
    c) DO_SET_SERVO and manual passthrough can operate on the same channel
  10. Battery improvements:
    a) Up to 10 batteries can be monitored
    b) “Sum” type consolidates monitoring across batteries
    c) Fuel flow battery (for use with gas tanks)
  11. Sensor/Accessory changes:
    a) Robotis servo support
    b) KDECAN ESCs
    c) ToshibaCAN ESCs
    d) BenewakeTF03 lidar
    e) SD Card reliability improvements (if card removed, logging restarts)
    f) Yaw from some GPS (including uBlox RTK GPS with moving baseline)
    g) WS2812 LEDs (aka NeoPixel LEDs)
    h) NTF_BUZZ_VOLUME allows controlling buzzer volume
  12. Landing Gear:
    a) Retracts automatically after Takeoff in Auto completes
    b) Deployed automatically using SRTM database or Lidar
  13. UAVCAN improvements:
    a) Dynamic node allocation
    b) SLCAN pass-through
    c) support for UAVCAN rangefinders, buzzers, safety switch, safety LED
  14. Serial and Telemetry:
    a) MAVLink Message-Interval allows reducing telemetry bandwidth requirements
    b) SERIALn_OPTIONS for inversion, half-duplex and swap
    c) NMEA output can send autopilot’s position to external systems (removing need for GPS)
  15. Safety Improvements:
    a) Vibration failsafe (switches to vibration resistant estimation and control)
    b) GCS failsafe triggers when telemetry connection is lost (previously only triggered when using joystick). FS_GCS_ENABLE defaults to “0” so set to “1” to re-enable the GCS failsafe.
    c) Independent WatchDog gets improved logging
    d) EKF failsafe triggers slightly more quickly
    e) Motor loss detection improvements
    f) FS_OPTION parameter allows continue-in-auto and continue-in-pilot-modes for RC/Radio and GCS failsafe
    g) ESC_CAL defaults to 0 for safety means high throttle will not trigger ESC calibration. Set ESC_CAL to “1” to re-enable this feature.

As always we have taken care to make the upgrade as seamless as possible so there should be no need re-calibrate or re-tuning the vehicle as part of the upgrade. You may wish to take a backup of your vehicle’s parameters (this is completely optional of course) but it should not be necessary to re-apply the parameters after the upgrade has completed.

Thanks largely to @hwurzburg, our wiki is mostly up-to-date with the Copter-4.0.0 release but there are still a few features that aren’t documented completely that we will get to in the coming weeks.

Thanks to the all the developers who contributed to the large number of improvements and also to the beta testers who helped us test and fix this major release!

If you notice any issues please report them below or better yet create a new issue in the Copter-4.0 category

If necessary you should be able to return your vehicle to 3.6.12 using Mission Planner’s Install Firmware page’s “Previous Firmware’s” link.

We expect to release 4.0.1 within a few weeks with some further enhancements to features including the BendyRuler object avoidance.

P.S. the video above is @zhangsir’s tiny traditional helicopter (see blog post here)


Thanks Randy!

This also means that cube Orange is officially no longer in Beta!


Thanks to whoever gave support for this release!


Great work everyone, what a global power! Since I am still in the build phase of my HexCopter, have not been able to contribute to testing but I can assure you that the full options on the serial ports have made my build and function testing a lot easier. I will continue my build on Copter 4.0.0 now.

1 Like

New year, New Version, New features.
Happy New year guys! 2020 is gonna be fun! :grin:


Happy new year!

As always, great work. Congratulations!

I’m sorry I couldn’t finish my hexa for testing. I hope to do it in this week.
Then I’ll start the new year with new hexa and new version.


1 Like

Windy and cold here but 4.0.0 flew beautifully on my Cube Orange in a 810mm Tarot Hexa. :grin:

Any chance enhanced circle mode will be in 4.0.1? :pray:

1 Like

Please help me understand the ThO value.
Why it is 17-19% while RCOUTs are about 1400 (so roughly a 40%)


By “enhanced circle mode” you mean this PR from @Pedals2Paddles which adds support for changing the horizontal speed and radius using the roll and pitch sticks? I’m pretty sure we will get this into a point release, so that could be 4.0.1, it mostly depends upon timing but it’s possible.



The difference is probably because the ThO value is from the usable range (the range between MOT_THST_MIN and MOT_THST_MAX) and also the final pwm value is adjusted by the motor thrust scaling.

Hi Randy,
thanks for this great review of code . I have a question what do you mean that the rev 4.0 support different kind of GPS YAW for heading ?
Mean that you integrated the support of ublox moving base REL_POS_NED in EKF ? instead of magnetometer ? There are more info about how can test this features ? Thanks a lot . @rmackay9

Yep, that’s the one! That would be awesome if you can get that in.

1 Like

yes, moving baseline GPS for yaw using two ublox F9P does work in Copter4.0. It is a bit tricky to setup though. You will need to follow the ublox integration guide to setup the right RTCM streams between the two GPS modules using u-center. You also need to use EKF3, and set EK3_MAG_CAL=5. It will only work if you have a separate cable between the two F9P modules to carry the RTCMv3 data between them.
We have a PR pending that makes the setup much easier:

once that PR is accepted you will be able to setup two F9P without the extra cable between the modules, and it will also take care of all the GPS config for you.
Cheers, Tridge


This enhanced circle mode, if implemented steadily, is a very exciting mode.

1 Like

Wow, what an amazing amount of work. Thanks to you and the team for your contributions.

1 Like

Congratulations on 4.0.0 stable release launch.

Before flying, Ask for help with the following message :

  • PreArm: Internal errors (0x400) <- constraining_nan…?
  • UC Node 30 Down!
  • UC Node 20 Down!

my vehicle status is :

  • cube orange(arducopter4.0)
    spektureworks board
    here2 * 2 (using CAN)
    gps_type = 9 (uavcan) / node id : 20
    gps_type2 = 9 (uavcan) / node id : 30

Any advice?

we’ve removed this message in master. I’ll do a PR to remove it from Copter 4.0.1. For now you can ignore it.

that one is more of a puzzle. Can you send me a log file showing this? Preferably both tlog and onboard log (with LOG_DISARMED=1)

Unfortunately, when I wrote ac4.00, the computer was paralyzed; however, when the flight controller was running ac3.6.12, it was normal.

Wonderful! That is soooo good. Thanks to everyone who gives us such a strong tool!
Happy 2020, thats gonna be our Year!

1 Like