Skip to content
Branch: master
Find file Copy path
Find file Copy path
1 contributor

Users who have contributed to this file

180 lines (135 sloc) 5.43 KB

IOTA ESP32 Wallet

This is an IOTA Wallet application using IOTA CClient library on ESP32 microcontroller.

Block Diagram


ESP32 build system setup

Please follow documentations to setup your toolchain and development framework.



Notice: We use the ESP-IDF v3.2.2, make sure you clone the right branch of ESP-IDF

git clone -b v3.2.2 --recursive

Now, you can test your develop environment via the hello_world project.

cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world . menuconfig build -p /dev/ttyUSB0 flash && -p /dev/ttyUSB0 monitor

The output would be something like:

I (0) cpu_start: App cpu up.
I (184) heap_init: Initializing. RAM available for dynamic allo
I (191) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (197) heap_init: At 3FFB2EF8 len 0002D108 (180 KiB): DRAM
I (204) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (210) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (216) heap_init: At 40089560 len 00016AA0 (90 KiB): IRAM
I (223) cpu_start: Pro cpu start user code
I (241) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
Hello world!
This is ESP32 chip with 2 CPU cores, WiFi/BT/BLE, silicon revision 1, 4MB external flash
Restarting in 10 seconds...
Restarting in 9 seconds...

You can press Ctrl + ] to exit the monitor and ready for the next setup.

Building and flashing Wallet application to ESP32

Step 1: cloning wallet repository

git clone --recursive

Or (if you didn't put the --recursive command during clone)

git clone
cd iota_esp32_wallet
git submodule update --init --recursive

Step 2: initializing components

The helps us to generate files and switch to the right branch for the components.


cd iota_esp32_wallet
bash ./

Windows: TODO

Step 3: Wallet Configuration

In this step, you need to set up the WiFi, SNTP, IRI node, and SEED. menuconfig
# WiFi SSID & Password
[IOTA Wallet] -> [WiFi]

# SNTP Client
[IOTA Wallet] -> [SNTP]

# Default IRI node
[IOTA Wallet] -> [IRI Node]

You can check configures in sdkconfig file.

Please make sure you assigned the seed(CONFIG_IOTA_SEED), Here is an example for your wallet configuration:


The CONFIG_SNTP_TZ follows the POSIX Timezone string

Step 4: Build & flash build -p /dev/ttyUSB0 flash && -p /dev/ttyUSB0 monitor


I (2230) event: sta ip:, mask:, gw:
I (2230) esp32_main: Connected to AP
I (2240) esp32_main: IRI Node:, port: 443, HTTPS:True

I (2250) esp32_main: Initializing SNTP:, Timezone: CST-8
I (2250) esp32_main: Waiting for system time to be set... (1/10)
I (4260) esp32_main: The current date/time is: Tue Aug  6 12:56:39 2019
IOTA> info
appName IRI Testnet 
appVersion 1.8.0-RC1 
latestMilestoneIndex 1307443 
latestSolidSubtangleMilestoneIndex 1307443 
neighbors 2 
packetsQueueSize 0 
time 1565067405641 
tips 93 
transactionsToRequest 0 

help for more details.
Ctrl + ] to exit.


CONFIG_IOTA_SEED is not set or is invalid:

I (329) esp32_main: iota wallet system starting...
E (329) esp32_main: please set a valid seed in sdkconfig!
I (329) esp32_main: Restarting in 30 seconds...
I (1329) esp32_main: Restarting in 29 seconds...

CONFIG_MAIN_TASK_STACK_SIZE is too small, you need to enlarge it:

***ERROR*** A stack overflow in task main has been detected.
abort() was called at PC 0x4008af7c on core 0
You can’t perform that action at this time.