# PicoMultiLoader: an ESP32-P4-WIFI brain for the PicoCalc, with an SD-card app loader

**URL:** <https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532>\
**Category:** PicoCalc\
**Created:** [October 20, 2026, 4:32pm UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532 "2026-10-20T16:32:11Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Luciano\_Faria](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/luciano_faria/32/18030_2.png) [@Luciano\_Faria](https://forum.clockworkpi.com/u/Luciano_Faria)\
**Post date:** [October 20, 2026, 4:32pm UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532/1 "2026-10-20T16:32:12Z")

</div>

**PicoMultiLoader** turns the **Waveshare ESP32-P4-WIFI6** into a drop-in replacement for the Pico in the PicoCalc, and adds a firmware loader to it:

1. Copy apps (`.bin` files) to the microSD card.
2. Pick one on the PicoCalc screen.
3. The loader flashes it and starts it.

To get back to the menu, hold **Up** while switching on.

**Download v1.2.0:** [Release PicoMultiLoader v1.2.0 · hexadevti/PicoMultiLoader · GitHub](https://github.com/hexadevti/PicoMultiLoader/releases/tag/v1.2.0) **Source and documentation:** [GitHub - hexadevti/PicoMultiLoader · GitHub](https://github.com/hexadevti/PicoMultiLoader)

* * *

## **Why the ESP32-P4?**

The ESP32-P4-WIFI6 has the same footprint and pinout as a Pico, so it plugs into the PicoCalc’s Pico socket.

![Waveshare ESP32-P4-WIFI6](https://www.waveshare.com/w/upload/2/28/360px-ESP32-P4-WIFI6-1.jpg)  
_The Waveshare ESP32-P4-WIFI6 (picture: [Waveshare](https://www.waveshare.com/wiki/ESP32-P4-WIFI6))_

Here is how it compares:

| | **ESP32-P4** | RP2040 (Pico) | RP2350 (Pico 2) |
| --- | --- | --- | --- |
| CPU | **2× RISC-V @ 400 MHz** | 2× Cortex-M0+ @ 133 MHz | 2× Cortex-M33 @ 150 MHz |
| Floating point | FPU + SIMD/AI instructions | none (software) | FPU |
| SRAM | **768 KB** | 264 KB | 520 KB |
| PSRAM | **32 MB** | none | none |
| Flash | **32 MB** | 2 MB | 4 MB |
| Wireless | **Wi-Fi 6** + BT 5 LE (ESP32-C6) | Wi-Fi 4 (Pico W) | Wi-Fi 4 (Pico 2 W) |
| USB | **USB 2.0 high-speed (480 Mbit/s)** | 12 Mbit/s | 12 Mbit/s |
| Media | MIPI-DSI/CSI, H.264, JPEG, 2D accelerator | — | — |

What that means in practice:

- **Speed:** about 3× the clock of a Pico, with more powerful cores, a hardware FPU and SIMD.
- **Memory:** 32 MB of PSRAM for emulators, games, interpreters and big framebuffers. Apps get a 10 MB slot, plus about 20 MB of flash for their own data.
- **16-bit-era emulation:** that CPU and memory are enough for heavier emulators than a Pico can run, such as a **386 PC** , the **Amiga 500** , **Neo Geo** , **Mega Drive / Genesis** and **SNES** , with room for their ROMs and RAM in PSRAM.
- **USB drive mode is high-speed:** the PicoCalc’s SD card shows up on your PC through a 480 Mbit/s USB 2.0 port, instead of the Pico’s 12 Mbit/s.
- **Software:** it runs any **ESP-IDF, Arduino or MicroPython** build for the ESP32-P4, with no changes. Merged `*.factory.bin` images work too: the loader takes only the app part and never overwrites the bootloader.

**One thing to know:** the board has a USB-C connector where the Pico has micro-USB, so the case opening must be made a little bigger. The README shows how.

![Enlarged USB opening in the PicoCalc case](https://raw.githubusercontent.com/hexadevti/PicoMultiLoader/v1.2.0/docs/picocalc-case-mod.jpg)

* * *

## **Screenshots**

| ![File list](https://raw.githubusercontent.com/hexadevti/PicoMultiLoader/v1.2.0/docs/screenshots/file-list.png) | ![App details](https://raw.githubusercontent.com/hexadevti/PicoMultiLoader/v1.2.0/docs/screenshots/details.png) |
| --- | --- |
| File list on the SD card | Checking an app before flashing it |
| ![Web server screen](https://raw.githubusercontent.com/hexadevti/PicoMultiLoader/v1.2.0/docs/screenshots/web-server.png) | ![Setup](https://raw.githubusercontent.com/hexadevti/PicoMultiLoader/v1.2.0/docs/screenshots/setup.png) |
| Web file manager (F4) | Setup: Wi-Fi and start folder (F1) |
| ![USB drive mode](https://raw.githubusercontent.com/hexadevti/PicoMultiLoader/v1.2.0/docs/screenshots/usb-drive.png) | ![Help](https://raw.githubusercontent.com/hexadevti/PicoMultiLoader/v1.2.0/docs/screenshots/help.png) |
| USB drive mode (F5) | On-screen help |

![Web file manager in a browser](https://raw.githubusercontent.com/hexadevti/PicoMultiLoader/v1.2.0/docs/screenshots/web-browser.png)  
_The web file manager in a browser_

* * *

## **Features**

**On the PicoCalc**

- **Browse the SD card** with the keyboard and flash an app in two key presses. Each file is checked first (chip, revision, image format), and an unsuitable file shows why.
- **Copy, move and delete files and folders (F2, new in v1.2).** The shortcuts are `C`, `X`, `V` and `Del`, and copying shows a progress bar.
- **Back to the loader** by holding **Up, F1 or F5** while switching on. Apps can also open it in software.
- **The loader never touches your app.** It lives in its own partition, so the installed app keeps starting until you choose another one.
- **Remembers** the last folder and file, or opens a start folder of your choice.
- **On-screen help.** There’s also a **serial console** that works like the keyboard.

**Web file manager (F4), over Wi-Fi**

- Upload with drag-and-drop or **Ctrl+V** , and download, rename, delete or create folders.
- **Select several files** to download, move or delete them together (new in v1.2).
- **Sort** by name, size or date, and see progress for big folders and transfers.
- **Flash an app straight from the browser.**
- Joins your Wi-Fi, or makes its own access point if it can’t. It can start automatically at switch-on, and an icon at the top shows its state.

**USB drive mode (F5)**

- The SD card appears as a USB drive on your PC, at high speed on the ESP32-P4.

* * *

## **Also for Pico and Pico 2 W**

You don’t have an ESP32-P4? The same loader works on the boards you already have:

- **Pico / Pico W (RP2040):** it installs `.uf2` apps from the SD card. There is no Wi-Fi on this build.
- **Pico 2 W (RP2350):** it installs `.uf2` apps from the SD card and includes the **Wi-Fi web file manager**. Updating the menu only means copying one file (`pml2350.uf2`) to the SD card.

* * *

## **Getting started (ESP32-P4)**

1. Make the case opening bigger for the USB-C port, and put the ESP32-P4-WIFI6 in the Pico socket.

2. Flash the full image once over the board’s USB-C port:

3. Copy your `.bin` apps to the SD card, switch on, and pick one.

The release files are built for **ESP32-P4 chip revision v3.x**. For a v1.x chip, build from source. The Pico and Pico 2 W are installed through BOOTSEL; the [release notes](https://github.com/hexadevti/PicoMultiLoader/releases/tag/v1.2.0) have the steps for every board.

* * *

## **Credits**

The Pico and Pico 2 W builds are inspired by **[uf2loader](https://github.com/pelrun/uf2loader)** by **pelrun** , the SD-card UF2 loader many PicoCalc owners already use. Many thanks to pelrun for making it and sharing it.

* * *

Feedback, bug reports and app compatibility reports are very welcome, here or on [GitHub issues](https://github.com/hexadevti/PicoMultiLoader/issues). If you port something to the ESP32-P4 PicoCalc, please share it!

---

<div class="post-metadata">

**Author:** ![MikeJSTB](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/mikejstb/32/12858_2.png) [@MikeJSTB](https://forum.clockworkpi.com/u/MikeJSTB)\
**Post date:** [October 20, 2026, 6:54pm UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532/2 "2026-10-20T18:54:39Z")

</div>

wow - I can finally get files into my picocalc from my iPad! Very nice!

---

<div class="post-metadata">

**Author:** ![pelrun](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/pelrun/32/12323_2.png) [@pelrun](https://forum.clockworkpi.com/u/pelrun)\
**Post date:** [October 21, 2026, 3:23am UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532/3 "2026-10-21T03:23:00Z")

</div>

> [@Luciano\_Faria](#):
>
> a full replacement for uf2loader.

While I don’t mind in the slightest people making alternatives to my stuff (go ham), to claim this is a “full” replacement is a bit disingenuous. It does things differently and doesn’t support quite a few things that uf2loader had to do a lot of work to implement (and does a bunch of things uf2loader doesn’t, to be fair.)

There’s nothing wrong with liking this project better, you don’t need to make overblown claims about it’s featureset.

Separately, you might say “this doesn’t use any code from uf2loader” since you got an LLM to generate it (I also don’t have a problem with LLM use), but you definitely took a lot of information from it, if not had the LLM look directly at the code to figure some things out. At least be gracious about it and provide some credit to me and the other projects uf2loader built upon! We didn’t have the benefit of a coding agent to write it, we had to do it all manually.

---

<div class="post-metadata">

**Author:** ![Luciano\_Faria](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/luciano_faria/32/18030_2.png) [@Luciano\_Faria](https://forum.clockworkpi.com/u/Luciano_Faria)\
**Post date:** [October 21, 2026, 12:47pm UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532/4 "2026-10-21T12:47:19Z")

</div>

Hello, pelrun! I’m sorry; it was never my intention to replace your work or to be disrespectful toward you. My primary goal here is to create a loader for the ESP32-P4 that allows it to reach its full potential and capacity. I will include proper credit to you and remove the parts that implied a replacement (the way that was phrased really didn’t come across well). I apologize for any inconvenience, and I want to reiterate that this is nothing personal—alright?

---

<div class="post-metadata">

**Author:** ![pelrun](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/pelrun/32/12323_2.png) [@pelrun](https://forum.clockworkpi.com/u/pelrun)\
**Post date:** [October 21, 2026, 1:06pm UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532/5 "2026-10-21T13:06:23Z")

</div>

Hey, no offense taken. Figuring out how to operate in the face of the rapidly oncoming AI apocalypse is a work in progress 😀

As long as there’s even a minor mention of the people who’s work informed your project, I’m satisfied.

---

<div class="post-metadata">

**Author:** ![Luciano\_Faria](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/luciano_faria/32/18030_2.png) [@Luciano\_Faria](https://forum.clockworkpi.com/u/Luciano_Faria)\
**Post date:** [October 21, 2026, 1:12pm UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532/6 "2026-10-21T13:12:16Z")

</div>

If I may offer a comment: AI-driven assistance has not come to replace us, but rather to empower us to reach a higher level in our development—at a significantly lower cost.

---

<div class="post-metadata">

**Author:** ![dzubin](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/dzubin/32/17992_2.png) [@dzubin](https://forum.clockworkpi.com/u/dzubin)\
**Post date:** [October 21, 2026, 1:59pm UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532/7 "2026-10-21T13:59:29Z")

</div>

I got my Computer Science degree way WAY back in the 1980s, so I used traditional programming (none of the Object Oriented stuff or C++) and I’ve been toying with Claude generated code. It’s an interesting tension between the two methods. I also used to code in assembly language code in high school in the 1970s and considered people who programmed in a high-level language to be not as “in tune” with the machine as us purists who used assembly (I also input raw machine code on a few machines using front panel switches).

It’s interesting how “programming” is evolving. I assume that in ten years, very few people will be coding C++ or Python by hand anymore and everyone will be vibe coding.

Thomas Dzubin

---

<div class="post-metadata">

**Author:** ![BlairLeduc](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/blairleduc/32/11808_2.png) [@BlairLeduc](https://forum.clockworkpi.com/u/BlairLeduc)\
**Post date:** [October 21, 2026, 3:41pm UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532/8 "2026-10-21T15:41:35Z")

</div>

Ah, I figured you were an old hand given the quality of your PRs to my projects.

---

<div class="post-metadata">

**Author:** ![BlairLeduc](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/blairleduc/32/11808_2.png) [@BlairLeduc](https://forum.clockworkpi.com/u/BlairLeduc)\
**Post date:** [October 21, 2026, 3:44pm UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532/9 "2026-10-21T15:44:14Z")

</div>

@Luciano_Faria, if you look at my shell project that plugs into @pelrun’s uf2loader, I made sure to spell out where I obtained my reference material (or out-right stolen implementations).

> <https://github.com/BlairLeduc/picocalc-shell/blob/main/THIRD-PARTY.md>

---

<div class="post-metadata">

**Author:** ![Luciano\_Faria](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/luciano_faria/32/18030_2.png) [@Luciano\_Faria](https://forum.clockworkpi.com/u/Luciano_Faria)\
**Post date:** [October 21, 2026, 6:15pm UTC](https://forum.clockworkpi.com/t/picomultiloader-an-esp32-p4-wifi-brain-for-the-picocalc-with-an-sd-card-app-loader/23532/10 "2026-10-21T18:15:45Z")

</div>

@BlairLeduc Actually, I didn’t copy any code from uf2loader. it served more as an inspiration. In any case, I will include the third-party documentation and mention the technical foundations and the inspiration I drew upon. Thanks for the tips!
