Espressif 칩의 serial bootloader와 통신해 flash read/write, erase, image 변환을 수행하는 Python 기반 CLI 도구. ESP32/ESP8266 계열 펌웨어 플래싱과 flash 점검에 자주 사용된다.
esptool은 Python 패키지이면서 동시에 standalone CLI로 사용된다.esptool은 framework가 기대하는 major version을 따르는 편이 안전하다.esptool 사용 시 Python 3.10 이상을 요구한다. Python 3.7~3.9는 v4.x, Python 2.7/3.4~3.6은 v3.3.* 계열을 사용하라고 안내한다.
# 기본 설치 pip install esptool # pip 직접 실행이 안 될 때 python -m pip install esptool pip3 install esptool # 가상환경 사용 python -m venv esptoolenv source esptoolenv/bin/activate pip install esptool # 업그레이드 pip install --upgrade esptool # 모듈 형태 실행 python -m esptool version
esptool [OPTIONS] COMMAND [ARGS]...
esptool [OPTIONS] COMMAND [ARGS]…esptool –chip ESP32 –port /dev/ttyUSB0 –baud 460800 write-flash OFFSET FILE…esptool flash-id: SPI flash ID 읽기esptool read-mac: built-in MAC address 읽기esptool write-flash OFFSET FILE…: flash에 binary 기록esptool read-flash ADDRESS SIZE OUTFILE: flash 내용 덤프esptool erase-flash: flash 전체 eraseesptool erase-region ADDRESS SIZE: flash 일부 영역 eraseesptool image-info FILE.bin: image header / segment 정보 확인esptool merge-bin -o OUTFILE OFFSET FILE…: 여러 image 병합esptool elf2image APP.elf: ELF를 flashable binary로 변환–chip CHIP: 대상 칩 지정. 예: ESP32, ESP32-S3–port PORT: serial port 지정. 예: /dev/ttyUSB0, COM5–baud RATE: serial baudrate 지정–before default-reset|no-reset|no-reset-no-sync: 작업 전 reset / sync 동작 제어–after hard-reset|no-reset|no-reset-stub: 작업 후 reset 동작 제어–no-stub: stub loader 업로드 비활성화–port-filter TYPE=VALUE: VID/PID/name/serial 기준 포트 autodetection 필터링# 설치 확인 esptool version python -m esptool version # flash ID 확인 esptool --port /dev/ttyUSB0 flash-id # MAC 주소 읽기 esptool --chip ESP32 --port /dev/ttyUSB0 read-mac # 앱/부트로더/파티션 테이블 플래시 esptool --chip ESP32 --port /dev/ttyUSB0 --baud 460800 \ write-flash 0x1000 bootloader.bin 0x8000 partition-table.bin 0x10000 app.bin # flash 전체 덤프 esptool --port /dev/ttyUSB0 read-flash 0 0x200000 flash.bin # flash 전체 erase esptool --port /dev/ttyUSB0 erase-flash # 이미지 정보 확인 esptool image-info app.bin # 여러 바이너리 병합 esptool --chip ESP32 merge-bin -o merged-flash.bin \ 0x1000 bootloader.bin 0x8000 partition-table.bin 0x10000 app.bin
esptool: command not found: virtual environment 활성화 여부 또는 python -m esptool 형태 실행을 먼저 확인–port 지정, lsusb, dmesg로 USB-serial 장치 이름 확인–before no-reset 또는 boot 버튼을 사용한 수동 bootloader 진입이 필요할 수 있다erase-flash 는 NVS/설정/앱을 모두 지울 수 있으므로 destructive 작업으로 취급한다esptool 바이너리가 없어 로컬 –help 원문은 캡처하지 못했다.