Resource Center

CR1000X(e) OS

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

CR1000X(e) OS

v8.5.1

This download is for the CR1000X and CR1000Xe dataloggers. 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

v8.5.1April 17, 2026
  • Major
    Fixed an issue introduced in OS CR1000X.8.5.0/CR6.14.5.0 where EmailRelay() could fail during table streaming due to incorrect time conversion when the datalogger was not set to UTC.
  • Major
    Fixed an issue introduced in OS CR1000X.8.5.0/CR6.14.5.0 where non-200 HTTP responses were not handled correctly during table streaming in EmailRelay(), HTTPPost(), and HTTPPut(), preventing response data from being written.
  • Major
    Fixed an issue where the measurement semaphore was not acquired for measurements in subroutines running in sequential mode (functions were not affected). Prior to this fix, background tasks could interfere with excitation and measurement timing.
  • Minor
    Fixed an issue introduced in OS CR1000X.8.5.0/CR6.14.5.0 where a mbedTLS configuration issue that was causing slower secure connections.
  • Minor
    Fixed WebSocket issue introduced in OS CR1000X.8.5.0/CR6.14.5.0.
  • Minor
    Fixed a CR1000Xe Minion watchdog error on ComC1–ComC4 when configured for RS-485 full duplex under specific conditions.
v8.5.0February 12, 2026
  • New Feature
    Added LoggerEndian, CR_LITTLE_ENDIAN and CR_BIG_ENDIAN defined constants. See CRBasic Help for details.
  • New Feature
    Added UDPSocketOpen(), UDPSocketSend(), UDPSocketRecv(), and UDPSocketClose() to the CRBasic Instruction set. This function will allow protocols such as CoAP to operate over UDP. See the CRBasic help for details.
  • New Feature
    Added DNSQuery() to the CRBasic Instruction set. See the CRBasic help for details.
  • New Feature
    Added "DisableTcpDelayedAck" setting to control TCP delayed acknowledgements, improving performance for devices that experience delays due to interactions with Nagle’s Algorithm.
  • New Feature
    Added CommsMode 8 (TTL Half Duplex) to SerialOpen().
  • Major
    Fixed GOES settings corruption that could cause a factory reset.
  • Major
    Updated the servo mode control loop in NetworkTimeProtocol().
  • Major
    Fixed an issue with IPNetPower() that prevented the CELL2xx from entering a lower power state.
  • Major
    Improved server response handling in table streaming to prevent advancing past records when the server returns an error.
  • Major
    Updated the Mbed-TLS stack, enabling support for password-encrypted TLS private keys.
  • Minor
    Updated the MQTT command response to the public table.
  • Minor
    Improved the MQTT output trace in the terminal.
  • Minor
    Removed the trailing slash in the data loggers' MQTT state topic.
  • Minor
    Fixed an issue where TLS certificates specified in settings were applied to all internet clients using TLS, instead of only to the MQTTS client when mutual TLS authentication was enabled.
  • Minor
    Fixed setting of CampbellCloudEnable via SetSettings() or Settings.CampbellCloudEnable = 1.
  • Minor
    Fixed PCAP capture on the PPP interface and added directional information to distinguish sent and received packets.
  • Minor
    Added program line number the compiler is processing to the CR1000KD display screen.
  • Minor
    Improved the SFTP directory listing responce in FTPClient().
  • Minor
    Updated zlib to improve handling of gzip files, including web.obj.gz files.
  • Minor
    Improved WebSocket API efficiency, enhancing performance for RTMC screens and the built-in data loggers webpage's.
  • Minor
    Improved CPI communications when there are multiple unused modules on the BUS.
  • Minor
    Fixed an AvgRun() calculation error were including an extremely large Source value (> 1×10¹?) with smaller values could result in loss of precision.
  • Major
    Fixed an issue where TLS certificates specified in settings were applied to all internet clients using TLS, instead of only to the MQTTS client when mutual TLS authentication was enabled. IMPORTANT NOTE: (Only) If using TLS client certificates, ensure that MQTT Enable setting is Enable with TLS Mutual Authentication before deploying this OS update.
v8.4.0September 16, 2025
  • New Feature
    Added a built-in constant named is_CR1000Xe, which can be used within #IF statements to conditionally compiled code.
  • New Feature
    Added support for web.obj.gz files to automatically execute an embedded recipe.json when detected.
  • New Feature
    Added GOESAppend compile directive; see CRBasic help for details.
  • New Feature
    Added Base64Encode() instruction; see CRBasic help for details.
  • New Feature
    Added extra recovery mechanism for MQTT TLS Mutual Authentication failure.
  • New Feature
    MQTT publish now includes a publishing timestamp "publish_ts" in the payload for the GEOJSON format.
  • Major
    Updated the Real-Time Clock chip to assert the master reset line when voltage falls below 4.9 V, mitigating memory issues observed during brownout events.
  • Major
    Fixed memory allocation for MQTT during compile time. This resolved a potential "out of memory" compile error or a watchdog fault.
  • Minor
    Fixed IIF() to work with Type Double. This also fixed a potential "Pointer is out of bounds" compile error.
  • Minor
    Improved MQTT trace in terminal. It now includes PUBACK ID's.
v8.3.0July 28, 2025
  • (New Feature) Added a Basic JSON format to data streaming operations.

    • MQTTPublishTable() Output format 3 = BASICJSON
    • TableFile(), FTPClient(), HTTPPost(), HTTPPut() and, EmailRelay() Output format 36 = BASICJSON
  • (New Feature) Added a new setting FTPClientActivePort. This setting specifies the starting port the datalogger may use in Active FTP mode. It defines the lower bound of a block of 1000 consecutive TCP ports, which will be used for FTP data connections initiated by the datalogger. Each new data connection will use the next available port within this range.

    • Default value: 48000
    • Allowed range: 8000 to 48000
  • New Feature
    Added TableFieldNames() to the CRBasic Instruction list. Retrieves the name of a data table or one of its fields by index, enabling dynamic (at run time) identification of a DataTable and field names.
  • New Feature
    Added TableName.BytesPerRecord to return number of bytes in a DataTable record.
  • Major
    Refined the Operating System download process over MQTT.
  • Major
    Fixed an issue where heavy PPP traffic could overwhelm the system, causing the datalogger to drop outgoing packets. This sometimes led to missed LCP echo packets and unexpected connection closures, even when the link appeared healthy. Although the TCP layer would perform retries to prevent data loss, these retries significantly reduced data transfer rates.
  • Major
    Fixed watchdog resets caused by memory corruption due to TCP task queue buildup over slow data links, most commonly observed when RTMC projects were published on the datalogger.
  • Minor
    Fixed an issue where Implicit FTPS Active Mode incorrectly used reserved ports for data connections, leading to server rejections.
  • Minor
    A compile error is now triggered if FieldNames() contains a dot (.), and a warning is issued for other operator symbols; non-CRBasic-compliant field names will be deprecated and disallowed in a future update.
  • Minor
    The PakBus/TCP port (default 6785) is now restricted to PakBus traffic only; previously, if Telnet was enabled, the datalogger terminal could also be accessed on this port in addition to the standard Telnet port 23.
  • Minor
    When viewing the password settings via the CR1000KD, the value will now be displayed as '...' for security purposes.
  • Minor
    Modified GOES behavior for the TX325 to allow tables to be concatenated in a transmission.
  • Minor
    Improved handling of PPP flag bytes to ensure correct packet boundaries after a transmission error
  • Minor
    Lowered the TCP keepalive interval for FTPClient() command connections to prevent firewalls from closing them during long transfers. On slow links, the command connection can sit idle while data is still transferring, triggering idle timeouts.
  • Minor
    Temporarily provide access to MQTT v1 for units with a configured UID.
  • Minor
    Updated datalogger HTTP client to correctly handle absolute URLs in Location and Content-Location headers during redirection.
v8.2.1April 7, 2025
  • 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.
  • 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.
  • 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.
  • Minor
    Fixed GPS() time sync when using the PPS signal.
  • Major
    Fixed GPS() time sync when using the PPS signal.
v8.01September 26, 2024
  • New Feature
    CRITICAL – See Revision notes for OS version CR1000X 8.00.
  • Major
    Fixed an issue introduced in CR1000X version 8.00 where SerialOpen() failed to open communication ports on COMC1 and COMC3.
  • 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.
v8.00September 12, 2024
  • 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.
v7.02March 19, 2024
  • Major
    Fixed the CRAM-MD5 authentication process within SMTP, exclusively influencing the EmailSend() function. It's important to note that this adjustment does not relate to EmailRelay().
v7.01December 15, 2023
  • Minor
    Multiple bug fixes for websocket behavior. a)When a structure is freed it is not used erroneously. b)"queues_active" now behaves as it should.
  • Minor
    Fixed error when parsing output names with constants for Flux systems using Covariance() instruction.
  • Minor
    Fixed SpiRead() not waiting for bytes to transfer after first occurrence.
  • Minor
    Fixed 1200 baud rate format for MeteoSat/EuroSat data instructions.
v7.0November 16, 2023
  • New Feature
    Added a find file option to the "NewFileVar" parameter of NewFile(). See the CRBasic help for details.
  • New Feature
    Added result codes to CPIFileSend(). See the CRBasic help for details.
  • New Feature
    Added MQTTPublish() to the CRBasic instruction set.
  • New Feature
    Added SDMSIO2R() to the available CRBasic instructions. This controls the relays on the SDM-SIO2R device.
  • New Feature
    The .csipasswd file must be updated with Device Configuration Utility. The data logger will no longer accept .csipasswd files sent with web API commands or from the RTMC Web Publisher. Clients using the RTMC Web Publisher to publish directly to a datalogger must now configure the .csipasswd with Device Configuration Utility.
  • New Feature
    ClockSet() now supports a structure as the source parameter.
  • New Feature
    Added an optional parameter to BrHalf4W() to return the voltage of V1.
  • New Feature
    Added an optional parameter to CDM_BrHalf4W() to return the voltage of V1. Volt100 Series must also be running an OS built after 9/1/22.
  • New Feature
    Added an optional parameter to BrFull6W() to return the voltage of V1.
  • New Feature
    Added an optional parameter to CDM_BrFull6W() to return the voltage of V1. Volt100 Series must also be running an OS built after 9/1/22.
  • New Feature
    Added #undef to allow reuse of constants at compile time.
  • New Feature
    Added IncludeSection() to the available CRBasic instructions.
  • New Feature
    Added optional parameters to AvgRun() which allow its use in a function or subroutine.
  • New Feature
    Added optional parameters to MaxRun() which allow its use in a function or subroutine.
  • New Feature
    Added optional parameters to MinRun() which allow its use in a function or subroutine.
  • New Feature
    Added StdDevRun() to the CRBasic instruction set.
  • New Feature
    Improved Status.ProgSignature to account for changes to Include files when calculating the unique signature value.
  • New Feature
    The WatchdogTimer() instruction can now output the remaining time until the expiration of the last programmed interval.
  • New Feature
    Added a "MQTT Auto-Publish Data" setting to the MQTT settings.
  • New Feature
    Added the ability to send a web.obj.gz file that contains a CRBasic program, and several Include files to a selected drive (CPU, USR, CRD). For example, cpu.web.obj.gz. This allows a data logger to easily extract a main CRBasic program and multiple include files from one web.obj.gz file.
  • New Feature
    Added SortSpaIndexed() to the CRBasic instruction set.
  • Minor
    Fixed the output array of WindVector() when repetitions are used, ensuring coherence between the data and labels.
  • Minor
    Fixed the transmit time offset when Line SHEF format is used in GOESTable().
  • Minor
    ModbusClient() will wait to receive a response through its sequence mailbox, rather than utilizing polling.
  • Minor
    Fixed 'Dim' declared structures no longer appear as 'Public'.
  • Minor
    Fixed a timeout issue when the Logger is the FTP server and large files are being moved over a slow communication link.
  • Minor
    To handle NAN inputs, the SIN, COS, and TAN functions now return NAN.
  • Minor
    Fixed an intermittent Modbus data gap when an SDM-SIO1A/SIO4A port is used.
  • Minor
    Fixed the issue with the control ports state when using the "stop program and retain data" option. The control ports now return to the default state. This means PWM will stop driving and output ports are changed to inputs.
  • Minor
    PWM() now checks for a 0 or 1 in the duty cycle parameter.
  • Minor
    Fixed a rare intermittent data spike in measurements, which was observed in a single known application, by addressing the presence of fast measurements that consumed nearly the entire scan duration.
  • Minor
    DNS changed to try IPV4 first before IPV6.
  • Minor
    If the MQTT State is in the “Connection retry wait” mode the retry event will take place at a set interval of 6015820mS (~100 minutes) or when MQTTConnect() is called in a CRBasic program.
  • Minor
    Fixed the extra records returned by the HTTP response to the data query API commands.
  • Minor
    Optimized the reconnection process for PakBusTCP Clients when connection drops occur in resource-intensive applications.
  • Minor
    Fixed a MQTT memory leak that occurred when a connection to a broker failed.
  • Minor
    When the SerilInChk() is executed all the buffered data in the comport minion will be processed.
  • Minor
    When a framing error is detected on the CPI bus the measurements returned from the CDM device will be NAN.
  • Minor
    Fixed using a Const in StationName().
  • Minor
    Fixed a compiler issue for measurements without excitation and repetitions. Surpassing the available channels will result in a compile error.
v6.02March 6, 2023
  • Major
    Fixed longevity of the TX325/TX326 EEPROM by eliminating unnecessary writing during the setting of DCP addresses for GOES transmissions.
  • Major
    Fixed setting the output power on the TX325/TX326. The data logger now only resets the power level setting when there is a difference between the current setting in the transmitter and the desired setting.
  • Minor
    Fixed NTCIP globalTime to prevent adjustment during daylight saving time.
v6.01September 28, 2022
  • Minor
    Removed Default DNS address (208.67.222.222) to improve data logger network security.
  • Minor
    Removed the “Server:” line in the HTTP header response to improve data logger network security.
  • Minor
    Fixed a rare case where the serial port used for communications would revert to the default setting.
  • Minor
    Fixed an initialization error condition after ApplyAndRestart is triggered for constants declared as type Boolean in a ConstTable().
  • Minor
    RTMC projects published to a datalogger will now be displayed before the data logger default web pages. The memory drive for the default data logger web pages was given a lower priority.
  • Minor
    Changed when the OS checks the busy status of the micro SD card. The check is now performed before a write not after. This change lowers the power consumption when using Centon micro SD cards.
v6.00May 17, 2022
  • New Feature
    Added GOESAntennaGain setting to allow the GOES antenna gain to be read and set when using a TX325/326.
  • New Feature
    ModbusMaster() has been renamed to ModbusClient(). Existing programs that use ModbusMaster() will continue to work. This change was made to support the Modbus Organization Board of Trustee’s efforts to remove inappropriate language from its query/response protocol paradigm. https://www.modbus.org/docs/Client-ServerPR-07-2020-final.docx.pdf
  • New Feature
    ModbusSlave() has been renamed to ModbusServer(). Existing programs that use ModbusSlave() will continue to work. This change was made to support the Modbus Organization Board of Trustee’s efforts to remove inappropriate language from its query/response protocol paradigm. https://www.modbus.org/docs/Client-ServerPR-07-2020-final.docx.pdf
  • New Feature
    Added MQTTState to settings. A Device Configuration Utility update is required to expose the new setting in the MQTT tab.
  • New Feature
    Added CSAT3B capability to make simultaneous CPI measurements with filters.
  • New Feature
    SplitStr() now supports a defined StuctureType as an output.
  • Major
    Fixed GetDataRecord() with other data logger types. This issue was introduced in OS version CR1000X.Std.05.00.
  • Major
    Fixed a memory leak for the web API data query.
  • Minor
    Fixed an error where the ModbusClient() instruction sent duplicate data when using Modbus function 6 (Write Single Register).
  • Minor
    Fixed a compile error for MoveBytes() that occurred when a space was used between the function name and the opening "(". This error only occurred if pointers were passed in the MoveBytes() parameters.
  • Minor
    Fixed the GOES header for pseudo-binary transmission to include the required tick character. This only affected the TX325/326.
  • Minor
    GOES self-timed transmissions can now be greater than 1 hour. This only affected the TX325/326.
  • Minor
    GOES self-timed transmissions now respect the data logger UTC offset setting. This only affected the TX325/326.
  • Minor
    Fixed SDI12SensorResponse() instruction’s response to the Identify commands to comply with the SDI-12 Version 1.4 specification.
  • Minor
    Added a compile error to catch lines in the program that contains several "------" or "++++++" without formatting them as a comment.
  • Minor
    Improved MQTT implementation.
  • Minor
    Improved HTTP data output to handle multiple connections and rapid queries.
  • Minor
    Improved TCP communications with heavy loads.
  • Minor
    Fixed more than two concurrent PakBus clients collecting tables with records larger than one PakBus packet.
  • Minor
    Improved handling of malformed communications packets between the data logger and the RV50. This was observed when using the LoggerLink app on an iOS device.
  • Minor
    Fixed the wait time for the HAYES modem protocol. The data logger now waits 1.2 seconds instead of 0.5 seconds after +++ is sent for the modem hang-up sequence.
  • Minor
    DNP3 now supports more than 250 analog input values.
  • Minor
    Fixed a compiler crash that occurred when calling a function without parameters.
  • Minor
    Fixed the condition where NANs were not excluded from the StdDevSpa() instruction result.
  • Minor
    Fixed a "Watchdog Timer Minion Signature Ux Triggered" caused by SerialOpen().
  • Minor
    Fixed CDM instructions failing to execute in nested subroutines.
  • Minor
    Fixed overwriting an existing file when the file is opened using FileOpen() and the mode parameter set to option "a".
  • Minor
    Added a compiler check to generate an error if a string is used for the "SplitOption" in SplitStr(). "SplitOption" is an integer value.
  • Minor
    Added a compiler check to generate an error if a function name is equal to a declared Public variable.
  • Minor
    Fixed FTPClient() to properly handle a 550 response from a server. Before this change, the data logger failed to create a file on some FTP servers if the file was not already present and the "PutGetOption" parameter was set to append with a negative FileOption parameter setting (example, -1008).
  • Minor
    Fixed the "DisableVar" parameter in DataTable() instructions to handle referencing a value from a table.
  • Minor
    Fixed an SDM addressing issue when an SDM-SIO1A is set to address 8 and an SDM-CD16AC is set to address 0 on the same bus.
  • Minor
    Improved FieldNames() to work with a variable as a defined StuctureType.
  • Minor
    Fixed an issue in the timeout parameter for TCP client instructions, such as HTTPGet(),HTTPOut(),HTTPPost(),HTTPPut(), FTPClient(), and EmailRelay(). In a rare case, the timeout parameter would not be applied when client instruction used a DNS address to the server and the server was offline.
  • Minor
    Fixed SerialBrk() over RS-485.
v5.02December 6, 2021
  • New Feature
    Change was made to be compatible with additional microcontroller types. CR1000X units with Serial Numbers greater than 34000 must use OS version 5.02 or greater.
v5.01May 24, 2021
  • Major
    PakBus WebSocket’s are now enabled only when the Enable Setting is True and the PakBus URL is set.
  • Minor
    Fixed a minion watchdog by improving interrupt handling. These Watchdogs can occur if there are comport configuration conflicts between the data logger settings and the running program.
  • Minor
    Fixed a potential watchdog event that can occur when using HTTP to list files when data logger memory resources are low.
  • Minor
    ARP messages are now transmitted correctly to improve static address mapping on a network.
  • Minor
    GOES channel can now be set to a value up to 566.
  • Minor
    The delete all option in FileManage() now clears out the cashed buffers to make sure the directory and FAT information is current. This fixed a rare condition where the delete all incorrectly reported the presence of files that no longer existed.
  • Minor
    Improve MQTT sensor talk-thru to parse sensor output before publishing to ensure proper JSON is returned in the response (i.e., JSON special characters are properly escaped).
v5.00March 3, 2021 Download this revision
  • New Feature
    MQTT is now supported.
  • New Feature
    Structures are now supported with StructureType/EndStructureType.
  • New Feature
    The CPIStatus table now displays CDM OS versions.
  • New Feature
    PortBridge() now supports the SDM-SIO1A and the SDM-SIO4A.
  • New Feature
    USB Configuration setting. This controls USB enumerating as a virtual comport and a virtual ethernet port (RNDIS) or a virtual comport only.
  • New Feature
    The terminal 'F' command now displays predefined constants as well as setting names.
  • New Feature
    The data logger now accepts a default program with. DLD or .CRB file extensions.
  • New Feature
    SFTP key authentication is supported with pem formatted Public and Private keys.
  • Major
    Fixed a CR1000X analog measurement fault that occasionally showed NAN’s in data or calibration. This was most easily seen when internal analog measurements such as battery voltage and panel temperature return NAN.
  • Major
    Settings of Type String are updated correctly when using SetSetting(). For example, SetSetting(“IPAddressEth”,”192.168.1.1”). In previous OS versions, string settings were only updated when the fist character of the string was changed, or after factory defaults were applied.
  • Major
    Updated SMSSend() to handle arrays. Warning - This update changed how SMSSend() was implemented in the operating system. Upgrading to this OS will also require the CRBasic programs running old instances of SMSSend() to be updated.
  • Major
    Improved streaming options in HTTPPost().
  • Major
    The CommsMode option is set correctly when SerialOpen() is placed between BeginProg and Scan. Prior to this change the CommsMode state would alternate between RS485 and Not Configured on subsequent program restarts.
  • Major
    Before creating a Wi-Fi host network, the data logger now checks for an existing network with the same SSID. If a network with the same SSID as the data logger already exists, the data logger will not create a host network.
  • Major
    The first GOES self-timed transmission now transmits when expected.
  • Major
    Added format option 0 to GOESTable() to allow for the pseudo-binary use of FP2 data. This change matches the data output that was available in format option 0 of GOESData() used in older Campbell Scientific GOES/METEOSAT radios.
  • Minor
    Improved Ethernet communication speeds with an RV50/RV50x.
  • Minor
    PortBridge() was updated to prevent a memory leak that could occur if a TCP connection handle was specified for one of the bridge ports, but the TCP connection was not successful.
  • Minor
    CRBasic now flags an error if a *, \, /, mod operator is used with a variable of Type String.
  • Minor
    CRBasic now checks for divide by zero errors.
  • Minor
    Files with a wild card name are uploaded correctly by LoggerNet scheduled file collection.
  • Minor
    WaitDigTrig() flags a compile error if it is declared inside a loop within a Scan.
  • Minor
    A variable of Type Double can now be aliased.
  • Minor
    The compiler was updated to allow spaces in Alias() array declarations.
  • Minor
    The compiler was updated to generate an error when quotes are used to declare an Alias. Example: Alias V = “newName” (error), Alias V = newName (correct).
  • Minor
    The size of an array index is set to the expected value when an expression uses constants of Type Long. For example: Const A as Long = 1, Const B as Long = 2, myArray(A+B).
  • Minor
    Replace() performs boundary checks correctly on strings larger than 24 bytes.
  • Minor
    Encryption() with option 0 returns the correct length of the original input.
  • Minor
    TOA5 format options in TableFile() display "NAN" instead of null for floating point numbers.
  • Minor
    Settings are retained when updating the datalogger OS using a web.obj.gz file.
  • Minor
    PWM() allows the Period parameter to be a variable of Type Float.
  • Minor
    Double-precision now uses a maximum resolution of 15 digits instead of 14.
  • Minor
    Improved CDM module support.
  • Minor
    ModbusSlave() now outputs the correct response to a function 6 command.
  • Minor
    SetSetting() now sets and reads the RadioNetID setting for the CR6-RF407.
  • Minor
    Move() now works with multidimensional arrays in a loop.
  • Minor
    The data logger Station Name setting does not accept slash characters.
  • Minor
    Case statements now evaluate a floating-point NAN.
  • Minor
    For GOES Table output, the “/” placeholder character now works as expected when using decimation.
  • Minor
    For GOES Table output containing historical values (Number of Values > 1) and using decimation, the most recent readings are now included.
  • Minor
    GOES Table format option 3, ASCII Comma separated, now includes the trailing comma after the end of each line.
  • Minor
    FTPClient() no longer waits until a new record is recorded before sending data when using values less than 0 in the NumRecs/TimeIntoInterval and Interval parameters.
  • New Feature
    FTPClient() now supports pem formatted Public and Private keys for SFTP connections.
  • Minor
    Fixed a brownout condition that could cause a minion processor to get stuck in a low power state. Symptom was a minion fault error appearing in compile results after recovering from the brownout condition.
v4.02March 31, 2020
  • Major
    GOESTable() now supports format option 0 (zero),pseudo-binary FP2, in order to match format option 0 of the GOESData() instruction used in older Campbell Scientific GOES/METEOSAT radios.
  • Minor
    GOESTable() format option 1 (one) no longer outputs extra spaces after the comma.
  • Minor
    Fixed setting Boolean values via the keyboard display.
  • Minor
    Exiting the terminal talk through (‘P’ command) now leaves the communication port open and retains the mode set in SerialOpen().
  • Minor
    GetRecord() now works correctly when passing a variable into the RecsBack parameter while using an optional format parameter.
v4.01March 4, 2020
  • New Feature
    Added support for the TX326.
  • Major
    TableFile() now works when then Interval parameter is greater than 1 hour. Introduced in OS CR6.Std.10.00 and CR1000X.Std.04.00 TableFile() would not generate an output file if the interval was greater than 1 hour.
  • Minor
    Improved double-precision floating-point Math.
  • New Feature
    Added support for the TX326 - Satellite Transmitter for Meteosat.
  • Major
    TableFile() now works when the Interval parameter is greater than 1 hour. Introduced in OS CR6.Std.10.00 and CR1000X.Std.04.00 TableFile() would not generate an output file if the interval was greater than 1 hour.
v4.00February 26, 2020
  • New Feature
    Added support for the TX325 - Satellite Transmitter for GOES.
  • New Feature
    CPIStatus now reports the CDM OS version in the ModuleInfo() array when used with CDM_VW300/VWIRE305 OS 6 or newer, or CDM_A100/VOLT116 OS 7 or greater, or TEMP120 OS 2 or greater. There is no requirement for the CDM or datalogger OS to be updated or matched, unless a customer wants to see the CDM OS version. If either the datalogger or CDM OS does not have this update, the OS information is just ignored (not reported in CPIStatus).
  • New Feature
    CDM_VW300Config() now allows the Device Type parameter to be specified as either 2 or VWIRE305. Prior to this change, only VWIRE305 was valid.
  • New Feature
    Added WatchdogTimer() function that allows a user-programmed watchdog timer to be enabled.
  • New Feature
    DNS settings now allow IPv6 addresses. Requires Device Configuration Utility 2.23 or greater.
  • New Feature
    The data logger IP stack now fully supports IPv6.
  • New Feature
    The data logger now supports VJ TCP/IP Header Compression for compatibility with the RV50 firmware v4.11 and newer.
  • New Feature
    Added Tablename.TableBytes functionality. This special field, TableBytes, will return the allocated size for a table on a card (or the CPU if a card is not used or not inserted). EXAMPLE: Tbytes = Test.TableBytes, Tsize = Test.TableSize, Recsize = Tbytes /Tsize.
  • Major
    Fixed IP Panic watchdogs observed on busy networks and process intensive data logger programs. Increased memory for communication event handling.
  • Major
    Corrected Ethernet network ceasing operation. This was observed on 10Mbps networks when attempting to send significant amounts of data rapidly, often with the RV50 modem.
  • Minor
    Implicit FTPS (FTP via TLS) now works as expected with port 990.
  • Minor
    FTPS (FTP via TLS) now works correctly when running in a Slow Sequence.
  • Minor
    A compile error is now generated if there is a PPP conflict with CPI on COMRS232.
  • Minor
    Therm107(), Therm108(), and Therm109() functions now compile correctly when repetitions are used with excitation channels other than VX1.
  • Minor
    Connect Screen, send Program Table Fill Times are now reported correctly when a program is resent with a different Scan rate, and no other modifications.
  • Minor
    The TCPOpen() optional timeout parameter can now be specified as ,, or as 0 for the default.
  • Minor
    The Field Name in Tablename.FieldName can now be declared as a constant. Note that Table Name could already be declared as a constant.
  • Minor
    Modified SDM operation to resolve skipped scans generated by SDM communications failures.
  • Minor
    Improved timing for the SDM-IO16.
  • Minor
    Added the ability to detect and recover from lost communications to an SDM-SIO1.
  • Minor
    Improved quiescent power drain for scans (~250mS) or faster.
  • Minor
    Improved configuring control ports for serial communications operation.
  • Minor
    SerialOpen() modified to configure the hardware port upon executing the SerialOpen() instruction. Previously, the presence of the instruction enabled the port prior to program execution. This change reduces power consumption.
  • Minor
    Improved CELL2XX PPP throughput.
  • Minor
    TableFile() now uses the correct timestamp when used with DataInterval() and GetDataRecord().
  • Minor
    SDI-12 Terminal Mode now waits 2 seconds instead of 1 second for a sensor response.
  • Minor
    LoggerNet file retrieval now works correctly with a wild card name when scheduled data collection is also enabled in LoggerNet.
  • Minor
    WaitDigTrig() now works correctly in Slow Sequences.
  • Minor
    A compile error now occurs if WaitDigTrig() is used inside a loop within a Scan.
  • Minor
    The CELL2xx PPP reset now works correctly on power up.
  • Minor
    MenuPick() with constants now works correctly.
  • Minor
    Improved retention of data logger settings when updating operating systems.
  • Minor
    Improved CPI communications to CDM peripherals.
  • Minor
    Improved SDI-12 v.1.4 compliance for the high-volume binary command per the verifier.
  • Minor
    Improved operations of DataEvent() storage to an external card when removing the card during an event.
  • Minor
    Improved operation of double-precision expressions.
  • New Feature
    Added support for the TX325 satellite transmitter.
v3.02April 22, 2019
  • New Feature
    Added support for VWIRE 305, VOLT 116, VOLT 108, TEMP 120.
  • New Feature
    Added an optional count parameter to AvgRun() that returns the actual number of values used to calculate the running average. The actual number of values used may be different than the number specified for the calculation due to NAN values in the buffer of historical data.
  • Major
    The CR6/CR1000x Datalogger no longer watchdogs when receiving DHCP packets larger than 500 bytes when the datalogger is the DHCP server. This change improves communication reliability over the RNDIS port and the integrated WIFI option when configured to create a network.
  • Major
    The memory allocated for the CPU no logger gets corrupted when a task interrupt occurs during the write process of a watchdog file.
  • Major
    PPP will now properly restart when the PPP state in the data logger shows “User interrupt”.
  • Minor
    The CR1000X Datalogger PulseCount() no longer generates the occasional skipped scan.
  • Minor
    PulseCount() no longer generates a rare skipped scan with a fast program scan (≥20Hz) or when available measurement time is used up. The actual pulse count results were not affected.
v3.01March 13, 2019
  • Major
    Fixed an issue that could corrupt the CR6/CR1000x Datalogger settings when updating the operating system using File Control or the Device Configuration Manage OS. Prior to this fix the issue could occur if 1) the running program was not stopped, and 2) the delete data option was not selected, before updating the operating system.
  • Minor
    The terminal mode in the datalogger web interface now works as expected.
v3.00January 31, 2019
  • New Feature
    Added support for Campbell Scientific external CELL2xx modem.
  • New Feature
    Added "Trusted Hosts" setting that allows the user to specify up to 4 trusted IP addresses or IP address ranges. An IP address outside of the trusted host list will not be allowed to connect.
  • New Feature
    Added TCPActiveConnections() which can be used to monitor information about TCP connections on a specified port.
  • New Feature
    Matrix() now allows the third parameter (B) to equal 0 for the Transpose and Invert options (options 4 and 5) that do not use the B parameter.
  • New Feature
    The Const declaration can now be an array of bytes signaled by a comma separated list of bytes enclosed by {}; For example: Const A = {1,2,3,4,5,6,7,0,9,10}, SerialOutBlock(ComRS232,A,10).
  • New Feature
    MoveBytes() now has an optional parameter(Transfer) to handle endian byte swapping.
  • New Feature
    GPS() now allows the result variable array to be of type Double. This supports GPS units with higher-precision latitude and longitude.
  • New Feature
    IPNetPower() now supports the CELL2xx external modem (interface 5).
  • New Feature
    UDPDataGram() is now able to receive from multiple clients.
  • New Feature
    IPRoute() now has the ability to set the default network. To set the default network, the IPAddr parameter must be set to empty quotes (“”).
  • New Feature
    Maximum number of ESS subsurface sensors increased from 10 to 20.
  • Major
    The MaxNumBytes (bytes allocated to buffering) now calculates memory for Dim variables correctly. Prior to this change, Dim variables allocated six times more memory than needed (same as Public variables). Large programs with many Dim variables may have generated OUT OF MEMORY errors in the compile results.
  • Major
    The datalogger no longer causes anomalies on VX1 when performing background calibrations tasks.
  • Minor
    ScanTime now updates correctly when a single scan is missed due to a low12V condition.
  • Minor
    EmailRelay() now allows attachment names to be a constant or a variable.
  • Minor
    ModBusSlave() function 6 now sets a single register correctly.
  • Minor
    SDI12Recorder() now sends the command after the break as expected. The symptom of this error was excessive retries in the SDI-12 communication log.
  • Minor
    SerialOpen() format options now correctly set the parity bit for ComME.
  • Minor
    SerialOpen() does not alter the ComPort configuration that was set by Device Configuration Utility unless the optional CommsMode parameter is used.
  • Minor
    The optional PCAP interface now filters as expected.
  • Minor
    Duplicate measurement instructions are now allowed in stacked scans. An example of stacked scans is a program that contains a pre-scan with a set number of scan counts. Once the pre-scan count is reached, the program will execute the main scan.
  • Minor
    A function referenced without parentheses now behaves like a variable that holds the last value returned by the function.
  • Minor
    CPI now works correctly with slow sequences in sequential mode. This resolves an issue that caused skipped scans and CDM frame errors with programs that have multiple scans and slow sequences.
  • Minor
    Table auto-allocation now works correctly in the case that both a slow (e.g., 1 day) table and a fast (e.g., 20 mS) table are both auto-allocated. The problem was the calculated fill time was less than the output interval of the slow table and this resulted in running out of memory.
  • Minor
    CPI Status now reports unused modules correctly, instead of reporting ‘Wait Config’.
  • Minor
    SW12() no longer forces sequential mode if the PipeLineMode() instruction is used.
  • Minor
    The read pointer in internal memory for CardOut() is now established correctly on program start up after a power cycle. The issue only occurred for data tables that were sized to 20 records or smaller and contained a CardOut() instruction. In this case, if power was lost during program run time data on the card could be corrupted.
  • Minor
    The skipped-scan counter now includes scans skipped due to insufficient power to the datalogger.
  • Minor
    OmniSatData(), OmniSatRandomSetup(), OmniSatStatus(), OmniSatSTSetup() now work with the OmniSat-3.
  • Minor
    Web API File control option 9 now works with a file name containing WEB.obj.gz.
v2.00June 27, 2018
  • New Feature
    Added SDI-12 Version 1.4 support to SDI12Recorder() and SDI12SensorSetUp().
  • New Feature
    Added the Quadrature() instruction
  • New Feature
    Added PCAP Settings in the advanced section to allow the creation of a PCAP file.
  • New Feature
    Added Settings.NTPServer. This setting keeps the datalogger clock synced with the specified server. This setting will be polled once per day. It will also be polled if something has changed the datalogger clock by more the 1.5 seconds. This setting is in the settings editor advanced section.
  • New Feature
    Added Settings.TCPMSS. This setting can be used to set the maximum TCP segment length. Valid range is between 300-1460 bytes. Some modems require smaller TCP Packets. This setting is in the settings editor network services section.
  • New Feature
    Added optional parameter to the PingIP() instruction to specify IP version.
  • New Feature
    Added an optional parameter to the PPPOpen() instruction to select the IP version.
  • New Feature
    Added Terminal Mode 'F' command to display datalogger setting names.
  • New Feature
    Added "press ESC ESC ESC ESC to close" when opening the Terminal Serial Talk Through mode.
  • New Feature
    Added a warning in the Status.CompileResult when a conflicting PakBus TCP route is found. This happens when there are two PakBus nodes with the same PakBus address on a network. While the conflict exists, PakBus polling will occur every 2 minutes instead of every 200 mSec to avoid unnecessary memory usage.
  • New Feature
    Added TTL (Time to Live) when monitoring DNS communication traffic.
  • New Feature
    Added Exclusive Option to the IPRoute() instruction.
  • New Feature
    Added the ability to load an operating system stored on a card via the CR1000KD File Directory (E.g., CR1000KD/File/Load OS From Card).
  • Minor
    The GPS() instruction now accepts values prefaced with + or -.
  • Minor
    The ETsz() instruction now outputs the correct units.
  • Minor
    The SerialOpen() instruction now reflects the CommsMode setting back to Device Configuration Utility.
  • Minor
    Improved the advanced settings section in the CR1000KD.
  • Minor
    Fixed SetSetting("EthernetPower",0); 0 = always on, 2 = one minute, 10 = disabled.
  • Minor
    The function parameter in the TimerInput() instruction now resolves the erroneous compiler error that states "There are too may function digits specified, maximum is 14."
  • Major
    Settings.PPPDial now always keeps the RS232 port awake when the setting equals "PPP." The RS232 port would go into sleep mode disabling communications between the datalogger and the cell modem. This was present with datalogger and Raven XT combinations. Datalogger and RV50 combinations were not affected.
  • Major
    The ClockSet() instruction now avoids skipped records when the clock adjustments are less than one second.
  • Major
    The memory error that occurred when two PakBus/TCP Client connections were pointing to each other no longer occurs.
  • Minor
    You can now store to a one-byte string (String * 1).
  • Minor
    Minion Pair configuration now allows SDI12 communication and PWM() on the same minion pair.
  • Minor
    The SDI12Recoder() instruction now detects if an error occurred while waiting for the ttt seconds timeout before getting data with the D command.
  • Major
    The Disable Lithium Battery setting is now cleared on powerup.
  • Minor
    The HttpGet() and HttpPost() instructions now replace a space character in the URL with a %20.
  • Minor
    Parameters defined as Double are now correctly passed to functions that are not declared as type Double.
  • Minor
    Function declarations now output the Return value when no parameters have been defined.
  • Minor
    Fixed data type IEEE8 in the Sample() instruction for variable types as Double.
  • Minor
    The CPI Sync now works with a 1kHz program scan rate.
  • Minor
    XML output of data types now displays data type UINT4 as unsigned Int instead of Float.
  • Minor
    Sample() instruction now correctly executes when sampling from a Float into a Double.
  • Major
    If the Main Scan does not contain a measurement instruction, the SlowSequence will still run.
  • Minor
    A Pointer can now be sent into an Array when the index is not constant. For P(i)(), at run time i was used as the pointer rather than P.
  • Minor
    Fixed an erroneous compile error when the index of an array is an expression with the first number equal to 0 (e.g., X(0+1), X(0+i)). Note that variable array indexes always start at 1, so if the expression used for the index returns 0, a runtime variable out of bounds warning is generated.
  • Minor
    You can now use pointers in ArrayLenVar parameter in the ArrayLength() instruction.
  • Minor
    You can now use pointers in TypeVar parameter in the TypeOf() instruction.
  • Minor
    You can now update datalogger data table information using web sockets.
  • Major
    Fixed the EmailRelay() instruction stream all tables option.
  • Minor
    The Subject parameter in the EmailRelay() instruction now allows the subject to be Constant.
  • Minor
    The EmailRelay() instruction now ignores 'space' or 'tab' characters in the address string. The comma ',' character is the delineator for multiple address.
  • Minor
    The EmailRelay() instruction now returns the correct error code when there are connection failures.
  • Minor
    The timeout parameter in the EmailRelay() is the value specified (not twice the value, as in previous operating systems).
  • Major
    Sequential Mode background calibration now performs as expected.
  • Major
    When the measpex parameter in the BrFull() instruction does not equal the reps parameter; the data is no longer shifted into the wrong destination array elements.
  • Major
    PPP now discards packets with a bad Checksum when a modem is attempting to establish the PPP session.
  • Minor
    The Delay() instruction will no longer accept delay values less than 0.
  • Minor
    The ClockSet() instruction will now allow "/" in the date if the parameter is of type String.
  • Minor
    The SNMPVariable() instruction now allows new OIDs to be inserted before the ESSVariable space.
  • Minor
    The public declarations for the EssVariables() instruction now require a ten-element array for indexed OIDs.
  • Minor
    The SPIOpen() and I2COpen() instructions now configure the hardware at runtime.
  • Minor
    The reset parameter in the MaxRun() and MinRun() instructions now behave like AvgRun().
  • Minor
    String variables can now be referenced as (N,1) or (1). This avoids a variable out of bounds error at run time.
  • Minor
    Constant declarations now allow a Const to be equal value in the settings table. Example Const A = Settings.SerialNumber.
  • Minor
    The Timer() instruction now uses the system time instead of the clock so the timer is independent of the clock being adjusted.
  • Minor
    The SDI12Recorder() instruction now accepts type Double for the destination variable.
  • Minor
    The SDI12Recorder() instruction timeout now ignores noise spikes while waiting for the sensor to be ready.
  • Minor
    Channel configuration no longer allows the TimerInput() and PulseCount() instructions on same minion.
  • Minor
    The CDM_VW300Config() instruction now allows using the pre-defined constant CDM_VW300 or CDM_VW305 in type parameter (as well as 0 or 1, as in previous operating systems).
  • Minor
    The CPIStatus table now displays up to 50 CPI modules.
  • Minor
    The PakBus verify interval advertised in the 'Hello Exchange' is now equal to the verify interval setting rather than the setting / 2.5.
  • Minor
    DNS will now attempt to first resolve IPv6 then IPv4.
  • Minor
    The default DNS server is now listed last. The specified DNS address is listed first.
  • Minor
    TimeUntilTransmit is no longer allowed outside a Scan/NextScan.
  • Major
    SWVX now works outside of the main scan when setting VX1 to 5 V.
  • Minor
    Settings.PPPInterface now disables auto baud functionality. A specific baud rate must be set.
v1.02December 21, 2017
  • IMPORTANT: Resolved an issue with PPP connections that timed out or were closed with the PPPClose() instruction and then reopened with the PPPOpen() instruction. This type of connection is often used with cellular modems. A flag that tells the datalogger that the network is online was not being reset correctly, resulting in an unresponsive PPP network interface.
  • Fixed terminal W mode so the terminal will not exit when receiving a character on another comport unless CR (carriage return), or ESC (escape) is received.
  • Fixed terminal mode monitoring via W command when a new connection is made. The datalogger now ignores a new connection unless it is via PakBus or Telnet. The datalogger recognizes a connection when a CR (carriage return) or ESC (escape) character is received from the new connection.
  • Fixed Tablename.Fieldname when sampled into another table when a record did not exist in the source table. The operation now returns a NAN when this condition occurs.
  • Fixed GoesTable() to output commas instead of spaces.
  • Fixed background calibrations that were failing when using SequentialMode.
v1.01October 18, 2017
  • Changed the default username and password used by the datalogger FTP server. The new username and password are now both NULL. This change requires the user to set their own username and password (both required) in order to use the datalogger FTP server. Neither the username or the password can be blank. This change was made to better secure the datalogger FTP server against malicious attacks. This change does not affect the FTPClient() instruction.
  • Changed reset tables via the keyboard display to require first level security.
  • Changed terminal sniff on Ethernet to show the entire Ethernet packet instead of just the first 54 bytes.
  • ESSVariables(): enhanced the pre-compiler to flag an error if variables are declared as the wrong type or wrong dimensions.
  • Various fixes and adjustments made to make the PC CRBasic pre-compiler more robust and more verbose with warnings and error messages.
  • Fixed various settings of type Boolean (BOOL4 and BOOL) that were not being set correctly via the SetSetting() instruction.
  • Fixed EmailRelay() if the ServerResponse parameter is not a variable of type STRING.
  • Fixed TableName.FieldName() when FieldName is a timestamp passed into a function as type string. The logger now allocates enough memory for the string instead of just the 8 bytes of the time stamp.
  • Fixed NetworkTimeProtcol() which could have had a 500 msec offset error.
  • Fixed setting a BOOLEAN in a Constant Table. Prior to this change, the timestamp would increment at every scan regardless of whether the table was updated or not.
  • Fixed the keyboard display when displaying RS232Power to show correctly and not a value of 255 when set to True.
  • Fixed the keyboard display when displaying floating point numbers greater than 2.0465E9.
  • Fixed a memory leak when using PingIP().
  • Fixed a memory lead when using EmailRelay().
  • Fixed SendData() when sending data from the Public table. The bug was that data was being transmitted from the DataTableInfo table instead of the Public table.