Skip to content

Releases: golioth/golioth-firmware-sdk

v0.13.1

31 May 16:26
Compare
Choose a tag to compare

Fixed:

  • Infinite loop in OTA manifest observation retry logic that occurred
    when retries were exhausted.
  • Documentation: update links to Stream service

Changed

  • Registering an OTA manifest observation will be retried until
    successful, with a delay that doubles after each unsuccessful attempt.
    Use CONFIG_GOLIOTH_FW_OBSERVATION_RETRY_MAX_DELAY_MS to configure the
    maximum delay (defaults to 5 minutes).

v0.13.0

28 May 17:09
Compare
Choose a tag to compare

Breaking Changes:

  • Added content type parameter to golioth_lightdb_observe_async().
    Previously this defaulted to JSON. Existing projects can add
    GOLIOTH_CONTENT_TYPE_JSON as the third param of this API call to
    replicate behavior prior to this change.

Highlights:

  • Added the ability to cancel RPC and Settings observations
  • Updated Stream example and documentation to show usage of Golioth's
    Pipelines feature.
  • Exposed additional APIs for downloading OTA components.
    • This can be used to implement more complex update scenarios in the user
      application (i.e. outside of the SDK).
    • Note that users who choose to implement their own update logic will need to
      manage applying the update and reporting state back to Golioth, tasks which
      are handled by the built-in, but more limited, firmware update module in
      the SDK.

Added:

  • Stream example for ESP-IDF
  • Stream service now accepts binary (OCTET_STREAM) data
  • Log on failure to send settings response
  • Add retry logic to firmware update block download
  • Settings response length is now configurable
  • New Blockwise Transfer module, for CoAP blockwise uploads and downloads
  • Add support to the CoAP client for eager release of observations
  • RPC: add ability to cancel observations
  • Settings: add ability to cancel observations
  • Added support for resolving IPv6 addresses on Thread networks
  • Added golioth_ota_download_component() API to OTA service

Fixed:

  • Fixed swapped sync/async messages in Stream example
  • Stream example now works correctly with on-board temperature sensors
  • Target version is now set when reporting OTA status to UPDATING
  • Fixed memory leak when maxing out observations
  • LightDB State gets of JSON objects would strip leading and trailing
    curly brackets
  • Fixed potential buffer overflow during string copy
  • Removed unused Kconfig symbols

Changed

  • Kconfig: reorganized how Kconfig options are presented in the
    menuconfig interface.
  • Use CBOR in Stream example instead of JSON
  • Contribution and Style guides have been updated

v0.12.2

03 May 03:30
Compare
Choose a tag to compare

Removed:

  • Removed automatic ESP-IDF logging - this will be reintroduced in a future
    release with more configuration options.

Added:

  • Improved "client not running" error logs with additional context

Fixed:

  • Zephyr: Fix crash when repeatedly stopping and starting the client
  • Zephyr: Fix up to 10 second delay when stopping client
  • Zephyr: Fixed hang when attempting to stop an already stopped client
  • Fixed dropped function call when assert() is disabled
  • Return error instead of crashing on NULL input

v0.12.1

22 Apr 18:10
Compare
Choose a tag to compare

Added:

  • ESP-IDF: added ability to send native logging system messages to the
    Golioth remote logging service.

Changed:

  • OTA firmware update observation will retry multiple times when failing
    to register.
  • Status added to the CoAP request struct for passing error codes.

Fixed:

  • Zephyr: correctly handle the client connection stop command.
  • Zephyr: reestablish observations after reconnect.

v0.12.0

15 Apr 19:26
Compare
Choose a tag to compare

Breaking Changes:

  • Previously, it was possible to implicitly include default Kconfig
    settings from the Zephyr examples into client applications. This was
    unintentional and has been fixed. As a result, if your application was
    relying on those defaults, you'll now need to set those Kconfig values
    explicitly in your application.

Added:

  • Add socket hello_nrf91_offload Zephyr example to demonstrate DTLS
    sockets offload.
  • Zephyr: add rak5010_nrf52840 support to all examples
  • ESP-IDF: add fw_update example to demonstrate OTA firmware update
  • ESP-IDF: add settings example to demonstrate device settings service

Changed:

  • Zephyr: example code now explicitly sources Kconfig.defconfig file to
    select necessary Kconfig symbols from the example common files.
  • Zephyr: update runtime settings in examples to take effect without
    needing a reboot
  • Update libcoap version to v4.3.4a

Fixed:

  • Documentation updates
  • Certificate Provisioning: Increase nRF52840 network buffers to avoid
    failing handshakes

v0.11.1

20 Mar 21:30
Compare
Choose a tag to compare

Known Issues:

  • Default Kconfig values may not propagate correctly if the Golioth SDK
    is not listed first in the West manifest. To workaround this, ensure
    that Golioth is listed first in your application's manifest.

Added:

  • CONFIG_GOLIOTH_RPC_MAX_RESPONSE_LEN to control the size of the buffer
    used to hold the RPC response

Changed:

  • Improved how the Golioth Zephyr log backend handles network disconnects
    to avoid interfering with the application's control of logging levels
  • Removed default dependency on floating point support

Fixed:

  • Enable log shell commands in Zephyr Certificate Provisioning example
  • Build error when compiling with NCS and without newlib
  • Correctly handle TOO_MANY_REQUESTS responses from the server in NCS

Release 0.11.0

14 Mar 13:56
Compare
Choose a tag to compare

Highlights

  • Zephyr port updated to Zephyr v3.6
  • NCS port updated to NCS v2.5.2
  • ESP-IDF port updated to ESP-IDF v5.2.1
  • New examples for ESP-IDF
  • Initial support for native_sim target in Zephyr

Added:

  • New examples for ESP-IDF: hello, rpc, lightdb state
  • Additional hardware-in-the-loop integration tests
  • west patch command for applying git patches
  • native_sim support (requires patches on top of Zephyr v3.6)
  • nRF91 LTE monitor log level is now configurable
  • Zephyr console now returns an error when attempting to store a PSK-ID
    or PSK that is too long

Changed:

  • Improved NACK handling during initial connection
  • OTA module now decodes all items in a manifest
  • RPC returns NOT_FOUND instead of UNKNOWN when receiving an RPC
    for an unregistered method
  • Improved and clarified documentation
  • Improved and stablized HIL test infrastructure
  • Documentation updated to reflect change from Device Name to Certificate
    ID in device certificates

Removed:

  • Individual type functions for Stream service
  • Zephyr port no longer depends on CONFIG_POSIX_API

Fixed:

  • Fixed range checking for int type settings
  • Fixed incorrect error code for receiving an unknown setting
  • Fixed crash when disabling Zephyr log backend
  • Fixed buffer allocation failures on nRF52840DK
  • Fixed free() of unallocated buffer
  • Zephyr CoAP client was not notifying port layer of disconnections
  • Some kconfig settings had no effect in the ESP-IDF port
  • Some kconfig options could not be overriden in the Zephyr port

Release 0.10.0

01 Feb 13:12
Compare
Choose a tag to compare

Highlights

  • The Zephyr CoAP library is now used instead of libcoap for Zephyr ports
  • Zephyr ports can specify a TLS credential tag to use for authentication,
    in particular this will enable the use of offloaded DTLS sockets.

Breaking Changes

  • Remove golioth_ prefix from filenames and move header files under
    golioth/ folder.
  • Remove golioth.h header - users must now include individual headers
    for each service that they use.
  • Stream and State: change json and cbor object set calls to specify
    type in the parameters (instead of separate function calls).
  • RPC: This service must now be initialized prior to use by calling
    golioth_rpc_init(client);
  • Settings: This service must now be initialzied prior to use by calling
    golioth_settings_init(client);
  • Services (e.g. stream, fw_update, etc.) are disabled by default - be
    sure to enable them in your project configuration.
  • Typedefs have been removed throughout the codebase - instead use the
    underlying struct or enum types
  • Remove lightdb_ from lightdb_stream functions to differentiate from LIghtDB State

Added:

  • Automated Hardware-in-the-Loop test framework
  • Basic cross-platform connection HIL test
  • Tests for all Zephyr examples
  • Add kconfig option for default log level for SDK logs
  • Lightb State examples now show how to use CBOR

Changed:

  • Improved network connection management
  • Wait for network traffic and request queue concurrently - this
    removes the need to wakeup every 1 second to check for requests
  • Pass structs by reference instead of value in golioth_sys_* APIs
  • Use bool instead of int for binary Kconfig options
  • Improved organization of Kconfig options
  • ESP-IDF examples use FreeRTOS APIs directly instead of Golioth
    abstractions
  • LightDB State and Stream are now separate services in the SDK
  • DFU example has been renamed to fw_update
  • Use golioth_content_type enum instead of libcoap content types

Removed:

  • Magtag demo for ESP-IDF - this hardware is out of stock
  • Golioth time module - this was a thin wrapper around golioth_sys
  • golioth_statistics module - this internal memory tracking module
    is being replaced by out-of-source tooling
  • remote_shell - This was an experimental feature that was never
    released. If you are interested in remote shell functionality in
    the future, please reach out to Golioth!
  • Integration guide - see docs.golioth.io for the latest documentation
    on integration Golioth into your product

Fixed:

  • Various documentation fixes
  • Removed double check for CONFIG_GOLIOTH_SAMPLE_COMMON
  • Fix stack overflow in logging thread
  • Drop logs with unsupported log levels
  • Attempting to use a disabled service now fails at build time instead
    of at run time

Release 0.9.0

08 Nov 21:52
Compare
Choose a tag to compare

Highlights:

  • Support for Zephyr v3.5.0 and Nordic Connect SDK v2.5.0

Added:

  • zephyr: Add CONFIG_GOLIOTH_USE_CONNECTION_ID symbol to enable
    Connection IDs
  • zephyr: support DTLS 1.2 Connection IDs with NCS (disabled by default)
  • zephyr: samples: enable reboot
  • ci: add HIL test workflow
  • zephyr: samples: add connection test

Changed:

  • zephyr: Use Zephyr 3.5.0
  • zephyr: Use NCS 2.5.0
  • moved src/include folder to root directory
  • moved src/priv-include folder to src/include
  • zephyr: Use random subsystem provided by Zephyr
  • ci: parallelize workflows

Known Issues:

  • FlexSPI issue in Zephyr 3.5.0 may cause DFU to hang for NXP chips
    during the flash memory erase step. This issue has already been
    addressed with a recent commit:
    zephyrproject-rtos/zephyr@9dd8f94
    Golioth has confirmed that this commit fixes the DFU issue on NXP
    boards, but we have not performed full verification of the rest of the
    SDK against this revision of Zephyr. Work around the issue by updating
    the Zephyr revision number in west-zephyr.yml to that commit SHA
    number (or newer).

Release 0.8.0

22 Sep 23:59
Compare
Choose a tag to compare

Highlights

  • Beta support for Zephyr and NCS
  • DTLS 1.2 Connection ID Support
  • Update ESP-IDF support to v5.1.1
  • Use CBOR instead of JSON internally

Breaking Changes

  • Add GOLIOTH_ to each RPC status (e.g. GOLIOTH_RPC_OK)

Added:

  • zephyr: add support for certificate authentication
  • zephyr: add Golioth log backend
  • zephyr: examples: add examples for each Golioth service
  • zephyr: examples: add support for runtime DTLS PSK and WiFi settings
  • zephyr: examples: add hardcoded credentials module
  • zephyr: examples: add support for ESP32-DevKitC-WROVER
  • zephyr: examples: add support for MIMXRT1024-EVK
  • ports: add connect/disconnect notification to port layer
  • ncs: add support for Nordic nRF SDK
  • ncs: examples: add support for nRF9160 DK

Changed:

  • auth: use DER formatted certificates
  • linux: examples: source PSK and PSK-ID from environment
  • treewide: use CBOR (zcbor) instead of JSON for Golioth services
  • zephyr: update zephyr revision
  • libcoap: update libcoap revision

Fixed:

  • docs: fixed typos and broken links
  • coap_client: handle NACKed CoAP requests
  • zephyr: libcoap: removed broken assert
  • zephyr: use work thread for timer handlers
  • mbox: fixed mbox failure when asserts enabled