Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog

Unreleased

  • CI: Full compilation of all samples and applications. PR #253 by @SvennnG.
  • Motherboard: Sample project for SD card interface. PR #252 by @SvennnG.
  • Sample for Ethernet on Zephyr on Dev-Board created. PR #251 by @SvennnG.

Features

  • MB boot tasks for dynamic MMB Enable and ESC parameter copy. PR #248 by @SvennnG.
  • BMS improved stability for Error detection by time filtering. PR #245 by @SvennnG.
  • BMS FSM: Copter enable error detection after HotSwap for 2 seconds. PR #246 by @SvennnG.
  • BMS shutdown sequence in Copter via engage buttons (multiple packs). PR #244 by @SvennnG.
  • BMS Synchronous switch of state LED to green in Copter. PR #242 by @SvennnG.
  • Motherboard Publishes Gear Setpoints via Cyphal. PR #241 by @SvennnG.
  • Motherboard Mavlink Message for BatteryStatus. PR #238 by @SvennnG.
  • Motherboard publish of Cyphal/Navlight synchronization pulse. PR #233 by @SvennnG.
  • New Cyphal command to verify the image of mcuboot (CMD: 900). PR #235 by @SvennnG.
  • BMS Synchronous HotSwap engage with MB Synchronization via Cyphal. PR #232 by @SvennnG.
  • BMS Synchronous HotSwap engage with additional VBus voltage trigger. PR #234 by @SvennnG.

Fixed

  • Selftest precharge (HS) rework and fixes. PR #239 by @SvennnG.
  • Tests for HITL with CAN/Cyphal tests. PR #177 by @SvennnG.

Internal

0.11.4 - 2025-11-17

Fixed

  • Fix: Watchdog re-enabled (Hardware Watchdog, 209 ms interval)
  • Fix: On power off; STM32 goes to shutdown instead standby
  • Fix: Naming of StatisticUpdate Thread corrected
  • Fix: memory reduction by disable of: cyphal time sync
  • Fix: BMS selftest on D.1 - measurement of cell voltages lead to false positive if threshold is too high (full cells) -- fixed for values between clip and threshold

Features

  • Feature: Task Watchdog for custom Threads (Software Watchdog, 2s interval)
  • Feature: Logging verbosity improved (new periodic BMS fsm state 1/30s, Set Id.Index if set incomplete)
  • Feature: Idle -> Shutdown at least after CellBalancing delay to capture the activation of cell balancing

Internal

  • Internal: moved Hardware Watchdog (+ Task Watchdog) interfaces to lib/

0.11.3 - 2025-11-12

  • Bugfix: Selftest on D.1 - measurement of cell voltages lead to false positive if threshold is too high (full cells)

0.11.2 - 2025-11-11

  • Bugfix: Selftest would not persistently store the long calibration values in flash
  • Bugfix: Hardware Version was not stored persistently - added error message with possible solution(s) if execution on wrong hardware

0.11.1 - 2025-11-10

  • Bugfix: Cyphal BMS data publisher type register updated (to starcopter.highdra.bms.BMSData.1.1)
  • Feature: Error print simplified & verbosity reduced (only if BMS is inside the error state the error is dumped)

0.11.0 - 2025-09-18

Features

  • Mavlink communication stack integration as library class. PR #229 by @SvennnG.
  • Cyphal Abstraction with CyphalBase class. PR #226 by @SvennnG.
  • 📝 Set up MkDocs-based documentation. PR #224 by @Finwood.
  • Motherboard Cyphal Receive of BMS Node Data. PR #221 by @SvennnG.
  • BMS usage statistic record in flash storage. PR #213 by @SvennnG.
  • Prototype for Charger with DaisyChain. PR #211 by @SvennnG.
  • Cell balance for multiple BMS packs in one set to equalize all cells. PR #210 by @SvennnG.
  • Error detection over multiple packs in a set. PR #209 by @SvennnG.
  • BMS engage CAN message with more data. PR #208 by @SvennnG.
  • Battery Capacity estimation improvement with internal resistance. PR #207 by @SvennnG.
  • State of Charge: Cell capacity estimation (Energy Monitor) by power integration. PR #192 by @SvennnG.
  • Error detection of under voltage. PR #205 by @SvennnG.
  • Error detection of over voltage for individual cells. PR #206 by @SvennnG.
  • Error detection of not disable-able latches. PR #204 by @SvennnG.
  • Cyphal LED Commands. PR #201 by @SvennnG.
  • Cyphal TimeSync Implementation. PR #200 by @SvennnG.
  • Cyphal node ID static in Copter. PR #194 by @SvennnG.
  • Cyphal File Access Services. PR #193 by @SvennnG.

Fixed

  • FileList overwritten response fields fix. PR #220 by @SvennnG.

Docs

Refactored

Internal

0.10.1 - 2025-09-30

Fixed

  • Watchdog reboot + rollback avoidance after DFU (flash init)

0.10.0 - 2025-07-09

Features

  • Enable of RTC on BMS. PR #190 by @SvennnG.
  • RTC Getter, Setter and Calibration via Cyphal Registry.
  • Cyphal heartbeat monitor to detect and handle Node ID conflicts. PR #187 by @SvennnG.
  • Add of Cyphal Logging Backend for Diagnostic Reports. PR #178 by @SvennnG.
  • Faster Feedback for Buttons to LEDs.

Fixed

  • Bugfixes during Testing (SCP, Engage via CAN reset). PR #186 by @SvennnG.
  • Release Process Fixes + Updates of v0.9.0. PR #185 by @SvennnG.
  • Cyphal Registry now persistent and mutable according to uavcan definitions. e.g., description is editable.
  • Cyphal Registry allow set of Node ID as not persistent option.
  • Cyphal Registry write not returns correct number of written array elements (not byte).
  • Cyphal Registry Set_id and Pack_sn type update. Set_index added (preparation for v0.11).
  • Selftest write of further datatypes (e.g. uint8) to cyphal registry from its shell.
  • CAN TX Thread failed frame sending with retry (cyphal send buffer full) sync'ed again with send frame semaphore count.

Refactored

  • Readme and scripts for release. One DFU in parallel for USBTingo. New Monitor scripts.
  • Refactor and Fixes of the LED driver implementation. PR #179 by @SvennnG.
  • (Withdrawn as of CAN problems) Zephyr Updated to 4.1 (Latest). Now using Zephyr 3.6 again. PR #176 by @SvennnG.

Internal

  • Replace native_posix with native_sim. PR #173 by @Finwood.
  • Motherboard Zephyr Version with Console and first DeviceTree. PR #180 by @SvennnG.

0.9.0 - 2025-06-05

Features

  • Add of Hardware Watchdog and Looong Button Press for Reset. PR #174 by @SvennnG.
  • Calibration in selftest possible in precise and quick mode. PR #169 by @SvennnG.
  • Calibration for IBAT, VBAT, VPACK enabled. PR #168 by @SvennnG.
  • Add shell for flash management to selftest. PR #167 by @SvennnG.
  • Utilize new BMS Test Fixture. PR #165 by @Finwood.
  • Add of Cell Balancing. PR #163 by @SvennnG.
  • Add Cyphal publishing of analog measurements. PR #154 by @SvennnG.
  • Persistent Storage in LittleFS File System (Cyphal Registry). PR #157 by @SvennnG.
  • ✨ Add BQ76925 Driver for Cell Voltage Measurement and Balancing. PR #150 by @Finwood.
  • Cyphal registry with services: uavcan.register.Access & uavcan.register.List. PR #148 by @SvennnG.
  • Parametrize C++ BaseThread stack size instead of fixed Kconfig value. PR #147 by @SvennnG.
  • Cyphal communication library without global objects. PR #145 by @SvennnG.
  • OTA support with Checksum, update script, and release improvements. PR #144 by @SvennnG.
  • Add Script to Discover and Display Cyphal Nodes on the Network. PR #143 by @Finwood.
  • Release .zip File extends with Scripts in Root-Directory and Documentation as .pdf. PR #155 by @SvennnG.

Fixed

Docs

  • misc: Documentation cleanup and edit. PR #141 by @SvennnG.

Removed

  • misc: remove of codecheck. ruff line length set to 120. PR #140 by @SvennnG.

Refactored

  • Refactor of the BMS application. C++ is now integrated to the main state machine and the Cyphal implementation.
  • Documentation and Tests planning rework. PR #170 by @SvennnG.
  • Refactor of the BMS selftest application. PR #153 by @SvennnG.
  • BMS AnalogThread refactor and extend with cell voltages. PR #152 by @SvennnG.
  • Moved main application folder: applications/. PR #151 by @SvennnG.
  • ♻️ Refactor ADC Sample. PR #149 by @Finwood.
  • Migrate CAN-Based Engage Command to Cyphal. PR #142 by @SvennnG.
  • Reorganize of Github Action Test Automations. PR #171 by @SvennnG.

Internal

  • Add MB and MMB applications as references to Gitlab. PR #164 by @SvennnG.
  • 👷 Automate Changelog Generation. PR #138 by @Finwood.
  • 🧱 Clean up Dotfiles and pre-commit Hooks. PR #146 by @Finwood.
  • Add sample for littlefs persistent storage on flash. PR #156 by @SvennnG.

0.8.0 - 2025-04-14

Added

  • Created presentation layer, an intermediary layer between the application layer and the transport layer in the Cyphal library. #118
  • Enabled Cyphal library in BMS application. #120
  • Enabled Cyphal Device Firmware Update (DFU). #120
  • Enabled MCUBoot and Sysbuild support for BMS application. #120
  • Added C linkage in Cyphal header files. #128
  • Added BMS documentation and diagrams. #129
  • Added Windows Batch script to connect to the device's serial console. #133
  • Added shell script to merge bootloader and application into a single hex file. #133
  • Added Cyphal Node ID Allocation client to support dynamic Node IDs. #136

Changed

  • Updated Cyphal node sample documentation. #125
  • Maximum application size has been limited to 200 KiB. #132
  • Reduced MCUboot boot duration to improve user experience. #133
  • Fixed transceiver delay compensation, so that CAN FD can operate in fast mode. #134
  • Fixed bug that would always revert a firmware update on the next boot. #135

0.7.0 - 2025-02-28

Added

  • Added handling for uavcan.node.GetInfo requests: the cyphal node subscribes to the request after sending its first heartbeat and sends the matching response. #101
  • Implemented uavcan.node.ExecuteCommand with support for firmware download using uavcan.file.Read #102
  • Integrated MCUboot in the cyphal_node sample application with support for the swap using move method #106
  • Enabled Sysbuild integration to automatically include MCUboot as the bootloader. #106
  • ✨ Added support for BMS D.2 for the main application, the entire test suite and the test_shell sample. #110
  • Added overtemperature protection feature, triggers when atleast any two temperature measurements on the bms board exceed a configured threshold. #116

Changed

  • The BMS board revisioning scheme has been changed to a LETTER.number scheme (e.g. D.1). #109
  • SCP threshold current is now represented as 16-bit integer internally, supporting values above ±120 A.
  • Ported Cyphal node sample application to Cyphal Lib, segregated application and transport layer objects. #111

Removed

  • The C.1 hardware revision is no longer supported. #44

0.6.0 - 2025-01-15

Added

  • Added configuration option to keep short circuit protection enabled in copter state. #72
  • Added a minimal Cyphal node implementation in Zephyr, publishing the heartbeat message on the network every 1s. #91
  • Implemented Low Power (shutdown) mode in test shell application. #99
  • Added Windows and Linux programming scripts. #92

Changed

  • Relaxed temperature range requirements in test_shell application. #96

Fixed

  • Configured PB4_PUPEN option bit to fix the HS_OK pin issue. #92

0.5.1 - 2024-11-19

Fixed

  • Fixed CAN frame publishing logic to not lock up on a failed transmission. #83
  • Poll button initial state instead of using interrupts for the keys GPIOs. This can also publish the BUTTON_STATE_ENGAGE_SEQUENCE as the initial state to engage the pack from the shutdwon mode.

0.5.0 - 2024-11-19

Added

  • The packs publish activity frames on CAN, and can synchronize their state independently of the motherboard. #82
  • Implemented Low Power (Shutdown) mode in IDLE state, current consumption drops to 40uA with the debug mode disabled. #80
  • Added vbus active signal and user button as a wakeup source when the bms is in low power mode.
  • Added a shutdwon timeout configuration option in Kconfig.

Fixed

  • The BQ76925 chip now does not take 500 ms to wake up anymore. #79
  • Added include guards to a few C headers that were missing them. #81
  • The button module now correctly queries the actual initial button state at boot time. #22

0.4.0 - 2024-11-13

Changed

  • VBUS activation logic is replaced with a flag that is set when any Cyphal/CAN frame is received from the motherboard. #77

Fixed

  • After a hot reboot (software crash while engaged), the pack now correctly enters into the state it had before rebooting. #78

0.3.0 - 2024-11-07

Added

  • Display pack's current activity status on LED5. #69
  • Added BMS user interface documentation. #73

Changed

  • HS_OK input to key H. #42
  • VBUS_ACTIVE and BOOT connector pins are now debounced to prevent unintentional pack activation. #70

Fixed

  • Fixed state machine implementation to avoid executing logic for already exited states. #71
  • Fixed overcurrent error pattern from general other error to overload error type. #48
  • Fixed error pattern display representation from LSb-first to MSb-first. #54

0.2.1 - 2024-11-01

Added

  • Added BMS Library. #37
  • Added Integration Test Firmware. #38
  • Added new comparator API to arm and disarm the short circuit protection. #40
  • Added basic BQ76925 driver. #41
  • Implemented tests for the state machine logic to run both in simulation and on target.
  • Added direct LED interface.
  • Added vbus activation logic.
  • Added logic to support pack's parallel operation. #47

Changed

  • For safety reasons, the pack will no longer disengage after receiving a long button press.
  • Short-Circuit Protection is now slower and more robust. #39
  • Main application is now based on a state machine implementation. #45
  • When the pack is in copter state, short circuit protection is disabled. #45
  • The default maximum charge current threshold for overcurrent protection has been increased to 24A.

Deprecated

  • The BMS C.x hardware board revision is deprecated and will be removed in a future release.
  • The example_lib library and accompanying tests will be removed in a future release.

Removed

  • The LED module has been suberseded by the direct LED interface embedded in the state machine.

Fixed

  • Fixed SoC display pattern to always show at least one LED. f7b7a69

0.1.0 - 2024-10-07

Added

  • Implemented button module, which can detect short and long presses.
  • Implemented comparator driver for short circuit protection.
  • Implemented analog module, which can publish analog measurements on the ZBus analog channel.
  • Implemented a latch driver interface for FETs, enabling tri-state output control.
  • Added a precharge threshold configuration option in Kconfig.
  • Implemented FET control logic for battery CE, does not contain any logic for copter yet.
  • Implemented logic to use same button to enable and disable the main power delivery from the pack.
  • Implemented overcharge protection feature which interrupts the charging and disables the pack's output.
  • Implemented tests for the application logic to run on the native posix and native sim environments.
  • Added a Short Circuit Protection (SCP) driver, which can be used to protect the pack from short circuits.
  • Added Short Circuit Protection to the BMS application.

Fixed

  • The button module does not send an ENGAGED event when the button is released. #24

Changed

  • Compile default target is BMS D and not BMS C.
  • DAC in comparator driver is implemented without the Zephyr driver API.

Removed

  • Debugging configuration profiles from the application's common configurations.
  • UART and Segger RTT configuration files.