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 oldXM_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 atmain()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.zipis 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 toTERMINALinControl_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
0x08040400in 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) — pressResume(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 |