2025-08-14: Progress report and direction update

Posted on Aug 14, 2025 by Magnus Nordlander

It’s been a while since the last update, but it’s not for lack of progress. I’m at a stage (with the Dev Rig) where the basics work pretty nicely, so it’s been time to tackle the harder tasks. I want to bring up a few of them specifically.

UI

A stock Silvia has four buttons and a light. That’s fine for the stock hardware, but the Dev Rig is a lot more configurable, and as such, I’ve added a rotary encoder and a display. Once you have a display, and especially if you have some kind of input method, the obvious question is “What’s the user interface going to look like”.

As they say in show business, ‘Show - don’t tell’.

As you can see, it is early days, but I’m pretty happy with the general structure. I’m also not entirely sure how I’m going to be generalizing this - at the moment it’s very 128x64 px specific, pretty rotary encoder specific, and somewhat single boiler specific, but that’s a plane I’m prepared to build mid-flight.

PSRAM

The APEC SoM is packed with some pretty interesting hardware. In addition to the RP2350 MCU, which carries a whopping 520 KB of SRAM, I also put in an APS6404L PSRAM with a massive 8 MB. I know - we truly are living in the future! Sadly, support for PSRAM (or rather configuring the QMI - Quad Memory Interface - for a second memory) hasn’t been available in embassy-rp, the async enabled HAL used for the firmware. I say hasn’t because I’ve added support and have submitted a PR for it. Some rework is needed, but I’m hoping to get that done this week.

OTA Firmware updates

OTA firmware updates have sort of become the white whale of this project, and sadly, it still is. The RP2350 has bootrom support for partions, but there’s still a lot of infrastructure needed to get OTA Firmware updates to actually work. Things are progressing though. I’ve made a crate for reading and writing the partition table (to be able to find the address of a coupled partition in an A/B setup), but I’ve yet to actually use it.

An update on direction

I’m doing this project first and foremost to make fun upgrades to my own espresso machines, so when things change with my own espresso machines, at least where I’m moving the project is going to move with my espresso machines. That’s not to say that I should necessarily be the only direction in this project - there are other carriers in development, led by other people. Stay tuned for more news on that front in a future post!

As you might have gathered, I have however made a change to my machine park. I have bought a La Marzocco GS3 AV (used of course), and will be selling my Lelit Bianca. It is a little bitter sweet, since I’ve had the Bianca for such a long time, I’ve done a lot of work on it, and it is a very capable machine. It is however simply not as capable as the GS3.

Over the past few months, I’ve been thinking “If I were to design an ultimate espresso machine from the bottom up, what would it be like?”. Not that I’ve truly considered actually building an espresso machine from scratch, but more as a thought experiment. The GS3 does not tick all of my boxes. I would want a dual boiler with a saturated group (check), electronic control over the brew process (check), a gear pump (nope), plenty of sensors (meh), including an integrated scale for gravimetric brewing (not really), a thermostatic mixing valve for hot water (check), and open source electronics (nope). The interesting thing about the GS3 though is that while it doesn’t tick all of my boxes, it can reasonably be modded to do so. (As an aside, the LM Strada X does hit most of these boxes out of the box, open source electronics being the major ’nope’ there)

As such, the GS3 makes for a truly excellent platform to build an ultimate espresso machine. Because of this, I’ve been on the look-out for a used GS3 for a while, and after finding one for a good price, I decided to get it.

As you can imagine - this shifts my focus, and changes the roadmap. Sadly, the Gear Pump Bianca carrier board isn’t going to see any more development. There will instead be a new GS3 carrier board. Similarly the dual-boiler example firmware is going to shift to being for a this new GS3 carrier board. I haven’t made any final decisions on features yet, but if possible, I would like it to be able to work with either the stock rotary pump or a FG-series gear pump. Similarly, I would want it to be able to work either with the stock ancient-era 16x2 alphanunmeric display, or a modern TFT. I’m also going to try to add an input for a potentiometer to possibly add an MP-style paddle (but as an electronic sensor). Like I said, it’s all preliminary - I’ll have to do a bit of measurments, pin assignments and layouting to know for sure. Expect more news in a future update!

It does also throw out the timeline. While my single boiler efforts are proceeding according to plan, the dual boiler is going to take a while longer, but I am motivated to get it up and running. The GS3 is an amazing machine, but I’m getting pretty annoyed with the arbitrary 50 second shot limit :D