# ESP8266(ESP-12E, ESP-12F) Firmware Update

**URL:** https://forum.ficusonline.com/t/esp8266-esp-12e-esp-12f-firmware-update/33
**Category:** ESP
**Created:** [2016 年 10 月 11 日午前 9:18 UTC](https://forum.ficusonline.com/t/esp8266-esp-12e-esp-12f-firmware-update/33 "2016-10-11T09:18:01Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![tk-fuse](https://forum.ficusonline.com/user_avatar/forum.ficusonline.com/tk-fuse/32/255_2.png) [@tk-fuse](https://forum.ficusonline.com/u/tk-fuse)
#### Post date: [2016 年 10 月 11 日午前 9:18 UTC](https://forum.ficusonline.com/t/esp8266-esp-12e-esp-12f-firmware-update/33/1 "2016-10-11T09:18:01Z")

</div>

ESP8266のファームアップデートの方法は幾つかあるようですが、ESP8266製造元の公式ツールFlash Download Tool(Windows版のみ)と、esptool(Linux, OSX)などが利用されているようです。

Windowsによる[Flash Download Tool](http://www.espressif.com/en/support/download/other-tools)  
Python [esptool](https://github.com/themadinventor/esptool) (Linux, OSX)  
[esptool-ck](https://github.com/igrr/esptool-ck) (WIndows, Linux, OSX ソースコード コンパイル必須)  
Windowsは普段使用しないのですが、公式ツールであることから、上記1にてファームのアップデート（アップロード）を試みました。

シリアル通信にてPCと接続します。アップロード時の配線は通常のコードアップロード時の条件と同じで以下の図のようになります。

 ![](https://forum.ficusonline.com/uploads/default/original/1X/79be8cb49a41603a48175e79d3c2a7a9e5d0ec6f.PNG)

図のようにCH\_PD、RST端子に何も接続しなくても、GPIO0をGNDに接続してON/OFFすれば書き込みモードになります。

リンク先からFlash Download Toolをダウンロードしインストールします。ファームのダウンロードは[Latest SDK](http://bbs.espressif.com/viewtopic.php?f=46&t=850)からNon-OS-SDKをダウンロードします。

ダウンロードしたファームを任意のフォルダ内に解凍します。

アップロードするファームはESP内の指定アドレス毎に幾つか存在するため、予めダウンロードしたファームの **at** フォルダ内の **README** を開いておいて下さい。  
（binファイル名と指定アドレスが必要ですので、ここで確認します）

```
BOOT MODE

download

Flash size 8Mbit: 512KB+512KB

boot_v1.2+.bin 0x00000
user1.1024.new.2.bin 0x01000
esp_init_data_default.bin 0xfc000 (optional)
blank.bin 0x7e000 & 0xfe000
Flash size 16Mbit: 512KB+512KB

boot_v1.2+.bin 0x00000
user1.1024.new.2.bin 0x01000
esp_init_data_default.bin 0x1fc000 (optional)
blank.bin 0x7e000 & 0x1fe000
Flash size 16Mbit-C1: 1024KB+1024KB

boot_v1.2+.bin 0x00000
user1.2048.new.5.bin 0x01000
esp_init_data_default.bin 0x1fc000 (optional)
blank.bin 0xfe000 & 0x1fe000
Flash size 32Mbit: 512KB+512KB

boot_v1.2+.bin 0x00000
user1.1024.new.2.bin 0x01000
esp_init_data_default.bin 0x3fc000 (optional)
blank.bin 0x7e000 & 0x3fe000
Flash size 32Mbit-C1: 1024KB+1024KB

boot_v1.2+.bin 0x00000
user1.2048.new.5.bin 0x01000
esp_init_data_default.bin 0x3fc000 (optional)
blank.bin 0xfe000 & 0x3fe000

```

Flash Download Toolを起動し、アップロードするファームのbinファイル（パスは画像参照）とメモリアドレスを指定しますが、メモリアドレスはESPのモデル毎で異なります。

シリアルで接続されたESPモデルの情報を読み取ります。  
Download Path Configの指定binファイルのチェックが外れている状態でSTARTボタンを押し、シリアルで接続されたESP8266の各種情報を読み取ります。

 ![](https://forum.ficusonline.com/uploads/default/original/1X/a297e7d0365f847ca5fd9d68d30d037f514d3e40.PNG)

フラッシュメモリのサイズQUAD:32Mbit=4MBですので、指定アドレスは、

Flash size 32Mbit: 512KB+512KB

```
boot_v1.2+.bin 0x00000
user1.1024.new.2.bin 0x01000
esp_init_data_default.bin 0x3fc000 (optional)
blank.bin 0x7e000 & 0x3fe000

```

となります。

ここで一度リセットボタンを押すか電源OFF/ONします。

binファイルのパスとアドレスを指定し、Download Config Path、SipAutoSetのチェックをしSTARTボタンを押してアップロードをスタートします。

 ![](https://forum.ficusonline.com/uploads/default/original/1X/bdf753134bdd03a616598c49b23b63b885877439.PNG)

アップロードが完了したらPuttyなどのシリアル通信ソフトでATコマンドが有効になっているかどうか確認します。

 ![](https://forum.ficusonline.com/uploads/default/original/1X/d715122717faef7b2a4e976b0e43103a51397894.PNG)

AT+リターン Ctrl+Jで入力確定しOKが出力されれば成功です。

**＜補足＞ ESP8266 USING GPIO0/GPIO2/GPIO15 PINS**

> **[ESP8266 Using GPIO0/GPIO2/GPIO15 Pins](https://www.instructables.com/ESP8266-Using-GPIO0-GPIO2-as-inputs/)**
>
> ESP8266 Using GPIO0/GPIO2/GPIO15 Pins: Updated 24th December 2021 – added note on preventing GOIO0 relay flicker on startupUpdate 1st July 2018 -- Added note on re-programming when GPIO0 is an output
> This is a very short note on how to use GPIO0 /...

 ![esp-12_gpio_setting](https://forum.ficusonline.com/uploads/default/original/1X/2b95e8aa436128b8a36dbaa4ac687afe5d35807c.jpeg)

---

<div class="post-metadata">

### Author: ![tk-fuse](https://forum.ficusonline.com/user_avatar/forum.ficusonline.com/tk-fuse/32/255_2.png) [@tk-fuse](https://forum.ficusonline.com/u/tk-fuse)
#### Post date: [2018 年 2 月 2 日午後 1:43 UTC](https://forum.ficusonline.com/t/esp8266-esp-12e-esp-12f-firmware-update/33/2 "2018-02-02T13:43:53Z")

</div>

Ubuntuによるファームのアップデートにはpythonによるesptoolが便利です。

**注）ESP用電源は専用のものを準備してUSBーシリアルコンバータとグランドを共通にします。USBの電源だけでも書き込みは完了しますが動作エラーが多発します。ArduinoIDEによるファームのアップロードの際も同様です。**

> **[GitHub - espressif/esptool: Serial utility for flashing, provisioning, and...](https://github.com/espressif/esptool#entering-the-bootloader)**
>
> Serial utility for flashing, provisioning, and interacting with Espressif SoCs

まずpythonのパッケージマネージャpipをインストールします。

pyhton3をインストールしている場合には、

> $ sudo apt-get install python3-pip

次にesptoolをインストールします。

> $ sudo -H pip3 install esptool

フラッシュメモリを消去します。ポートの指定は必要ありません。

> $ sudo esptool.py erase\_flash

一度リセットしてから上の記事でダウンロードしたファームをアップロードします。他のソフトでシリアル接続している場合はエラーとなります。

> $ sudo esptool.py --port /dev/ttyUSB0 write\_flash --flash\_mode dio --flash\_size 4MB 0x00000 boot\_v1.7.bin 0x01000 user1.1024.new.2.bin 0x3fc000 esp\_init\_data\_default\_v08.bin 0x7e000 blank.bin 0x3fe000 blank.bin

シリアルポートと開始アドレスなどを指定してファームを書き込みます。  
ここでのファームはATコマンドによる通信ファームでファクトリー出荷時と同等となりますが、バージョンは最新のものとなっています。ArduinoIDEのシリアルモニタでATコマンドを入力して動作を確認して下さい。
