Skip to content

XM10 Extension Module SDK v2.4.1

Release date: 2026-07-24 | Target HW: Rev 2.0 only | KIT H10 FW: v2.3.0+


At a Glance

A patch release that fixes the C standard library on Rev 2.0. Floating-point printf("%f", ...) and dynamic malloc(), which previously failed silently, now work. No new examples or API changes.

  • Float printf (%f) and malloc() now work — previously malloc() and the float printf that uses it internally produced no output. (e.g. printf("cur=%.2f\n", value);)
  • Safe from multiple tasks — concurrent malloc/printf calls from several tasks no longer cause problems.
  • Same build result everywhere — building with STM32CubeIDE or with CMake now produces the same firmware.
  • USB log decoder is now an installable executable — replaced by XM10 Log Decoder, which needs no Python install (see below).

What Changed — Float printf / malloc (core)

On Rev 2.0, malloc() — along with the float printf (%f, %e, %g) that relies on it — produced no output. This release fixes that, so the following now works:

float value = 3.14f;
printf("cur=%.2f\n", value);   // now prints "cur=3.14" (previously empty/garbled)

char *buf = malloc(64);        // now returns a valid pointer
  • Rev 1.1 is unaffected — this problem only occurred on Rev 2.0. The Rev 1.1 SDK is unchanged from v2.3.1.
  • Thread-safe standard library — alongside the fix, malloc/free/printf are now safe to call concurrently from multiple tasks. Nothing extra to do on your side.

USB Log Decoder — XM10 Log Decoder

The tool that converts USB mass-storage (MSC) log files (.bin) into CSV is now an installable executable.

  • Instead of the Python scripts under PythonDecoder/ (MSC · Legacy), download XM10LogDecoder_Setup_*.exe from the Releases page and install it. No Python install required.
  • It auto-detects the log format version (new/legacy) and expands any log structure you define into CSV (column titles = your own field names).
  • If you want to write code that receives USB-CDC data in real time, the PythonDecoder/CDC/ Python samples remain in place.

Full usage: see PythonDecoder/README.md.


Downloads

File Target board
Rev2.0.zip 🆕 XM10 Rev 2.0 (latest board with Ethernet / RTC) — new in v2.4.1
Rev1.1.zip XM10 Rev 1.1 (early development board) — same as v2.3.1
*XM10LogDecoder_Setup_.exe 🆕 USB log decoder (installer, no Python needed)

Download the ZIP matching your board revision. RJ45 Ethernet port present → Rev 2.0; absent → Rev 1.1.

Note for Rev 1.1 users: this v2.4.1 fix (float printf/malloc) addresses a problem that only occurred on Rev 2.0, so it is Rev 2.0 only. Rev1.1.zip is identical to v2.3.1, so there is nothing new to download for Rev 1.1.

Release attachments

The bootloader, KIT H10 firmware, and content files are identical to v2.3.0, and are attached again to the v2.4.1 release for convenience (AGR_Bootloader.bin / SUIT_H10_Binary_20260716.zip / SUIT_ContentsFiles.zip). If you already installed/updated at v2.3.0/v2.3.1, no further action is needed.

Prerequisites

The final build step (generating the upload .bin) uses Python. If you haven't installed it, follow Software setup to install Python 3.10+ (PATH registration required).


Details

Standard library (core)

  • Float printf / malloc fixed — float format specifiers (%f, etc.) and dynamic allocation now work.
  • Thread-safe — concurrent malloc/printf calls from multiple tasks no longer cause problems.

SDK build

  • CMake · CubeIDE parity — builds made with CMake were missing the float-printf settings; corrected so both build methods produce the same firmware.

Tools · docs

  • USB log decoder as an installer — see USB Log Decoder above.
  • Debug-halt guidance — clarified in troubleshooting that halting at main() and the Break at address "0x0800xxxx" ... no debug information popup (bootloader region) are normal. Just press Resume (F8).

Compatibility

Item Impact
User code (Control_Setup / Control_Loop) No changes — just rebuild; float printf/malloc now work
API signatures No changes
Rev 1.1 SDK Same as v2.3.1 — not part of this release
KIT H10 firmware / content files Same as v2.3.0 — no update needed
Bootloader Same as v1.1.0 — no reinstall needed
USB log decoder Python scripts → installable executable (Releases). Real-time CDC samples retained
User data (USB log files, etc.) Unchanged — data format compatible