Read RTL8720 firmware version from application code

Hi All,
Is there a way for my application to read the firmware version currently running on the RTL8720?
Many thanks,

String theVersion = rpc_system_version();

1 Like

Unfortunately, rpc_system_version() fails with a fresh update to RPC firmware v2.1.0 and the following libraries.

Similarly, WiFi fails to connect.


#include <rpcWiFi.h>

void setup() {
  Serial.println("=== " __FILE__);

void loop() {
  Serial.print("rpc_system_version= ");
  String theVersion = rpc_system_version();


=== >/Users/USER/Documents/Projets/Arduino/Wio_rPC_Release/Wio_rPC_Release.ino

Your sketch is working for me:

12:52:08.300 -> rpc_system_version= 2.1.0
12:52:09.296 -> rpc_system_version= 2.1.0
12:52:10.293 -> rpc_system_version= 2.1.0
12:52:11.324 -> rpc_system_version= 2.1.0

But I am using Seeed_Arduino_mbedtls in dev branch v1.0

If I try to compile with your version of mbedtls I can’t compile:

sp_hardware.c:11:10: fatal error: esp_system.h: No such file or directory
#include <esp_system.h>
^~~~~~~~~~~~~~ -> candidates: []


Hi @reivilo,
did you actualize SAMD Core to the latest version?
Actualize SAMD Core

Yes, it is.

I performed on the two Wio Terminals I have

  • a second flash of the firmware 20201228-seeed-ambd-firmware-rpc-v2.1.0 with the utility,
  • a fresh build and upload of the Seeed_Arduino_rpcWiFi WiFiScan example,

Unfortunately, it fails to run on both Wio Terminals. Any hint?

The Seeed_Arduino_rpcWiFi WiFiScan example freezes at WiFi.mode(WIFI_STA);.

Similar issue for Seeed_Arduino_rpcBLE BLE_scan.

I moved the topic at

Actually I used this code to read the version

char buf[100];
sprintf(buf, “RTL8720 Firmware: %s”, rpc_system_version());

My initialization which works reliable can be seen in the App I’m just working on (PlatformIo IDE):
RoSchmi/AzureDataSender_Wio_Terminal: Wio Terminal sending telemetry data to Azure Storage Tables (

This is very strange,
can it be that you accidently missed to install the actual RTL8720 firmware v2.1.0.
First I falsely deployed always the old firmware when I thought that I could save time omit entering the path of the new firmware. When I followed exactly this Video Tutorial it finally worked:
Wio Terminal Classroom with IoT #1 | Initial Setup and Scan - YouTube

Indeed, very strange.

I used the previous manual procedure with amebad_image_tool instead of the Python script and everything went fine.

It looks like doesn’t check amebad_image_tool actually runs.

Now, both WiFiscan and BLEscan work as expected.

Case solved on my side.

@RoSchmi Thank you very much for your help!


I’m having the same issue. It just freezes at “WiFi.mode(WIFI_STA);”.
The same happens if I do “sprintf(debugText, “RTL8720 Firmware: %.20s”, rpc_system_version());”.
I did the firmware update (version 2.1.2) and libraries update, according to the videos and @RoSchmi advise.
Only difference compared to the video was that, when I was erasing, it didn’t say “Erasing…” but spitted out a lot of text and then “Flashing…” and “Success!”.
Any other ideas on how to solve this. I’m rather stuck here.

Hi @jota3,
did you try the new way for the firmware update?
Overview - Seeed Wiki (

Did you have a look on my application on Github mentioned above in this tread.
The initialization of the board is working on my side with this code, which is quite laborious but works reliably.


I have the same problem : Version return nothing. I suppose there is a problem during the update of the firmware. All my 3 wio have same results.

May you help to give any link of “previous manual procedure with amebad_image_tool” ?

I think the python script has bug (?) on linux : erase dont provide same result because its flashing.

Your help will be really appreciate.