Skip to main content

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:

  1. GPIO reset — wire the Pico's BOOTSEL pad and RUN pin to host GPIO lines.
  2. 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 flashing
  • j 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. target is the destination filename (default Firmware.uf2).
  • enter_bootloader() — Enters BOOTSEL mode via GPIO reset or 1200-baud serial touch.
  • bootloader_info() — Parses INFO_UF2.TXT from the mounted volume.
  • dump — Not supported over UF2 mass storage.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jumpstarter_driver_pi_pico-0.8.1.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jumpstarter_driver_pi_pico-0.8.1-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file jumpstarter_driver_pi_pico-0.8.1.tar.gz.

File metadata

File hashes

Hashes for jumpstarter_driver_pi_pico-0.8.1.tar.gz
Algorithm Hash digest
SHA256 16772997aafcf5bbabb217bab859da88f6a9e0bb6d8a49605b623286e2fe5daf
MD5 4072e1d1673b192e7e3e903386470d89
BLAKE2b-256 7422918f2789965e84efdfbce6afcbab32a79d155b420f10dfbcf3b7740d45c1

See more details on using hashes here.

File details

Details for the file jumpstarter_driver_pi_pico-0.8.1-py3-none-any.whl.

File metadata

File hashes

Hashes for jumpstarter_driver_pi_pico-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4a2a222bec692f3726a317f534814d10f8151dc7a2f72529668f2412fa347143
MD5 a31e8acf65768702292b5b1456c08688
BLAKE2b-256 bf842caf7ef5892a2a2bcf8df752d1c59037b02fa9ae576639b9efee5aa598cd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page