# PyBLE firmware 0.6.0 recovery

Installing PyBLE erases the board's existing firmware and user workspace. Back up files before installation. Use a data-capable USB cable, stable power, close every serial monitor/application holding the port, and select the correct serial device.

For an ESP profile, if automatic reset fails, hold BOOT, tap RESET, then release BOOT. Button names vary by board. After permission denial, disconnect, timeout, interrupted erase/write, verification failure, or a board that no longer boots: close the serial user, reconnect USB, enter the ROM bootloader manually, and retry the same verified profile. Never guess another image.

Advanced merged-image recovery commands using these exact bytes:

```sh
python -m esptool --chip esp32 write_flash 0x1000 esp32-4mb/firmware.bin
python -m esptool --chip esp32s3 write_flash 0x0 esp32-s3-n16r8/firmware.bin
python -m esptool --chip esp32s3 write_flash 0x0 waveshare-esp32-s3-lcd-147b/firmware.bin
python -m esptool --chip esp32c3 write_flash 0x0 esp32-c3-4mb/firmware.bin
```

Component diagnostics use the bundled bootloader at `0x1000` for classic ESP32 and `0x0` for S3 and C3, partition table at `0x8000`, and application at `0x10000`. Power-cycle after flashing, expect a `PyBLE-XXXX` BLE advertisement, then connect from the app.

Pico 2 W recovery uses the same verified `rpi-pico2-w/firmware.uf2` bytes. Disconnect the board, hold BOOTSEL while reconnecting USB, re-verify the versioned UF2 size and SHA-256, and copy it to the mounted mass-storage volume. Wait for automatic reboot, then confirm the `PyBLE-XXXX` BLE advertisement and connect from the app. After an interrupted or failed copy, repeat this procedure with the same verified UF2; never substitute another profile.

Repeated resets, flash-size errors, PSRAM startup errors, or no advertisement can indicate a wrong memory profile. Stop; do not try random images. Report only release `0.6.0`, profile ID, board model/module marking, browser/OS versions, failed stage, and redacted error text at https://pyble.dev/support/. Do not share secrets or personal device labels.
