Fix picotool “No accessible RP2040 devices in BOOTSEL mode were found.”
picotool needs the Pico in BOOTSEL mode. Hold BOOTSEL while plugging in, or let picotool reboot it with -f — and check the cable and udev rules on Linux.
Community draft — report a mistake
What you see
$ picotool load -x blink.uf2
No accessible RP2040 devices in BOOTSEL mode were found.
but:
RP2040 device at bus 1, address 12 appears to be a RP2040 device with a USB serial connection, not in BOOTSEL mode. You can force reboot into BOOTSEL mode via 'picotool reboot -f -u' first.$ picotool load -x blink.uf2 No accessible RP2040 devices in BOOTSEL mode were found. but: RP2040 device at bus 1, address 12 appears to be a RP2040 device with a USB serial connection, not in BOOTSEL mode. You can force reboot into BOOTSEL mode via 'picotool reboot -f -u' first.
picotool talks to the RP2040’s ROM bootloader over USB, and that bootloader only runs in BOOTSEL mode. This message means picotool found no board in that mode. Often, as the “but:” section shows, it found one running normal firmware instead.
Hold BOOTSEL while plugging in, or let picotool force the reboot with -f, and the load goes through.
Quick fix — try in order
- 1
Put the Pico in BOOTSEL mode
Unplug, hold the BOOTSEL button, plug in, release. The RPI-RP2 drive appears (RP2350 on Pico 2) and picotool can now see it.
- 2
Or let picotool reboot it
If the “but:” line says the board has a USB serial connection, run
picotool reboot -f -u, then load again — or add -f to the load command:picotool load -f -x blink.uf2. - 3
Linux: install the udev rules
Without them only root can access the device. Copy 60-picotool.rules (from the picotool repository) to /etc/udev/rules.d/, run
sudo udevadm control --reloadand replug. - 4
Windows: check the driver
If the drive appears but picotool still can't connect, the bootloader's second USB interface needs a WinUSB driver — see picotool unable to connect (Zadig).
- 5
Use a data cable
If the RPI-RP2 drive never appears at all, see RPI-RP2 drive not showing.
Why it happens
Why can't picotool reset the Pico by itself?
It can — but only if the running firmware exposes the standard “reset to BOOTSEL” USB interface (Pico SDK stdio_usb and Arduino-Pico do; MicroPython and custom firmware may not). Otherwise you press BOOTSEL by hand.
MicroPython is running
MicroPython shows a serial port, not BOOTSEL. picotool's -f option may not work with it; use the button.
Board-specific notes
RP2040-Zero / Tiny boards: The BOOT button is the one nearer the USB-C socket on Waveshare RP2040-Zero. Hold it, tap RESET, release BOOT.
Pico 2: Use picotool 2.x — older picotool versions don't know the RP2350.
Did this fix it?
Thanks — that helps us keep this page right.