DauhuniecDauhuniec · CLI: Named after Belarusian лён-даўгунец (fibre flax). The native CLI is Upgrading from earlier versionsDisable the old extension, install this VSIX and run Dauhuniec: Configure CubeMX Project once for each existing project. Setup reuses old tool paths, migrates project-local Move a project generated by STM32CubeMX into VS Code with a guided setup, environment checks, build tasks, ST-LINK flashing and Cortex-Debug integration. The extension includes the native Dauhuniec CLI for Windows, macOS and Linux (x86_64 and ARM64). No Python, Go or separate Node.js installation is required. Start here
The extension also detects projects inside a workspace and lets you choose among
multiple Focus on your USER CODEOpen a C/C++ file with CubeMX This feature works independently of build setup, including fresh IAR/EWARM exports.
It does not rewrite source files or affect CubeMX regeneration. Regular folding
arrows can reveal individual generated sections. Explicit per-file choices are
remembered; optional Unmatched or incomplete markers disable folding. If marker pairs break while the file is focused, the full file is revealed. Nested user blocks remain protected. Target board for flashing and debuggingUse Project → Target Board in the Dauhuniec sidebar (or Dauhuniec: Select Target Board) to select the exact physical device by ST-LINK serial number. The picker shows the board name when reported by the probe and its full serial, so identical models remain distinguishable. This choice is independent of the serial monitor's port. A single available board is selected and remembered automatically. If a configured project is opened without a saved choice and several probes are connected, Dauhuniec asks which board should receive the firmware. Cancelling does not select a default; flashing asks again. Adding or reordering devices never changes an existing choice. If the chosen board is disconnected, flashing/debugging stop until it returns or you explicitly choose another board in the sidebar. Selection is stored per project in Standalone CLI users can run Serial MonitorDauhuniec: Open Serial Monitor (also the terminal icon in the bottom toolbar) selects a port and baud rate, then starts the native console in VS Code's bottom Terminal panel. Code remains in the editor. Reopening the command reveals an existing running session. The selected port and speed are remembered. Type a message and press Enter to send it. Incoming data preserves the current input line; use Backspace and the Left/Right arrow keys to edit it. The connection uses 8N1 without flow control; LF is the default transmit ending. Available commands:
Use // at the beginning of a line to send a literal leading slash. File paths following /log may contain spaces; quotes are not required. Logging is off by default. Dauhuniec: Serial Monitor: Start Logging opens a file chooser and Stop Logging stops recording. Use these commands with an empty console input line. Logs include UTC timestamps, RX/TX directions, port, baud rate, decoded text and original bytes in dataBase64. Records follow receive chunks, which may contain partial or multiple lines. Clearing the terminal and changing display mode do not change the log. Disk errors stop recording and leave the monitor running. Hiding the terminal keeps the connection and recording active. Use /quit or Ctrl+C to release the device before opening it in another application. Terminal persistence on window reload follows VS Code's terminal settings. Old editor monitor tabs are migrated to the native terminal when restored. The bundled executable also runs independently from any terminal:
Windows ports look like COM3, macOS /dev/cu.usbmodem…, and Linux /dev/ttyACM0 or /dev/ttyUSB0. Windows, macOS and Linux on x64 and ARM64 use the bundled CLI; no Python or additional serial application is needed. USB/virtual COM drivers and port access permissions must be available on the workspace host, including SSH, WSL and containers. Some boards reset when the port opens. Cross-platform builds are checked; physical communication still needs verification on each target OS. Required toolsOn Windows, Make is included in STM32CubeIDE and detected automatically. No MSYS2 or additional build environment is required. Open Resources → Windows Setup Instructions for the Windows setup guide. Open Resources → Install Tools / Official Downloads in the Dauhuniec sidebar or run Dauhuniec: Install Tools / Official Downloads from the Command Palette. The menu opens official download pages in your browser and is available without an open project. Missing-tool setup also offers a CubeIDE download link; the missing-CubeMX notification offers its download page. After installing, run Configure Project again and select the installation if needed. Selecting a CubeIDE directory or Make executable checks its required tool files before saving the path in the project's VS Code settings. Invalid selections show the selected path and the discovery error, with options to retry or view the log.
The extension runs in the workspace extension host. With SSH, WSL or a container, its native tools must be installed on that host; USB access to the board is a separate requirement. Local desktop development is the primary workflow. What setup changesDauhuniec adds a project-local executable and tool paths in The Normal Ctrl/Cmd+Shift+B and F5 work through the generated configurations. Select Dauhuniec: Debug in Run and Debug. Flashing and debugging only start when you invoke those actions; opening a project or checking tools does not flash it. Everyday workflow
If ST-LINK is missing, check the data-capable USB cable, board connector, driver/udev rules and other running debuggers. With multiple boards, check Target Board. If breakpoints do not match, clean and rebuild before starting debugging. Supported project formatStandard single-core STM32 MCU projects generated with the Makefile export,
with literal Native binaries are supplied for all six desktop OS/architecture combinations. macOS Intel is the locally exercised runtime. Other platform runtimes and actual board flashing/debug sessions still need verification on those systems. Installation and developmentDownload the Maintainers build the native binaries from the repository root with
Status bar toolbarThe bottom left status bar shows the active CubeMX project, Build, Flash, Debug and More Actions. Click the project name to switch projects. Until the environment is ready, Configure replaces the build actions. Running tasks show a progress spinner and a Stop button. Build output stays in the task terminal; compiler diagnostics appear in Problems. A failed task adds a shortcut to Problems. More Actions includes Clean, environment checks, ST-LINK probes, the Editor title buttonsC/C++ files containing CubeMX USER CODE blocks show two buttons at the top right of the editor: Focus on USER CODE (switches to Show Full File while focused) and Go to USER CODE Block. Hover over an icon for its command name. These actions work before build setup and keep the file contents unchanged. USER CODE focus keeps function signatures (including multiline parameters) and their opening/closing braces visible, so editable blocks retain their surrounding function context. CubeMX command integration can be tested with a fake executable in an empty temporary
workspace: Status bar shortcutsThe status bar provides four compact icons, each performing its action directly:
Hover over an icon to see its action and active project. During a task, the Home icon shows progress and Stop is available for cancellable tasks. Build and flash shortcuts return when the task finishes. Setup and project selection stay in the side panel. Both flash actions verify the write and reset the MCU. If no ELF exists, build first. These actions use Dauhuniec's configured ARM tools and ST-LINK, without a CMake kit selection. MCU, board and offline documentationOpen Resources → Documentation · MCU / Board / HAL / RTOS, Project →
Documentation, or Dauhuniec: Open Documentation (MCU / Board / HAL / RTOS).
The command is also available on The picker reads the selected project's HAL / LL uses full, unmodified STMicroelectronics manuals. The matching family manual appears for the selected IOC; HAL / LL · Choose STM32 family… provides the catalog without a project. The catalog covers STM32F0/F1/F2/F3/F4/F7, G0/G4, H5/H7, L0/L1/L4/L5, U5, WB and WL. Distinct families such as WBA, WB0 and H7RS do not fall back to a WB or H7 manual. The official firmware-package page provides additional documentation; check its version against your installed package, especially when using a newer HAL generation. RTOS opens the full FreeRTOS documentation and Arm CMSIS-RTOS v1/v2 API
references. ST's UM1722 is available as an integration guide. The optional
FreeRTOS V10.0.0 PDF is explicitly labeled legacy; use the online reference for
current APIs. These are publisher documents, not Dauhuniec-authored summaries.
The complete source catalog is included in PDF manuals download only when selected, then open from the extension's global storage on the workspace host. Subsequent opens reuse the downloaded copy without internet. Update Downloaded Manual… fetches a fresh copy; a failed download preserves the previous file. The cache is shared by projects, separate from firmware sources. Downloads validate PDF signatures and completion; publisher error/sign-in pages are not saved as manuals. If a download fails, Open Online opens the original publisher URL. Online HTML API references require internet; the extension does not mirror entire websites. Local PDF, Markdown and HTML files in the project appear in the same searchable
picker. Add firmware-package or documentation directories with the resource setting
Use Choose MCU or ST board… if the IOC has no recognized model. Automatic product links cover conventional STM32 MCU and common ST board naming schemes; custom boards use local documentation. Markdown opens in VS Code; local desktop PDF/HTML uses the system viewer. SSH/WSL/container files open through VS Code, where PDFs may require a PDF viewer extension. For proxy-restricted hosts, use Open Online, save the PDF with your browser and select Open Local Document…. |