The Cardputer ADV has a speaker that sounds better than you would expect, and a physical keyboard. My firmware, KeySpeaker, turns it into a pocket USB speaker and keyboard for a computer, a phone or a console.
This project adds one more input: a line-in. A small unit made of a Raspberry Pi Pico 2 H and a PCM1808 ADC board listens to the 3.5 mm jack of a computer (or any other player) and sends the sound to the Cardputer over its Grove port. One cable carries both power and sound. Pressing Fn+I on the Cardputer moves between USB, microphone and AUX.
The whole unit fits in a 3D-printed box. The Cardputer sits on the lid, on two pegs that fit the holes in its back.
How it works- The PCM1808 turns the line-in into I²S. The Pico reads 24-bit samples at 96 kHz.
- The Pico mixes left and right into one channel, lowers the rate to 48 kHz with a half-band FIR filter, and makes 16-bit samples.
- It sends 240 samples (480 bytes) every 5 ms, as a 492-byte frame, 200 frames a second.
- The link is a UART, 8N1, 2, 000, 000 bps, on the two signal lines of the Grove port. That is about 49% of the capacity of the link.
- The Cardputer receives the frames and KeySpeaker plays them. When a source is missing, the screen says NO AUX instead of staying silent.
The unit runs on the Cardputer's power alone: the Grove port gives 5 V, and I measured 5.09 V at the unit while it played. The Cardputer's data screen shows "AUX IN bad 0 lost 0" while it plays (bad = damaged frames, lost = missing frames).
Wiring- Cardputer G1 (RX) ← Pico TX (GP0), through a 330 Ω resistor.
- Cardputer G2 (TX) → Pico RX (GP1), through a 330 Ω resistor.
- Grove 5 V → the Pico's VSYS and the PCM1808's VDD (the red Grove wire is split in two).
- Grove GND → the Pico's GND and the PCM1808's GND (the black wire is split in two).
- I²S: GP2 → DATA, GP3 → BCLK, GP4 → LRCK. MCLK is not connected.
The two 330 Ω resistors protect the parts if the signal lines are ever wired wrong. Grove cables differ in wire colour, so go by the marks printed on the Cardputer's port (G, 5V, G2, G1), not by colour. The build guide in the repository has figures for a breadboard version and for the box version.
The box
- 57 × 86 × 42 mm, wall 2 mm, printed on a Bambu Lab A1 mini with a 0.4 mm nozzle.
- Both boards sit on four small bosses, and a short pin on each boss goes through the board's mounting hole, so they do not fall off.
- The Cardputer fits the two lid pegs so firmly that lifting the Cardputer lifts the box.
- Text and pictures are engraved 0.5 mm deep: the name, the labels (TO CARDPUTER, PICO 2 USB SETUP ONLY, UNPLUG GROVE FIRST, AUX IN), and the image character of Kariagepompadour on the lid and on the two short sides. The picture on the lid is hidden when the Cardputer sits on top.
- The breadboard version needs no soldering. The box version splits the Grove red and black wires, which takes a little soldering and heat-shrink tubing.
Tested:
- Sound through the Cardputer's speaker from a computer's earphone jack, on the breadboard and in the box.
- About three hours of continuous play in the box (2026-11-10), with no problems.
- The box: both boards, the mini breadboard and the Cardputer fit.
Not tested:
- Runs longer than about three hours.
- Sound quality: I have not measured noise or distortion.
- The Pico's own USB cable plugged in together with the Grove cable. The guide says to unplug Grove first.
- A jog dial on the Pico (the guide has the steps, but I have not tried them).
Everything is in the repository, under the MIT license: the firmware for both sides, the build guide (English first, Japanese beside it), the design notes, and the STL files of the box and lid.
https://github.com/kariagepompadour/Cardputer-ADV-KeySpeaker
The wiring comes from my other project, KariPom Ear: https://github.com/kariagepompadour/KariPom












Comments