The foxBMS 1 version 1.5.0 is available on GitHub.

We publish major software releases for our open source BMS platform every 3 to 6 months and interim bug fixes when solved in the News section. By subscribing to the foxBMS Newsletter, you will be informed when the new releases are available. Further, the foxBMS Roadmap and the Documentation are also updated regularly.

Warning: The foxBMS platform including the foxBMS hardware and the foxBMS software are under permanent development. The free and open research and development platform foxBMS as presented in the documentation hereafter is not provided to be used without any adaptions (e.g., to fulfill mandatory regulations) in consumer products, electric vehicles, production environments or any similar usages: it is only intended to be used by skilled professionals trained in designing battery system prototypes.

Based on all the feedback received during the last 2 years from foxBMS software partners and users, the embedded software and the computer software have been restructured to reduce the MCU hardware dependency and enable even more flexibility.

Hereafter is a summary of the changes provided in foxBMS 1 version 1.5.0.

  • Until version v1.1.0, the foxBMS software was split into several repositories, with an independent version number for each repository. Starting from version v1.5.0, the foxBMS software is contained in only one repository, with one version number!
  • EEPROM module from v1.5.0 is not compatible with previous versions due to the changed memory layout because of added timestamps!
  • foxBMS has been migrated from Python 2.7 to Python 3.6. The foxconda3 installer is found at here. foxconda3 must be installed to C:\foxconda3.
  • EEPROM addresses on the BMS-Master were changed. Previously saved EEPROM data will be lost with new update.
  • introduction of an improved software structure to differentiate between hardware-dependent and hardware-independent software layers


  • Toolchain:
    • switched to monolithic repository structure to simplify the versioning
    • raised compiler warning [-Wimplicit-function-declaration] to error level
    • avoid shell=True in python subprocess
    • updated python checksum script
    • updated to waf-2.0.10 and renamed the waf binary to simply waf
  • Bugfixes:
    • fixed bug passing mV instead of V to function LTC_Convert_MuxVoltages_to_Temperatures()
    • typedef DATA_BLOCK_ID_TYPE_e starts at 0x00 instead of 0x01 (renamed DATA_BLOCK_1 to DATA_BLOCK_00) for consistency
    • fixed bug in ltc module: wrote wrong values to database when using filtered mode for measuring cell voltages and temperatures
    • #define CONT_PRECHARGE_VOLTAGE_THRESHOLD used V instead of mV
    • fixed bug in function CAN_WakeUp(): wrong HAL function call was corrected
    • fixed bug in diag module: did not evaluated diagnostic errors with DIAG_ERROR_SENSITIVITY_HIGH
  • Enhancements:
    • adapted wscripts to new restructured software architecture
    • added timestamp to MCU backup SRAM and external EEPROM entries
    • added three alarm levels (maximum operating limit, recommended safety limit, maximum safety limit)
    • enhanced voltage based balancing algorithm
    • updated .dbc file
    • added measure AllGPIO state to ltc module
    • added CAN message for pack voltage (CAN-ID: 0x1F0)
    • added algorithm module to enable future advanced algorithms
    • increased FreeRTOS heap size from 15kByte to 20kByte
    • increased stack size of 100ms application task from 512bytes to 1024bytes
    • increased size of CAN TX message buffer from 16 to 24 messages
    • added calculation of moving average values (1s, 5s, 10s, 30s and 60s) for current and power
    • database timestamp are now automatically written on DB_Write – no need to manually update timestamps anymore
    • added native matlab datatypes support
    • cleanup of ASCII conversion functions (uint to ASCII, hex to ASCII, int to ASCII)
    • added nvramhandler to automatically update non-volatile memory (i.e., external EEPROM on BMS-Master)
    • renamed various structs, variables and functions for an improved code understanding and increased readability


  • added hardware changelogs
  • ported hardware PCB design files to Altium Designer format (AutoDesk Eagle files no longer supported)
  • updated hardware PCB designs: Master V1.0.5, Extension V1.0.4, Interface 1.9.3, Slave 12-cell (LTC6811-1) V2.1.5, Slave 18-cell (LTC6813-1) V1.1.3


  • added foxbms styleguide
  • fixed spelling errors
  • added documentation of software architecture
  • added documentation of algorithm module
  • added documentation of nvramhandler
  • updated isoguard documentation

In case you encounter problems, please contact us.

The Fraunhofer IISB foxBMS Team