Skip to the content
PCBKitNew board
2 layers58.5 × 52 mmHexaGenMini v1, the printed circuit board in 3D

HexaGenMini v1

hTuneSys/hexaGenMini5

Open-source USB MIDI-controlled signal generator built with Rust (Embassy) on RP2040 + AD985x DDS for education, labs, and music synthesis.

Size
58.5 × 52 mm
Copper layers
2
Thickness
1.6 mm
Parts
72
Nets
78
Pads
267
Tracks, vias
384, 137
Pours
46
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
11 Sep 2025
Updated
18 May 2026

Overview

HexaGenMini v1 is an open-source printed circuit board by hTuneSys, from the hTuneSys/hexaGenMini repository on GitHub, published under the MIT licence. It is a 2-layer board of 58.5 × 52 mm with 72 parts on 78 nets, routed with 384 tracks and 137 vias.

It is built around the RP2040, W25Q128JVSIQ and AD9850BRS, with the AMS1117-3.3, TPD2EUSB30DRT and WS2812B among its other parts. Its parts include 33 capacitors, 17 resistors, 5 ICs, 4 connectors and 3 inductors. It belongs with the audio and music boards and the RP2040 boards of this library.

Main components

6

README

README.md

🎛️ hexaGenMini

GitHub License: MIT Rust Embassy

hexaGenMini is a compact, USB-powered signal generator designed for music synthesis and electronic experimentation. Built on the Raspberry Pi Pico (RP2040), it features Direct Digital Synthesis (DDS) for precise frequency generation, RGB status indication, and USB MIDI control via AT commands.

Developed by hexaTune LLC and the hexaTeam, led by Husamettin ARABACI.

✨ Features

  • Precise Frequency Generation: AD985x DDS chip supporting frequencies up to 125MHz
  • USB MIDI Control: Send AT commands via MIDI SysEx for remote control
  • RGB Status LED: Visual feedback for device state and DDS availability
  • Firmware Updates: Built-in BOOTSEL mode for easy firmware flashing
  • Cross-Platform: Works with any USB MIDI-compatible host
  • Mobile App: Control via dedicated iOS/Android app (hexaGenApp)
  • Open Source: Fully open hardware and software under MIT license

📱 Mobile App

Control your hexaGenMini wirelessly with our companion mobile app:

  • iOS & Android Support
  • Real-time Frequency Control
  • Preset Management
  • Visual Waveform Display

Get it on Google Play Download on the App Store

Source Code: hTuneSys/hexaGenApp

🚀 Quick Start

  1. Connect your hexaGenMini via USB
  2. Flash Firmware:
    bash
    cd firmware
    cargo run
  3. Send AT Commands via MIDI SysEx:
    text
    AT+FREQ=1#1000000#1000  # Set 1MHz for 1 second
    AT+SETRGB=2#255#0#128   # Set LED to purple

📦 Installation

Prerequisites

  • Rust (1.86.0+): Install rustup
  • picotool: For flashing RP2040
  • Node.js & pnpm: For development tools
  • KiCad (optional): For hardware modifications
  • FreeCAD (optional): For enclosure modifications

Setup

bash
# Clone repository
git clone https://github.com/hTuneSys/hexaGenMini.git
cd hexaGenMini

# Install development dependencies
pnpm install
pnpm prepare  # Setup husky pre-commit hooks

# Install Rust targets
rustup target add thumbv6m-none-eabi

Flashing Firmware

bash
cd firmware
cargo run

Put your device in BOOTSEL mode (hold BOOTSEL while plugging in) when prompted.

🎯 Usage

AT Command Protocol

hexaGenMini uses AT commands sent via MIDI SysEx messages:

Supported Commands
  • AT+VERSION? - Get firmware version
  • AT+SETRGB=<ID>#<R>#<G>#<B> - Set RGB LED color
  • AT+FREQ=<ID>#<FREQ>#<TIME_MS> - Generate frequency with dwell time
  • AT+RESET=<ID> - System reset
  • AT+FWUPDATE=<ID> - Enter firmware update mode
Example Usage
bash
# Query version
AT+VERSION?

# Set frequency to 440Hz for 5 seconds
AT+FREQ=1#440#5000

# Set LED to red
AT+SETRGB=2#255#0#0

Hardware Connections

  • USB: Power and MIDI communication
  • SMA Output: DDS signal output
  • RGB LED: Status indication
  • BOOTSEL: Firmware update mode

🏗️ Architecture

The firmware is built with Rust and Embassy, running concurrent async tasks:

  • USB Task: MIDI communication handling
  • AT Dispatcher: Command parsing and routing
  • DDS Task: Frequency generation control
  • RGB Task: LED management
  • Main Loop: Status monitoring

For detailed architecture information, see docs/ARCHITECTURE.md.

📁 Project Structure

text
hexaGenMini/
├── firmware/          # Rust firmware (Embassy framework)
├── hardware/          # KiCad PCB designs
├── mechanic/          # FreeCAD enclosure designs
├── docs/             # Documentation
├── .github/          # CI/CD workflows
└── README.md

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch from develop
  3. Make your changes
  4. Submit a pull request
  5. Follow conventional commit format

Areas for Contribution

  • Firmware enhancements
  • Hardware improvements
  • Documentation
  • Mobile app features
  • Testing and CI/CD

📄 Documentation

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

📞 Contact

🙏 Acknowledgments

Built with ❤️ by the hexaTeam at hexaTune LLC.

Special thanks to the Rust embedded community and Embassy framework developers.


hexaGenMini - Precision meets portability in signal generation.

Parts

72
QtyValueFootprintReferences
11100nFCapacitor_SMD:C_0402_1005MetricC2, C3, C9, C10, C11, C12, C13, C14, C15, C16, C17
50.1uFCapacitor_SMD:C_0402_1005MetricC20, C21, C22, C23, C24
4MountingHoleMountingHole:MountingHole_2.5mmH1, H2, H3, H4
310kResistor_SMD:R_0603_1608MetricR4, R8, R11
31kResistor_SMD:R_0603_1608MetricR5, R9, R10
31uFCapacitor_SMD:C_0603_1608MetricC7, C8, C18
322pFCapacitor_SMD:C_0402_1005MetricC26, C28, C29
2100Resistor_SMD:R_0603_1608MetricR13, R15
210uFCapacitor_SMD:C_0805_2012MetricC1, C4
2200Resistor_SMD:R_0603_1608MetricR16, R17
227Resistor_SMD:R_0603_1608MetricR6, R7
227pCapacitor_SMD:C_0402_1005MetricC5, C6
2390nHInductor_SMD:L_0603_1608MetricL2, L3
2470pFCapacitor_SMD:C_0402_1005MetricC19, C33
25.1kResistor_SMD:R_0603_1608MetricR1, R2
2Conn_CoaxialConnector_Coaxial:SMA_Samtec_SMA-J-P-H-ST-EM1_EdgeMountJ1, J2
2SW_PushButton_Switch_SMD:SW_SPST_B3U-1000PSW1, SW2
110uF TantalumCapacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-AC25
112MHz 18pFCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
11pFCapacitor_SMD:C_0402_1005MetricC30
13.9kResistor_SMD:R_0603_1608MetricR12
1330Resistor_SMD:R_0603_1608MetricR19
133pFCapacitor_SMD:C_0402_1005MetricC27
14.7pFCapacitor_SMD:C_0402_1005MetricC32
1470nHInductor_SMD:L_0603_1608MetricL1
15.6kResistor_SMD:R_0603_1608MetricR3
15.6pFCapacitor_SMD:C_0402_1005MetricC31
1AD9850Package_SO:SSOP-28_5.3x10.2mm_P0.65mmU3
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U1
1Conn_01x03_PinPCB_Library:PinHeader_1x03_P2.54mm_VerticalJ3
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU2
1SMF5V0ADiode_SMD:D_SMFD1
1TPD2EUSB30Package_TO_SOT_SMD:Texas_DRT-3U4
1USB_C_Receptacle_USB2.0_16PPCB_Library:USB_C_Receptacle_HRO_TYPE-C-31-M-12J4
1W25Q128JVSPackage_SO:SOIC-8_5.3x5.3mm_P1.27mmU5
1WS2812BLED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mmD2
1XO53Oscillator:Oscillator_SMD_EuroQuartz_XO53-4Pin_5.0x3.2mmY2

Questions

How big is the HexaGenMini v1 PCB?

It measures 58.5 × 52 mm and has 2 copper layers, 1.6 mm thick.

What parts does the HexaGenMini v1 use?

72 parts, built around the RP2040, W25Q128JVSIQ, AD9850BRS and AMS1117-3.3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the HexaGenMini v1 KiCad files?

From the hTuneSys/hexaGenMini repository on GitHub, at the commit this page was made from: the board is hardware/hexaGenMini-v1/hexaGenMini-v1.kicad_pcb and its schematic hardware/hexaGenMini-v1/CONNECTOR.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the HexaGenMini v1 design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers73 × 30 mmBadge, the printed circuit board in 3D

    Badge

    MrMoDDoM/MuHack-Badge

    Official repository for MuHack Badge

    135 parts8AGPL-3.0
  • 2 layers99.1 × 99 mmXDuinoRail Debug, the printed circuit board in 3D

    XDuinoRail Debug

    chatelao/xDuinoRail-Decoder

    The friendly decoder development plattform for model railroad tinkers.

    170 partsAGPL-3.0
  • 4 layers91 × 91 mmKeymodule revides, the printed circuit board in 3D

    Keymodule revides

    Mosselman/PixelPanel

    Keymodule & pcb design

    123 partsMIT
  • 2 layers362 × 114.3 mmRivasmario 96% Hotswap Rp2040, the printed circuit board in 3D

    Rivasmario 96% Hotswap Rp2040

    RivasMario/SKYWAY-96

    Mechanical Keyboard PCB and Plate powered by QMK for a 96% board

    299 parts
  • 4 layers70 × 68 mmSssata fluxpad Fluxpad, the printed circuit board in 3D

    Sssata fluxpad Fluxpad

    punkfab/pcb-corpus

    235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

    78 parts1
  • 4 layers90 × 100 mmPump board, the printed circuit board in 3D

    Pump board

    TrendBit/SMBR-hardware

    Design file for SMBR hardware modules in KiCAD.

    204 partsGPL-3.0
  • 4 layers83.8 × 47 mmRadio, the printed circuit board in 3D

    Radio

    snorklerjoe/aprs-weather-station

    An APRS weather station with a transmitter designed from scratch

    188 parts1
  • 2 layersTrx8020, the printed circuit board in 3D

    Trx8020

    pablo53/trx8020

    Transceiver 80m 20m

    99 parts