I'm fairly new to rust, native, embedded and esp32. I'm trying to flash an ~empty program (created by espgenerate). (I've used this same module before with micropython.)
cargo run --release
Finished `release` profile [optimized + debuginfo] target(s) in 0.05s
Running `espflash flash --monitor --chip esp32c3 target/riscv32imc-unknown-none-elf/release/my-rs`
[2026-02-23T13:57:59Z INFO ] Serial port: '/dev/ttyACM0'
[2026-02-23T13:57:59Z INFO ] Connecting...
[2026-02-23T13:58:00Z INFO ] Using flash stub
Chip type: esp32c3 (revision v0.4)
Crystal frequency: 40 MHz
Flash size: 4MB
Features: WiFi, BLE
MAC address: d4:f9:8d:01:ab:f4
App/part. size: 71,200/4,128,768 bytes, 1.72%
[00:00:00] [========================================] 13/13 0x0 Skipped! (checksum matches) [00:00:00] [========================================] 1/1 0x8000 Skipped! (checksum matches) [00:00:00] [========================================] 7/7 0x10000 Skipped! (checksum matches) [2026-02-23T13:58:00Z INFO ] Flashing has completed!
Commands:
CTRL+R Reset chip
CTRL+C Exit
ESP-ROM:esp32c3-api1-20210207
Build:Feb 7 2021
rst:0x15 (USB_UART_CHIP_RESET),boot:0x0 (USB_BOOT)
Saved PC:0x40380862
wait usb download
I see "Flashing has completed!" but then it seems to stay in boot mode? If I reset the chip with the hardware button, the "pipe is broken" and I can't "monitor" as expected. Not that there is any output yet, but being stuck in boot mode won't run the program anyway, right? How do I get past this to allow the program to run while being monitored after a successful flash?
Notes
Prior to this problem, I solved a permission problem during espflash flash for my user accessing the port with sudo chmod a+rw /dev/ttyACM0 and sudo usermod -a -G dialout $USER.
I also got confused about my chip hanging at boot: Disabling RNG early entropy source... during espflash flash which is solved by realizing this ~precise button timing:
RESET ‾‾‾‾‾\___/‾‾‾‾‾
BOOT ‾‾‾\_______/‾‾‾
I've had to mess with this with miropython as well, but less often. Obviously everyone will have had to learn these steps, but maybe there could be more guidance in the tooling for noobs?
I'm fairly new to rust, native, embedded and esp32. I'm trying to flash an ~empty program (created by
espgenerate). (I've used this same module before with micropython.)I see "Flashing has completed!" but then it seems to stay in boot mode? If I reset the chip with the hardware button, the "pipe is broken" and I can't "monitor" as expected. Not that there is any output yet, but being stuck in boot mode won't run the program anyway, right? How do I get past this to allow the program to run while being monitored after a successful flash?
Notes
Prior to this problem, I solved a permission problem during
espflash flashfor my user accessing the port withsudo chmod a+rw /dev/ttyACM0andsudo usermod -a -G dialout $USER.I also got confused about my chip hanging at
boot: Disabling RNG early entropy source...duringespflash flashwhich is solved by realizing this ~precise button timing:I've had to mess with this with miropython as well, but less often. Obviously everyone will have had to learn these steps, but maybe there could be more guidance in the tooling for noobs?