-
Notifications
You must be signed in to change notification settings - Fork 5
Development ‐ Arduino IDE hints
Firstly, of course, you really should be making the move to Platform IO rather than Arduino IDE. Frugal IoT is developed and tested on Platform IO, and, as far as I know, all the contributing developers are using it. Most of us feel like going back to Arduino IDE would be tying one hand behind our backs!
But .... here are some hints for those still on Arduino IDE.
Please note, I'm a Mac user, and do not have access to a Windows or Linux box to test. I welcome additions to these docs to cover those cases.
Go the Library Manager, and search for Frugal-IoT, make sure it is installed, and/or Updated.
Depending on which boards you are using, you need the ESP32 by Espressif and/or ESP8266 by ESP8266 community
These SHOULD be in the Boards Manager already, if not then go to (on Mac) Arduino IDE-> Settings -> Additional boards manager and add http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://espressif.github.io/arduino-esp32/package_esp32_index.json then try again.
There is a big on Arduino where it times out in a short time, which will most likely trigger unless you are on a really fast internet connection. For some reason Arduino developers are unkeen to fix this, and the workaround is posted here look for comment #7. Editing the arduino-cli.yaml as suggested worked for me.
The default partition scheme is a 1.2Mb app, and 1.5Mb spiffs. Some of the Frugal-IoT builds can be bigger than 1.2Mb, especially if using LoRaMesher, none of the other partition options are appropriate (don't use any of the No OTA options, as it will stop your board auto-updating).
Theoretically you can copy a file into partitions.csv in your Sketch directory - As of Feb 2026 I have not been able to get this to work.
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x1E0000,
app1, app, ota_1, 0x1F0000,0x1E0000,
spiffs, data, spiffs, 0x3D0000,0x20000,
coredump, data, coredump,0x3F0000,0x10000,
I'm working from info at https://www.reddit.com/r/esp32/comments/1gnlp9h/esp32s3_partition_tables_and_optimizing_memory/ and elsewhere. But it does not seem to work.
Arduino doesn't, unlike modern dev environments, have global #defines, which are widely used to control Frugal-IoT compilation in platformio.
_settings.h includes (for Arduino only) platform.h
platform.h is automatically built by scripts/generate_platform_h from platformio.ini. This is typically done during the release process, but you can run it manually from within your Sketch directory.
Since these files are auto-generated, they will mostly not be tested on Arduino. Feel free to raise a new issue if you run into problems.
The exact definitions loaded from platform.h are determined by the board you select.
A few of the examples have multiple versions for the same board. This will probably NOT work with the automatically generated platform.h and will require some debugging.