LCD + button hardware interface
Project description
SquishBox
The SquishBox is a compact add-on board and enclosure for Raspberry Pi (primarily Pi 3B+ and Pi 4) that combines:
- high-quality stereo DAC with 1/4" outputs
- MIDI in/out via TRS minijacks
- 16x2 character LCD
- pushbutton rotary encoder
- breakout GPIO for extra controls, LEDs, and peripherals
This creates a portable embedded platform for audio projects such as synths, sound modules, pedalboard utilities, sequencers, and music players.
The software package includes ready-to-run applications plus a simple Python API for building your own.
Building/Obtaining
This repository includes schematics, PCB fabrication files, BOMs, and enclosure models for users who want to build their own hardware.
Kits and pre-built units are also available from the Geek Funk Labs store.
Installing
The SquishBox software is targeted for a Pi 3B+/4 running Raspberry Pi OS (64-bit, based on Debian 13 "Trixie") or newer. Other platforms may work but are not officially tested.
To install on a fresh or existing system, log in as a regular user and run:
curl -sL geekfunklabs.com/squishbox | bash
Answer the prompts, wait for install to complete, and reboot the Pi to activate the LCD/button interface.
Using the SquishBox
On first boot, the SquishBox starts a launcher that lets the user choose an app to run or modify system settings. Selections can be made by turning the rotary encoder. Tapping the rotary encoder confirms a choice. Pressing and holding the encoder will cancel or return to the previous screen in most situations. To safely shut down the SquishBox before disconnecting power, use the "Shutdown" option in the "Exit" menu.
Writing SquishBox Apps
The squishbox python package provides access to the LCD, controls (buttons/encoders), outputs, and a set of menu-driven interaction helpers. Here is a simple example app:
import squishbox
sb = squishbox.SquishBox()
sb.lcd.clear()
sb.lcd.write("Audio Test", row=0)
while True:
i, option = sb.menu_choose(["Noise", "Sine", "Exit"], row=1)
if option == "Noise":
sb.shell_cmd("speaker-test -l2 -c2")
elif option == "Sine":
sb.shell_cmd("speaker-test -l2 -c2 -tsine")
elif option == "Exit":
break
Support and Feature Requests
The SquishBox is under active development, and feature requests are welcome.
Please post requests/questions to Discussions on GitHub, and open issues or pull requests for bugs.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file squishbox-1.0.2.tar.gz.
File metadata
- Download URL: squishbox-1.0.2.tar.gz
- Upload date:
- Size: 34.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d90108b4e62ac54b98e04f4689de1e815b805eaefec707776f82e8ebd32c880b
|
|
| MD5 |
7f596e69bd88f5ba97d6bf91fe7eb310
|
|
| BLAKE2b-256 |
2315d836eb0268939e8a58818991cad3245e591a432ecd1c9087acd03c14ec47
|
Provenance
The following attestation bundles were made for squishbox-1.0.2.tar.gz:
Publisher:
python-publish.yml on GeekFunkLabs/squishbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
squishbox-1.0.2.tar.gz -
Subject digest:
d90108b4e62ac54b98e04f4689de1e815b805eaefec707776f82e8ebd32c880b - Sigstore transparency entry: 1436130142
- Sigstore integration time:
-
Permalink:
GeekFunkLabs/squishbox@5fca8ac9b4fe33fd4a36d3ab53950cd2995104b3 -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/GeekFunkLabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5fca8ac9b4fe33fd4a36d3ab53950cd2995104b3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file squishbox-1.0.2-py3-none-any.whl.
File metadata
- Download URL: squishbox-1.0.2-py3-none-any.whl
- Upload date:
- Size: 41.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85483c79e232ad3e26367b66b2e0d3a8deeca165f5d2fa599374cc2728a6833d
|
|
| MD5 |
a53f96f10ead4c104c65b2714a6ff998
|
|
| BLAKE2b-256 |
9b34448add7480340eccd4bd1859ff7a70ccbe8d9b9ce896eaf669b2bd90eea7
|
Provenance
The following attestation bundles were made for squishbox-1.0.2-py3-none-any.whl:
Publisher:
python-publish.yml on GeekFunkLabs/squishbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
squishbox-1.0.2-py3-none-any.whl -
Subject digest:
85483c79e232ad3e26367b66b2e0d3a8deeca165f5d2fa599374cc2728a6833d - Sigstore transparency entry: 1436130186
- Sigstore integration time:
-
Permalink:
GeekFunkLabs/squishbox@5fca8ac9b4fe33fd4a36d3ab53950cd2995104b3 -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/GeekFunkLabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5fca8ac9b4fe33fd4a36d3ab53950cd2995104b3 -
Trigger Event:
release
-
Statement type: