Zynthian Pocket

Some months ago had the idea of building a Zynthian for my purse/bag/backpack that I can easily take with me on vacation. This together with a QuNexus and a power bank and headphones makes a good toy for in-flight entertainment and spontaneous improvisation/jam sessions when connected to a local PA.

So here it is, as small as 129 x 74 x 38 mm:

  • Pi5 8GB
  • homemade thermal block made from the cheapest possible armor case
  • u-bent aluminium tread plate as base and sides, providing enough cooling surface
  • 4x silicone rubber feet to protect tables and allow air convection
  • lasercut PLEXIGLAS® XT frame and knobs
  • IQaudio Codec Zero (using headphone/line stereo out and combined mic/line stereo input, the black plastic TRS socket)
  • MIDI Trio: In-Thru-Out via standard TRS Type A (due to size, the triangle of 3.5mm TRS sockets)
  • 4.3″ DSI QLED Multi-Touch Display (Waveshare 24783)
  • 1x MCP23017
  • 4x EC11 encoders and many 10nF caps
  • 1x USB-C power input (homemade PD trigger, negotiates always the best available voltage for stable 27W)
  • 1x wide-range input to 5.1V 6A supply (homemade)
  • 1x USB-C gadget mode connection
  • 1x power button (at the side next to stereo out)
  • 1x genuine (!) SanDisk Extreme Pro 64GB microSD





I wanted to have this thing as monolithic as possible. The knobs are barely higher than the display, but they are quite comfortable to work with thumb and finger.
Heat dissipation is just balanced enough to work perfectly under full load in environments up to 35°C when placed on a hard surface with the silicone feet to allow air to circulate underneath the base (and surface taking up some radiated heat as well). The tread makes the surface larger and acts like some sort of cooling fins, so it is just enough cooling for maximum performance with optimised chipset timings of the recent bootloader EEPROM but without overclocking (that does nothing good, anyway).

The EEPROM config via rpi-eeprom-config --edit is this:

[all]
BOOT_UART=0
BOOT_ORDER=0xf164
NET_INSTALL_AT_POWER_ON=0
NET_INSTALL_ENABLED=0
SDRAM_BANKLOW=1
USB_MSD_DISCOVER_TIMEOUT=1000
POWER_OFF_ON_HALT=1
PSU_MAX_CURRENT=5000

The boot order allows to boot from USB first, so I will likely never have to dismantle the entire device to reach the microSD card, because I can always boot a RPi OS from USB stick to reflash the Zynthian in case of a software/data failure. Unused things are disabled or set in a way to cause minimum boot delay.

The PSU_MAX_CURRENT=5000 is the most important setting to make the Zynthian run at full speed and full performance without a Raspberrypi 27W Original power supply and with custom power converter/supply circuit instead. Without this setting, the RPi 5 will run at throttled mode, if the bootloader can not negotiate the 5.1V at 5A from the USB-C power supply! I’ve built the power input in a way that it can take any USB-C PD voltage as long as it delivers the required current for 27W reliably.

The screen shows the touch keys to emulate the V5.x keypad, saving a lot of space.

I’ve used it during travel and it made quite some fun! The combined mic/line input is good enough to take a guitar signal directly and/or a dynamic mic for processing, or line in.

Many thanks to @jofemodo @wanthalf @riban @wyleu

For the one who wants to use an IQaudio Codec Zero (or the identical Pi-Codec) for a DIY Zynthian, I’ve added some extra files:
rc.local (479 Bytes)
stereo-mic.state (19.1 KB)
webconf-mixer-controls.txt (423 Bytes)
The rc.local is to make the card work at all, place the stereo-mic.state in the directory mentioned in rc.local. This enables the stereo mic feature of the codec and sets input to best quality and amplification versatility. Use the Webconf mixer controls to show all relevant features and omit the useless ones. Beware, on-off-logic is inverted due to some mysterious bug, so for example turning EQ off means it is actually turned on.

21 Likes

Beautiful! Is (are) there custom printed circuit board(s) for the MCP23017 and the encoders and the other modules or is it all hand wired?

Nice job! How much does it weigh?

The brick as shown is 374 g.

1 Like

The PD trigger is a modded off-the-shelf module with an Arduino ATtiny85 patched on to do some extra measurements and configuration. The power regulator is a dremeled out part of another PCB I made years ago. Everything is hand-wired, as is the remote conection from the GPIO connector to the IQaudio Codec Zero.

I serously think about making a PCB for this, but I need to find the time first.

2 Likes

Brave @fussl !!

It’s one of the smaller zynthians i’ve seen. Really nice work!
I specially like the side-managed rotaries.

Congrats!

3 Likes

What a tidy package! Very nifty :slight_smile:

1 Like