PM_K-1 docs: make the two-step flash explicit (main.py is not drag-and-drop)

A user dropped main.py onto the RPI-RP2 BOOTSEL drive (which only accepts a .uf2)
and it vanished on reboot. Clarify in pico/README.md and info-kit.html that
flashing is two distinct steps: (1) drag-and-drop the MicroPython .uf2, then
(2) copy main.py over USB serial with Thonny/mpremote — the Pico is not a USB
drive once MicroPython is running.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Me Here 2026-05-28 16:42:18 -05:00
parent 8e5a725aba
commit 111702222b
2 changed files with 38 additions and 15 deletions

View file

@ -106,14 +106,19 @@
<a class="dl" href="/pico-main.py" download="main.py">Download main.py ↓</a> <a class="dl" href="/pico-main.py" download="main.py">Download main.py ↓</a>
<a class="dl alt" href="https://codeberg.org/VARASYS/metronome/src/branch/main/pico" target="_blank" rel="noopener">Source + README ↗</a> <a class="dl alt" href="https://codeberg.org/VARASYS/metronome/src/branch/main/pico" target="_blank" rel="noopener">Source + README ↗</a>
</p> </p>
<p class="sub"><b>Two separate steps</b> — and <b><code>main.py</code> is not a draganddrop file.</b> The
<code>RPIRP2</code> drive only accepts a <code>.uf2</code> firmware file; a <code>.py</code> copied there is
discarded on reboot. You draganddrop the firmware once, then copy <code>main.py</code> over USB serial.</p>
<ol class="steps"> <ol class="steps">
<li>Install <b>MicroPython</b>: hold <b>BOOTSEL</b>, plug the Pico into USB, and drop the MicroPython <li><b>Install MicroPython</b> (draganddrop, one time): hold <b>BOOTSEL</b>, plug the Pico into USB, and drop
<code>.uf2</code> onto the <code>RPIRP2</code> drive the MicroPython <code>.uf2</code> onto the <code>RPIRP2</code> drive
(<a href="https://micropython.org/download/RPI_PICO/" target="_blank" rel="noopener">Pico</a> / (<a href="https://micropython.org/download/RPI_PICO/" target="_blank" rel="noopener">Pico</a> /
<a href="https://micropython.org/download/RPI_PICO2/" target="_blank" rel="noopener">Pico 2</a>).</li> <a href="https://micropython.org/download/RPI_PICO2/" target="_blank" rel="noopener">Pico 2</a>). It reboots
<li>Copy <code>main.py</code> onto the Pico as <code>main.py</code> (in on its own and the drive disappears — that's correct.</li>
<a href="https://thonny.org" target="_blank" rel="noopener">Thonny</a>: <i>File ▸ Save as ▸ Raspberry Pi Pico</i>, <li><b>Copy <code>main.py</code></b> (the Pico is no longer a USB drive, so use a serial tool):
or <code>mpremote cp main.py :main.py</code>).</li> in <a href="https://thonny.org" target="_blank" rel="noopener">Thonny</a> pick the interpreter
<i>MicroPython (Raspberry Pi Pico)</i>, then <i>File ▸ Save as ▸ Raspberry Pi Pico</i> as <code>main.py</code>;
or <code>mpremote cp main.py :main.py</code>.</li>
<li>Reset — it boots straight into the metronome.</li> <li>Reset — it boots straight into the metronome.</li>
<li>Add your own grooves by pasting program strings from the editor into the <code>PROGRAMS</code> list at the <li>Add your own grooves by pasting program strings from the editor into the <code>PROGRAMS</code> list at the
top of <code>main.py</code>. If colours, touch, or the joystick look off, flip a flag in the top of <code>main.py</code>. If colours, touch, or the joystick look off, flip a flag in the

View file

@ -21,17 +21,35 @@ buzzer, joystick, the polymeter engine — no external libraries).
The components are wired on the board — you don't breadboard anything; just seat the Pico. The components are wired on the board — you don't breadboard anything; just seat the Pico.
## Flash it ## Flash it — TWO separate steps
1. **MicroPython:** hold **BOOTSEL**, plug the Pico into USB, and copy the MicroPython UF2 > ⚠️ **`main.py` is NOT a drag-and-drop file.** The `RPI-RP2` drive that appears in BOOTSEL mode
onto the `RPI-RP2` drive that appears: > is the bootloader, and it *only* accepts a `.uf2` firmware file — anything else (like `main.py`)
- Pico / Pico W → <https://micropython.org/download/RPI_PICO/> > is silently discarded on the next reboot. You first flash MicroPython with a `.uf2` (drag-and-drop),
> and *then* copy `main.py` over the USB serial link with Thonny or mpremote. Two different steps.
### Step 1 — install MicroPython (drag-and-drop a `.uf2`, one time)
1. Download the MicroPython firmware **`.uf2`** for your board:
- Pico / Pico W → <https://micropython.org/download/RPI_PICO/> (or `RPI_PICO_W`)
- Pico 2 / Pico 2 W → <https://micropython.org/download/RPI_PICO2/> - Pico 2 / Pico 2 W → <https://micropython.org/download/RPI_PICO2/>
2. **The firmware:** open `main.py` in [Thonny](https://thonny.org) (or `rshell`/`mpremote`) 2. Hold **BOOTSEL**, plug into USB → the `RPI-RP2` drive appears.
and save it to the Pico **as `main.py`**. 3. **Drag the `.uf2` file onto that drive.** It copies, the Pico reboots on its own, and the drive
- Thonny: open the file → **File ▸ Save as… ▸ Raspberry Pi Pico** → name it `main.py`. **disappears** — that's correct and means MicroPython is installed. (Don't use BOOTSEL again unless
- mpremote: `mpremote cp main.py :main.py` you're reinstalling the firmware.)
3. Reset (replug). It boots straight into the metronome.
### Step 2 — copy `main.py` (over USB serial, NOT to a drive)
After step 1 the Pico runs MicroPython and **no longer shows up as a USB drive** — so you can't drag
files to it. Use a tool that talks to it over USB serial:
- **Thonny (easiest):** install [Thonny](https://thonny.org), plug the Pico in normally, then
bottom-right click the interpreter selector → **MicroPython (Raspberry Pi Pico)** (you should see
a `>>>` prompt in the Shell). Open `main.py`, then **File ▸ Save as… ▸ Raspberry Pi Pico** and save
it as exactly **`main.py`**.
- **mpremote (command line):** `pip install mpremote` then `mpremote cp main.py :main.py`
Reset (replug) and it boots straight into the metronome.
## Controls ## Controls