Raspberry Pi Pico / Pico 2 UF2 flashing and serial
Project description
PiPicoFlasher Driver
jumpstarter-driver-pi-pico flashes Raspberry Pi Pico (RP2040), Pico W, and Pico 2 (RP2350) by copying a UF2 file onto the BOOTSEL USB mass-storage volume.
The driver supports two methods for entering BOOTSEL mode programmatically:
- GPIO reset — wire the Pico's BOOTSEL pad and RUN pin to host GPIO lines.
- 1200-baud serial touch — uses a USB CDC serial child. Only works when
the running firmware implements the convention (Pico SDK
pico_stdio_usb, CircuitPython, Arduino).
Configuration
Serial-based BOOTSEL entry
export:
storage:
type: jumpstarter_driver_pi_pico.driver.PiPicoFlasher
config: {}
children:
serial:
ref: serial
serial:
type: jumpstarter_driver_pyserial.driver.PySerial
config:
url: /dev/ttyACM0
baudrate: 115200
GPIO-based BOOTSEL entry
When the firmware doesn't support the 1200-baud reset, you can wire two host GPIO pins to the Pico:
| Host GPIO | Pico pin | Notes |
|---|---|---|
| Pin A | BOOTSEL (TP6 on Pico) | Pull low to select bootloader on reset |
| Pin B | RUN | Pull low to reset the RP2040/RP2350 |
Both GPIO outputs should use open-drain drive and active-low polarity so
that on() pulls the line LOW and off() releases to high-impedance (the
Pico's internal pull-ups keep the lines high when released).
export:
storage:
type: jumpstarter_driver_pi_pico.driver.PiPicoFlasher
config: {}
children:
serial:
ref: serial
bootsel:
ref: bootsel
run:
ref: run
serial:
type: jumpstarter_driver_pyserial.driver.PySerial
config:
url: /dev/ttyACM0
baudrate: 115200
bootsel:
type: jumpstarter_driver_gpiod.driver.DigitalOutput
config:
device: "/dev/gpiochip4" # RPi5 GPIO chip — adjust for your host
line: 17 # GPIO pin wired to BOOTSEL
drive: open_drain
active_low: true
initial_value: inactive
run:
type: jumpstarter_driver_gpiod.driver.DigitalOutput
config:
device: "/dev/gpiochip4"
line: 27 # GPIO pin wired to RUN
drive: open_drain
active_low: true
initial_value: inactive
When both GPIO and serial children are present, GPIO reset is preferred.
Shell commands
j storage flash ...— flash a UF2 file (auto-enters BOOTSEL if needed)j storage bootloader— request BOOTSEL mode without flashingj serial ...— USB CDC console (when serial child is configured)
API
flash(source, target=None)— Copies a UF2 from a Jumpstarter resource to the BOOTSEL volume.targetis the destination filename (defaultFirmware.uf2).enter_bootloader()— Enters BOOTSEL mode via GPIO reset or 1200-baud serial touch.bootloader_info()— ParsesINFO_UF2.TXTfrom the mounted volume.dump— Not supported over UF2 mass storage.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jumpstarter_driver_pi_pico-0.8.1.tar.gz.
File metadata
- Download URL: jumpstarter_driver_pi_pico-0.8.1.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16772997aafcf5bbabb217bab859da88f6a9e0bb6d8a49605b623286e2fe5daf
|
|
| MD5 |
4072e1d1673b192e7e3e903386470d89
|
|
| BLAKE2b-256 |
7422918f2789965e84efdfbce6afcbab32a79d155b420f10dfbcf3b7740d45c1
|
File details
Details for the file jumpstarter_driver_pi_pico-0.8.1-py3-none-any.whl.
File metadata
- Download URL: jumpstarter_driver_pi_pico-0.8.1-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a2a222bec692f3726a317f534814d10f8151dc7a2f72529668f2412fa347143
|
|
| MD5 |
a31e8acf65768702292b5b1456c08688
|
|
| BLAKE2b-256 |
bf842caf7ef5892a2a2bcf8df752d1c59037b02fa9ae576639b9efee5aa598cd
|