Resource Center

GRANITE 6 OS

Software applications, data logger operating systems, firmware, and drivers for Campbell Scientific products

GRANITE 6 OS

v3.2.1

This download is for the GRANITE 6 datalogger. Execution of this download places the Operating System file(.obj) on your computer. It also updates the CRBasic Editor compiler and support files. 

Why Update? New features and bug fixes. With this OS update it is recommended that you also update the Device Configuration Utility to the most recent version so that new datalogger features are available in the utility.  

Note/Warning: Campbell Scientific always recommends updating operating systems on site if possible. When remote updates are required, it is recommended that you implement the necessary precautions to handle unexpected OS upload complications. All datalogger settings should be retained when updated remotely. If you choose to roll back to a previous operating system, the datalogger settings will be reset to default.

Watch the Video Tutorial: Sending an OS to a Local Datalogger.

Revision History

v3.2.1April 7, 2025 Download this revision
  • 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]
  • New Feature
    Added PING to the terminal commands.
  • New Feature
    MQTTPublishTable() will now send all unsent data ahead of OS update or program change, reducing potential data loss.
  • New Feature
    Added FieldClassify() to the CRBasic instruction set, providing additional support for MQTTPublishTable(). Refer to the CRBasic help for more information.
  • New Feature
    Added FieldOrigin() to the CRBasic instruction set, providing additional support for MQTTPublishTable(). Refer to the CRBasic help for more information.
  • (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.
    • 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.
  • Major
    Removed TLS cipher suites that do not support forward secrecy.
  • 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.
  • 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.
  • Major
    Improved session resumption and logging for FTPS.
  • 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.
  • Major
    Fixed a memory leak issues when Campbell Cloud certificates rotate.
  • Minor
    Fixed an issue where the CR1000X datalogger republished all data from the microSD card to the MQTT broker after an OS update.
  • 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.
  • 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.
  • 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.
  • 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.
  • Minor
    Fixed a formatted print buffer overwrite. This improved operations such as the data logger’s terminal output and logging IP Trace info.
  • Minor
    Fixed an API call issue that caused the TableDisplay page to not load.
  • 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.
  • Minor
    Fixed Invalid JSON responses across several settings when requested via MQTT.
  • 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.
  • Minor
    The "FileName" parameter in NewFile() can now accept a variable of type string.
  • Minor
    Fixed a CPI buss data shift issue.
  • 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.
v3.01September 26, 2024 Download this revision
  • New Feature
    CRITICAL – See Revision notes for OS version Granite6 3.00.
  • Minor
    Corrected the handling of millisecond units for TimeIntoInterval in MQTTPublishTable().
  • Minor
    Fixed an issue where rotating TLS certificates for Campbell Cloud caused the data logger to miss a byte of data on the COMC port due to port unnecessary being reconfigured.
v3.00September 12, 2024 Download this revision
  • New Feature
    CRITICAL - The data logger's UID (unique identifier) is now utilized for enhancing security. a) When Factory Defaults are applied: i) PakBus Encryption key is assigned to the UID. ii) An HTTP user account is created (user: admin, password: UID). iii) WiFi defaults to “Create a Network” mode with the password set to the UID. iv) The FTP service is disabled, and the password is set to the UID. b) If your device does not have a UID the above changes will not apply. c) The UID is set during the manufacturing process. If your device does not have a UID you may obtain one by contacting Campbell Scientific.
  • New Feature
    Added "USB Port Not Trusted" setting. The default is '0' (Trusted), allowing connections on the USB port without requiring PakBus encryption.
  • New Feature
    Added "USB Disable" setting. Default is '0' (USB port active). Set to '1' (Disable) to deactivate the port, which will take effect after a datalogger reboot.
  • New Feature
    Added support for the CR1000Xe.
  • New Feature
    Added the ability for "SFTPPrivateKey" and "SFTPPublicKey" to be set with the CRBasic instruction SetSetting().
  • New Feature
    Added an optional parameter "StdDevType" to StdDevRun(). See CRBasic help for details.
  • New Feature
    Added the ability to initialize an array with all the same values when declared. For example, Public array(50) as Boolean = True, or Public array(50) = 10.
  • New Feature
    Added two additional communication port configurations for SerialOpen(). a) Option 6 RS-485 Tx Only - In this configuration the transceiver is left on so the A(-) and B(+) idle in a marking state (logical '1'). b) Option 7 RS-422 - This configuration is full-duplex and the transceiver for the transmit pair is left on. The transmit pair A(-) and B(+) idle in a marking state (logical '1').
  • Major
    Updated the LWIP stack.
  • Major
    Fixed a condition when a watchdog timer IP Panic pbuf_free: p->ref > 0 triggered.
  • Major
    Fixed a ComRS232-specific serial data overrun issue that manifested during intense PPP sessions.
  • Major
    Fixed an intermittent watchdog that could be generated when connecting to an On-and-off MQTT broker.
  • Major
    MQTT tasks now detect an unopened TCP/IP socket and initiate primary retries immediately, without waiting for the keep-alive timeout to expire.
  • Minor
    Fixed an uncommon watchdog event triggered when an attached Volt108/116 has intermittent power.
  • Minor
    Resolved a potential memory allocation issue on the Miro SD card that could arise when the "Delete CardOut files if CardOut data table mismatch" setting is enabled.
  • Minor
    Addressed communication issues with the SDM-SIO1A/SIO4/SIO2R, resolving the associated flush events that affected the adjacent channel's input and output buffers.
  • Minor
    Resolved a compile error that occurred when using SemaphoreGet(4).
  • Minor
    Fixed an issue where an unintended null byte was being appended to the payload message in MQTTPublish().
  • Minor
    Fixed the terminal watch for outbound HTTP traffic in the IPTrace > HTTP option.
  • Minor
    Fixed an erroneous ApplyAndRestartSequence CRBasic compile error.
  • Minor
    Added a compiler check for out-of-bounds errors in aliased array elements used during measurement repetitions.
  • Minor
    Resolved the issue allowing the publish MQTT statusInfo topic to be disabled.
  • Minor
    Fixed a problem where the MQTT publishing rate might slow down because of timeouts waiting for an ACK.
  • Minor
    Updated the syntax for accessing DataTable structures using FieldNames(): TableName.FieldName_StructureMemberName.