Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/MrJefter/sdvx-controller/llms.txt

Use this file to discover all available pages before exploring further.

The firmware is built with STM32CubeIDE, STMicroelectronics’ free Eclipse-based IDE that bundles the ARM GCC toolchain, CubeMX peripheral configurator, and an ST-Link debug adapter all in one package. The STM32CubeIDE project is named HID_SDVX_NEW4 and lives inside the firmware/HID_SDVX_NEW4/ directory of the repository. No additional toolchain setup is required beyond installing STM32CubeIDE itself.
The .ioc file (HID_SDVX_NEW4.ioc) at the root of the project folder contains the full CubeMX peripheral and pin configuration — clock settings, timer encoder modes, USB device class, GPIO assignments, and DMA channels. Opening this file in STM32CubeIDE launches the graphical CubeMX view.

Steps

1

Install STM32CubeIDE

Download and install STM32CubeIDE from st.com/stm32cubeide. It is free and available for Windows, macOS, and Linux. Accept the default installation path; the IDE ships with a bundled ARM GCC toolchain so no separate compiler is needed.
2

Clone or download the repository

Obtain the project source:
git clone https://github.com/MrJefter/sdvx-controller.git
Alternatively, download a ZIP archive from the GitHub repository page and extract it to a local directory.
3

Import the project into STM32CubeIDE

Open STM32CubeIDE, then navigate to File → Import → General → Existing Projects into Workspace and click Next. In the Root directory field, browse to the firmware/HID_SDVX_NEW4/ folder inside the cloned repository.STM32CubeIDE will detect the .project and .cproject Eclipse metadata files and list HID_SDVX_NEW4 in the Projects box.
4

Select the project and finish the import

Ensure the checkbox next to HID_SDVX_NEW4 is ticked and that Copy projects into workspace is not selected (keep the sources in their original location). Click Finish. The project will appear in the Project Explorer panel on the left.
5

Verify the target device

Confirm the build is targeting the correct chip. Right-click the project in Project Explorer and choose Properties → C/C++ Build → Settings. Under Tool Settings, check that the MCU is listed as STM32F401CEx. This determines the linker script, startup file, and FPU flags used during compilation.
6

Build the project

Trigger a full build via Project → Build Project or press Ctrl + B. STM32CubeIDE will compile all source files under Core/, USB_DEVICE/, and the ws2812b driver, then link them against the STM32 HAL libraries. Build output and any errors or warnings appear in the Console tab at the bottom of the IDE.
7

Locate the compiled binary

On a successful build the IDE produces both a .elf and a flat binary .bin file:
firmware/HID_SDVX_NEW4/Release/HID_SDVX_NEW4.elf
firmware/HID_SDVX_NEW4/Release/HID_SDVX_NEW4.bin
The .bin file is required for DFU flashing with dfu-util. The .elf file retains full debug symbols and is used when flashing directly from the IDE over ST-Link.
A pre-configured Release launch configuration (HID_SDVX_NEW4 Release.launch) is included in the repository. You can load it via Run → Run Configurations to build and flash in one step when an ST-Link is connected.
Do not click Generate Code in the CubeMX .ioc view without carefully reviewing the result. CubeMX regenerates peripheral init stubs and may overwrite or truncate sections that fall outside /* USER CODE BEGIN */ / /* USER CODE END */ guard comments. All custom logic in main.c and visEffect.c lives within these guarded blocks, but always diff the output before committing.

Build docs developers (and LLMs) love