

Projekt 1
Lol im just bored and building a selfmade Mp3 player
- Size
- 46.2 × 89 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 67
- Nets
- 250
- Pads
- 475
- Tracks, vias
- 748, 148
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 18 Aug 2026
- Updated
- 7 Nov 2026
Overview
Projekt 1 is an open-source printed circuit board by Pertifiatus, from the Pertifiatus/MP3-Player repository on GitHub. It is a 4-layer board of 46.2 × 89 mm with 67 parts on 250 nets, routed with 748 tracks and 148 vias.
Its parts include 25 capacitors, 16 resistors, 7 diodes, 6 ICs and 2 connectors. It belongs with the Raspberry Pi (Linux) boards of this library.
README
README.mdMP3-Player
A compact DIY music player, smaller than an iPod Touch, built around a Raspberry Pi Compute Module 4 on a custom PCB. It syncs your YouTube Music library straight to the device, no home server needed.
Concept
- Front: round GC9A01 display for menus and navigation
- Back: monochrome SSD1306 OLED for music visualizations
- Audio: mainly Bluetooth A2DP, plus a 3.5 mm headphone jack (ES8388 codec)
- Controls: button box (SX1509 GPIO expander) + IMU (QMI8658A) for orientation and shake gestures
- Power: Li-ion battery, USB-C charging (RT9466) with an 80% charge limit, fuel gauge (MAX17048), soft power button
- Lighting: SK6812 status ring
Hardware
| Part | Details |
|---|---|
| Compute | Raspberry Pi CM4 Lite Wireless (boots from microSD), on 2× Hirose mezzanine connectors |
| Power | TPS63020 buck-boost, RT9466 charger, MAX17048 fuel gauge |
| Audio | ES8388 codec over I2S |
| Displays | GC9A01 (SPI0), SSD1306 (SPI4) |
| PCBs | Main board + ButtonBox, designed in KiCad (KiCad/Projekt 1) |
| Case | Fusion 360 (CAD/Player.f3z) |
Software (Software/)
Python on Raspberry Pi OS, running as systemd services:
| File | Purpose |
|---|---|
main.py | Main UI loop (front display, buttons, IMU) |
player.py | Playback |
sync_youtube.py | YouTube Music library sync |
connectivity.py | WiFi / Bluetooth connections |
ui_state.py, ui_render.py | UI state machine and rendering |
ui_views.py, ui_common.py | Screen content as plain data, shared drawing helpers |
themes/ | 8 switchable designs (Einstellungen → Anzeige → Design): Klassik, Cybercore, Y2K, Glas, Neumorph, Bento, Pixelhaus, Cyberpunk |
preview_themes.py | Preview sheet per design (previews/), --bench render timings |
fonts/, assets/ | Bundled OFL fonts, Pixelhaus house image |
buttonbox.py, qmi8658.py, es8388.py, max17048.py, rt9466.py | Hardware drivers |
charge_control.py, power_button.py | Charging logic and soft shutdown |
led_control.py, led_service.py | Status ring LEDs |
setup_pi.sh, *.service, sdcard-boot-* | Pi setup and boot configuration |
test_*.py | Tests |
Status
Work in progress. Board 2 boots reliably; the software bring-up and debugging of battery operation are ongoing. Detailed notes on hardware, pinout, config.txt and lessons learned are in CLAUDE.md and Software/NOTES_FOR_PER.md.
Repository structure
CAD/ Fusion 360 case
KiCad/ Main board + ButtonBox (schematics, PCB, 3D models)
Software/ Python application, drivers, services, tests
docs/ Design specs and plans (status ring, quick connect, design themes)Parts
67| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 100nF | EasyEDA_Lib:C0402 | C2, C3, C7, C9, C11, C14, C16, C19, C23 |
| 6 | ~ | EasyEDA_Lib:LED-SMD_4P-L3.2-W2.8-LS5.9_SK6812MINI-E | LED1, LED2, LED3, LED4, LED5, LED6 |
| 3 | 10uF | EasyEDA_Lib:C0402 | C13, C17, C25 |
| 3 | 2.2uF | EasyEDA_Lib:C0402 | C1, C18, C20 |
| 3 | 22uF | EasyEDA_Lib:C0402 | C4, C5, C6 |
| 3 | 4.7uF | EasyEDA_Lib:C0402 | C21, C24, C26 |
| 3 | 5.1kΩ | EasyEDA_Lib:R0603 | R1, R10, R11 |
| 3 | ~ | EasyEDA_Lib:CONN-TH_B8B-PH-K-S-LF-SN | 4PinfuerBoard1, RundesDisplay1, Visualizer1 |
| 2 | 0Ω | EasyEDA_Lib:R0603 | R6, R7 |
| 2 | 100kΩ | EasyEDA_Lib:R0603 | R13, R14 |
| 2 | 100uF | EasyEDA_Lib:C0805 | C8, C10 |
| 2 | 33Ω | EasyEDA_Lib:R0603 | R2, R5 |
| 2 | 50kΩ | EasyEDA_Lib:R0603 | R15, R16 |
| 1 | 1.5uH | EasyEDA_Lib:IND-SMD_L4.0-W4.0-A | L1 |
| 1 | 1.6MΩ | EasyEDA_Lib:R0603 | R4 |
| 1 | 10Ω | EasyEDA_Lib:R0603 | R8 |
| 1 | 178Ω | EasyEDA_Lib:R0603 | R9 |
| 1 | 180kΩ | EasyEDA_Lib:R0603 | R3 |
| 1 | 1uF | EasyEDA_Lib:C0603 | C12 |
| 1 | 1uH | EasyEDA_Lib:L2520 | L2 |
| 1 | 220Ω | EasyEDA_Lib:R0603 | R12 |
| 1 | 47nF | EasyEDA_Lib:C0402 | C15 |
| 1 | Boot Button | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J1 |
| 1 | ComputeModule4-CM4 | Pertificatus:CONN-SMD_DF40HC-3.0-100DS-0.4V-51 | Module1 |
| 1 | Switch | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J2 |
| 1 | ~ | EasyEDA_Lib:LGA-14_L3.0-W2.5-P0.50-TL | U5 |
| 1 | ~ | EasyEDA_Lib:AUDIO-SMD_PJ-327C-4A | AUDIO1 |
| 1 | ~ | EasyEDA_Lib:QFN-28_L4.0-W4.0-P0.45-BL-EP | U2 |
| 1 | ~ | EasyEDA_Lib:TF-SMD_TF-PUSH | CARD1 |
| 1 | ~ | EasyEDA_Lib:SOT-23_L2.9-W1.3-P1.90-LS2.4-BR | Q1 |
| 1 | ~ | EasyEDA_Lib:WQFN-24_L4.0-W4.0-P0.50-TL-EP2.5 | U4 |
| 1 | ~ | EasyEDA_Lib:SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BR | U6 |
| 1 | ~ | EasyEDA_Lib:VSON-14_L4.0-W3.0-P0.50-BL-EP_TI_DSJ | U3 |
| 1 | ~ | EasyEDA_Lib:TDFN-8_L2.0-W2.0-P0.50-BL-EP1.2 | U1 |
| 1 | ~ | EasyEDA_Lib:USB-C_SMD-TYPE-C-31-M-12_1 | USBC1 |
| 1 | ~ | EasyEDA_Lib:SOD-123F_L2.7-W1.6-LS3.8-RD | D1 |
| 1 | ~ | EasyEDA_Lib:CONN-TH_B2B-PH-K-S | Battery1 |
More from Pertifiatus/MP3-Player
1- 2 layers42.3 × 13.8 mm

Similar boards
- 4 layers22 × 15 mm

Amp cpw hmc311
loxodes/vna
Under development open hardware microwave vector network analyzer
67 parts205 - 4 layers51.4 × 60.6 mm

Gb rp2040 cart
deltabeard/DBGC
A Game Boy cartridge using the Raspberry Pi RP2040 with RTC and MBC support.
67 parts57 - 4 layers100 × 40 mm

- 4 layers49 × 43 mm

Sk005-monitor resyncer
mirdej/synkie
The Synkie is a modular open source analog video processor, developed by Michael Egger, Max Egger and Flo Kaufmann
67 parts47 - 4 layers30 × 26.5 mm

Driver tmc2208
calithameridi/corevus
High-flexibility, low-cost mechatronics controller for 3D printers
67 parts25 - 4 layers50.3 × 33 mm

- 4 layers82.3 × 37.2 mm

RIDE
LIV2/RIDE
To add the A0 Bonus RAM to the system you will need to use the addram command included in the RIDE-Software adf/lha found under Releases.
67 parts17 - 4 layers76 × 76.5 mm

Questions
How big is the Projekt 1 PCB?
It measures 46.2 × 89 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Projekt 1 use?
67 parts. 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 Projekt 1 KiCad files?
From the Pertifiatus/MP3-Player repository on GitHub, at the commit this page was made from: the board is KiCad/Projekt 1/Projekt 1.kicad_pcb and its schematic KiCad/Projekt 1/ButtonBox/ButtonBox.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Projekt 1 design in my own project?
Its repository states no licence, so its author keeps all rights: ask Pertifiatus before reusing the design.