Conversation
- Default X9D+ PCBREV is now 2019 (F4). The default PCB (X9D+) was previously the F2 2014 revision, which Companion, simu and tests-radio builds use when no PCB is given. - Map TPROV2 and BUMBLEBEE to their YAML parser in storage/yaml/CMakeLists.txt (yaml_datastructs.cpp already included it for them) and rename it yaml_datastructs_tprov2.cpp. - COMMANDO8 now uses yaml_datastructs_128x64.cpp, which is byte-identical to the yaml_datastructs_xlite.cpp it used before. - generate-yaml.sh regenerates the shared parsers from F4 boards (x7access, tprov2) instead of F2 ones. Output is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
EdgeTX 2.11 was the last release to support STM32F2 radios. Remove their firmware build targets and the code only they used: - X9D, X9D+ (2014), QX7 (ACCST), X9 Lite/Lite S, X-Lite/S/Pro, Jumper T12, T-Lite, T-Pro, BetaFPV LR3Pro, RadioMaster T8 and TX12. - Their hal.h/board.h pin and option blocks, XLITE/9X navigation, QX7 PCB revision probing, Bluetooth chip probing, X-Lite S shared DSC/headphone jack handling and the X9D ASPI LCD driver. - Fallback #else branches only F2 boards fell through to are removed, so a new board matching no branch fails to build rather than inheriting them. - X9D+ now requires PCBREV=2019, and a bare PCB=X7 now fails with a clear message instead of building the removed F2 QX7. - yaml_datastructs_x9d/xlite/xlites.cpp are removed. They were byte-identical to x9dp2019/128x64 or only used by F2 boards. The F2 hw_defs JSON files stay, frozen, so Companion can still read settings and models from these radios. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With no STM32F2 radios left to build, remove the MCU support code: - Vendored STM32F2xx HAL/LL drivers and CMSIS device headers. - The f2 CMake include, system init, HAL config, startup file, linker scripts and ST-Link config. - STM32F2/STM32F205xx branches in the STM32 drivers, USB CDC config, MCU ID check and VBAT scaling. - STM32F2 from the S.PORT one-bit sampling setting's conditions. Its YAML/settings layout is unchanged for F4 radios. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Remove STM32F2 boards from the vendor build scripts (boards.py, build-frsky/jumper/radiomaster.py), radio/util/build-firmware.py and fwoptions.py. Delete build-betafpv.py, whose only board was the LR3Pro. - build-multilang.sh: remove the hard-coded x9dp entry, the F2 processor group, and F2 targets from the help examples. - Bug report template: STM32F2 radios stay selectable, but are marked "2.11 max". A notice links the STM32 platform support page and says firmware bug reports for them on later versions won't be accepted. RadioMaster TX12 and TX12MK2 are now separate options. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
EdgeTX 2.11 was the last release for STM32F2 radios. Companion can still read their models and settings, but must not write current-format data back to a radio still running 2.11. - Add a Board::IsF2 capability, read from each board's hw_defs JSON cpu_type, so there's no board list to maintain. - For F2 documents, Save, Save As, Write Models and Settings to Radio/SD Path, and Export Model are disabled and guarded. Save All skips them, so switching to a supported radio's profile still converts the open document. - An information notice, linking the STM32 platform support page, is shown once when an F2 document is opened or a profile change makes one F2. Closing a modified F2 document offers Discard/Cancel only. - gtests cover the F2 detection, both for the expected boards and their F4 siblings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary of changes:
EdgeTX#7763 broke firmware builds for STM32F2 radios. EdgeTX 2.11 was the last release to support them, so this removes STM32F2 support from the firmware tree instead of fixing it. It also makes Companion treat these radios as view-only, so it can't write 3.0-format data to a radio still running 2.11.
Radios affected: FrSky X9D, X9D+ (2014), QX7 (ACCST), X9 Lite/Lite S, X-Lite/S/Pro; Jumper T12, T-Lite, T-Pro; BetaFPV LiteRadio3 Pro; RadioMaster T8 and TX12. Their F4 siblings are unaffected: X9D+ 2019, QX7 ACCESS, X9E, T12 MAX, T-Pro V2/S, TX12 MK2, Commando 8, Bumblebee and so on.
Commits
PCB=X9D+used to be the F2 2014 revision. Companion, simu and tests-radio builds use that default, as does the Companion CI job. It's nowPCBREV=2019.generate-yaml.shnow regenerates the shared parsers from F4 boards. Its output is byte-identical.hal.h/board.hblocks, XLITE/9X navigation, QX7 PCB revision probing, Bluetooth chip probing, X-Lite S jack handling and the X9D ASPI LCD driver.#elsefallbacks that only F2 boards reached are deleted, so a new board that matches no branch fails to build instead of silently inheriting X9D pins.PCB=X9D+with any PCBREV other than 2019 now fails with a clear message. This includes a stalePCBREV=2014cached inCMakeCache.txt.PCB=X7now fails with a clear message.STM32F2branches in the drivers (about 182k lines).Board::IsF2capability comes from the hw_defs JSONcpu_type, so there's no board list to maintain.Deliberately kept
radio/src/boards/hw_defs/*.jsonfiles, frozen, because Companion reads them. They can no longer be regenerated. If the shared schema gains a required field, they'll need hand edits, andvalidate_hw_defswill flag that.radio/util/hw_defs/legacy_names.py.test_templates.pyrenders every JSON file."STM32F2"intools/hwdef_schema.json.KEY_SHIFTkey enum value. Companion and the web simulator mirror it.Verification
mainand from this branch at identical paths. Section sizes match exactly, and the disassembly (objdump -d --no-addresses --no-show-raw-insn) differs only in the embedded git SHA and build-date strings. Thehal.hpreprocessor macro dumps (hardware_defs) are identical.check_radio_macros.pypasses at every commit.json_validator.py: 57/57 files valid.test_templates.py: all 912 combinations pass.PCBresolves to X9D+ 2019 (STM32F407xE).PCBREV=2014, a barePCB=X7andPCB=XLITEeach fail with a clear error.gtests-radiopasses on default X9D+ 2019 (177), x7access (172), x9e (180) and tx16s (228). x9e is now the only remaining non-serial PXX1 board.gtests-companion: 40/40 pass, including newStm32F2Boardstests for the F2 detection and its F4 siblings.Still to do before upstream
hardware_defstarget. This problem predates this PR: its preprocessor command doesn't get the include path for the generatedhal_settings.h, sotools/generate-hw-defs.shfails onmain.🤖 Generated with Claude Code