ESP8266をWifiモデムとして使う

Espressif版AT-Firmwareの自動アップデート


Espressif版のAT-FirmwareのREADME.mdを見ていたら、ファームウェアの自動アップデートのやり方が書かれていまし た。
そこで、本当に自動アップデートできるのかどうか試してみました。
まず、最初にこ ちらからAT version1.3.0.0のファームを落として書き込みます。
以下は自動アップデートのログです。
ファームの更新が終わるとAPを切断し、リセットが掛かります。
リセット後に確認するとAT Version1.3.0.0→1.5.0.0に自動更新されています。
AT+GMR
AT version:1.3.0.0(Jul 14 2016 18:54:01)
SDK version:2.0.0(656edbf)
compile time:Jul 19 2016 18:44:44
OK
AT+CWMODE=3

OK
AT+CWJAP="aterm-e625c0-g","xxxxxxxxxx"
WIFI CONNECTED
WIFI GOT IP

OK
AT+CIFSR
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"62:01:94:0e:5b:28"
+CIFSR:STAIP,"192.168.10.108"
+CIFSR:STAMAC,"60:01:94:0e:5b:28"

OK
AT+CIUPDATE
+CIPUPDATE:1
+CIPUPDATE:2
+CIPUPDATE:3
+CIPUPDATE:4

OK
WIFI DISCONNECT

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 816, room 16
tail 0
chksum 0x8d
load 0x3ffe8000, len 788, room 8
tail 12
chksum 0xcf
ho 0 tail 12 room 4
load 0x3ffe8314, len 288, room 12
tail 4
chksum 0xcf
csum 0xcf

2nd boot version : 1.2
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size : 8Mbit
jump to run user2

ready
WIFI CONNECTED
WIFI GOT IP
AT+GMR
AT version:1.5.0.0(Oct 24 2017 12:03:18)
SDK version:2.1.0(ace2d95)

compile time:Oct 24 2017 15:48:04
Bin version(Wroom 02):1.5.1
OK

これは素晴らしいです。

試しにAi-Thinker版のAT-Firmware SDK Version1.3.0(v1.3.0.2 AT Firmware.bin)で試してみました。
AT+GMR
AT version:0.40.0.0(Aug  8 2015 14:45:58)
SDK version:1.3.0

Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK
AT+CWMODE=3

OK
AT+CWJAP="aterm-e625c0-g","xxxxxxxxxxx"
WIFI CONNECTED
WIFI GOT IP

OK
AT+CIFSR
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"62:01:94:0e:5b:28"
+CIFSR:STAIP,"192.168.10.108"
+CIFSR:STAMAC,"60:01:94:0e:5b:28"

OK
AT+CIUPDATE
+CIPUPDATE:1

ERROR

ERROR

次にAi-Thinker版のAT-Firmware SDK Version2.0.0(v2.0 AT Firmware(ESP).bin)で試してみました。
AT+GMR
AT version:1.3.0.0(Jul 14 2016 18:54:01)
SDK version:2.0.0(656edbf)

compile time:Jul 19 2016 18:44:44
OK
AT+CWMODE=3

OK
AT+CWJAP="aterm-e625c0-g","xxxxxxxxxx"
WIFI CONNECTED
WIFI GOT IP

OK
AT+CIFSR
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"62:01:94:0e:5b:28"
+CIFSR:STAIP,"192.168.10.108"
+CIFSR:STAMAC,"60:01:94:0e:5b:28"

OK
AT+CIUPDATE
+CIPUPDATE:1
+CIPUPDATE:2
+CIPUPDATE:3
+CIPUPDATE:4

OK
WIFI DISCONNECT

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 2408, room 16
tail 8
chksum 0xe5
load 0x3ffe8000, len 776, room 0
tail 8
chksum 0x84
load 0x3ffe8310, len 632, room 0
tail 8
chksum 0xd8
csum 0xd8

2nd boot version : 1.6
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user2 @ 81000


ready
WIFI CONNECTED
WIFI GOT IP
AT+GMR
AT version:1.5.0.0(Oct 24 2017 12:03:18)
SDK version:2.1.0(ace2d95)

compile time:Oct 24 2017 15:48:04
Bin version(Wroom 02):1.5.1
OK

あれれ!!!
v2.0 AT Firmware(ESP).binは単一ファイル形式のファームウェアですが中身はEspressif版の様です。
きっと誰かがEspressif版のファームを単一形式に変換して公開しているのでしょう。

つまり、Ai-Thinker版/Espressif版という区別は正しくなくて、Single-File-Format/Multi- File-Formatということになります。
さらに上のログを注意深く見てみると、リセット後の「2nd boot version : x.x」の表示が違っています。

Multi- File-Formatの最新ファームには以下のファイルが含まれています。
boot_v1.2.bin
boot_v1.6.bin
boot_v1.7.bin

調べてみると、これらのファイルは「secondary boot loader」とか「second-stage bootloader」と呼ばれていることが分かりました。
今までは何も考えずに「boot_v1.2.bin」を指定して作成していました。
おそらくSingle-File-FormatのSDK Version2.0.0には「boot_v1.6.bin」が組み込まれているのだと思います。
この違いを調べてみると、こ ちらのページに

6.Updated secondary boot loader to v1.6:
i.Supports AT + based on SDIO;
ii.Supports entering testing mode through GPIO.

と書かれています。
選ぶファイルにより機能が違うのでしょうが、難しそうなので深く追求していません。
ESP8266のATファーム、奥が深いです。



2018年2月6日にAT version1.6.0がリリースされています。
たまたま当日(2月6日)に自動アップデートを行って分かりました。
espressifの公 式ページではESP8266 AT Bin V1.6として公開されています。
リリースノートによると、AT+SYSMSG AT+CWCOUNTRY AT+CIPSERVERMAXCONNなどのコマンドが追加されていますが、今一つ使い方がわかりません。
1. Update AT version to 1.6.0.0;
2. Add a new command AT+SYSMSG to enable some report information;
3. Add a new command AT+CWCOUNTRY ;
AT+CWCOUNTRY=<country_policy>,"country_code",<start_channel>,<total_channel_number>
4. Add new command AT+CIPSERVERMAXCONN ;
AT+CIPSERVERMAXCONN=<num>
5. Update command AT+CWLAP ;
AT+CWLAP =<ssid>[,<mac>,<ch>,<scan_type>,<scan_time_min>,<scan_time_max>]
6. Update command AT+CWLAPOPT ;
Mask changes from 0x7F to 0x7FF
7. Optimize tcp server by using new espconn_recv ;
8. Fix an issue that getting error irom string when print messages after upgrade;
9. Fix an issue that baudrate is not correctly set when it was set at 1,200;
10. Fix an issue that it should return error if the link id is wrong;
11. Fix an issue that DNS auto mode is used by default;
12. Fix a wrong link id issue when client connection number reaches maximum;
AT+GMR
AT version:1.6.0.0(Feb  3 2018 12:00:06)
SDK version:2.2.0(f28eaf2)
compile time:Feb  6 2018 14:36:23
Bin version(Wroom 02):1.6.0
OK

AT+SYSMSG_CUR=0

ERROR

AT+CWCOUNTRY_CUR?
+CWCOUNTRY_CUR:0,"CN",1,13

OK




2018年2月13日にV1.6.1がリリースされています。
SDK versionだけが2.2.0→2.2.1に上がっています。
リリースノートには、
1. Fix an issue that light sleep current is larger than before.
と書かれています。
AT+GMR
AT version:1.6.0.0(Feb  3 2018 12:00:06)
SDK version:2.2.1(f42c330)
compile time:Feb 12 2018 16:31:26
Bin version(Wroom 02):1.6.1





2018年6月8日にV1.6.2がリリースされています。
リリースノートには、
1. Fix station connecting behavior after upgrading from an old version.
2. Fix wrong SSID query when the length of SSID is 32 bytes.
3. Optimize AT+CIUPDATE behavior.
と書かれています。

AT version1.6.0で追加されたコマンドも使い方がよくわからないので、AT version1.5.0で一応の完成ではないでしょうか。
AT+GMR
AT version:1.6.2.0(Apr 13 2018 11:10:59)
SDK version:2.2.1(6ab97e9)
compile time:Jun  7 2018 19:34:26
Bin version(Wroom 02):1.6.2