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.1

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.1
File Size Uploaded
squishbox-1.3.1.tar.gz 35.7 kB Details

Built distribution (wheel)

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

Total release size: 78.0 kB

Release files / squishbox-1.3.1.tar.gz

Download URL squishbox-1.3.1.tar.gz
Size 35.7 kB
Tags Source
SHA-256 checksum
How to use checksums
42bfdbc787d29a5f87708d39e51bf078781c95fe4f62d9c2db8e70d320fc9c70
BLAKE2b-256 checksum
How to use checksums
786e81c7284338476ba875c25702fbf4ee8b53a39345e61d6791bdd56bc2d34f
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 9, 2026.

Transparency log

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

Download URL squishbox-1.3.1-py3-none-any.whl
Size 42.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2d9014a97cd30e3d80418ec3c651f51f5239d5687b9247088d57ef9fd326e16b
BLAKE2b-256 checksum
How to use checksums
1ef9fb8f50378e7f327c05e20652dfdcb50dd4c4a47e2e5a5e476ce1b22a5c33
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 9, 2026.

Transparency log

Release history Release notifications | RSS feed

1.3.3

2 release files

1.3.2

2 release files

This release

1.3.1 This release

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