OTA Updates

Pulsync devices are always OTA-ready. The server offers a build; the device verifies and applies it with rollback protection.

Reporting a version

Set the version your build reports before begin():

Pulsync.setVersion("1.2.3-dev5");   // runtime override

Or via compile flag (PlatformIO):

build_flags = -D PULSYNC_FW_VERSION="1.2.3-dev5"

If both are set, the runtime override wins. Unset falls back to 0.0.0 with a boot warning.

Version format

x.y.z or x.y.z-label, where the label may contain at most one number (1.2.3-dev3 is fine, 1.2.3-dev3.2 is rejected).

Ordering is numeric

Ordering compares up to four integers (major, minor, patch, plus one label counter). Label text is cosmetic — only its number counts:

1.2.3  <  1.2.3-dev1  <  1.2.3-dev2
1.2.4  >  1.2.3-dev9

The golden rule

The version a device reports must match the .bin uploaded for it.

OTA compares reported-vs-offered by string. A mismatch means the device keeps getting offered the same build forever. Bump the version every time you cut a build you intend to deploy.