UART DMA refactor
[betaflight.git] / README.md
blobde5cf60c68182f1ce619f11ee5d3e569e6e219a6
1 ![Important Notice: Betaflight 4.0 will be the last release to include support for STM32F3 based flight controllers. (This includes all boards with 'F3' in the name.)](docs/assets/images/stm32f3_retirement_notice.svg)
3 (Please see the [note](https://github.com/betaflight/betaflight#end-of-active-development-for-stm32f3-based-flight-controllers) below.)
6 ![Betaflight](docs/assets/images/bf_logo.png)
8 Betaflight is flight controller software (firmware) used to fly multi-rotor craft and fixed wing craft.
10 This fork differs from Baseflight and Cleanflight in that it focuses on flight performance, leading-edge feature additions, and wide target support.
12 ## News
14 ### Betaflight 4.1
16 For Betaflight 4.0 we announced the advent of Unified Targets, and with them the capability to change all of the hardware resources on all (F4 and F7) targets. Unified Targets have been used successfully by testers since Betaflight 4.0 has been released, and users using the new bidirectional Dshot protocol have been using configurable resources to make this protocol work on their targets since then.
18 But we were still not happy with the way that users had to use Unified Targets: The target specific hardware configuration had to be applied after the firmware was flashed, and re-applied every time the configuration was reset to defaults - we wanted to make the Unified Targets as easy to use as the existing 'legacy' targets are.
20 We have figured out a way to make this work, and are currently working on implementing the required changes in the firmware and in Betaflight configurator, but it is taking longer to complete than we had anticipated. To allow us to get the integration of Unified Targets completed, **we have shifted the release date for Betaflight 4.1 to 01 October 2019**. Until then we will keep doing monthly releases of Betaflight 4.0 with bugfixes and new / updated targets.
22 To get the latest update from us, you can now also visit our webpage at https://betaflight.com/.
25 ### New requirements for the submission of new and updated targets
27 As [announced earlier](https://github.com/betaflight/betaflight#betaflight-40), Betaflight 4.0 is introducing a radically new way to define targets, the so-called 'Unified Targets'.
29 This new approach makes it possible to use the same firmware binary (the so called 'Unified Target firmware') for all boards that share the same MCU type (only supported on F4 and F7). Manufacturers will be able to add support for new boards by simply publishing a new configuration (the so called 'Unified Target configuration') for their new board. Users can then simply load the already published Unified Target firmware and the new Unified Target configuration onto their new board to get it to work.
31 Work to give users a simple way to flash unified targets in Betaflight configurator still needs to be done, so Betaflight 4.0 will be released with targets done in the 'legacy' way. But the plan is to add support for seamless use of Unified Targets into Betaflight configurator after Betaflight 4.0 has been released, and convert all of the existing F4 and F7 targets to the new format after the release of Betaflight 4.1.
33 In order to be prepared for this move, the following new requirements for pull requests adding new targets or modifying existing targets are put in place from now on:
35 1. No new F3 based targets will be accepted;
37 2. For any new target that is to be added, only a Unified Target config into https://github.com/betaflight/unified-targets/tree/master/configs/default needs to be submitted. See the [instructions](https://github.com/betaflight/betaflight/blob/master/docs/TargetMaintenance/CreatingAUnifiedTarget.md) for how to create a Unified Target configuration. If there is no Unified Target for the MCU type of the new target (see instructions above), then a 'legacy' format target definition into `src/main/target/` has to be submitted as well;
39 3. For changes to existing targets, the change needs to be applied to the Unified Target config in https://github.com/betaflight/unified-targets/tree/master/configs/default. If no Unified Target configuration for the target exists, a new Unified Target configuration will have to be created and submitted. If there is no Unified Target for the MCU type of the new target (see instructions above), then an update to the 'legacy' format target definition in `src/main/target/` has to be submitted alongside the update to the Unified Target configuration.
42 ### End of active development for STM32F3 based flight controllers
44 For a while now, development of Betaflight for flight controllers based on the STM32F3 chip has been hampered by a severe limitation that this chip has: Unlike the STM32F4 and STM32F7 models, the STM32F3 versions that are used on flight controllers have only a very limited amount of flash space available to fit the firmware into. This has meant that, starting from around version 3.3, the majority of the new features that were developed for Betaflight could not be added to STM32F3 based boards. Even worse, due to improvement in basic features, other more and more of the less commonly used features had to be removed from these flight controllers, and a number of them are at a point where they only support the bare minimum of functionality required to make them fly.
46 This means that, even if we kept supporting STM32F3 based boards in future releases, there would only be little advantage in this, as there simply is no space left on STM32F3 to add any of the new features that these releases will contain.
48 For this reason, and because the effort required to remove features from STM32F3 based flight controllers on a weekly basis is cutting into the time that we have to actually develop new features, we have decided to drop support for STM32F3 based flight controllers after the last release of 4.0.
50 This does not mean that it won't be possible to use these flight controllers after this point in time - they will still work fine when used with the last release of 4.0, just as there are thousands of users who are still enjoying their STM32F1 based flight controllers with Betaflight 3.2.5. We will also strive to keep these versions supported in new releases of configurator, so that users still using these flight controllers will be able to configure them with the same configurator that they use to configure their STM32F4 and STM32F7 based boards.
53 ## Events
55 | Date  | Event |
56 | - | - |
57 | 01 September 2019 | Start of feature freeze / Release Candidate window for Betaflight 4.1 |
58 | 01 October 2019 | Planned [release](https://github.com/betaflight/betaflight/milestone/30) date for Betaflight 4.1 |
60 ## Features
62 Betaflight has the following features:
64 * Multi-color RGB LED strip support (each LED can be a different color using variable length WS2811 Addressable RGB strips - use for Orientation Indicators, Low Battery Warning, Flight Mode Status, Initialization Troubleshooting, etc)
65 * DShot (150, 300, 600 and 1200), Multishot, and Oneshot (125 and 42) motor protocol support
66 * Blackbox flight recorder logging (to onboard flash or external microSD card where equipped)
67 * Support for targets that use the STM32 F7, F4 and F3 processors
68 * PWM, PPM, and Serial (SBus, SumH, SumD, Spektrum 1024/2048, XBus, etc) RX connection with failsafe detection
69 * Multiple telemetry protocols (CSRF, FrSky, HoTT smart-port, MSP, etc)
70 * RSSI via ADC - Uses ADC to read PWM RSSI signals, tested with FrSky D4R-II, X8R, X4R-SB, & XSR
71 * OSD support & configuration without needing third-party OSD software/firmware/comm devices
72 * OLED Displays - Display information on: Battery voltage/current/mAh, profile, rate profile, mode, version, sensors, etc
73 * In-flight manual PID tuning and rate adjustment
74 * Rate profiles and in-flight selection of them
75 * Configurable serial ports for Serial RX, Telemetry, ESC telemetry, MSP, GPS, OSD, Sonar, etc - Use most devices on any port, softserial included
76 * VTX support for Unify Pro and IRC Tramp
77 * and MUCH, MUCH more.
79 ## Installation & Documentation
81 See: https://github.com/betaflight/betaflight/wiki
83 ## Support and Developers Channel
85 There's a dedicated Slack chat channel here:
87 https://slack.betaflight.com/
89 Etiquette: Don't ask to ask and please wait around long enough for a reply - sometimes people are out flying, asleep or at work and can't answer immediately.
91 ## Configuration Tool
93 To configure Betaflight you should use the Betaflight-configurator GUI tool (Windows/OSX/Linux) which can be found here:
95 https://github.com/betaflight/betaflight-configurator/releases/latest
97 ## Contributing
99 Contributions are welcome and encouraged. You can contribute in many ways:
101 * Documentation updates and corrections.
102 * How-To guides - received help? Help others!
103 * Bug reporting & fixes.
104 * New feature ideas & suggestions.
106 The best place to start is the Betaflight Slack (registration [here](https://slack.betaflight.com/). Next place is the github issue tracker:
108 https://github.com/betaflight/betaflight/issues
109 https://github.com/betaflight/betaflight-configurator/issues
111 Before creating new issues please check to see if there is an existing one, search first otherwise you waste people's time when they could be coding instead!
113 If you want to contribute to our efforts financially, please consider making a donation to us through [PayPal](https://paypal.me/betaflight).
115 If you want to contribute financially on an ongoing basis, you should consider becoming a patron for us on [Patreon](https://www.patreon.com/betaflight).
117 ## Developers
119 Contribution of bugfixes and new features is encouraged. Please be aware that we have a thorough review process for pull requests, and be prepared to explain what you want to achieve with your pull request.
120 Before starting to write code, please read our [development guidelines](docs/development/Development.md ) and [coding style definition](docs/development/CodingStyle.md).
122 TravisCI is used to run automatic builds
124 https://travis-ci.com/betaflight/betaflight
126 [![Build Status](https://travis-ci.com/betaflight/betaflight.svg?branch=master)](https://travis-ci.com/betaflight/betaflight)
128 ## Betaflight Releases
130 https://github.com/betaflight/betaflight/releases
132 ## Open Source / Contributors
134 Betaflight is software that is **open source** and is available free of charge without warranty to all users.
136 Betaflight is forked from Cleanflight, so thanks goes to all those whom have contributed to Cleanflight and its origins.
138 Origins for this fork (Thanks!):
139 * **Alexinparis** (for MultiWii),
140 * **timecop** (for Baseflight),
141 * **Dominic Clifton** (for Cleanflight),
142 * **borisbstyle** (for Betaflight), and
143 * **Sambas** (for the original STM32F4 port).
145 The Betaflight Configurator is forked from Cleanflight Configurator and its origins.
147 Origins for Betaflight Configurator:
148 * **Dominic Clifton** (for Cleanflight configurator), and
149 * **ctn** (for the original Configurator).
151 Big thanks to current and past contributors:
152 * Budden, Martin (martinbudden)
153 * Bardwell, Joshua (joshuabardwell)
154 * Blackman, Jason (blckmn)
155 * ctzsnooze
156 * Höglund, Anders (andershoglund)
157 * Ledvina, Petr (ledvinap) - **IO code awesomeness!**
158 * kc10kevin
159 * Keeble, Gary (MadmanK)
160 * Keller, Michael (mikeller) - **Configurator brilliance**
161 * Kravcov, Albert (skaman82) - **Configurator brilliance**
162 * MJ666
163 * Nathan (nathantsoi)
164 * ravnav
165 * sambas - **bringing us the F4**
166 * savaga
167 * Stålheim, Anton (KiteAnton)
169 And many many others who haven't been mentioned....