Catatan reflashing ESP 01 (ESP8266)

Sebagaimana komponen yang lain, di rumah ada beberapa modul/papan ESP 01 yang sudah tidak tersentuh selama beberapa tahun. Sebagai bagian dari pekerjaan yang lebih besar, bulan ini saya lakukan tinkering untuk melakukan pembaruan firmware di papan-papan tersebut. Selain beberapa hal yang terlupa, ternyata (seperti yang bisa diduga) ada juga sejumlah pembaruan mengenai firmware ESP 01. Berikut ini saya buat catatan agar lebih mudah untuk diulangi dan sebagai bagian dari pustaka bebas di Internet yang bisa diakses banyak orang yang ‘mau dan perlu’.

Gambar 1.

Sebelum reflashing

Sebagaimana layaknya, dengan waktu dan sumber daya yang memungkinkan, perlu dilakukan dokumentasi ‘ before & after ‘. Kali ini software yang dipergunakan adalah CuteCom.

Gambar 2.
Gambar 3.
Gambar 4.

Pinout

Gambar 5.
Gambar 6.
Gambar 7.

Firmware

Gambar 8.

Firmware yang dipergunakan di artikel ini adalah Software Development Kit 3.0.5 (SDK 3.0.5).

Note: Espressif has not released a separate version for the 1 MB ESP8285/8266 series of chips, but you can refer to How to Download the Latest Temporary Version of AT Firmware from GitHub and choose to download the 1 MB firmware on the CI (Continuous Integration) of GitHub (Please switch to release/v2.2.0.0_esp8266 branch and download esp8285-1MB-at under the Artifacts page).<span class="su-quote-cite"><a href="https://docs.espressif.com/projects/esp-at/en/release-v2.2.0.0_esp8266/AT_Binary_Lists/ESP8266_AT_binaries.html" target="_blank">About Espressif 1 MB firmware.</a></span>
Gambar 9.

Pada saat artikel ini ditulis salah satu versi yang bisa diunduh (V1.7.5), bisa dilihat di sini. Bisa juga menggunakan “ESP8266 nonOS SDK”  versi v3.0.5. Tampilan di Gambar 8 menunjukkan bahwa yang dipergunakan untuk tinkering ini adalah versi 3.0.5 dan bisa langsung diunduh tautan ini.

Esptool

Saya menggunakan sistem GNU/Linux, berikut sekadar dokumentasi versi GNU/Linux yang sedang dipergunakan saat tinkering ini dilakukan.

[intense_code type=”block”]sunu@sunuMachine:~$ uname -a
Linux sunuMachine 5.4.0-122-generic #138-Ubuntu SMP Wed Jun 22 15:00:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[/intense_code] [intense_code type=”block”]sunu@sunuMachine:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 20.3
Release: 20.3
Codename: una
[/intense_code]

Di sistem Linux, cara yang lebih efektif & efisien untuk melakukan flashing ESP* adalah dengan menggunakan esptool. Berikut perintah untuk melakukan instalasi esptool.

[intense_code type=”block”]sudo apt install esptool [/intense_code]

Untuk mengetahui opsi perintah di esptool, dapat langsung menggunakan perintah esptool di terminal seperti di Gambar 10 berikut ini. Untuk format html, mengenai perintah ESP8266 di esptool bisa dilihat di sini

Gambar 10.

Berikut adalah beberapa contoh untuk memeriksa kondisi ESP 01 sebelum melakukan flashing.

[sourcecode] esptool.py –chip esp8266 –port /dev/ttyUSB0 chip_id
esptool.py –chip esp8266 –port /dev/ttyUSB0 flash_id
[/sourcecode]

Berikut beberapa acuan yang bisa dipergunakan untuk melakukan pengaturan flashing dengan esptool.

Gambar 11. ESP8266 Non-OS SDK IoT_Demo Guide
Gambar 12. ESP8266 AT Instruction Set – Espressif Systems
Gambar 13. ESP8266 Non-OS AT Instruction Set – Espressif Systems

Ada beberapa contoh pengaturan yang bisa dicoba, silakan mengacu kembali ke Gambar 11, Gambar 12, dan Gambar 13.

[intense_code type=”block”] esptool.py –chip esp8266 –port /dev/ttyUSB0 write_flash –flash_size 1MB \
0x00000 boot_v1.7.bin \
0x01000 at/512+512/user1.1024.new.2.bin \
0xfb000 blank.bin \
0xfc000 esp_init_data_default_v08.bin \
0xfe000 blank.bin \
0x7e000 blank.bin
[/intense_code] [intense_code type=”block”] esptool.py –chip esp8266 –port /dev/ttyUSB0 write_flash –flash_size 1MB \
0x00000 boot_v1.7.bin \
0x01000 at/512+512/user1.1024.new.2.bin \
0xfb000 blank.bin \
0xfc000 esp_init_data_default_v08.bin \
0xfe000 blank.bin
[/intense_code] [intense_code type=”block”] esptool.py –chip esp8266 –port /dev/ttyUSB0 write_flash –flash_size 1MB \
0x00000 boot_v1.7.bin \
0x01000 at/512+512/user1.1024.new.2.bin \
0xfc000 esp_init_data_default_v08.bin \
0xfe000 blank.bin \
0x7e000 blank.bin
[/intense_code]

Contoh proses dan hasil eksekusi:
[intense_code type=”block”]

sunu@sunuMachine:/media/sunu/Espressif/ESP 01/ESP8266_NONOS_SDK-3.0.5/bin$ esptool.py –chip esp8266 –port /dev/ttyUSB0 write_flash –flash_size 1MB \
> 0x00000 boot_v1.7.bin \
> 0x01000 at/512+512/user1.1024.new.2.bin \
> 0xfb000 blank.bin \
> 0xfc000 esp_init_data_default_v08.bin \
> 0xfe000 blank.bin \
> 0x7e000 blank.bin
esptool.py v3.1
Serial port /dev/ttyUSB0
Connecting….
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 80:7d:3a:69:73:cc
Uploading stub…
Running stub…
Stub running…
Configuring flash size…
Flash will be erased from 0x00000000 to 0x00000fff…
Flash will be erased from 0x00001000 to 0x00065fff…
Flash will be erased from 0x000fb000 to 0x000fbfff…
Flash will be erased from 0x000fc000 to 0x000fcfff…
Flash will be erased from 0x000fe000 to 0x000fefff…
Flash will be erased from 0x0007e000 to 0x0007efff…
Flash params set to 0x0020
Compressed 4080 bytes to 2936…
Wrote 4080 bytes (2936 compressed) at 0x00000000 in 0.5 seconds (effective 64.4 kbit/s)…
Hash of data verified.
Compressed 413556 bytes to 296998…
Wrote 413556 bytes (296998 compressed) at 0x00001000 in 34.0 seconds (effective 97.2 kbit/s)…
Hash of data verified.
Compressed 4096 bytes to 26…
Wrote 4096 bytes (26 compressed) at 0x000fb000 in 0.3 seconds (effective 130.2 kbit/s)…
Hash of data verified.
Compressed 128 bytes to 75…
Wrote 128 bytes (75 compressed) at 0x000fc000 in 0.0 seconds (effective 33.1 kbit/s)…
Hash of data verified.
Compressed 4096 bytes to 26…
Wrote 4096 bytes (26 compressed) at 0x000fe000 in 0.3 seconds (effective 130.4 kbit/s)…
Hash of data verified.
Compressed 4096 bytes to 26…
Wrote 4096 bytes (26 compressed) at 0x0007e000 in 0.3 seconds (effective 130.4 kbit/s)…
Hash of data verified.

Leaving…
Hard resetting via RTS pin…
[/intense_code]

 

Afterburn

Setelah pembaruan firmware ada beberapa cara untuk memeriksa hasil proses yang sudah dilakukan. Pertama, dengan menggunakan esptool.

[intense_code type=”block”]

sunu@sunuMachine:~$ esptool chip_id
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting….
Detecting chip type… ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 80:7d:3a:69:73:cc
Enabling default SPI flash mode…
Chip ID: 0x006973cc
Hard resetting via RTS pin…

sunu@sunuMachine:~$ esptool flash_id
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting…
Detecting chip type… ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 80:7d:3a:69:73:cc
Enabling default SPI flash mode…
Manufacturer: 85
Device: 6014
Detected flash size: 1MB
Hard resetting via RTS pin…

[/intense_code]

Berikutnya, dalam mode operasional uji coba firmware baru bisa dilakukan dengan menggunakan Moserial. 

Gambar 14. Moserial.
Gambar 15.

Uji coba sebagaimana ditampilkan di Gambar 15 mempergunakan dua perintah terpisah, AT dan AT+GMR. Perintah yang sama juga bisa dicoba dengan menggunakan ESPlorer sebagaimana di Gambar 16.

Gambar 16. ESPlorer.

Reference Docs: