How many binaries should I build?
Posted: Fri Sep 08, 2023 1:47 am
Hello, I am new to ESP32 development. I have created a tool for ESP8266 which I recently ported to ESP32.
My users are not always able to compile binaries by themselves, so I distribute compiled binaries that they flash to their device using GUI tools.
On ESP8266 I used to compile one binary which seemed to work for most users.
On ESP32, I have compiled a binary for my ESP32 Dev Module, which I then distributed. Some people complained that it didn't work at all for them, and it appears that it's because they have an ESP32-S2?
Again, I am very new to this ecosystem, but I'm trying to understand how many binaries I need to build in order to have compatibility for most devices. I'm using Arduino IDE, and I'm assuming (maybe wrongly) that I don't have to compile one version for every single board on the list, there has to be one (or two, or three) "lowest common denominator" that will be compatible with most models? My code doesn't (AFAIK) do anything that is device specific.
Would it be enough for example to compile one version for ESP32, one for ESP32-S2, and one for ESP32-S3? Is there some documentation that explains why some binaries are not compatible with some devices (different CPU architecture?)? This feels so convoluted compared to my ESP8266 experience...
Looking at Tasmota's binary releases ( http://ota.tasmota.com/tasmota32/release/ ), they have releases for 5 families of devices
32
32c3
32s2
32s3
32solo1
Would that be considered the right amount? Or are there ways to build a single binary that works on all ESP32* devices?
Or is the general expectation that distributing binaries is not "how" it should be done for ESP32, and my users should learn how to build binaries for their own devices?
My users are not always able to compile binaries by themselves, so I distribute compiled binaries that they flash to their device using GUI tools.
On ESP8266 I used to compile one binary which seemed to work for most users.
On ESP32, I have compiled a binary for my ESP32 Dev Module, which I then distributed. Some people complained that it didn't work at all for them, and it appears that it's because they have an ESP32-S2?
Again, I am very new to this ecosystem, but I'm trying to understand how many binaries I need to build in order to have compatibility for most devices. I'm using Arduino IDE, and I'm assuming (maybe wrongly) that I don't have to compile one version for every single board on the list, there has to be one (or two, or three) "lowest common denominator" that will be compatible with most models? My code doesn't (AFAIK) do anything that is device specific.
Would it be enough for example to compile one version for ESP32, one for ESP32-S2, and one for ESP32-S3? Is there some documentation that explains why some binaries are not compatible with some devices (different CPU architecture?)? This feels so convoluted compared to my ESP8266 experience...
Looking at Tasmota's binary releases ( http://ota.tasmota.com/tasmota32/release/ ), they have releases for 5 families of devices
32
32c3
32s2
32s3
32solo1
Would that be considered the right amount? Or are there ways to build a single binary that works on all ESP32* devices?
Or is the general expectation that distributing binaries is not "how" it should be done for ESP32, and my users should learn how to build binaries for their own devices?