1. SquishBox Kit Assembly
Contents
Electronics......................................................................................................................................................2
Tools Needed.............................................................................................................................................2
Components...............................................................................................................................................2
Directions...................................................................................................................................................2
Enclosure........................................................................................................................................................7
Materials....................................................................................................................................................7
Directions...................................................................................................................................................8
Installing.......................................................................................................................................................11
Software.......................................................................................................................................................14
Conclusion....................................................................................................................................................16
License.........................................................................................................................................................16
Appendix......................................................................................................................................................17
Optional 9V Build...................................................................................................................................17
Schematic.................................................................................................................................................19
PCB Detail...............................................................................................................................................19
This document will guide you through building and assembling your SquishBox. The “Electronics”
section describes how to solder together all the components included in your kit. To complete your
SquishBox, however, you will also need:
• A Raspberry Pi computer (model 3B+ or 4B)
• A micro SD card with 4-32GB capacity. Be wary of off-brand SD cards – they may misrepresent
their speed and capacity, and thus cause your Pi to behave very unreliably.
• A DC power supply (5V or 9V, depending on how you assemble the kit).
You’ll also need an enclosure – a sturdy box to hold and protect all the components. The “Enclosure”
section shows you how to prepare a 3D printed case or a Hammond 1590BB die-cast aluminum box for
installing the SquishBox.
Your kit is designed to be powered by a 5V DC supply, which is the supply voltage the Raspberry Pi
requires. With a few minor modifications, the kit can be assembled to run on 9V if desired, for example if
you plan to use your SquishBox in a pedalboard setup with many pedals sharing the same 9V power
supply. See the “Optional 9V Build” section for details.
If you have questions or need support you can find it at geekfunklabs.com/support.
SquishBox Assembly Instructions 1 26. Apr. 2022
2. Electronics
Tools Needed
• Soldering Iron, Solder
• Wire Strippers (24 and 26 AWG)
• Flush Cutters
• Needlenose pliers (optional but very helpful)
• A way to hold items steady while you solder:
◦ vise
◦ helping hands tool
◦ (my favorite) a wad of poster tack/putty
Components
A. (1) Printed circuit board (PCB)
B. (1) 16×2 character LCD (HD44780)
C. (1) Momentary stompswitch
D. (1) Rotary pushbutton encoder
E. (1) Decorative knob
F. (1) Resistor 1 kΩ (R2)
G. (1) Potentiometer 10 kΩ
H. (1) Resistor 430 Ω (R1)
I. (1) LED blue 5mm
J. (1) Female header 2×20
K. (1) Male header 1x20
L. (1) PCM5102 DAC sound card
M. (1) Voltage regulator LM7805
N. (2) Capacitor 10 μF (C1, C2)
O. (1) Thermal conductive pad
P. (2) TRS audio jacks (¼ in.)
Q. (1) DC barrel jack (5.5 × 2.1 mm)
R. Ribbon cable (26 AWG)
Directions
This kit, when assembled, results in a sandwich of LCD, PCB, and sound card with some extra
components soldered on and wires sticking out in a way that fits on top of a Raspberry Pi and can be
squeezed into a small enclosure. In order for this to work, the components need to be assembled in the
order described below. Some components go on the top and some on the bottom of the PCB – the
silkscreen shows the side of the PCB on which the components should sit.
SquishBox Assembly Instructions 2 26. Apr. 2022
3. 1. Insert the 430 Ω and 1 kΩ in the R1 and R2 locations on the PCB, respectively. Bend their legs
outward to hold them in place while you solder. Trim the excess leads away with flush cutters, but
hold on to them as they can be useful later.
2. The 10K potentiometer is used to adjust the contrast. Bend its legs toward the side with the middle
leg as shown in the image. Find the silkscreen label cont on the underside of the PCB and insert
the legs so the adjustment screw faces the edge of the board. This will allow you to adjust the
contrast while the unit is powered on by inserting a thin cross-head screwdriver between the USB
ports.
3. The button, encoder, and jacks are connected to the PCB using strips of multicolored ribbon cable,
which helps to keep things organized and makes the connections easier to track. Slice the
following sets of wires off the ribbon cable, separate the ends as shown, and strip, twist, and tin
(add a thin coat of solder to) the ends. This makes them stronger and easier to solder in place.
◦ 4 wires for the rotary encoder
◦ 2 wires for the momentary button
◦ 2 wires for the DC jack
◦ 3 wires for the audio card
SquishBox Assembly Instructions 3 26. Apr. 2022
4. 4. Insert the ribbon cable strips into the marked holes along the edge of the board as shown. The first
four holes marked L, g, R, and P are for the rotary encoder. The next two holes, g and S, are for the
momentary button. The strip of two wires for the DC jack go in the holes marked 5V – the square
pad indicates ground. Bend the ends of the wires flat to hold them in place, then solder them. Trim
any excess leads away. It may be helpful later to write down which color you soldered to each
hole.
5. The longer positive leg of the LED goes in the hole marked led, and the shorter ground leg in g.
Insert just the very end of the legs and bend them over so the LED can reach the top of the
enclosure, and solder in place.
6. Break off a six-pin length of male header and solder them it the holes in the narrow end of the
sound card. Solder a 3-wire ribbon cable strip to the R, G, and L holes on the side of the sound
card. Write down which color went where for later.
SquishBox Assembly Instructions 4 26. Apr. 2022
5. 7. Place the sound card in its silkscreen outline on the underside of the PCB. Press the sound card flat
against the PCB so that it squeezes the ribbon cable a bit. This will provide some strain relief and
keeps the headphone jack from shorting against other components on the Pi. Solder one of the pins
and check that the board is seated properly. If not you can re-melt the solder on the one pin and
adjust. Solder the rest of the pins, and trim the ends with flush cutters. Shield your eyes when
trimming the thick pins, they go flying!
8. Break off two more six-pin lengths of male header and solder them to the pins of the LCD as
shown. Pins D0-D3 are not used. Start with one pin on each header, and make sure they are fully
seated so that the plastic molding is flush with the board and the pins extend straight up from the
board before soldering the rest of the pins.
9. Insert the LCD into the top side of the PCB, but only push the pins through just enough so you can
solder them to the bottom side of the PCB as shown. This allows the LCD to fit on top of the
Raspberry Pi’s USB ports and Ethernet jack. Solder one pin on each end first and check the fit,
then do the rest after re-melting and adjusting if necessary.
SquishBox Assembly Instructions 5 26. Apr. 2022
6. 10. Insert the 2×20 female header into the underside of the PCB. As with the other headers, solder two
pins at either end, then check that the socket is flush against the board so you can re-melt and
adjust if necessary before proceeding to solder all 40 pins in place.
You should now have soldered all the components that go into the PCB. You’ll solder the button, encoder,
and jacks after installing them in an enclosure. This makes it easier to keep them in one spot while you
solder, and less likely you’ll rip wires when screwing things into the enclosure. Read on!
SquishBox Assembly Instructions 6 26. Apr. 2022
7. Enclosure
The SquishBox needs an enclosure to protect the electronics, and as a support to mount the buttons,
encoder, and jacks. You can 3D-print the official PLA case shown below by downloading the model files
from thingiverse.com/thing:5338973. The lid screws on with four #4 size screws.
The instructions in the rest of this section show you how to prepare a Hammond 1590BB-style die-cast
aluminum enclosure for installing the SquishBox. These are pretty easy to find online, and can even be
found pre-painted in a variety of colors.
Materials
• Hammond 1590BB enclosure or similar (119.5×94×30 mm)
• Stencil from the back page of these instructions
• Masking tape
• Bench vise
• Drill
◦ bits: 3/16”, 5/16”, 7/16”, 1/2”
◦ or a stepper bit (shown right)
• Jig Saw
• Flat file
• (4) M2.5×5mm nylon hex standoffs
• (4) M2.5×6mm nylon hex nuts
SquishBox Assembly Instructions 7 26. Apr. 2022
8. Directions
1. Print out the stencil (make sure your printer doesn’t resize or “fit to page”). Cut along the top and
bottom edges of the stencil, leaving flaps on the sides.
2. Use a hobby knife to cut out the openings for the LCD panel, USB ports, and SD card slot. Poke
the center of each drill hole with a pencil.
3. Line up the stencil with the top of the enclosure, and use tape to stick it in place. Fold the flaps
down over the sides of the enclosure. Use a pencil to transfer the cut lines and drill centers onto
the enclosure. Note that the stencil shows you what size holes to drill.
SquishBox Assembly Instructions 8 26. Apr. 2022
9. 4. If your enclosure came pre-painted, apply masking tape around the edges of the rectangular
cutouts to protect the finish.
5. Attach pads or wrap some rags around jaws of your vise to protect the enclosure’s finish if it’s
painted. Clamp the enclosure in place and drill holes at opposite corners of the LCD opening.
6. Cut out from the drill holes using the jig saw. Use the flat file to smooth out the edges and square
up the corners. Check the fit of your LCD and file to adjust the size of the opening if necessary.
7. Use a piece of scrap wood to clamp the enclosure securely while you drill and cut the side
openings.
SquishBox Assembly Instructions 9 26. Apr. 2022
10. 8. Screw the hex standoffs onto the bottom of the Raspberry Pi, and plug the SquishBox PCB into
the Pi. Place the assembly into the body of the enclosure, with the LCD seated in its opening. Mix
some two-part epoxy and apply a blob to the bottom of each standoff. Put the lid on the enclosure,
then flip the whole thing over while holding the lid. Leave it somewhere without touching it for 24
hours, or however long the epoxy needs to cure.
SquishBox Assembly Instructions 10 26. Apr. 2022
11. Installing
This section shows how to mount all the components in your enclosure, solder wires to the jacks, button,
and encoder, and install the Raspberry Pi.
1. Insert the audio jacks first so you have enough room to maneuver them into place in the two holes
on the side. You can tighten the plastic nuts with just your fingers. Next mount the rotary encoder
in the smaller hole on the front and mount the decorative knob on the encoder by tightening its set
screw.
2. The momentary button has a second nut that goes on the inside of the enclosure so you can adjust
the height of the button. You can make the button the same height as the encoder knob, or
whatever you prefer. Lastly, mount the DC jack in the single small hole on the side. Tighten all the
metal nuts enough so they won’t come loose after you close up the unit.
SquishBox Assembly Instructions 11 26. Apr. 2022
12. 3. Time to wire things up! Place the PCB assembly in the enclosure so the LCD is seated in the large
rectangular opening. The rotary encoder is the most awkward to solder, so it’s best to do it first so
you have the most room. The rotary encoder has three pins on one side for the encoder, and two on
the other for the pushbutton. The diagram below shows which pins should go to which wires from
the PCB. First, connect the ground pin of the pushbutton to the middle pin on the encoder side
using a short piece of wire or one of the resistor legs you clipped earlier. Then connect the other
wires as shown in the diagram. You can make this a bit easier by bending the ends of the wires
into look hooks, and by adding a bit of solder to the encoder pins first.
4. Solder wires to the button and DC jack. Make sure the ground wire goes to the longer sleeve lug
on the DC jack. The button wires can go either way.
5. Now wire up the audio jacks. Each jack has six pins, shown in the diagram below as they are laid
out in the picture, which connect to the tip, ring, and sleeve of an audio jack. The “N” pins are
normally connected, but when a plug is inserted the connections are broken, allowing audio to be
routed depending on which jacks have plugs inserted. Use bits of wire or resistor legs to connect
left NT to right T, left R to right NT, and left S to right S (as shown by the red lines and the middle
image). Then connect the L, R, and G wires from the sound card to the left jack’s T, NT, and S,
respectively (shown by the blue lines and right-hand image).
SquishBox Assembly Instructions 12 26. Apr. 2022
13. 6. To plug in the Raspberry Pi, lift the SquishBox PCB assembly out of the enclosure a bit so you can
line up the holes in the 2×20 header with the pins on the Pi. Re-seat the LCD in its opening, line
up the posts on the lid with the mounting holes on the Pi, and screw the lid into place. Attach some
sticky rubber feet to the bottom so the unit doesn’t slide around.
7. The first time you start up the SquishBox, you may need to adjust the contrast in order to be able
to see the display. Insert a thin cross-head screwdriver between the USB ports as shown to reach
the 10k potentiometer, and adjust until the contrast is acceptable.
SquishBox Assembly Instructions 13 26. Apr. 2022
14. Software
The software for the SquishBox is installed on Raspberry Pi OS by running a script from the command
line. This downloads the code that runs the synth and a few other software dependencies, and sets up the
interface to run on startup. These changes aren’t drastic – you don’t have to sacrifice your Raspberry Pi
computer or buy a new one to use exclusively with the SquishBox! You can install the software on a
working OS without wiping anything, and you can easily pop the Pi out of the enclosure and use it for
something else as you need. The code that runs the SquishBox is called FluidPatcher, and is maintained at
github.com/albedozero/fluidpatcher, where you can view the source code and learn how it works if that
interests you.
If you’re using a brand new Raspberry Pi or just want to start fresh you can get OS images and
instructions on installing at raspberrypi.org/software, and information on how to set up your Pi at
raspberrypi.org/documentation.
Before running the install script, edit the /boot/config.txt file on your Raspberry Pi, add the line below at
the end to enable the sound card, and reboot the Pi.
dtoverlay=hifiberry-dac
Log in, make sure your Pi is connected to the internet, and enter the following command:
curl -L git.io/squishbox | bash
This will download and run an install script that will query you for options, then do all the configuration
and software installation automatically. You can just choose the defaults (enclosed in square brackets) to
install everything, but here is an explanation of each of the options.
Install location [/home/user]
The code installs in your home directory by default, but can be installed in any location where you have
write privileges.
Install/update FluidPatcher version 0.7.2? ([y]/n)
This installs the base code that runs the SquishBox. You can also use this script to reconfigure some of the
later options, so if you want to do that without changing your code, reply no here.
FluidSynth version 2.1.7-1.1 will be installed
Compile and install FluidSynth 2.2.6 from source? ([y]/n)
FluidSynth is the software synthesizer that actually generates the audio. The FluidSynth team is
constantly improving the synth and fixing any bugs that pop up, but these changes take a long time make
it into the Raspberry Pi OS software repository. Reply yes to install the latest stable version directly from
the FluidSynth team.
OK to upgrade your system (if possible)? ([y]/n)
SquishBox Assembly Instructions 14 26. Apr. 2022
15. Any time you install new software on the Raspberry Pi, it’s a good idea to make sure your other software
is all up to date, so you should probably say yes here.
Which audio output would you like to use?
0. No change
1. Default
2. Headphones
3. sndrpihifiberry
4. vc4hdmi
Choose [3]
If you don’t see sndrpihifiberry in the list, you need to add dtoverlay=hifiberry-dac to your
/boot/config.txt file and reboot first.
What script should be run on startup?
0. No change
1. squishbox.py
2. headlesspi.py
3. Nothing
Choose [1]
The python script that runs the interface is called squishbox.py. If you’re inclined, you can modify the
interface to suit your needs. The READMEs at the FluidPatcher github link above will give you guidance.
Set up web-based file manager? ([y]/n)
Please create a user name and password.
username:
password:
When the SquishBox is connected to a network, its web interface provides a convenient way of editing
your patches, banks, and config files, as well as uploading soundfonts. Choose a good password to protect
your SquishBox settings from other users on the same network.
Download and install ~400MB of additional soundfonts? ([y]/n)
This downloads a collection of free but nice-sounding soundfonts that work in a variety of playing
situations, plus an additional bank that uses them.
Option selection complete. Proceed with installation? ([y]/n)
This may take some time ... go make some coffee.
The terminal will start producing a bunch of output as it installs and configures the necessary software. If
something does go wrong, this output can often be helpful in identifying the problem when seeking
support, which can be found at geekfunklabs.com/support. Once finished, the software will ask if you
would like to reboot. If you haven’t installed the Pi in the SquishBox yet, you can reply no and then enter
sudo poweroff to safely shut down.
If you want to use the Pi for something else, you can enter sudo systemctl disable squishbox at the
command line to stop the synth from running on startup. If needed later, you can enter sudo systemctl
enable squishbox to get it back again.
SquishBox Assembly Instructions 15 26. Apr. 2022
16. Conclusion
Once you’ve assembled your SquishBox and installed the software, you should be ready to plug in and
play! The User Manual can be found at geekfunklabs.com/downloads/squishbox-user-manual, and if you
need any further assistance visit geekfunklabs.com/support. We hope you enjoy making music with the
SquishBox!
License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0
International License, 2022 by Bill Peterson.
SquishBox Assembly Instructions 16 26. Apr. 2022
17. Appendix
Optional 9V Build
The SquishBox kit can be modified with the included 10μF capacitors and LM7805 voltage regulator to
run off a 9V power supply. However, the LM7805 must dissipate the extra voltage as heat, and if it heats
up too much its voltage output drops and the Pi will lose power. The most practical way to keep the
regulator cool without adding a fan or bulky heatsink that wouldn’t fit inside the SquishBox is to build it
in a metal enclosure and use that as the heatsink. The steps below explain how to modify the directions in
the “Electronics” and “Installation” sections for the 9V build.
• Before soldering the sound card or LCD, insert the two 10 uF capacitors at C1 and C2 on the
underside of the PCB. The negative terminal, which is marked with a gray stripe and has a shorter
leg, must go in the square pad that is also marked “-”. Push the caps in as far as they will go and
bend the legs to hold them in place while you solder.
• Solder the wires for the DC jack to the 9V pads instead of 5V. The silkscreen shows how the pins
of the LM7805 should be connected, with the heatsink toward the edge of the PCB. Strip and tin
the ends of a 3-wire strip of ribbon cable and use it to connect the regulator to the pads on the
PCB.
• If the 9V power supply you will be using is center-negative (indicated by the symbol),
solder the wire from the square/ground 9V pad to the shorter pin lug on the DC jack, and the other
wire to the sleeve lug.
SquishBox Assembly Instructions 17 26. Apr. 2022
18. • After applying two-part epoxy to the mounting standoffs for the Raspberry Pi but before closing
up the lid to let the epoxy dry, stick the voltage regulator to the lid of the enclosure using the
included thermal pad. Add a couple blobs of epoxy the the edges of the regulator to hold it in
place, then close up the unit and leave it alone for 24 hours so the epoxy can dry and cure.
SquishBox Assembly Instructions 18 26. Apr. 2022
19. Schematic
PCB Detail
The pads along the top edge of the PCB are connected to unused pins on the Raspberry Pi’s GPIO header,
and are available to add LEDs, additional buttons, or any other expansions you wish.
SquishBox Assembly Instructions 19 26. Apr. 2022