Skip to content

TigerScale V3 v3.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 21:43

v3.0.0

First public release of the V3 firmware, and the first in which over-the-air
updates actually work
. Three separate faults were stopping them, each hidden
behind the previous one, and all three are fixed.

Important

This release changes the flash partition table, so it cannot be installed over
the air.
Flash it once over USB — with the
web installer or
bash scripts/flash.sh --fs — and every update after this one can go over the air.
Your WiFi credentials, TigerTag session and calibration survive: NVS stays exactly
where it was, verified by reading it off a device before and after.

Fixed

Over-the-air updates, end to end. Previously impossible for three reasons:

  • The update manifest pointed at the V2 repository, whose firmware would brick a
    V3 board. Different hardware; it should never have shared a channel.
  • The partition table had one factory app partition and no OTA slot, so the
    ESP-IDF updater had nowhere to write and failed with free=0. There are now two
    4 MB slots in the 16 MB flash that was only half allocated.
  • The download ran inside the async web server's thread, which starved the task
    watchdog and rebooted the board mid-update. It now runs on its own task.

8 MB of PSRAM that were never switched on. BOARD_HAS_PSRAM was missing from the
build, so the Arduino core never initialised it. Every heap_caps_malloc(SPIRAM)
quietly fell back to internal DRAM — including LVGL's 38 KB draw buffer — and the
whole device ran in roughly 300 KB while 8 MB sat idle. Minimum free heap across a
session went from 2 892 bytes to over 120 000. If you have seen unexplained
resets or SSL - Memory allocation failed, this is very likely why.

A boot-time diagnostic that scanned a dead bus. The I²C scan ran against a bus
that cannot work on this board, printing 124 error lines every boot to report
"0 devices". Pointed at the working bus it now finds six — and immediately revealed
two devices nobody had documented, at 0x51 and 0x6B.

Comments that contradicted the code, and 218 mojibake sequences that had eaten
every section marker and accent in the source.

Added

  • Web installer at https://tigertag-project.github.io/Tiger-Scale-V3/ — flash a
    blank board from Chrome, Edge or Opera with no toolchain. Pick your NFC wiring
    first; installing the wrong transport gives a scale that detects no reader.
  • Filesystem updates over the air. The web UI can now be updated alongside the
    firmware, filesystem first, as a single operation with one progress bar.
  • Documentation: wiring diagram, pinout, cloud and privacy, troubleshooting, and
    a postmortem explaining why USB-connected NFC readers cannot work on this board.
  • CI building all five environments with three consistency guards as real gates.

Known issues

  • One binary is published, built for HSU. A unit wired for SPI or I²C that takes
    an over-the-air update loses its reader until reflashed over USB.
  • Nothing tells you an update exists unless you open Settings → Update. There is
    no periodic check and no indicator on the main screen.
  • readWeight() zeroes the weight after 600 ms of missed HX711 samples, which
    can show 0 g on a scale that is working.
  • The local HTTP API is unauthenticated — anyone on your network can read state
    and trigger a tare.
  • The SPI and I²C builds compile and are published, but only HSU has been verified on
    real hardware.

Updating

From any earlier firmware: USB only, because of the partition change.

bash scripts/flash.sh --fs

or use the web installer.

From v3.0.0 onwards: Settings → Update, over the air.