Skip to main content

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.

Before installing (even on a fresh system) it's advisable to first run sudo apt update && sudo apt upgrade to update your audio stack.

To run the install script, log in as a regular user and enter:

bash <(curl -sL geekfunklabs.com/squishbox)

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()
card = "hw:sndrpihifiberry"

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(f"speaker-test -l2 -c2 -D{card}")
    elif option == "Sine":
        sb.shell_cmd(f"speaker-test -l2 -c2 -tsine -D{card}")
    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.

Metadata

Release files for squishbox 1.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for squishbox 1.3.2
File Size Uploaded
squishbox-1.3.2.tar.gz 35.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for squishbox 1.3.2
File Interpreter ABI Platform
squishbox-1.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 78.1 kB

Release files / squishbox-1.3.2.tar.gz

Download URL squishbox-1.3.2.tar.gz
Size 35.8 kB
Tags Source
SHA-256 checksum
How to use checksums
5da55854f50bc94744b6f787af8245ef19472a103b058f529ec2211075c3916b
BLAKE2b-256 checksum
How to use checksums
c088be5a6c96408ae67d013c94d1416e30dfc3e72179d4bf0a45a1f71f0f0297
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / squishbox-1.3.2-py3-none-any.whl

Download URL squishbox-1.3.2-py3-none-any.whl
Size 42.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2321d8fc4ac65f8e2239d55824d5382df1f616bb3f2d52e7fe38f1086b41b0f4
BLAKE2b-256 checksum
How to use checksums
2f1fdae9bb4f2225d48884d61a68efd354d439a90252ad1ec8c2a5a8872e0834
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

1.3.3

2 release files

This release

1.3.2 This release

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page