LTE Beacon firmware 0.1.0 release notes

Hey everyone! We have a new LTE Beacon firmware update for you: 0.1.0

Updated micro-app API reference is available at:

Please use this thread for questions and feedback about this update. As always, we’d love to hear your thoughts! :heart:

How do I update?

  • Your LTE Beacons will update automatically during their next sync/heartbeat, unless you’ve disabled Automatic Firmware Update in your LTE Beacon’s settings.
    • You can find and manage the Automatic Firmware Update settings in Estimote Cloud.
    • You can force a sync/heartbeat by pressing the main and side buttons simultaneously for at least 10 seconds.
  • LTE Beacon firmware updates are rolling out incrementally, so if your LTE Beacon doesn’t update, just wait a few more days.

Relase notes

Note that this list isn’t meant to be exhaustive, but it should cover the most notable changes.

  • lte.* functions have been renamed to modem.*
  • sensors.accel.* functions have been renamed to sensors.imu.*
    • comment: We’ve decided to make these names more generic and more “long-term-proof”.
    • This change is backward compatible, the old names will continue to work (for now).

  • added unique prefixes for error codes (e.g., “ESR0203 Not serializable” instead of “Not serializable”)
    • comment: This is the beginning of our effort to improve the developer experience of dealing with errors.
    • This change is NOT backward compatible. If your app relies on specific error message strings, the new prefixes will break it. We know this is inconvenient, but we’re making these changes specifically so that (very soon!) it’ll be easier to handle errors without the anti-pattern of comparing the error message strings.

  • new format of the Bluetooth connectivity packet for the LTE Beacon
    • comment: This packet is what the Web IDE and the Estimote app use to detect and connect to the LTE Beacon. It’s more of an internal change, as we don’t expect developers to be connecting to the LTE Beacon from their own apps, but if for some reason you were using this packet, things might break for you. (If you need to detect the LTE Beacon over Bluetooth, it’s better to make it broadcast an Estimote Location packet, and detect that.)

  • the beacon will now always default to LTE-M, unless the micro-app explicitly changes that via setTech
    • comment: By design, the LTE Beacon doesn’t have any persistent configuration—all the configuration is expected to be performed by the micro-app each time when it starts. Up till now however, setTech configuration was preserved between beacon restarts, which could lead you to believe that you don’t need to keep the setTech code in your app—and then be surprised when a firmware update wipes this setting out. Now, the behavior is consistent with the “no persistent config” design.

  • improved task scheduler
    • comment: This is part of our continuous effort to make the LTE Beacon perform better, especially under heavy load—for example, when syncing hundreds of events.

  • storage and enqueue functions now return the size of the just-stored/queued data
  • new function storage.getStats() to check the storage memory stats (total, used, free)
    • comment: One of the challenges we’re seeing when designing and building micro-apps is being able to estimate how many events or items you can store in the beacon’s persistent memory. These additions should help with that.

  • new function app.getMemStats() to check app memory stats (total, used, free, peak usage)
    • comment: This should help developers writing bigger and more complex micro-apps to check and manage their memory usage better.

  • pressing and holding the side button while pressing the main button 8 times will now restart the beacon
    • comment: No more need to physically unplug the battery to force a reset! (:

  • fixed accelerometer readouts
  • firmware update is now indicated by the side LEDs, instead of the main LED (naturally, this will apply to the next and following updates, not this one)
  • fixed excessive energy usage, triggered under certain circumstances when using GNSS