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.
| Component | Specification | Qty | Notes |
|---|
| STM32F401 BlackPill | WeAct BlackPill v3.0, STM32F401CEU6 | 1 | Main microcontroller board. Ensure you have the v3.0 variant with the USB-C connector. |
| Rotary encoder | LPD3806, incremental quadrature | 2 | VOL-L and VOL-R. Both are identical; designators U9 and U10 on the PCB. |
| Mechanical switch | Outemu Red (or any Cherry MX-compatible) | 7 | BT-A, BT-B, BT-C, BT-D, FX-L, FX-R, START. Designators S1–S7 on the PCB. |
| WS2812B LED strip | 12 LEDs, individually addressable RGB, 5 V | 1 | Strip data line connects to PB0. Any density works as long as 12 LEDs are available. |
| USB-C cable | Standard USB 2.0, USB-C to USB-A or USB-C | 1 | For connecting the controller to a PC. The BlackPill uses USB-C for both power and HID data. |
| Ceramic capacitor | 150 nF (0.15 µF), any voltage rating ≥ 10 V | 1 | Optional. 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/.
| Item | Details |
|---|
| Copper layers | Single-layer (1-layer) — specifically chosen to allow home etching |
| EasyEDA source | hardware/pcb/easyeda_project/ — open directly in EasyEDA Standard or Pro |
| Gerber files | hardware/pcb/gerbers/ — submit to any PCB fab (JLCPCB, PCBWay, etc.) for a professionally manufactured board |
| BOM | hardware/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 File | Part | Qty |
|---|
SDVX Controller - Bottom.stl | Bottom panel / base | 1 |
SDVX Controller - Front.stl | Front panel (top surface with switch cutouts and encoder holes) | 1 |
SDVX Controller - Keycap (ABCD and Start).stl | Keycap for BT-A, BT-B, BT-C, BT-D, and START buttons | 5 |
SDVX Controller - Keycap (FX).stl | Keycap for FX-L and FX-R buttons | 2 |
SDVX Controller - Knob.stl | Encoder knob for VOL-L and VOL-R | 2 |
SDVX Controller - Spacer.stl | Spacer (PCB / internal standoff) | N |
SDVX Controller - Spacer 2.stl | Secondary spacer variant | N |
SDVX Controller - Walls (middle).stl | Middle side walls connecting top and bottom panels | 1 |
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.
| Tool | Purpose |
|---|
| Soldering iron | Soldering switches, encoder headers, BlackPill pin headers, and LED strip wires to the PCB |
| Solder & flux | Standard 60/40 or lead-free solder; flux paste helps with fine-pitch joints |
| Wire strippers | Preparing encoder and LED strip cable ends |
| Multimeter | Continuity checks after soldering; verifying power rails before first power-on |
| 3D printer | Printing all eight enclosure parts (FDM, minimum ~0.2 mm layer height recommended) |
| ST-Link v2 adapter | Optional — needed only if you are not using the USB DFU path for flashing |
| STM32CubeIDE | Building the firmware from source (free, from STMicroelectronics) |
| STM32CubeProgrammer | Flashing the compiled binary via USB DFU or ST-Link (free, from STMicroelectronics) |