

The module takes digital audio from the Hackxpansion controller, converts it to an analog signal, amplifies it, and drives a speaker ## Images ## Schematic ## Overview
- Size
- 32 × 25.5 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 18
- Nets
- 37
- Pads
- 87
- Tracks, vias
- 229, 21
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 7 Sep 2026
- Updated
- 11 Oct 2026
Overview
Speaker is an open-source printed circuit board by arghya-v, from the arghya-v/hackxpansion-speaker repository on GitHub. It is a 2-layer board of 32 × 25.5 mm with 18 parts on 37 nets, routed with 229 tracks and 21 vias.
It is built around the PAM8302AASCR and CMS-15113-078S. Its parts include 6 capacitors, 4 resistors, 2 ICs, 2 switches and 1 connector. It belongs with the audio and music boards of this library.
Main components
2README
README.mdhackxpansion Speaker Module
Crates: pkg:cargo/hackxpansion_speaker@0.1.0
A speaker module for hackxpansion that allows sound to be emitted from the device
The module takes digital audio from the Hackxpansion controller, converts it to an analog signal, amplifies it, and drives a speaker
Images

Schematic

Overview
The Speaker Module provides the HackXpansion system with a dedicated audio output.
Hackxpansion Controller
│
│
┌─────────┴─────────┐
│ Digital Audio │
│ │
└─────────┬─────────┘
│
▼
┌───────────────────┐
│ TLV320DAC3100 │
│ Audio DAC │
└─────────┬─────────┘
│
│ Analog Audio
▼
┌───────────────────┐
│ PAM8320 │
│ Class-D Amplifier│
└─────────┬─────────┘
│
▼
┌─────────┐
│ Speaker │
└─────────┘The controller sends digital audio to the module over I²S. The TLV320DAC3100 converts the digital signal into analog audio, which is then amplified by the PAM8320 before being sent to the speaker.
Features
- 48 kHz, 16-bit audio
- Two user-input buttons
Hardware
The TLV320DAC3100 converts the incoming digital I²S stream into an analog audio signal.
It is configured for:
Sample Rate: 48 kHz
Bit Depth: 16-bit
Interface: I²S
MCLK: 12.288 MHzThe DAC is controlled over I²C and has a dedicated hardware reset line.
The analog output from the DAC is passed to a PAM8320 Class-D amplifier.
Module Interface
The module uses the HackXpansion GPIO bank for both audio and user input.
| GPIO | Function |
|---|---|
| GPIO0 | I²C SCL |
| GPIO1 | I²C SDA |
| GPIO2 | I²S BCLK |
| GPIO3 | I²S DIN |
| GPIO4 | I²S LRCLK |
| GPIO5 | MCLK |
| GPIO6 | DAC RESET |
| GPIO7 | Button 1 |
| GPIO8 | Button 2 |
| GPIO9 | Unused |
See the Xpanse API docs
This allows the main HackXpansion firmware to assign functionality to the buttons without the speaker module needing to know what those actions are.
The driver is responsible for:
- Resetting the audio DAC
- Configuring the DAC over I²C
- Starting the master clock
- Starting the I²S output
- Registering the audio interface with HackXpansion
- Registering the module buttons
lib.rs contains the HackXpansion-specific module driver, while dac.rs contains the reusable TLV320DAC3100 driver.
This was all possible thanks to Hackspansion: A hackclub YSWS
Parts
18| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 10 µF | lcsc_footprints:C15850_C0805 | C2, C3, C4, C5, C7 |
| 2 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R3, R4 |
| 2 | SW_Push | Button_Switch_THT:SW_PUSH_6mm | SW1, SW2 |
| 1 | 100nF | lcsc_footprints:C155422_C0402 | C1 |
| 1 | 1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1 |
| 1 | 68k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R2 |
| 1 | CMS-15113-078S | CMS-15113-078S:SPKR_CMS-15113-078S | LS1 |
| 1 | PAM8302AASCR | lcsc_footprints:C113367_MSOP-8_L3_0-W3_0-P0_65-LS5_0-BL | U2 |
| 1 | TLV320DAC3100IRHBR | lcsc_footprints:C179677_LFCSP-32_L5_0-W5_0-P0_50-BL-EP | U1 |
| 1 | ~ | Hackxpansion:Male_Module | J1 |
The 16 most common of 18 parts.
Similar boards
- 4 layers121.9 × 44.4 mm

- 4 layers25.3 × 35.1 mm

Agb hifi audio pcb
cajunpanda/gameboy-hifi-audio
A HiFi audio mod for various Game Boy models
66 parts25MIT - 2 layers81 × 55 mm

- 4 layers54.7 × 78.5 mm

DisplayModule PONSv71
MasaoC/GPS-TFT-Map_PONS
鳥人間コンテストに特化したGNSS誘導システム。人力飛行機のパイロットが使いやすいことを目標にした航法装置です。ハードとソフトをオープンソースで開発しています。
151 parts14MIT - 2 layers82.5 × 136.7 mm

Gameboy dmg
alxhoff/gameboy-dmg-pcb
PCB for Gameboy DMG with audio and GPIO expander to provide I2C interface to push buttons
95 parts4GPL-3.0 - 4 layers182 × 150 mm

- 2 layers58 × 44 mm

Button
birkenfeld/stm_button_rust
Using nightly Rust and cargo, just do a cargo build --release.
40 parts3 - 4 layers70 × 90 mm

Questions
How big is the Speaker PCB?
It measures 32 × 25.5 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Speaker use?
18 parts, built around the PAM8302AASCR and CMS-15113-078S. 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 Speaker KiCad files?
From the arghya-v/hackxpansion-speaker repository on GitHub, at the commit this page was made from: the board is kicad/speaker.kicad_pcb and its schematic kicad/speaker.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Speaker design in my own project?
Its repository states no licence, so its author keeps all rights: ask arghya-v before reusing the design.