Skip to content

Add support for the XIAO STM32C5 as Bridle Board Extension - #554

Merged
rexut merged 5 commits into
mainfrom
next
Oct 27, 2026
Merged

rexut merged 5 commits into
mainfrom
next

Conversation

@rexut

@rexut rexut commented Oct 26, 2026

Copy link
Copy Markdown
Member

The XIAO STM32C5 is a brand-new development board in the Seeed Studio XIAO family. So far, the only support available is manufacturer-specific support provided by MicroPython for Seeed board, which is based on Zephyr v4.4.0. Official support will not be available until release of Zephyr v4.5. Thus, some shortcomings currently exist when working with it:

Wrong user button polarity

The polarity of the user button is incorrectly (inverted) specified in the board Device Tree. A corresponding pull request is already open.

Missing USB pinctrl and clock setup

The board Devicetree has no valid setup for pinctrl and clock setup for the USB device node. A corresponding pull request is already open.

Missing UF2 support

The Kconfig symbol CONFIG_BUILD_OUTPUT_UF2 can not yet be used because Zephyr’s own UF2 conversion script scripts/build/uf2conv.py does not yet support the required new UF2 family. The UF2 family ID newly introduced by Seeed Studio is 0x00C5C5C5, and the UF2 volume label is XIAOC5BOOT (see XIAO STM32C5 MicroPython and XIAO STM32C5 MicroPython Release Notes).

Flash over SWD required

Since the west build … command does not include the UF2 image conversion step at the end, only programming via the SWD interface over a suitable debug and probe adapter is supported. The current integration for Zephyr requires the use of the STM32CubeProgrammer Flash Host Tools for this purpose. Bridle developers recommend the following hardware setup for working with the XIAO STM32C5, consisting of an additional Expansion Base for XIAO and one of the myriad affordable ST-LINK adapters (e.g., the WeAct Studio MiniDebugger with STLink firmware, as shown).

image

USB CDC-ACM console

The Bridle Board Extension eliminates the restriction of having to use only the USB CDC-ACM console. This allows users to also use the UART available on the XIAO connector as a console (e.g., with a debug and probe adapter). To restore the USB CDC-ACM console, you can use Bridle’s USB Console Snippet (usb-console).

Zephyr USB CDC-ACM UART (by usb-console)

USB device idVendor=2886, idProduct=00c5, bcdDevice= 4.05
USB device strings: Mfr=1, Product=2, SerialNumber=3
Product: XIAO STM32C5 (CDC ACM)
Manufacturer: Seeed Studio
SerialNumber: 482910563728491057392814

rexut added 4 commits October 26, 2026 15:59
- enable '&zephyr_udc0' node per default for all boards, boards
  have to provide this node otherwise the snippet will fail
- remove 'board_cdc_acm_uart' node per default for all boards, is
  replaced by the snippet own 'snippet_cdc_acm_console_uart' node
- add 'zephyr,shell-uart' chosen for all boards witch is
  linked to the snippet own 'snippet_cdc_acm_console_uart'
- add 'zephyr,uart-mcumgr' chosen for all boards witch is
  linked to the snippet own 'snippet_cdc_acm_console_uart'
- add 'zephyr,bt-mon-uart' chosen for all boards witch is
  linked to the snippet own 'snippet_cdc_acm_console_uart'
- add 'zephyr,bt-c2h-uart' chosen for all boards witch is
  linked to the snippet own 'snippet_cdc_acm_console_uart'

Additionally, expand and enhance the corresponding test specification
for all possible logging levels and chosen entries.

Signed-off-by: Stephan Linz <linz@li-pro.net>
- extend upstream 'xiao_stm32c5/stm32c5a3xx'
  to downstream 'xiao_stm32c5/stm32c5a3xx/bbe'
- add several more board feature, especially all the 'xiao_*'
- deactivate self powered USB explicitly
- set the maximum of electrical current consumption to 500mA
- revert USB CDC-ACM console as hard default via common fragment
  in upstream board Devicetree and Kconfig
- change log level only in case of use the native USB device port
  with CDC-ACM UART as Zephyr console
- fix missing pinctrl and clock setup for USB device
- fix user button polarity on the BOOT0 pad

Signed-off-by: Stephan Linz <linz@li-pro.net>
- add Kconfig artefact with Bridle's meta data
- add Devicetree overlay with Bridle's meta data and choices
- extend related integration test

Signed-off-by: Stephan Linz <linz@li-pro.net>
- Twister: adapt to new board qualifier in 'tests.yaml'
- Documentation: adapt to new board qualifier

Signed-off-by: Stephan Linz <linz@li-pro.net>
Add the new supported board XIAO STM32C5. Explain the changes on the
Bridle 'usb-console' snippet and the corresponding test specification.

Signed-off-by: Stephan Linz <linz@li-pro.net>
@github-actions

Copy link
Copy Markdown

You can find the documentation preview for this PR at this link. It will be updated about 10 minutes after the documentation build succeeds.

Note: This comment is automatically posted by the Documentation Publishing GitHub Action.

@rexut

rexut commented Oct 26, 2026

Copy link
Copy Markdown
Member Author

You can find the documentation preview for this PR at this link. It will be updated about 10 minutes after the documentation build succeeds.

Note: This comment is automatically posted by the Documentation Publishing GitHub Action.

@tobiaskaestner or other reviewer:

@tobiaskaestner tobiaskaestner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@rexut
rexut merged commit 4099cdd into main Oct 27, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants