wio-terminalのファームウェア・アップデートについて(v2)(linux版)
2020/12/21
初版
wio-terminal firmware update(v2) (linux)
wio-terminal firmware update(v2) (linux)
概要
wio-terminalのファームウェア・アップデートについて(v2)(linux版)
RTL8720ファームウェアの最新版(v2.0.4)でWiFi/BLEの両方に対応したので
そのファームウェアのアップデートの方法について述べる。
注意:
今回のアップデートでヘッダーファイルが変更になっているのでプログラムを作成するときは注意のこと。
基本的には、ヘッダー<AtWifi.h>をヘッダー<rpcWiFi.h>を置き換えるだけで互換性が保てるらしい。
手順
以下を実行する:
mkdir wio-terminal
cd wio-terminal
mkdir firmware
cd firmware
# 必要なファイルをダウンロード&解凍する:
wget http://files.seeedstudio.com/wiki/Wio-Terminal/res/rtl8720_update_v2.uf2
wget https://github.com/Seeed-Studio/seeed-ambd-firmware/releases/download/v2.0.4/20201216-seeed-ambd-firmware-rpc-v2.0.4-JP.zip
unzip 20201216-seeed-ambd-firmware-rpc-v2.0.4-JP.zip
wget https://github.com/LynnL4/ambd_flash_tool/archive/master.zip
unzip master.zip
# wio-terminalをUSB接続する
# wio-terminalの電源スイッチを素早く2度押す(bootloader-modeにする)
# Arduinoのディレクトリが出現する(以下のUSERは自分の環境に合わせる)
cp rtl8720_update_v2.uf2 /media/USER/Arduino/
# ここで、wio-terminalのスケッチが書き込まれる
cd ~/wio-terminal/firmware/ambd_flash_tool-master/
python3 ambd_flash_tool.py erase
python3 ambd_flash_tool.py flash -d ~/wio-terminal/firmware/
以上の手順でファームウェア・アップデートが完了する。
実行例
$ cd ~/wio-terminal/firmware/
$ cp rtl8720_update_v2.uf2 /media/USER/Arduino/
$ cd ~/wio-terminal/firmware/ambd_flash_tool-master
$ python3 ambd_flash_tool.py erase
Erasing...
All images are sent successfully!
Image tool closed!
Success!
# 意外と時間がかかるので、辛抱強く待つ。
$ python3 ambd_flash_tool.py flash -d ~/wio-terminal/firmware/
copy img to workspace...
Flashing...
All images are sent successfully!
Image tool closed!
Success!
# ここでファームウェアの書き込みが終了する
動作確認
platformioで以下の設定でビルド実行する:
platformio.ini
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:seeed_wio_terminal]
platform = atmelsam
board = seeed_wio_terminal
framework = arduino
build_flags = -DWIO_TERMINAL
lib_deps =
https://github.com/Seeed-Studio/Seeed_Arduino_FreeRTOS/archive/master.zip
https://github.com/Seeed-Studio/Seeed_Arduino_mbedtls/archive/dev.zip
https://github.com/Seeed-Studio/Seeed_Arduino_rpcUnified/archive/master.zip
https://github.com/Seeed-Studio/Seeed_Arduino_rpcBLE/archive/master.zip
https://github.com/Seeed-Studio/Seeed_Arduino_rpcWiFi/archive/master.zip
https://github.com/Seeed-Studio/Seeed_Arduino_FS/archive/master.zip
https://github.com/Seeed-Studio/Seeed_Arduino_SFUD/archive/master.zip
lib_ldf_mode = deep+
src/main.ino
/*
This Sketch is a combination of WiFi Scan and BLE Scan example provided by SeeedStudio
*/
#include <rpcWiFi.h>
#include <rpcBLEDevice.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>
int scanTime = 5; //In seconds
BLEScan* pBLEScan;
class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
void onResult(BLEAdvertisedDevice advertisedDevice) {
Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str());
}
};
void setup()
{
Serial.begin(115200);
// Set WiFi to station mode and disconnect from an AP if it was previously connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
BLEDevice::init("");
pBLEScan = BLEDevice::getScan(); //create new scan
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
pBLEScan->setInterval(100);
pBLEScan->setWindow(99); // less or equal setInterval value
Serial.println("Setup done");
}
void loop()
{
Serial.println("scan start");
// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0) {
Serial.println("no networks found");
} else {
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i) {
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? " " : "*");
delay(10);
}
}
Serial.println("");
BLEScanResults foundDevices = pBLEScan->start(scanTime, false);
Serial.print("Devices found: ");
Serial.println(foundDevices.getCount());
Serial.println("Scan done!");
pBLEScan->clearResults(); // delete results fromBLEScan buffer to release memory
delay(2000);
// Wait a bit before scanning again
delay(5000);
}
出力例:
picocom --imap lfcrlf -b115200 /dev/ttyACM0
scan start
scan done
9 networks found
1: 2xxxxxxxxxxxxxxxxxx (-63)*
2: ryyyyyyyyyyyyyy (-83)*
3: rzzzzzzzzzzzzzz (-83)*
4: 5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (-87)*
5: 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (-87)*
6: 0xxxxxxxxx (-88)*
7: Hxxxxxx (-91)*
8: axxxxxx (-93)*
9: 9xxxxxxxxxxx (-94)*
Advertised Device: Name: , Address: c7:50:1b:ef:f3:78
Advertised Device: Name: , Address: 52:5c:26:a4:76:7a
Advertised Device: Name: , Address: c8:72:2d:5d:21:34, serviceUUID: <NULL>
Advertised Device: Name: , Address: fa:65:0f:f8:d9:53
Advertised Device: Name: , Address: e9:99:fc:aa:18:64
Advertised Device: Name: , Address: a5:75:b2:a9:31:1c
Devices found: 6
Scan done!
以上のような出力が出れば動作確認としてOKとなる。
ファームウェア・バージョン確認スケッチ
rpcVersion.ino
#include "seeed_rpcUnified.h"
#include "rtl_wifi/wifi_unified.h"
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("hey");
Serial.println(rpc_system_version());
}
これを実行するとファームウェアのバージョンが出力される。
参考情報
https://www.hackster.io/Salmanfarisvp/the-new-wio-terminal-erpc-firmware-bfd8bd
The New Wio Terminal eRPC Firmware
https://lab.seeed.co.jp/entry/2020/11/12/120000
2020-11-12 Wio Terminalの新しいRTL8720ファームウェアをリリースしました
https://forum.seeedstudio.com/t/using-other-mbedtls-cryptographic-function-together-with-rpcwifi-library/255232
Using other mbedtls cryptographic function together with rpcWiFi library
https://wiki.seeedstudio.com/Wio-Terminal-Wi-Fi/
Wi-Fi Connectivity
https://wiki.seeedstudio.com/Wio-Terminal-Advanced-Wi-Fi/
Advanced Wi-Fi Usage
以上
| 固定リンク
« Headless_RaspberryPiでOpenMediaVault(NASサーバー)を動かす | トップページ | nixieクロックにNTPクライアントの機能を追加する(v2,rpcファーム対応) »
「PlatformIO」カテゴリの記事
- NuEVI/NuRADのビルド(2022.08.18)
- Wio_ExtFlashLoad(WriteSampleMenu.ino)スケッチをplatformioでビルドする(2022.02.03)
- uncannyeyesスケッチをplatformioでビルドする(2022.01.31)
- LovyanGFX-Display ライブラリを使用したスケッチをplatformioでビルドする(2022.01.30)
- Wio-Terminal/M5Core2のWiFiAnallyzer(2022.01.24)
「Wio Terminal」カテゴリの記事
- Wio_ExtFlashLoad(WriteSampleMenu.ino)スケッチをplatformioでビルドする(2022.02.03)
- Wio-TerminalでMQTTを動かす(2022.01.20)
- wio-terminalでGROVEを使う(2022.01.17)
- nixieクロックにNTPクライアントの機能を追加する(V2)(2021.02.18)
- Wio-Terminal/M5Atom/ESP8622/ESP32ボードを共通のスケッチで動かす(v2)(STARWARS編)(2020.12.28)
この記事へのコメントは終了しました。
コメント