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.

This page lists everything you need to build the SDVX Controller from scratch — electronic components, PCB materials, 3D-printed enclosure parts, and tools. The design is intentionally approachable: the PCB is single-layer and home-etchable, all mechanical parts come from the included STL files, and the component count is low. Source the parts once, print the enclosure, and you have everything needed to go from bare bench to a working USB HID game controller.
A pre-compiled firmware binary may be available in the GitHub Releases section of the repository. If a release binary is present, you can flash it directly with STM32CubeProgrammer or dfu-util and skip the need to install STM32CubeIDE and build the project from source.

Electronics

The electronic BOM is short. The PCB BOM (generated from EasyEDA, BOM_SDVX-Controller_2025-05-28.csv) lists the three soldered components; the remaining items below are wired off-board or connect via header.
ComponentSpecificationQtyNotes
STM32F401 BlackPillWeAct BlackPill v3.0, STM32F401CEU61Main microcontroller board. Ensure you have the v3.0 variant with the USB-C connector.
Rotary encoderLPD3806, incremental quadrature2VOL-L and VOL-R. Both are identical; designators U9 and U10 on the PCB.
Mechanical switchOutemu Red (or any Cherry MX-compatible)7BT-A, BT-B, BT-C, BT-D, FX-L, FX-R, START. Designators S1–S7 on the PCB.
WS2812B LED strip12 LEDs, individually addressable RGB, 5 V1Strip data line connects to PB0. Any density works as long as 12 LEDs are available.
USB-C cableStandard USB 2.0, USB-C to USB-A or USB-C1For connecting the controller to a PC. The BlackPill uses USB-C for both power and HID data.
Ceramic capacitor150 nF (0.15 µF), any voltage rating ≥ 10 V1Optional. Required only for the software DFU entry hack (see note below).
The 150 nF capacitor enables the firmware’s built-in DFU bootloader entry: hold START for 5 seconds and the controller resets into USB DFU mode automatically. Without the capacitor, the BOOT0 pin may not be sampled in time during the reset and DFU entry will fail silently. You can still flash the firmware without it by holding the physical BOOT0 button on the BlackPill while plugging in USB, or by using an ST-Link adapter.

PCB

The PCB was designed in EasyEDA. All source files, Gerbers, and the BOM CSV are located in hardware/pcb/.
ItemDetails
Copper layersSingle-layer (1-layer) — specifically chosen to allow home etching
EasyEDA sourcehardware/pcb/easyeda_project/ — open directly in EasyEDA Standard or Pro
Gerber fileshardware/pcb/gerbers/ — submit to any PCB fab (JLCPCB, PCBWay, etc.) for a professionally manufactured board
BOMhardware/pcb/bom/BOM_SDVX-Controller_2025-05-28.csv
If you prefer to etch at home, use the EasyEDA project files to export a single-side copper layer image at the correct scale. Standard toner-transfer or UV-photoresist methods both work on a single-layer board of this complexity.

Enclosure

The enclosure is fully 3D-printed. Source CAD files were created in KOMPAS-3D and are available in hardware/enclosure/source_cad/. Ready-to-print STL files are in hardware/stl_for_printing/. STEP files for reference or modification are in hardware/enclosure/export_step/. 3D models of the mounted components (BlackPill, LPD3806 encoders, Cherry MX switches) are included in hardware/enclosure/component_models_3d/ for reference during assembly planning.

Parts to Print

All eight parts below must be printed. Quantities marked with ×N depend on your specific assembly spacing — check the CAD files for the count appropriate to your build.
STL FilePartQty
SDVX Controller - Bottom.stlBottom panel / base1
SDVX Controller - Front.stlFront panel (top surface with switch cutouts and encoder holes)1
SDVX Controller - Keycap (ABCD and Start).stlKeycap for BT-A, BT-B, BT-C, BT-D, and START buttons5
SDVX Controller - Keycap (FX).stlKeycap for FX-L and FX-R buttons2
SDVX Controller - Knob.stlEncoder knob for VOL-L and VOL-R2
SDVX Controller - Spacer.stlSpacer (PCB / internal standoff)N
SDVX Controller - Spacer 2.stlSecondary spacer variantN
SDVX Controller - Walls (middle).stlMiddle side walls connecting top and bottom panels1
Recommended filament: PLA or PETG. PLA is easier to print and sufficient for a desktop controller; PETG offers better durability and temperature resistance if the controller will see heavy use.

Tools

ToolPurpose
Soldering ironSoldering switches, encoder headers, BlackPill pin headers, and LED strip wires to the PCB
Solder & fluxStandard 60/40 or lead-free solder; flux paste helps with fine-pitch joints
Wire strippersPreparing encoder and LED strip cable ends
MultimeterContinuity checks after soldering; verifying power rails before first power-on
3D printerPrinting all eight enclosure parts (FDM, minimum ~0.2 mm layer height recommended)
ST-Link v2 adapterOptional — needed only if you are not using the USB DFU path for flashing
STM32CubeIDEBuilding the firmware from source (free, from STMicroelectronics)
STM32CubeProgrammerFlashing the compiled binary via USB DFU or ST-Link (free, from STMicroelectronics)

Build docs developers (and LLMs) love