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.

With your 3D-printed parts ready and your PCB fully soldered and tested, it is time to bring everything together into the finished controller. Final assembly is a satisfying process — each step locks another piece into place until you are left with a proper, arcade-style SDVX controller ready to plug in. Work methodically, do not rush the cable routing, and resist the temptation to close the enclosure before running a quick firmware smoke test. Build photos for every stage of this process are available in the docs/images/ folder of the repository.
A see-through full assembly render is available in the repository under docs/images/. Refer to it whenever you need to understand how internal components are positioned relative to each other before committing to a fastening step.

Assembly Steps

1

Mount the PCB into the bottom shell

Place the 3D-printed Spacer and Spacer 2 standoffs into their recesses in the Bottom shell. These standoffs elevate the PCB off the base plate and protect the copper traces from shorting against the enclosure. Lower the assembled PCB onto the standoffs and secure it with the appropriate screws or friction-fit posts as designed into the spacer geometry. Confirm the USB connector on the BlackPill is accessible from the correct edge of the Bottom shell before tightening.
2

Insert the Cherry MX switches into the front panel

Orient the Front panel face-down on a clean, flat surface. Press each Cherry MX-compatible switch (7 total) firmly into its cutout from the top side until both plastic retention clips click audibly. Verify that every switch sits flush and square — a tilted switch will misalign the keycap and bind against the panel during gameplay.
3

Connect the encoders through the front panel

Thread each LPD3806 encoder into its circular cutout in the Front panel and secure it with the encoder’s locking nut. Route the encoder cables (four wires each: +5 V, GND, channel A, channel B) toward the PCB header positions. Build photos showing the correct routing path are available in the repository under docs/images/. Plug the cables into the encoder headers on the PCB:
EncoderConnectorSignals
VOL-LTIM3 header+5V, GND, PA6 (A), PA7 (B)
VOL-RTIM4 header+5V, GND, PB6 (A), PB7 (B)
4

Route and attach the LED strip

Peel the backing off the WS2812B LED strip and adhere it to the inside surface of the enclosure in the position that will illuminate the button area most evenly. Reference installation photos are available in the repository under docs/images/. Connect the three wires to the PCB:
  • DINPB0 data pad
  • +5 V+5 V rail
  • GNDGND
Keep the data wire short and tuck all excess cable length carefully so it will not catch on the PCB or switches when the enclosure is closed.
5

Thread the USB cable or install a panel-mount connector

Route the USB-C cable from the BlackPill out through the rear opening of the Bottom shell. If your build uses a panel-mount USB-C connector, secure it in the rear cutout and connect the short internal cable to the BlackPill. Ensure the cable has enough slack to not pull the BlackPill off its socket when the enclosure flexes during play.
6

Attach the walls (middle) section

Align the Walls (middle) section over the Bottom shell, engaging any snap or screw posts designed into the geometry. Bring the Front panel assembly down to meet the top edge of the Walls, aligning the PCB switch solder legs through their corresponding holes. Fasten all screws or press all snap clips — work from corner to corner rather than one side at a time to ensure even seating without warping the printed parts.
7

Press the keycaps onto the switches

Press the 5× Keycap (ABCD and Start) caps onto their respective Cherry MX stems — one keycap per main button. Then press the 2× Keycap (FX) caps onto the FX button stems. Each keycap should seat with a firm click and sit level with the front panel surface. If a keycap rocks or catches, remove it and lightly sand the inside bore before re-seating.
8

Press the knobs onto the encoder shafts

Press both Knob parts onto the protruding encoder shafts. The knobs should fit snugly with friction alone — do not glue them, as you may need to remove them for maintenance. Give each knob a full rotation to confirm it spins freely without scraping the front panel surface.
9

Plug in via USB and verify before final closure

Before applying any final fasteners that would require disassembly, plug the controller into your PC via USB. The operating system should detect it as a standard HID game controller (no driver installation required). Open your OS game controller panel and:
  • Press each button and confirm the corresponding input is registered.
  • Turn both encoder knobs and confirm axis movement is detected.
  • Confirm the LED strip illuminates if the firmware’s LED feature is active.
Only once every input is verified should you apply any remaining screws or adhesive closures.
Flash and test your firmware before final closure. It is far easier to re-seat a connector or reflow a solder joint on an open enclosure than after everything is screwed shut. Compile the firmware from the firmware/ folder using STM32CubeIDE, or use a pre-compiled binary from the project releases, and flash via DFU or ST-Link while the enclosure is still accessible.

You Did It!

Congratulations — you have built a fully functional, custom DIY Sound Voltex controller from scratch. From raw filament and a blank PCB to a working HID device, every part of this build was made with your own hands. Plug it in, load up your favourite SDVX client, and enjoy the satisfying click of real Cherry MX switches and the smooth spin of proper rotary encoders. You are awesome!

Build docs developers (and LLMs) love