Granite 10 OS 3.0.1
Updated: 04-07-2025

  1. (New Feature) Added a self-hosted recovery webpage to the datalogger OS for uploading .obj and .web.obj.gz files to restore custom user interfaces. [ /recovery]
  2. (New Feature) Added PING to the terminal commands.
  3. (New Feature) MQTTPublishTable() will now send all unsent data ahead of OS update or program change, reducing potential data loss.
  4. (New Feature) Added FieldClassify() to the CRBasic instruction set, providing additional support for MQTTPublishTable(). Refer to the CRBasic help for more information.
  5. (New Feature) Added FieldOrigin() to the CRBasic instruction set, providing additional support for MQTTPublishTable(). Refer to the CRBasic help for more information.
  6. (New Feature) Added the MQTT Auto-Publish Data option to the MQTT settings. This feature potentially simplifies the onboarding of existing datalogger applications to the Campbell Cloud without requiring program updates. Data Tables will automatically be published if the following conditions are met:

    • No Existing MQTTPublishTable(): The CRBasic program must not include any instances of the MQTTPublishTable() instruction.
    • Data Table with DataInterval(): The Data Table must utilize the DataInterval() instruction.
    • Data storage intervals less than 1 minute are excluded.
    • Data storage intervals between 1 minute and 10 minutes are published every 10 minutes.
    • Data storage intervals greater than 10 minutes are published at their defined interval.
  7. (New Feature) Added an optional “Timeout” parameter to NetworkTimeProtocol().
    • Timeout = 0/Omitted: Default timeout is applied (75 seconds).
    • Timeout > 0: Acts as a timeout, specifying the maximum time the instruction will run before moving on.
    • Timeout < 0: The absolute value acts as a timeout and enables time servo mode. Time servo mode allows the datalogger to gradually adjust its clock to sync with the NTP server rather than making abrupt time changes. While this mode improves time tracking, accuracy is influenced by factors such as network latency and server variability.
      • Dependencies:
        • Execute the instruction every 2 to 5 minutes.
        • Set the "NTPMaxMSec" parameter to 1 second or less to maintain reliable synchronization.
  8. (Major) Removed TLS cipher suites that do not support forward secrecy.
  9. (Major) Fixed a memory leak in the MQTT process that occurred during reconnection events. This issue was observed when Cambell Cloud repeatedly rejected or dropped the communication link. This issue led to resource exhaustion over time, triggering the system to watchdog.
  10. (Major) Fixed memory allocation issues in FTPClient() when using FTPS or SFTP put/get options. If a variable was used for the put/get option, insufficient memory was allocated. Conversely, negative values caused memory overallocation.
  11. (Major) Improved session resumption and logging for FTPS.
  12. (Minor) Fixed an issue were setting the "Timeout" parameters to 0 in client instruction may cause an infinite wait time. A value of 0 is now interpreted as the default timeout of 75 seconds.
  13. (Major) Fixed a memory leak issues when Campbell Cloud certificates rotate.
  14. (Major) Improved system performance, stability, and resource management for enhanced efficiency and reliability.
  15. (Minor) Fixed an issue where the CR1000X datalogger republished all data from the microSD card to the MQTT broker after an OS update.
  16. (Minor) Enhanced MQTTPublish() to handle arrays. The payload parameter now accepts elements from a string array, and the return value can be stored in an array.
  17. (Minor) Fixed an issue in sequential mode where a subroutine containing measurements, when called from a slow sequence, could cause the slow sequence to lock up due to incorrect handling of analog power control.
  18. (Minor) RTMC projects published to a datalogger now take priority over default web pages by lowering the priority of the default web pages. This fix was originally implemented in a previous version, but the issue was reintroduced in version 8.0.
  19. (Minor) Fixed an issue with MQTTPublishTable() that caused data to be published every other interval when the scan, data, and publish intervals were identical. Prior to the fix, no data was lost, as any missed data was included in the next successful publish.
  20. (Minor) Fixed a formatted print buffer overwrite. This improved operations such as the data logger’s terminal output and logging IP Trace info.
  21. (Minor) Fixed an API call issue that caused the TableDisplay page to not load.
  22. (Minor) Fixed an issue where the MQTT command response incorrectly reported "File upload succeeded" when a file upload via MQTT command and control failed. The response now correctly states "File upload failed" on failure.
  23. (Minor) Fixed Invalid JSON responses across several settings when requested via MQTT.
  24. (Minor) Fixed a TLS memory allocation that caused an infinite reboot loop and over-allocated TLS memory when CRBasic functions requiring TLS were called within subroutines or functions.
  25. (Minor) The "FileName" parameter in NewFile() can now accept a variable of type string.
  26. (Minor) Fixed a CPI buss data shift issue.