Repository navigation
DEV-MASTER HEX / Build 3420
Pre-release
Pre-release
HEX BUILD of MASTER — F4/F7 + H7 (first H7 build)
Build 3420 · Commit f58927c
EmuFlight 0.4.3 base + all changes including STM32H7 support
Feedback welcome in Discord or GitHub Discussions
Changes since 0.4.3:
⚡ STM32H7 Support (NEW)
- feat(h7): STM32H7 MCU support — H743/H750/H723/H725/H730/H735/H7A3 (#1194)
- feat(targets): 70 H7 targets imported with full flash define audit (#1233)
- fix(spi): SPIDEV_6 support for STM32H7 SPI6 peripheral (#1240)
Filters
- feat(filter): replace biquad with SVF filters (#1245)
Barometer
- feat(baro): DPS310/SPL06/SPL07 barometer driver (#1180)
- fix(targets): add barometer_dps310.c for 114 DPS310 targets (#1188)
USB / MSC
- fix(usb/msc): MSC UTC reboot mode, H7 stale-flag clear, timezone param, NAND fix (#1246)
- fix(usb): cap CDC_Send_DATA spin to prevent WWDG reset under TX backpressure (#1141)
Flash
- feat(flash): backport W25N/W25Q128FV drivers to BF 4.5-m parity
- fix(flash/nand): NAND fixes; re-enable W25M02G on STELLARH7DEV (#1231)
- fix(link): align F7 linker scripts with BF 4.5-m MOVABLE_FLASH layout (#1214)
Gyro / Bus
- fix(gyro): BMI270 DLPF_EXPERIMENTAL reads lpf param, not hardware_lpf (#1134)
- fix(gyro): backport clockMicrosToCycles + gyroShortPeriod init for MPU6000 (#1133)
- fix(gyro): always deassert CS on shared SPI bus in dual-gyro mode (#1153)
- fix(bus_spi): clamp DMA SPI transfer length to dmaTxBuffer size (#1152)
- fix(bus_spi): guard IMUF9001 DMA transfer length against overflow (#1162)
- fix(imuf9001): propagate spiReadWriteBufRB return value; rename to imufSendReceiveSpi (#1139)
Config / OSD
- fix(config): stop silently zeroing rssi_channel when RSSI_ADC is enabled (#1138)
- fix(config): unconditionally clamp failsafe_procedure to valid range (#1151)
- fix(osd): cast max7456 DMA IRQ DR-drain read to void (#1140)
DShot / Motor
- fix(dshot): align MOTOR_BITLENGTH=20 and ARR=n-1 with Betaflight (#1175)
- fix(dshot/proshot): explicitly write frame-reset slots in DMA buffers (#1173)
Receivers / Telemetry
- fix(sfhss): check cc2500 init result; enable SFHSS on CRAZYBEEF4FR (#1170)
- fix(rx): JETI ExBus unconditionally use SERIAL_BIDIR (#1168)
- fix(jeti): correct EXTEL_MAX_LEN, sensor data types, GPS frame guard (#1176)
- feat(jeti): GPS and G-Force sensor telemetry (#1181)
MSP / Arming
- fix(msp): per-client arming disable to prevent DJI MSP bypass (#1159)
- fix(brushed): remove pinioSet from pwmWriteStandard; enforce no-3D for brushed protocol (#1166)
Position
- fix(position): implement getEstimatedVario() (#1185)
Camera
- feat: camera_control_button_resistance CLI setting (#1171)
Fixes (also in Build 3419)
- fix: pidCopyProfile silently rejected copy to last profile (#1104)
- fix: Smith Predictor compilation guards (#1094)
- fix: intptr_t cast in cmsMenuExit() (#1095)
- fix: global variable multiple-definition linker errors (#1098)
- fix: BMI270 DLPF_EXPERIMENTAL 6.4k code size reduction (#989)
- HELIOSPRING/derivatives: set IMUF PT(N) default to PT2 (#1093)
- PreArm: allow Re-Arm without resetting PreArm AUX (#1090)
- IMUF blackbox: trim leading whitespace from headers (#1091)
New / Updated Targets
- [target] DARWINF411 (#1089)
- FOXEERF722V4: add USE_BARO_BMP280 (#1179)
- [target] fix RUSHBLADEF7HD_I2C (#1157)
- [target] fix VGOODRCF4 motor map/gyro align, VGOODF722DUAL OSD (#1154)
- fix(targets): correct scale define names from BF 4.5-m (#1201)
- fix(APEXF7): PINIO2 + UART4 MSP default for DJI Vista (#1172)
- [target] FREEAXISF4 (F411) (#1077)
- [target] NBD_INFINITYAIO255 (#1080)
- [target] FLYSPARKF4 (F405) (#1088)
- [target] TMOTORF7 / TMOTORF7_AIO — fix motor3 timer/channel (#1082)
- [target] JHEF411HD — add LED0 pin (#1083)
- [target] JHEF745 — DShot burst on by default (#1087)
- [target] TUNERCF405 update (#1078)
Non-functional / no-op changes
- fix: comprehensive unit test fixes (#1099)
- feat(h7): add STM32H7 vendor libraries — prerequisite for H7 support (#1195)
- feat: add complete SITL (Software-In-The-Loop) build support (#1100)
- feat(ci): add SITL compile gate and expand build to 12 parallel groups (#1192)
- fix(sitl): resolve make SITL warnings
- fix(bus): guard DMA HAL types against SIMULATOR_BUILD for SITL compile (#1191)
- fix(make): parallel build races, forced re-link, and CI observability (#1238)
- fix(make): arm_sdk download/install progress reporting and CI compatibility (#1147)
- fix(make): clean_all wipes obj/main directly; bare clean redirects to clean_all (#1182)
- fix(build): always recompile version.o with explicit 7-char revision (#1125)
- fix(fc_tasks): add missing io/flashfs.h include (#1235)
- fix(msc): align H7 SPI SD MSC fops with EF symbol name (#1242)
- fix(drivers): bus_i2c_busdev.h self-contained; dmaTransactionInProgress static (#1146)
- fix(accgyro): add USE_DUAL_GYRO guard to ICM20649/ICM42605/ICM42688P (#1145)
- fix(telemetry): add missing stdlib.h in jetiexbus.c for abs() (#1198)
- fix(mixer): add 'f' suffix to double literals in twoPassMix (#1150)
- fix(codacy): replace invalid extraOptions with documented language key (#1187)
- build: remove hardcoded -j from submake targets (#1202)
- build(make): switch arm sdk download to xpack github cdn (#1163)
- refactor(make): remove dead official target and OFFICIAL_TARGETS variable (#1243)
- refactor(make): prune dead entries from UNSUPPORTED_TARGETS; remove F3 targets
- refactor(docs): remove obsolete documentation (#1196)
- refactor(docs): debloat — remove stale assets, auto-generate CLI reference (#1193)
- upgrade to python3 (#977)
- github-actions: update upload/download artifact to v4 (#1092)
- github: workflow updates (#1086, #1086)
- ci: remove Travis CI and split macOS unit tests (#1197)
🏗️ Bus/SPI Architecture — extDevice_t refactor (BF 4.5-m parity):
Multi-stage refactor aligning EmuFlight's SPI/I2C/DMA bus layer with Betaflight 4.5-maintenance. No behavior change for end users; prerequisite for H7 DMA and future bus work.
- refactor(bus): align naming with BF 4.5-m, phase 1 (#1108)
- refactor(bus): naming cleanup, phase 2 (#1111)
- refactor(bus): bus-resource split infrastructure, phase 3 (#1113)
- refactor(bus): Stage L-drivers — spiSetBusInstance BF-convention (#1114)
- refactor(bus): Stage J — I2C bus-resource split (#1116)
- refactor(bus): Stage K — MPU-slave bus-resource split (#1117)
- refactor(bus): Stage L.2 — rename gyro *_SPI_INSTANCE → *_SPI_BUS (#1118, #1119)
- refactor(bus): Stage M — DMA infrastructure scaffold (#1121)
- refactor(I.4): remove inline busType/instance/handle from extDevice_s (#1126)
- refactor(bus): Stage M.3.a/b — spiSequenceStart polled path (#1128)
- refactor(bus): Stage M.3.c — dma_reqmap infrastructure (#1129)
- refactor(bus): Stage M.3.d–g — async DMA SPI implementation (#1130)
- refactor(gyro): Stage M.4 — EXTI-triggered non-blocking DMA gyro read (#1131)