Skip to content

XM10 Extension Module SDK v2.4.0

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


At a Glance

A Rev 2.0 release focused on USB serial usability. It fixes the long-standing problem where example text output was invisible in a plain serial terminal, and in the process simplifies the USB communication-mode API.

  • Text examples now show up immediately in a plain terminal — previously, opening a text example (Ex.07–09) in Tera Term · VS Code Serial Monitor · PuTTY buried the text under the board's continuous PhAI Studio telemetry (you had to change the terminal settings by hand). Text examples now select the terminal profile automatically, so you get clean text with no extra steps.
  • Simpler USB mode API — a single new function XM_USB_SetHostProfile() lets you pick "PhAI Studio vs. plain terminal." (See ⚠️ API Change below — the old XM_USB_SetMode() family has been removed.)
  • Better bootloader debug guidance — documented setting the vector-table address (0x08040400) in the debug configuration, and clarified that halting at main() when debugging is normal.
  • Stability & build improvements — further GRF sensor-module stability, protection against unintended resets, and a more robust CubeIDE build.

⚠️ API Change — USB Communication Mode (Rev 2.0)

The USB-CDC communication-mode API has been replaced with a simpler profile-based one.

Removed (deleted from the Rev 2.0 header):

  • Functions: XM_USB_GetMode() · XM_USB_SetMode() · XM_USB_RegisterModeChangeCallback()
  • Types: XM_USB_Mode_e · XM_USB_ModeChangeCb_t

Replacement:

void XM_USB_SetHostProfile(XM_USB_HostProfile_e profile);

typedef enum {
    XM_USB_HOST_PHAI_STUDIO = 0,  // default — PhAI Studio real-time streaming
    XM_USB_HOST_TERMINAL    = 1,  // plain terminal / custom program (Total Data auto-send OFF)
} XM_USB_HostProfile_e;

Migration — if you switched modes for terminal use, change one line:

// before (v2.3.1)
XM_USB_SetMode(XM_USB_MODE_TERMINAL);

// after (v2.4.0)
XM_USB_SetHostProfile(XM_USB_HOST_TERMINAL);
  • The default is XM_USB_HOST_PHAI_STUDIO, so code that never touched the mode keeps working unchanged (PhAI Studio streaming as before).
  • The selected profile persists when you reconnect the cable or the PC program reopens the port.

Download

File Target board
Rev2.0.zip 🆕 XM10 Rev 2.0 (latest board — includes Ethernet / RTC) — new in v2.4.0
Rev1.1.zip XM10 Rev 1.1 (early development board) — same as v2.3.1

Download the ZIP matching your board revision. An RJ45 Ethernet port means Rev 2.0; no RJ45 means Rev 1.1.

Note for Rev 1.1 users: the v2.4.0 improvements (USB usability / API cleanup) are Rev 2.0 only. The Rev 1.1 SDK is unchanged from v2.3.1, so Rev1.1.zip is the same file as v2.3.1. If you're on Rev 1.1, there's nothing new to download.

Release Attachments

The bootloader, KIT H10 firmware, and contents files are identical to v2.3.0 — for convenience, the same files are also attached to the v2.4.0 release (AGR_Bootloader.bin / SUIT_H10_Binary_20260716.zip / SUIT_ContentsFiles.zip). If you already installed/updated with v2.3.0/v2.3.1, no further action is needed.

Prerequisites

The build's final step (creating the upload .bin) uses Python. If you haven't installed it yet, follow Software Setup and install Python 3.10+ (must be on PATH).


Details

USB Serial (headline)

  • Text examples auto-configured — Ex.07 (07_CDC_Basic_Print) · Ex.08 (08_CDC_Sensor_Print) set the host profile to TERMINAL in Control_Setup(). The 1 kHz automatic telemetry is turned off, so a plain serial terminal shows clean text. No need to change any terminal settings.
  • Simpler USB mode selection — you only see two profiles (PhAI Studio / terminal).

Bootloader Debug Docs

  • Documented setting the vector-table address 0x08040400 in the debug configuration. Leaving it blank caused the debugger to halt in the wrong place.
  • Clarified that halting at main() when the debug session starts is normal (CubeIDE default) — press Resume (F8) to run.

Stability · Build

  • Further GRF sensor-module stability — fewer unnecessary repeated resets. (Follow-up to the GRF boot stabilization in v2.3.1.)
  • Protection against unintended resets — the MCU reset-pin handling was cleaned up, removing the chance of the board being reset by an outside signal.
  • More robust CubeIDE build — regenerating the code with CubeMX no longer breaks the build.

Compatibility

Item Impact
User code (Control_Setup / Control_Loop) Mostly unchanged — but see the migration under ⚠️ API Change if you called the XM_USB_SetMode() family directly
XM_USB_SetMode / GetMode / Mode_e family Removed — replace with XM_USB_SetHostProfile()
Other API signatures No change
Rev 1.1 SDK Same as v2.3.1 — not targeted by this release
KIT H10 firmware · contents files Same as v2.3.0 — no update needed
Bootloader v1.1.0 unchanged — no reinstall needed
User data (USB storage logs, etc.) No change — data format compatible