« Headless_RaspberryPiでOpenMediaVault(NASサーバー)を動かす | トップページ | nixieクロックにNTPクライアントの機能を追加する(v2,rpcファーム対応) »

2020年12月21日 (月)

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」カテゴリの記事

Wio Terminal」カテゴリの記事

コメント

この記事へのコメントは終了しました。