

HexaGenMini v1
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
6RP2040
LQFN-56(7x7)12bit 133MHz 30 LQFN-56(7x7) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)W25Q128JVSIQ
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 120ms@(32KB) 128Mbit 133MHz 1uA 2.7V~3.6V 20 Years 3ms Power-on reset、Hardware write protection、Software write protection、Write enable latch、Absolute write protection SPI SOIC-8-208mil NOR FLASH ROHSWinbondNOR FLASHAD9850BRS
SSOP-28-40℃~+85℃ 0.5LSB 10 155mW 3.3V、5V 32 62.5MHz 84dB Current Integrated modulator、Phase continuous switching、Low-power mode、Enable/shutdown function、ESD Protection Parallel Port SSOP-28 Direct Digital Synthesis (DDS) ROHSAnalog DevicesDirect Digital Synthesis (DDS)AMS1117-3.3
SOT-223-40℃~+125℃ 0.003%Vout 1 1.1V@(800mA) 15V 1A 3.3V 5mA 72dB@(120Hz) Fixed Over Current Protection、Short Circuit Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSAdvanced Monolithic SystemsVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsTPD2EUSB30DRT
SOT(9x3)-40℃~+85℃ 0.7pF 2 45W 5.5V 5A@8/20us 7V 8V ESD IEC 61000-4-2、IEC 61000-4-5 Unidirectional SOT(9x3) ESD and Surge Protection (TVS/ESD) ROHSTexas InstrumentsESD And Surge Protection (TVS/ESD)WS2812B
5mm X 5mm Surface Mount RGB LED with Intelligent ControlWorldsemiUncategorised
README
README.md🎛️ hexaGenMini
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
Source Code: hTuneSys/hexaGenApp
🚀 Quick Start
- Connect your hexaGenMini via USB
- Flash Firmware:
bash cd firmware cargo run - 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
# 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-eabiFlashing Firmware
cd firmware
cargo runPut 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 versionAT+SETRGB=<ID>#<R>#<G>#<B>- Set RGB LED colorAT+FREQ=<ID>#<FREQ>#<TIME_MS>- Generate frequency with dwell timeAT+RESET=<ID>- System resetAT+FWUPDATE=<ID>- Enter firmware update mode
Example Usage
# 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#0Hardware 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
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
- Fork the repository
- Create a feature branch from
develop - Make your changes
- Submit a pull request
- Follow conventional commit format
Areas for Contribution
- Firmware enhancements
- Hardware improvements
- Documentation
- Mobile app features
- Testing and CI/CD
📄 Documentation
- Getting Started - Setup guide
- Architecture - System design
- Project Structure - Repository overview
- Contributing - How to contribute
- FAQ - Common questions
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.
📞 Contact
- Website: hexatune.com
- Email: info@hexatune.com
- GitHub: hTuneSys
- Issues: GitHub Issues
🙏 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| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | 100nF | Capacitor_SMD:C_0402_1005Metric | C2, C3, C9, C10, C11, C12, C13, C14, C15, C16, C17 |
| 5 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C20, C21, C22, C23, C24 |
| 4 | MountingHole | MountingHole:MountingHole_2.5mm | H1, H2, H3, H4 |
| 3 | 10k | Resistor_SMD:R_0603_1608Metric | R4, R8, R11 |
| 3 | 1k | Resistor_SMD:R_0603_1608Metric | R5, R9, R10 |
| 3 | 1uF | Capacitor_SMD:C_0603_1608Metric | C7, C8, C18 |
| 3 | 22pF | Capacitor_SMD:C_0402_1005Metric | C26, C28, C29 |
| 2 | 100 | Resistor_SMD:R_0603_1608Metric | R13, R15 |
| 2 | 10uF | Capacitor_SMD:C_0805_2012Metric | C1, C4 |
| 2 | 200 | Resistor_SMD:R_0603_1608Metric | R16, R17 |
| 2 | 27 | Resistor_SMD:R_0603_1608Metric | R6, R7 |
| 2 | 27p | Capacitor_SMD:C_0402_1005Metric | C5, C6 |
| 2 | 390nH | Inductor_SMD:L_0603_1608Metric | L2, L3 |
| 2 | 470pF | Capacitor_SMD:C_0402_1005Metric | C19, C33 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | Conn_Coaxial | Connector_Coaxial:SMA_Samtec_SMA-J-P-H-ST-EM1_EdgeMount | J1, J2 |
| 2 | SW_Push | Button_Switch_SMD:SW_SPST_B3U-1000P | SW1, SW2 |
| 1 | 10uF Tantalum | Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A | C25 |
| 1 | 12MHz 18pF | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 1pF | Capacitor_SMD:C_0402_1005Metric | C30 |
| 1 | 3.9k | Resistor_SMD:R_0603_1608Metric | R12 |
| 1 | 330 | Resistor_SMD:R_0603_1608Metric | R19 |
| 1 | 33pF | Capacitor_SMD:C_0402_1005Metric | C27 |
| 1 | 4.7pF | Capacitor_SMD:C_0402_1005Metric | C32 |
| 1 | 470nH | Inductor_SMD:L_0603_1608Metric | L1 |
| 1 | 5.6k | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 5.6pF | Capacitor_SMD:C_0402_1005Metric | C31 |
| 1 | AD9850 | Package_SO:SSOP-28_5.3x10.2mm_P0.65mm | U3 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | Conn_01x03_Pin | PCB_Library:PinHeader_1x03_P2.54mm_Vertical | J3 |
| 1 | RP2040 | Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm | U2 |
| 1 | SMF5V0A | Diode_SMD:D_SMF | D1 |
| 1 | TPD2EUSB30 | Package_TO_SOT_SMD:Texas_DRT-3 | U4 |
| 1 | USB_C_Receptacle_USB2.0_16P | PCB_Library:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J4 |
| 1 | W25Q128JVS | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U5 |
| 1 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D2 |
| 1 | XO53 | Oscillator:Oscillator_SMD_EuroQuartz_XO53-4Pin_5.0x3.2mm | Y2 |
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 mm

- 2 layers99.1 × 99 mm

XDuinoRail Debug
chatelao/xDuinoRail-Decoder
The friendly decoder development plattform for model railroad tinkers.
170 partsAGPL-3.0 - 4 layers91 × 91 mm

- 2 layers362 × 114.3 mm

Rivasmario 96% Hotswap Rp2040
RivasMario/SKYWAY-96
Mechanical Keyboard PCB and Plate powered by QMK for a 96% board
299 parts - 4 layers70 × 68 mm

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 mm

- 4 layers83.8 × 47 mm

Radio
snorklerjoe/aprs-weather-station
An APRS weather station with a transmitter designed from scratch
188 parts1 - 2 layers
