Resource Center

CR300 Series OS

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

CR300 Series OS

v11.03.00

This download is for the CR300 series of dataloggers including all CR300 and CR310 models. 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? This OS has general bug fixes. See the revision history for a complete list. 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

v11.03.00December 23, 2025
  • Major
    Resolved a DNP3 issue that could result in the logger returning incorrect values.
  • Major
    Fixed SNMP polling OIDs from the logger when using SNMPVariable instruction.
  • Minor
    Enabled UID retrieval/assignment over remote encrypted PakBus connections using DevConfig.
  • Minor
    Improved handling of simultaneous SDI-12 communication on C1 and C2.
  • Minor
    Fixed SDI12Watch() compile error.
  • Minor
    Updated TLS cipher suites.
  • Minor
    Fixed an issue with the JSON response format returned by HTTP API settings table query.
v11.02February 6, 2025
  • New Feature
    Added all the required features for CampbellCloud service.
  • New Feature
    Added a find file option to the "NEWFILEVar" parameter of NewFile(). See the CRBasic help for details.
  • New Feature
    Added support for web.obj.gz files to automatically execute an embedded recipe.json when detected.
  • 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.
  • Major
    Updated MQTT code to align with the latest MQTT library changes.
  • Major
    Fixed a scenario in which MQTTPublish() with TLS enabled would stall in a slow sequence scan.
  • Minor
    Fixed infinite wait time when client functions "Timeout" parameter was set to 0; now defaults to 75 (e.g. HTTPGet(), FTPClient()).
  • 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
    Implemented a potential fix for an issue where FTP data files intermittently contain only headers.
  • Minor
    Corrected a case where memory corruption might occur during the use of EmailRelay() with certain string sizes.
  • Minor
    Fixed a Watchdog event on a HTTP data query to non-existent table.
  • Minor
    Fixed a problem causing Include() to fail when handling the ".CR300" file extension, even though ".dld" and ".crb" files were processed successfully.
  • Minor
    Updated the internal cellular modems to send PDP credentials on each modem initialization, not just once on bootup.
v11.01July 23, 2024
  • Minor
    The CRBasic pre-compiler now allows more than 10 math operators in a single line.
  • Major
    Fixed an issue where serial communications would occasionally send corrupted information if the datalogger was returning from a low power state.
  • Major
    Fixed an issue where datalogger loops on TriggerSequence() when a GOES datatable is called from within a SlowSequence.
  • Minor
    Fixed PortBridge() sending partial transmissions over slow IP connections.
  • Minor
    Fixed an issue where ClockSet() was preventing SlowSequence scans.
  • Minor
    Fixed an issue with RS-232 data coming through ports configured for SDI-12 when using serial talkthrough on SDI-12 port.
v11.00February 21, 2024
  • New Feature
    Added support for ApplyAndRestartSequence().
  • New Feature
    Added IncludeSection() support.
  • New Feature
    Added UINT1 data type.
  • New Feature
    Added support for MQTT.
  • Major
    Fixed longevity of the TX325/TX326 EEPROM by eliminating unnecessary writing when setting DCP addresses for GOES transmissions.
  • Major
    Fixed setting the TX325/TX326 output power. 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.
  • Major
    Fixed a continual restart issue when using SetSetting(BeaconCOMRF)
  • Minor
    The terminal talk-through now opens the requested port if the port was closed by SerialClose() in the program.
  • Minor
    Fixed a timeout issue with SDI12Recorder() when the sensor requires more than 300 seconds to respond.
  • Minor
    Fixed an issue where SDI12Recorder() reported NANs when multiple sensors were specified in the address parameter.
  • Minor
    Updated DNS to try using IPV4 before IPV6.
  • Minor
    Run options are now cleared after performing a full memory reset.
  • Minor
    Can now use a Const in StationName().
  • Minor
    Added a compile error to catch lines in the program that contain several "------" or "++++++" when not formatted as a comment.
  • Minor
    Updated the SSL stack.
  • Minor
    Activating a TLS root CA certificate is no longer contingent upon MQTT being enabled.
  • Minor
    Fixed the output array of WindVector() when repetitions are used, ensuring coherence between the data and labels.
  • Minor
    Fixed GOES SHEF code to adjust transmit time offset relative to data timestamp.
  • Minor
    Fixed a PakBus issue that caused intermittent table definition download failures.
  • Minor
    Fixed SetSetting() for "WiFiConfig" in CR300-WiFi cannot set the value to Create a Network "1”.
v10.07September 28, 2022
  • New Feature
    Added support for the updated CELL220 cellular modem module.
  • Major
    Fixed an issue that could cause a constant watchdog state that may result in the data logger losing settings and becoming unresponsive. These symptoms only occurred when a large program with many full, or nearly full data tables was restarted. Restart events include manually stopping/restarting a program and low power conditions.
  • Minor
    Fixed a watchdog error that was generated from the "formatString" parameter in FormatFloat(). The user can define the field width of the formatString. If the field width is defined larger than the result string, the logger would watchdog.
v10.06May 17, 2022
  • Major
    Some settings in the CR300 require a reboot when the setting is changed. This OS version fixes an issue that was introduced in OS 10.05 where the data logger would not automatically perform the necessary reboot when one of these settings was changed.
v10.05February 14, 2022
  • New Feature
    Added GOESGainSetting 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 Trustees 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 Trustees 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 IP stack network diagnostic information.
  • New Feature
    Added support for the SDI-12 XLOADOS command to send an OS to a sensor over the SDI-12 bus.
  • Major
    Fixed an issue when using SetSetting("CellEnabled",10) that caused settings to be re-written on program start. Excessive re-writes may cause the datalogger to become unresponsive.
  • Major
    Updated internal CELL205 to work after AT&T 3G sunset.
  • Major
    Fixed an issue that could result in record corruption if the record write occurred near a memory-erase boundary during a data logger restart.
  • Major
    Fixed a serial flash issue caused by continuous overwrites to the same setting in memory. A known cause was continuous overwrites of StationName(). Excessive re-writes may cause the datalogger to become unresponsive.
  • Minor
    Fixed a hard fault watchdog when communication timeouts were updated by PakBus.
  • Minor
    ARP messages are now transmitted correctly to improve static address mapping on a network.
  • Minor
    Fixed an error where the ModbusClient() instruction sent duplicate data when using Modbus function 6 (Write Single Register).
  • Minor
    Improved handling malformed communication 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 .5 seconds after +++ is sent for modem hang-up sequence.
  • 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 a DNP3 error that occurred when a specific index request began at an index > 0.
  • Minor
    Fixed a watchdog generated when PPP is active and preforming serial input/output on the same communication port.
v10.04March 18, 2021
  • Major
    Fixed ConstTable() so it is visible in Table Monitor. In OS 10.03, the only way to access the ConstTable was using the Terminal.
  • Minor
    Fixed routing Modbus RTU or TCP Modbus packets over a PakBus Network using DataGram().
  • Minor
    The += operator no longer locks up the datalogger when using data types Long and String. Long += String() is not a legal operation and will return a value of 2147483647(&H7FFFFFFF).
  • Minor
    SendData() to LoggerNet successfully completes the data transfer and each record number is accurate. In Operating system 10.03, the record number was always the same number (134231165).
  • Minor
    Include() files are now compiled as expected by the CR300 CRBasic compiler.
  • Minor
    Fixed reading Cellular settings when the PakBus Max Packet size is set lower than the default value.
  • Minor
    Settings.CellEnabled returns the correct value for the cellular enable setting.
v10.03October 28, 2020
  • New Feature
    Added optional parameter to the PingIP() instruction to specify IP version.
  • 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
    The streaming options in HTTPPost() now are supported.
  • Major
    Improved how the GOES functions in the CR300 series interact with Hydro-Link.
  • Major
    The first GOES self-timed transmission now transmits when expected.
  • 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
    Encryption() with option 0 now returns the correct length of the original input.
  • Minor
    Updated terminal to allow "Serial Talk Through" on PPP enabled ports. PPP will temporarily be paused.
  • Minor
    TOA5 formats in TableFile() now include quotes when outputting "NAN" for FP2 Datatype.
  • Minor
    Replace() now performs boundary checks correctly on strings larger than 24 bytes.
  • Minor
    Watchdog counter now can be reset from the status table.
  • Minor
    Updated SerialOut() to prevent a rare hard fault condition.
  • 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.
v10.02May 4, 2020
  • (Known Issue) The instructions SMSSend() and SMSRecv() do not work in OS 10.02.
  • New Feature
    Added the PortBridge() instruction, which can be used to configure a datalogger as an IP serial terminal server, or to bridge two or more serial or two or more IP ports.
  • Major
    Fixed an issue that could cause high beacon rates when the PakBus Internet Beacon is set to 0. The high beacon rate could increase communication overhead and result in increased cellular data usage. Introduced in OS CR3XX.Std.10.00.obj.
  • Minor
    Increased GOES buffer size limit.
  • Minor
    Fixed a watchdog error generated by a memory check timer.
  • Minor
    Terminal F command now displays settings list. In OS 10.01 this command generated unreadable characters in the terminal display.
  • Minor
    Improved the boot-up process for programs that include SetSetting(). In rare instances settings not set via SetSettings() would revert back to factory defaults.
v10.01March 30, 2020
  • Major
    Charge output no longer sources excess voltage to battery terminal. Introduced in OS CR3XX.Std.10.00.obj the battery voltage could go as high as 16.3 Vdc when CHG input was greater than 16.3 Vdc.
  • 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
    Fixed an issue that caused incorrect PWM() pulse generation for periods between 250 and 330 milliseconds.
  • Minor
    Fixed an issue with GetRecord() when passing a variable into the RecsBack parameter and the optional format parameter is being used.
v10.00March 11, 2020
Download unavailable
  • New Feature
    Added support for the TX325 GOES satellite data transmitter.
  • New Feature
    Added a Cell Network Operator ID setting, which allows the user to manually set the Operator ID.
  • New Feature
    SDI12 in the data logger terminal can now read a multi-line response from a sensor.
  • Major
    The internal CELL2XX now goes into low-power mode when expected.
  • New Feature
    Added “CellNetCellID"(returns cell tower ID) and "CellNetBand”(returns the band the modem is currently using. These settings can also be accessed in Device Configuration Utility under Settings Editor->Cellular->Cell Diagnostic Info.
  • New Feature
    Added Beacon Interval Internet and Verify Interval Internet settings for PakBus over IP communication. Use Device Configuration Utility to access the settings under the Settings Editor->Advanced tab.
  • Major
    Disabled modem OMA discovery for the CR300-CELL205. This resolved an issue with unwanted data usage.
  • Major
    Fixed a memory access issue that could cause a data logger to watchdog and reset. A few know cases were related to PPP and the LoggerLink mobile app.
  • Minor
    Improved speed and discovery for the external CELL2XX.
  • Minor
    PDP authentication now works as expected.
  • Minor
    SerialIn() now works correctly when PPP is enabled on the same port.
  • Minor
    Improved internal RF radio performance when sending packets in rapid succession.
  • Minor
    Improved AvgRun() performance to decrease processing time.
  • Minor
    Fixed PreserveVariables() to restore variables correctly.
  • Minor
    ConstTable() now updates the timestamp when modified.
  • Minor
    TableFile() now works correctly with GetDataRecord().
  • Minor
    SDI2SensorSetup() now works correctly when using tablename.fieldname as a data source.
  • Minor
    AVW200() now times out after 2 minutes if there is a communications failure.
  • Minor
    Changed the raise to the power operator (^) to always return a float, so it matches the behavior of the PWR() instruction.
  • Minor
    Tablename.record now returns the correct record number when it is called after table memory has rung and before the next frame is written.
  • Minor
    VX1 and VX2 now can function as the ClkPort and ResPort for the AM25T().
  • Minor
    Web API now returns record 0 when using the backfill option.
  • Minor
    Updated PPP dial to send the ATH (hang-up) command if there is failed dial attempt.
v9.02August 12, 2019
  • Major
    Improved the network registration process by adding a configuration reset process when the cell modem fails to register with the network.
  • Major
    The CR3X0-CELL2XX no longer preforms a watchdog reset when the keep alive ping task runs.
  • Major
    Fixed terminal lockup and file creation issues when using "CELL RADIO UPDATE" and "CELL RADIO UPDATE FILE" terminal command.
  • Minor
    Fixed the optional timeout parameter in IPNetPower() for the cellular interface option.
  • Minor
    When the TCPOpen() optional timeout parameter is not used, or left blank, it results in the default of 0.
  • Minor
    The CR300 now allows ComC1_Rx/ComC2_Rx to be used in serial instruction if one of those same ports is used in GPS().
v9.01July 8, 2019
  • Major
    Fixed an issue in OS CR3XX.Std.09.00.obj where the CR310 would become unresponsive on all communication ports if Ethernet was enabled and not being used.
  • Major
    Fixed an issue in OS CR3XX.Std.09.00.obj where using SetSetting ("PPPDial","PPP") or SetSetting ("PPPDialResponse","CONNECT") would create a memory access error causing the CR300 to lock up.
  • Minor
    The CR300 can now communicate with the AVW200series via SDI-12.
  • Minor
    SetSetting ("RadioEnabled",x) now works.
  • Minor
    Fixed an issue in OS CR3XX.Std.09.00.obj where the NTPOffset parameter in NetworkTimeProtocol() was not being applied.
  • Minor
    Fixed an issue that caused the Trusted Hosts setting to become corrupted when adding multiple IP addresses.
v9.00June 19, 2019
  • New Feature
    Updated the IP stack with IPv6 support and the VJ TCP/IP Header Compression for compatibility with the RV50 firmware v4.11 and newer.
  • New Feature
    Added PDP authentication support for CR3XX-CELL2XX series.
  • New Feature
    Updated DNS settings to allow IPV6 address. Requires Device Configuration utility 2.21 or greater.
  • 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.
  • New Feature
    CR3XX-CELL2XX now supports the CELLULAR RADIO UPDATE and CELLULAR RADIO UPDATE FILE terminal commands.
  • Major
    The CR300-series data logger, when it is a DHCP server, no longer activates the watchdog reset when receiving DHCP packets larger than 500. This change improves communication reliability over the RNDIS port and the integrated WIFI option when configured to create a network.
  • Major
    An internal Wi-Fi update is available. After updating the CR300 to CR3XX.Std.09.00.obj, or later, the internal WIFI can be updated by sending CR300_WIFI_1.7.5.obj. This updates the WIFI module to properly receive broadcast packets from the Access Point it is joined to. Prior to this update the CR300 would not respond to the Device Configuration Utility IP search feature.
  • Minor
    After updating to CR3XX.Std.09.00.obj, or later, the Device Configuration Utility “Send OS” tab will work as expected. Prior to this fix several attempts to send the OS may have been required.
  • Minor
    The terminal command SHOW CELL INFO for the CR3XX-CELL2xx series no longer causes a reboot.
  • Minor
    Quadrature() now uses static memory to fix the "Out of base memory" error.
  • Minor
    OmniSatData(), OmniSatRandomSetup(), OmniSatStatus(), OmniSatSTSetup() now work with the OmniSat-3.
  • Minor
    Several updates to GOESTable(). Pseudo Binary values now have the correct data format limits/range of values. Improved ASCII rounding when the value is larger than the specified precision. Updated output buffer size to prevent memory corruption.
  • Minor
    The CR3XX-CELL2XX no longer enters a wait state if the module is in a power-up state and IPNetPower() is called to power-down the module.
  • Minor
    DataEvent() now compiles when the DataTable size is auto allocated.
  • Minor
    Fixed a memory corruption error on the CR3XX-RF4XX radio initialization.
  • Minor
    The CR3XX-RF4XX no longer get into a state where continuous PakBus control packets are sent over the radio.
  • Minor
    In the CR3XX-RF4XX the first radio packet after a wake-up event now transmits as expected. Prior to this change the first transmitted packet would occasionally fail.
  • Minor
    Memory for TLS now is allocated correctly when TLS connections are used in Slow Sequence scans.
  • Minor
    TriggerSequence() no longer prevents the CR300 from dropping into low power mode.
  • Minor
    Fixed an invalid memory read error when using SerialOut() when used with the TCP/IP socket handle. The memory read error would cause the datalogger to watchdog.
  • Minor
    Fixed and issue with PreserveVariables() that would cause memory corruption when restoring variables. This would cause the CR3X0 datalogger to become unresponsive and watchdog right after reboot.
v8.01January 17, 2019
  • New Feature
    Added a watchdog to monitor a failed OS send attempt. If an unexpected error occurs causing the OS upload to be terminated mid process, the datalogger will watchdog in 40 minutes. When the datalogger watchdogs, the program set to “run on power up” by the run options, will compile and restart.
  • New Feature
    A datalogger OS may be sent remotely using the "Logger Control" tab in Device Configuration Utility if the running program has been stopped. When the program is stopped, the SW12 port and communication ports will remain in the same state. Prior to this change, sending an operating system remotely via the "Logger Control" tab would cause the datalogger to reboot before accepting the OS. The reboot was problematic over cellular communications because of the latency in the renegotiation process. Device Configuration Utility will time out aborting the OS send before communications are reestablished leaving the datalogger in an idle/no program state. Note the best practice for sending an OS remotely is through File Control in either Device Configuration Utility or the LoggerNet Connect screen. Sending an OS with this method does not require you to stop the running program first. The OS has not changed the behavior to File Control.
  • Major
    The Internal cell modem firmware in the CR3x0-CELL2xx series can now be updated over the air. See app note 3T-M for directions.
  • Major
    Fixed an issue with the internal cellular modem that occurred when trying to re-connect to the network after a "PPP" error with detail "9" was logged in the cellular log.
  • Major
    Fixed a memory corruption issue that could occur when the datalogger was simultaneously accessing files on the CPU while the IP stack was busy; for example, a known case involved storing images from a camera on the CPU during IP communication.
  • Major
    Fixed an IP memory leak when using web sockets to access data in the CR300series. This was Introduced around OS 8.00.
  • Major
    SDI12Recorder() now waits up to the advertised timeout by the sensor. In OS version 8.00 SDI12Recorder() would only waiting up to 2 seconds before issuing the aD0! Command.
v8.00December 18, 2018
  • New Feature
    Added support for Campbell Scientific external CELL2xx modems.
  • New Feature
    Added SDI-12 version 1.4 support to SDI12Recorder() and SDI12SensorSetUp() .
  • New Feature
    Added "NTP Server" setting that allows the user to specify an NTP server to adjust the datalogger clock.
  • 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 the trusted host list will not be allowed to connect.
  • New Feature
    Added ComC1_Tx, ComC1_Rx, ComC2_Tx and ComC2_Rx to the terminal watch options.
  • New Feature
    PCAP settings are now available in the datalogger Settings Table. PCAP settings can be accessed via the terminal and Settings Editor.
  • New Feature
    IPNetPower() updated to support for the external CELL2xx (interface 5).
  • New Feature
    MoveBytes() now has an optional parameter 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
    Added Exclusive Option to IPRoute().
  • New Feature
    Added the ability to set the default network using IPRoute(). To set the default network the ipaddr parameter must equal empty quotes (“”).
  • Major
    Fixed an issue that randomly caused a watchdog while processing IP timeouts. Symptoms include watchdog count incremented but no watchdog file created.
  • Major
    Negotiating a PPP sessions through an Internal cell modem no longer will get stuck in a redial sequence. Prior to this change rebooting the datalogger was required to reestablish communications in some cases.
  • Minor
    Updated radio diagnostics to include radio firmware version.
  • Minor
    PWM() now allows floats in the Period parameter.
  • Minor
    GPS() now accepts values prefaced with + or -.
  • Minor
    Duplicate measurement instructions are now allowed in stacked scans. An example of a program that uses stacked scans is a program that may contain a pre-scan with a set number of scan counts. Once the pre-scan count is reached the program will move to the main scan and run.
  • Minor
    The reset parameter in MaxRun() and MinRun() now behaves like AvgRun().
  • Minor
    You can now use pointers in the ArrayLenVar parameter of ArrayLength().
  • Minor
    You can now use pointers in TypeVar parameter of TypeOf().
  • Minor
    Fixed data type IEEE8 in Sample() for variables of type Double.
  • Minor
    Parameters defined as Double are now correctly passed when the function is not declared as type Double.
  • Minor
    Fixed an issue reporting the Default Network when RNDIS is enabled on the USB port. RNDIS will have a lower priority than other network interfaces.
  • Minor
    ABS() now returns the correct value when using data type Double (IEEE8).
  • Minor
    The communications port assignment in the file name when using the 3209 code in the file manage settings now points to the correct communication port.
  • Minor
    Therm108() now measures the full temperature range of the sensor.
  • Minor
    Applying internal cellular modem setting will no longer fail when connected over the cellular network. This was due to the modem resetting before the settings were stored.
  • Minor
    The internal cellular modem no longer restarts when the terminal mode is used to start a talk through session.
  • Minor
    Constant declarations now allow a Const to be set a value in the Settings Table. Example Const A = Settings.SerialNumber.
  • Minor
    PreserveVariables() now works as expected.
  • Minor
    The terminal C command now correctly displays floating point values for constant declarations.
  • Minor
    Manually changing the RNDIS IP address setting is now applied correctly. The default address is 192.168.66.1
v7.05August 29, 2018
  • This update is recommended for all CR300 and CR310 dataloggers.
  • This update improves the stability, compatibility, and security of your datalogger and is recommended for all users.
  • (WARNING) Upgrading the Operating System could reset all CR300 settings back to factory defaults. Sending this Operating System remotely can be done but is not recommended. To restore settings after the update, it is recommended that a backup be made of the current datalogger settings or take programmatic measures to ensure your settings can be restored. This can be done using Device Configuration Utility (DevConfig) backup utility or the CRBasic instruction SetSetting(). Detailed information on how to upgrade your datalogger operating system is provided in the CR300 manual.
  • Major
    The CR300-CELL2xx now recovers appropriately after a PPP dropped error.
  • Minor
    The CR300-CELL2xx Ping Keep Alive no longer fails if PPP was dropped.
  • Minor
    Fixed an issue that caused false modem restarts to be logged.
  • Major
    The CR300-CELL210 now reports phone number in the cellular status correctly.
  • Major
    Increased the RS232 buffer size to fix buffer overruns when using PPP.
  • Minor
    Updated Modbus slave when setting single registers.
  • Minor
    Improved the SDI-12Recorder() instruction to allow communication with the CS320 sensor on both C channels.
v7.04July 2, 2018
  • Major
    Improved the frequency option in the PulseCount() instruction to accurately measure frequency when scan intervals are greater than 65 seconds.
  • Minor
    Modbus now works when using the COM_RF communications port.
  • Major
    EmailRelay() streaming of attachments now works correctly; attachments are not empty or corrupted.
  • Minor
    Updated the HTTP Server to return "Cache-Control: no-cache" in the header. This resolves an issue with cached JavaScript files not refreshing correctly.
  • Minor
    SetSetting() to set two byte integers with limits now works.
  • Minor
    Updated PPP to use the TCPMSS value set with SetSetting(“TCPMSS”, ..).
  • Minor
    The HTTP server no longer returns a 404 error when adding a parameter to a file request.
  • Minor
    Updated the CELL210 module startup to deactivate PDP context before modem initialization.
  • Minor
    Updated the CELL210 module startup to wait until after PPP startup to get network information.
  • Minor
    Updated the CELL210 module startup to verify PDP activation and retry as needed.
  • Minor
    Updated the CELL2XX modules functionality to check for a valid TCP\IP address after establishing a PPP connection.
  • Minor
    Changed data rate setting in the WiFi module to AUTO when joining an Enterprise Security network.
v7.02May 30, 2018
  • Fixed SDI12SensorResponse() issue where an additional Negative sign was generated.
  • Fixed an issue that causes the scan to stop running after a sleep event. Discovered in the use case where the SerialOpen() instruction was configured to allow sleep.
v7.01April 20, 2018
  • This update is recommended for all CR300 and CR310 dataloggers.
  • This update improves the stability, compatibility, and security of your datalogger and is recommended for all users.
  • (WARNING) Upgrading the Operating System could reset all CR300 settings back to factory defaults. Sending this Operating System remotely can be done but is not recommended. To restore settings after the update, it is recommended that a backup be made of the current datalogger settings or take programmatic measures to ensure your settings can be restored. This can be done using Device Configuration Utility (DevConfig) backup utility or the CRBasic instruction SetSetting(). Detailed information on how to upgrade your datalogger operating system is provided in the CR300 manual.
  • Added the MaxRun() instruction. MaxRun() is used to output the running maximum of a measurement.
  • Added the MinRun() instruction. MinRun() is used to output the running minimum of a measurement.
  • Added CPUDriveFree to the status table. Settings.CPUDriveFree is now supported.
  • Fixed an issue that caused data table clock corruption when running a SlowSequence() with a Function() that calls a Delay() instruction.
  • Fixed an issue that caused double-values to be corrupted when using doubles within table.fieldname.
  • Fixed using Setting.TLSStatus in a CRBasic program.
  • Fixed SetSetting(HTTPSEnabled, ..).
  • Fixed Settings.Beacon(. . .).
  • Fixed SetSetting(USBConfig, .).
  • Fixed Sprintf() when using asterisks to set the width and precision.
  • Fixed an issue that caused GetVariables() to add extra bytes that resulted in failures communicating with CR10X loggers.
  • Updated PakBus TCP/IP beacon interval to 2 days.
  • Fixed a PPP start failure that could cause the CELL210/CELL205/CELL200 to lose cellular communications. Restart was required to restore communications.
  • Updated compiler to not allow a variable already declared as an alias.
  • Allow a string array dimensioned (N,1) or (1) to be referenced as (N,1) or (1). This fix avoids an out of bounds error at run time.
  • Fixed XML UINT4 type to be "unsignedINT".
  • Fixed the compiler hanging when using an alias of more than the declared array(1).
  • Updated DataTableInfo to not update the timestamp when polling. This change makes the behavior of CR3X0 dataloggers match the behavior of the other Campbell Scientific dataloggers.
  • Fixed an issue that caused GoesTable() to fail. GoesTable() was not opening the serial port correctly.
v7.0February 12, 2018
  • This update improves the stability, compatibility and security for the CR300 and CR310 dataloggers and is recommended for all users.
  • (WARNING) Upgrading the Operating System could reset all CR300 settings back to factory defaults. Sending this Operating System remotely can be done but is not recommended. To restore settings after the update, it is recommended that a backup be made of the current datalogger settings or take programmatic measures to ensure your settings can be restored. This can be done using Device Configuration Utility (DevConfig) backup utility or the CRBasic instruction SetSetting(). Detailed information on how to upgrade your datalogger operating system is provided in the CR300 manual.
  • Added support for the CR300-CELL205, CR310-CELL205, CR300-CELL210, and CR310-CELL210 dataloggers.
  • Added capability to work with newer web TLS security schemes and models. Upgraded to MBEDTLS libraries from AXTLS libraries.
  • Added a TCPMSS setting which allows the user to set the size of the TCP/IP packet (Maximum Transmission Unit or MTU). This can be set using Device Configuration Utility version 2.17 or greater or by using the SetSetting() instruction in CRBasic (SetSetting("TCPMSS", 1024)).
  • Added the ability to monitor daily and monthly cellular data usage in kilobytes via CRBasic. Settings.CellUsageToday (Read Only) reports the total usage for the current day. Settings.CellUsageYesterday (Read Only) reports the total usage for the previous day. Settings.CellUsageMonth (Read Only) reports the total usage for the current month. Settings.CellUsageLastMonth (Read Only) reports the total usage for the previous mount. This information is also provided in the Cellular Network Status field under the Cellular tab in Device Configuration Utility.
  • Added support for the datalogger setting Setting.CellBillingDay and SetSetting("CellBillingDay", ##). ## is the numeric day of the month the user wants the monthly statistics to reset. Users can also set the day the monthly cell usage statistics roll over by setting the Cell Billing Cycle Day field in the Settings Editor tab (Cellular subtab) of Device Configuration Utility.
  • Added a terminal "F" command to list all SetSetting() fields.
  • Added a new optional parameter to PPPOpen() that allows the user to select the type of TCP/IP address that is returned. Option 0 returns a IPv4 address. Option 1 returns a IPv6 address. Option 2 returns both a IPv4 and a IPv6 addresses. If a IPv6 address is not available, :: is returned.
  • Added support for WaitDigTrig(). This instruction is supported on ports C1, C2, SE1, SE2, SE3. Note: SE4 will not be supported due to an interrupt hardware limitation.
  • Updated the SerialOpen() instruction to support an optional parameter called AllowSleep. If AllowSleep <> 0, the CR300 will allow low power sleep mode.
  • Added SWVX() instruction. It is used to set an excitation channel high or low. SWVX() has three options, ExChan (excitation channels VX1 or VX2), State (0 = low, non-zero = high), and Voltage (0 = 3.3 volts, 1 = 5 volts [default]).
  • Updated the NewFile() instruction to support a new optional parameter called NewFileName that returns the name of the new file.
  • Added a warning to be returned to the user when an incorrect APN has been used with the internal cellular modems.
  • Added a Web API about command (URL/?command=about). This API command returns some basic model number, serial number, and version information of the datalogger.
  • Updated the testing of battery backed memory to be more robust.
  • Added support for the SDI12Watch() instruction that is used to watch or "sniff" SDI-12 measurements that are made on another datalogger.
  • Updated all bridge measurement instructions to specify that the allowable minimum excitation range is 150 mV. Previously this was incorrectly listed as 30mV.
  • Updated TCP socket memory allocation to limit the number of buffers used for sockets.
  • Removed a cellular network signal strength (RSSI) timer. The signal is still checked when a request is made either by Device Configuration Utility or by CRBasic instructions.
  • Updated the interrupt priorities to fix the run program watchdog.
  • Updated Wi-Fi behavior when set to join a network and no SSID is specified. Instead of joining the first open network found, the Wi-Fi module will no join any network.
  • Added memory buffer protection.
  • Bug Fix - Fixed an issue that caused PreserveOneVariable() to corrupt table data under certain conditions.
  • Bug Fix - Fixed an issue that caused PreserveOneVariable() to fail on an OS update.
  • Bug Fix - Fixed an issue that could cause a "Comms out of mem" watchdog.
  • Bug Fix - Fixed a memory overrun issue that could cause the CR300 to watchdog. This issue usually manifested when using Wi-Fi.
  • Bug Fix - Fixed an issue that caused a compile failure when using the GPS() instruction without PPS.
  • Bug Fix - Fixed EmailRelay() when using the instruction without attachments and the optional timeout is set. (PTHDATALOG-472)
  • Bug Fix - Fixed an issue with EmailRelay() when used with no attachment and a string in one of the parameters.
  • Bug Fix - Updated EmailRelay() to return 0 if it cannot connect.
  • Bug Fix - Updated EmailRelay() to respect the timeout (default or user entered) and only try once.
  • Bug Fix - TCP/IP stack updated to set the default gateway to Ethernet when an Ethernet connection is reestablished.
  • Bug Fix - Fixed aborting AT commands to the cellular modem if an incoming data packet is received.
  • Bug Fix - Fixed errors returned by the precompiler to include port names when using PulseCount().
  • Bug Fix - Updated HTTPGet() and HTTPPost() to allow spaces in the url after the /xxxx. The operating system now replaces spaces in the url with %20.
  • Bug Fix - Updated GOES Pseudo Binary NAN to output the most negative possible number.
  • Bug Fix - Fixed a GOES Pseudo Binary issue replacing 0x7f with 0x3f and GOES header timestamp offset changed to be 1 character.
  • Bug Fix - Updated the TLS stack so it will wait if there is not enough memory available.
  • Bug Fix - Fixed a CRBasic pointer issue while indexing arrays. (See https://www.campbellsci.com/forum?forum=1&l=thread&tid=15246 for details.)
  • Bug Fix - Updated the SlowSequence() delay to allow low power sleep mode.
  • Bug Fix - Fixed an issue that caused the SDI12 terminal command to fail over HTTP.
  • Bug Fix - Update the internal USB driver to only transmit when the port is open.
  • Bug Fix - Fixed issues when using a terminal to edit the constant table.
  • Bug Fix - Fixed a GOESTable() issue that could cause the program to lockup when using SerialOpen().
  • Bug Fix - Fixed an empty DNS response issue.
  • Bug Fix - Fixed a CRBasic variable initialization issue when using doubles.
  • Bug Fix - Fixed an issue that caused FP2 NAN values to fail when assigning variables from data tables.
  • Bug Fix - Fixed a DataEvent() table size compile error when the event size is greater than 512.
  • Bug Fix - Fixed an issue that caused GoesField() "/" to fail for missing or NAN values.
  • Bug Fix - Fixed an FP2 conversion failure when equal to NAN or INF.
  • Bug Fix - Fixed a GoesField() "&c" print issue.
v6.01October 18, 2017
  • (URGENT) An issue was found in CR3XX operating systems with a revision number less than 06.00 that could cause the datalogger to become unresponsive in some systems after 50 days. CR3XX operating system version 06.00 and greater resolve this issue. It is highly recommended that all CR300s and CR310s be upgraded to an operating system with a revision number that is 06.00 or greater.
  • (WARNING) Upgrading the Operating System could reset all CR300 settings back to factory defaults when updating from an operating system prior to version 05. Sending this Operating System remotely can be done but is not recommended. To restore settings after the update, it is recommended that a backup be made of the current datalogger settings or take programmatic measures to ensure your settings can be restored. This can be done using Device Configuration Utility’s (DevConfig) backup utility or the CRBasic instruction SetSetting(). Watch the Video Tutorial: Sending an OS to a Local Datalogger.
  • (NOTE) This operating system release is a bug fix release. There are no new enhancements or features added except for the items listed below.
  • Updated the watchdog to verify that the run program tasks are always in a task queue. If the run program task fails to be in the task queue, the datalogger will now watchdog and increment the watchdog counter in the status table. This was done to ensure the datalogger run program task is always working correctly.
  • Updated the datalogger operating system USB driver to detect transmission timeout errors.
  • Modified the DHCP server startup when using RNDIS to check for a USB connection before starting. This prevents the DHCP server from incorrectly responding to DHCP requests on all Ethernet, Wi-Fi, and RNDIS interfaces at start up.
  • Updated the AM25T() instruction to turn excitation off before starting AM25T measurements. Prior to this change excitation was left on. This would cause certain measurements that did not need excitation to be read incorrectly.
  • Fixed an issue that caused the Ethernet connection to reset when the DHCP was not in a bound state.
  • Updated the text for the default network so it is consistent with the text displayed by other Campbell Scientific dataloggers.
  • Modified the operating system to disable all sleep modes when USB is connected.
  • Fixed an issue when using SerialOpen() and SerialIn() with Format 0. If a PakBus sync byte was found, SerialIn() could drop into a PakBus mode sending all received data to the PakBus task, which caused SerialIn() to fail.
  • Fixed an issue when using SerialOpen() on COM1 that could keep the logger awake for an extra 15 seconds after a SerialClose() was called.
  • Changed the default username and password used by the datalogger FTP server. The new username and password are now both NULL. This change will require 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 was done to better secure the datalogger FTP server against malicious attacks. This change does not affect the FTPClient() instruction.
  • Fixed an issue that caused the DHCP server to respond when Wi-Fi was configured to "Join a Network".
  • Updated WebSockets to support the logon command that is used by the internal web pages.
  • Fixed an issue when transmitting from RS232 that could cause delays between bytes and slow the task down.
  • Fixed Files Manager when using option 3209. Note: Capture will alternate between writing to two files "_0" and "_1" to allow for wear leveling of the flash memory.
  • Updated Files Manager to delete the file if open fails.
  • Fixed a signature issue that prevented PreserveVariables() from working.
  • Updated PreserveVariables() to store values before an operating system restart.
  • Added Settings.PPPInfo and Status.PPPInfo.
  • Updated Status.MemoryFree to reflect memory used for communication buffers.
  • Updated table creation to always store a timestamp when using TrigVar parameter.
  • Fixed a table timestamp issue that occurred when using tables that did not contain the DataInterval() instruction and the datalogger was waking up from a sleep state.
  • Updated time of maximum and time of minimum to not inherit units in tables.
  • Fixed an issue with table allocation when the table interval could not be determined which caused the requested number of records to be overwritten.
v6.00August 9, 2017
  • (URGENT) An issue was found in the previous operating systems that could cause the datalogger to become unresponsive in some systems after 50 days. This operating system resolves that issue. It is highly recommended that all CR300s and CR310s be upgraded to this operating system.
  • (WARNING) Upgrading the Operating System could reset all CR300 settings back to factory defaults. Sending this Operating System remotely can be done but is not recommended. To restore settings after the update, it is recommended that a backup be made of the current datalogger settings or take programmatic measures to ensure your settings can be restored. This can be done using Device Configuration Utility’s (DevConfig) backup utility or the CRBasic instruction SetSetting(). Watch the Video Tutorial: Sending an OS to a Local Datalogger.
  • Added GPS() instruction.
  • Added AM25T() instruction.
  • Added PreserveOneVariable() instruction.
  • Added SMSRecv() instruction (for use with the CR3X0-CELL200 and CR3X0-CELL210 only).
  • Added SMSSend() instruction (for use with the CR3X0-CELL200 and CR3X0-CELL210 only).
  • Added support for the CR3X0-CELL200 and CR3X0-CELL210 embedded cellular modems.
  • Added RNDIS support which allows Ethernet over the USB port.
  • Fixed an internal system timer rollover issue that could cause tasks to sleep indefinitely resulting in communications loss and/or a watchdog.
  • Communications are now paused until the radio (407,422, etc.) has initialized.
  • Added the ability to create WireShark PCAP files that can be used for Ethernet tracing and troubleshooting.
  • Added the ability to update the datalogger operating system, internal webpages, and program to the datalogger using a single xxx.WEB.OBJ.GZ file.
  • Added background task queue checking.
  • Boot-up table verification buffer updated (requires less memory).
  • Combined communications and IP to share the same pool memory.
  • Various memory optimizations have been made to improve variable and table space.
  • Updated default program checking to include "default.cr300" on the CSI drive.
  • Fixed a USB issue that could cause USB transmit to fail.
  • Fixed an error in the USB driver that caused USB communications to fail.
  • Fixed a wakeup from sleep issue that could cause RS-232 transmit to fail.
  • Fixed a memory issue related to configuration of C1 and C2 ports.
  • Updated default program checking. If default.cr300 has a compile error, the datalogger does not continually restart.
  • Fixed an issue that caused hidden files to lockup the datalogger.
  • Fixed an issue in memrealloc that could cause a hard fault due to a memory read beyond the memory boundary.
  • Fixed an ABS function when using doubles.
  • Fixed the EXP function when using doubles.
  • Fixed an issue when storing tables with records greater than 4K.
  • Fixed an issue in the IP task that did not allow the CR310 to sleep when the Ethernet was disabled or powered down.
  • Fixed an issue that could cause memory corruption in the IP stack.
  • Fixed a memory corruption issue with the IP stack buffers.
  • Fixed a continuous restart issue related to file streaming.
  • Fixed an issue where the PakBus TCP Client setting was not able to connect to large port numbers.
  • Fixed a wait communications issue that could cause PPP dial to fail.
  • Fixed a TLS server memory allocation issue that could cause the logger to continually restart.
  • Fixed an issue when using EmailRelay() to send emails to multiple email accounts.
  • Fixed an HTTP chunking issue when using EmailRelay() with table streaming.
  • Updated IP stack advertised MTU to 1430 bytes. This resolves an issue with EmailRelay() when used with a datalogger connected to an RV50 cellular modem.
  • Lowered TCP maximum segment size. Fixes issue with RV50 modems and EmailRelay().
  • Fixed an issue that caused the chunk size to be incorrect when using EmailRelay().
  • Streaming pointers for EmailSend(), FTPClient(), HTTPPost(), HTTPPut() are now preserved across power cycles. (A lithium battery is required.)
  • Fixed a memory buffer size issue that caused HTTPPut() to fail.
  • Fixed an issue when using FTPClient() and TLS in slow sequences that caused the datalogger to continually restart.
  • Updated CRBasic compile to allocate an additional TLS buffer when using FTPClient().
  • Fixed a TLS memory free issue that could cause FTPS to fail.
  • Added low-level file creation retries for HTTP/FTP.
  • Updated the HTTP server to look for files on the CPU drive first.
  • Updated the HTTP server to first look for "CPU:index.html" before trying "CSI:index.html".
  • Updated the "Forbidden" HTTP message for internal web pages.
  • Fixed an issue that caused web sockets to fail to update after bootup.
  • Fixed an issue that caused XMLParse() to fail when XMLContent was a file name.
  • Fixed a TCP/IP buffer overrun issue with the DHCP server.
  • Fixed an issue that caused PPPClose to not allow the datalogger to sleep.
  • Fixed an issue that caused duplicate sniff output when sniffing over a TCP/IP connection.
  • Updated the default domain name to be "linktodevice.com".
  • Fixed a PakBus/TCP Clients issue when using a large port number that caused datalogger to not make the TCP/IP connection.
  • Fixed an issue that caused ModbusMaster() to always reopen the port. This caused issues when using a non-default serial format.
  • Updated ModbusSlave() to show a compiler error if the baud rate is incorrect.
  • Fixed an issue that caused the MODBUS flag to not be set when the port was already opened.
  • Fixed Tablefile() record pointers incorrect after power cycle.
  • Fixed an issue that could cause an IP Trace to be enabled while tracing another port.
  • Updated terminal command web update to retry if the first network fails.
  • Fixed an issue with SetSettings(Settings.RadioEnable).
  • Fixed an issue that caused a continual restart when using SetSetting("EthernetEnable" . . .).
  • CRBasic SetSetting "USBconfig" added.
  • Fixed issues with SetSetting "BaudrateRS232", "BaudrateCOM1", "BeaconRS232", "BeaconCOM1", "BeaconCOMRF", "VerifyRS232", "VerifyCOM1" and "VerifyCOMRF".
  • Updated Settings.RadioRSSI to return a negative value.
  • Updated SetSetting() parameter FieldName to support variables or expressions.
  • Fixed an issue with SDI12SensorResponse giving +9999999 for NAN instead of -9999999.
  • Fixed the SDI12Recorder() instruction array bounds checking.
  • Updated port/channelcompiler error to give the port/channel name instead of the number.
  • Fixed an issue with GoesTable() not addressing the transmitter prior to sending data.
  • Added support for Sprintf() 'Y' SDI-12 formatting.
  • Fixed Sprintf() so %% in the format string generates a % character.
  • Added a PulseCount() - PConfig compiler check.
  • Fixed an issue that could cause a PakBus timer to request a disconnect when using the watch command (W) in the terminal.
  • Fixed an issue that caused the compiler to crash with variable names > 39 characters.
  • Fixed an issue that caused GetDataRecord() timestamp to be incorrect.
  • Fixed an issue that caused PakBus communications to fail if Modbus was enabled on the same port.
  • Fixed MuxSelect() to allow VX1 and VX2 as the clock and reset ports.
  • Fixed an issue that caused SerialBrk() to not send the break.
  • Updated digital I/O pin hardware initialization.
  • Fixed an issue that caused CRBasic long variable = NAN to fail.
  • Updated SlowSequence task priorities.
  • Updated FileControl() to allow file delete if "run now program flag" is set and the program is not running.
  • Fixed an issue when storing tables with greater rhan 4k record size.
  • Updated low-level serial open to skip hardware/DMA initialization if port is already open with same options.
  • Fixed ABS() negative to positive error.
  • Fixed a ABS() issue when using doubles.
  • Updated math "^"(pwr) function to return results consistent with other dataloggers.
  • Fixed an issue when using SerialOpen() for ports ComC1_Rx,ComC2_Rx,ComC1_Tx, ComC2_Tx. Format was set incorrectly.
  • Fixed Terminal CSI Security Code issue.
  • Added clock calibration option to calibrate the clock using P_SW port.
  • Added support for VX1 and VX2 to PortSet().
  • Fixed an issue that caused the menu to be truncated when displaying the terminal menu.
  • Fixed an issue that caused invalid differential measurements if a port was configured as an input.
  • Fixed an issue that could cause CurrentSE() to measure before the hardware was fully ready.
  • Fixed a record find issue that caused GoesTable() buffer to not output all data.
  • Low-temperature clock calibration added.
  • Updated Startup timing to use a hardware timer.
  • Fixed GoesTable()/GoesField() instructions.
  • Fixed setting values in ConstTable. The flag that told the search code that this was not a final storage table was being cleared.
  • Fixed an issue in SerialClose() that caused the port to not shut down in the correct sequence.
  • CRBasic SerialIn() updated. If the timeout = 0 and the termination character/string is < 0 or a NULL string, then it will record any characters in its buffer and then exit.
  • Fixed a SlowSequece task start priority issue that could cause slow sequences without scans to run at a higher priority.
  • SerialOpen(), SerialIn(), SerialOut(), SerialClose() updated to support ComC1_Tx, ComC1_Rx,ComC2_Tx,ComC2_Rx. Example: SerialOpen (ComC1_Tx,115200,0,0,500)
  • Fixed an issue that caused sniff RX packets to be duplicated.
  • Updated PWM port checking. Allows PWM on same port and fixed the reported channel.
  • GoesTable() and GoesField() adjusted so slashes are present only when the record has not yet been recorded.
  • Adjusted GoesTable() syntax when decimating.
  • Fixed GOES pseudo binary message so it will now not include any spaces or carriage returns.
  • Fixed setting a Boolean in a constant table.
  • Power-up flag is now restored when a lithium battery failure occurs.
  • Fixed an issue that could cause the datalogger to continually reboot if a compile error occurred with a line greater than 512 bytes.
  • Fixed a serial flash write issue with tables larger than 4K.
  • Fixed a table memory buffer issue.
  • Changed LithiumBattery text to "OK, ON POWER UP".
  • Fixed a PakBus issue that caused a watchdog when a link timed out.
  • Updated Goes instructions.
  • PakBusClock() changed so PakBusAddr parameter can be variable.
  • PakBus 30 minute close file timeout not active if called from the program.
  • Fixed an issue where, if writing to a special field (TIMESTAMP, RECORD, etc.) of a structure, the table semaphore was not released.
  • Removed various compile errors with GetDataRecord() and AcceptDataRecord() when referencing a data table not matching the scan interval, which will allow the data table's DataInterval() declaration to match the remote DataInterval() declaration.
  • Fixed terminal command "C".
  • Fixed an issue with MODBUS that caused the RxParse task to drop to a lower priority.
  • Fixed an issue that could cause PeriodAvg() to reset the datalogger.
  • Fixed a PeriodAvg() timer rollover issue.
  • PeriodAvg() - removed cycle restriction of 200 cycles.
  • Updated GOES to prevent pc-compiler crash.
  • Fixed an issue that could cause a serial flash error at address 217088 when settings are set to defaults.
  • Fixed the DataTableInfo record number from incrementing on every poll.
  • Fixed a NAN issue when using reps with measurements. If one channel is NAN the sequential channels will NAN as well.
  • Removed a 16K task allocation.
  • Fixed an issue with channel port configuration checking when using reps.
  • Fixed an issue that could cause the RunProgram task to lock up if the same table is called from both the SlowSequence and scan.
  • Fixed an issue that caused unclean frame size to not be calculated correctly.
  • Fixed a COM1 open issue that could cause the COM1 task to not start. (Occurred when a SerialClose() and SerialOpen() were called without a delay in-between them.)
v5.01January 20, 2017
  • (WARNING) Upgrading the Operating System could reset all the CR300’s settings back to factory defaults. Sending this Operating System remotely can be done but is not recommended. To restore settings after the update, it is recommended that a backup be made of the current logger settings or take programmatic measures to ensure your settings can be restored. This can be done using Device Configuration Utility’s (DevConfig) backup utility or the CRBasic instruction SetSetting(). Watch the Video Tutorial: Sending an OS to a Local Datalogger. to learn how to use the DevConfig backup utility.
  • Modified the CRBasic compile to allocate an additional TLS buffer when using FTPClient().
  • Fixed an issue that caused XMLParse() to fail when XMLContent was a file name.
  • Fixed an issue that could cause the RunProgram task to lock up if the same table is called from both the SlowSequence and Scan().
  • Added TCP socket timeouts. Previously the datalogger was losing memory because it was keeping these sockets alive and not releasing the memory used by them.
  • Fixed an issue in the IP task that did not allow the CR310 to sleep when the Ethernet was disabled or powered down.
  • Fixed an issue with channel port configuration checking when using reps.
v5December 21, 2016
  • (CRITICAL) Upgrading the Operating System could reset all the CR300’s settings back to factory defaults. Sending this Operating System remotely can be done but is not recommended. To restore settings after the update, it is recommended that a backup be made of the current logger settings or take programmatic measures to ensure your settings can be restored. This can be done using Device Configuration Utility’s (DevConfig) backup utility or the CRBasic instruction SetSetting(). Watch the Video Tutorial: Sending an OS to a Local Datalogger.
  • TCP/IP CRBasic instructions added.
  • Fixed the CR3XX’s web server so it will accept .OBJ files via HTTPPut.
  • Fixed an issue that caused the FileControl WebAPI to not compile the program.
  • Fixed an issue that caused Modbus packets to not get grouped correctly.
  • Fixed an endian issue when using SetSettings() to set the DNS servers.
  • Fixed an IPTask issue that kept the IPTask always active. Symptom was SlowSequence scans would not run.
  • Updated Table allocation when CallTable is in a subroutine.
  • Updated SDI-12 to remove extra break.
  • Fixed an out of memory error on compile that caused a watchdog.
  • Updated IP memory allocation.
  • Fixed an IP network interface conflict.
  • Fixed an issue that caused the constant table to assign an incorrect variable type.
  • Fixed HTTP headers Last-Modified date.
  • Fixed web service API terminal to allow content with more than one byte.
  • Fixed web service API terminal to allow binary parameter.
  • Fixed an issue that caused a watchdog when RealTime() was called in a loop.
  • Fixed a TLS issue that caused a hard fault if memory could not be allocated.
  • Updated FTP TLS memory allocation to allocate a minimum of two TLS buffers.
  • Fixed an issue with SDI12 that blocked SDI12 terminal commands.
  • Added lithium coin cell status to the status table.
  • Terminal now requires the user to hit the enter key several times before the terminal will respond.
  • Fixed a Modbus communication issue by removing the optimizations.
  • Updated Modbus to allow Modbus over USB.
  • Added 'Type Long' support to SDI12SensorResponse().
  • Modified restore defaults to clear the TLS key and certificate.
  • ModbusSlave() modified to allow multiple Modbus slaves on same comport
  • Added DHCP state checking with retries.
  • Fixed a TCP/IP memory buffer issue that caused watchdogs.
  • Fixed HttpPost() when incorrectly processed as an HttpPut().
v4November 17, 2016
  • (WARNING) Upgrading the Operating System could reset all the CR300’s settings back to factory defaults. Sending this Operating System remotely can be done but is not recommended. To restore settings after the update, it is recommended that a backup be made of the current logger settings or take programmatic measures to ensure your settings can be restored. This can be done using Device Configuration Utility’s (DevConfig) backup utility or the CRBasic instruction SetSetting(). Watch the Video Tutorial: Sending an OS to a Local Datalogger to learn how to use the DevConfig backup utility.
  • (WARNING) The only TCP/IP instructions supported are DNP3, ModBus TCP/IP, PakBus TCP/IP, PPP, NetworkTimeProtocol(), TCPOpen(), and TCPClose(). Other TCP/IP instructions exist, but are in beta. Use at your own risk.
  • Fixed a PakBus/IP memory leak.
  • Fixed a communications memory leak when using terminal commands.
  • Updated the TCP/IP Memory configuration.
  • Fixed TCP/IP memory alignment hard fault.
  • Fixed an issue that caused Telnet to interrupt communications with other communications.
  • Fixed a watchdog issue that corrupted the file system when creating a watchdog.
  • Fixed ppp_close() to not executed a call back function that has not yet been initialized. This can happen if PPP is opened but the program closes PPP before the call back function is initialized.
  • Fixed an issue that caused errant "Could not find DataTable" compile errors.
  • Fixed the PakBus hello that did not get sent when responding to a beacon with TCP/IP.
  • Fixed a pointer reference issue when using Table.Timestamp.
  • Fixed default channel mask for radio versions.
  • Adjusted low temperature clock compensation.
  • Fixed an issue that caused a communications memory watchdog when using the radio.
  • Updated watchdog file to use an alternate memory source if communications memory is not available.
  • Added resource checking to the PPP timeout.
  • Fixed the ArrayLength() instruction.
  • Updated the CRBasic compiler and parser.
  • Fixed a DHCP issue that could cause the DHCP to fail after a network loss.
  • UDP datagrams are now limited to 10 packets at a time.
  • Setting Status.FullMemReset to a value of 98765 will format CPU, restore default settings, clear memory, and restart the logger.
  • Removed extra space between <html> and <head> that was not needed in the Web API html output.
  • Removed extra <!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\"> that was being added to the html output of WebAPI commands ListFiles, SetValue, BrowseSymbols, and ClockCheck.
  • Modified the datalogger's web server to have <HEAD> and <TITLE> tags and to report the title with the same message that is sent in the http header. For example, a 404 error now reports "404" not "Found".
  • Fixed FileOpen() with mode "r" which did not drop carriage return.
  • Fixed DataTableNames() instruction.
  • DataEvent() changed so that if the end record count is negated then the start trigger condition will end the after end trigger count down.
  • Fixed an issue that caused UDPOpen() to incorrectly close the socket.
  • PPPClose() will now allow the CR300 to drop to a low power state.
  • Updating from operating system versions 1, 2, and 3, settings will be restored and not lost.
  • Updated “Out of comms memory” watchdog.
  • Fixed an issue that caused data table storage to occasionally erase the serial flash twice.
  • Fixed an issue that caused the default IP Net to enter an infinite loop.
  • Fixed an issue that caused a table with a DataInterval() with units of a "Mon" to create a new record every time a call table was issued.
  • Fixed GetVariables() instruction to allow a variable index on the destination.
  • Fixed an issue that caused the number of TLS buffers calculated to be double what was required by the program.
  • Fixed an issue that caused Modbus packets with 0xBD to be processed as PakBus.
  • ETsz() instruction now formats the units MJ/m² in UTF-8.
  • PeriodAvg() timeout did not always result in a NAN. (Destination results in a negative value that should be a NAN.)
  • PeriodAvg() compile error added. "NumCycles must be greater than 1."
  • USB error recovery issue resolved.
  • Fixed Modbus receive that could fail if the Modbus packet was broken apart.
  • Updated serial flash wakeup from sleep.
  • Fixed an issue that caused an extra 5mA current draw on devices with 128MB serial flash.
  • Fixed an issue that could cause PakBus data collection to return an incorrect number of records, which would cause data collection errors and failures.
  • Fixed an issue that caused HTTP POST to be incorrectly processed as an HTTP PUT.
  • Fixed an issue that caused communication through GOES instructions to fail.
v3September 2, 2016
  • (CRITICAL) Upgrading the Operating System will reset all the CR300’s settings back to factory defaults. Sending this Operating System remotely is not recommended. To restore settings after the update, it is recommended that a backup be made of the current logger settings or take programmatic measures to ensure your settings can be restored. This can be done using Device Configuration Utility’s (DevConfig) backup utility or the CRBasic instruction SetSetting(). Watch the Video Tutorial: Sending an OS to a Local Datalogger to learn how to use the DevConfig backup utility.
  • (WARNING) The only TCP/IP instructions supported are DNP3, ModBus TCP/IP, PakBus TCP/IP, PPP, NetworkTimeProtocol(), TCPOpen(), and TCPClose(). Other TCP/IP instructions exist, but are in beta. Use at your own risk.
  • Modified the operating system so that negative baud rates will now generate a compile error. The CR300 datalogger does not have the ability to do Autobaud.
  • Fixed a low-level AC compile error that displayed the wrong port number.
  • Fixed a resource lockup on OS restart.
  • CheckSum() instruction is now included.
  • AVW200() Therm50_60Hz parameter updated. 0 = No Thermistor Measurement, 1 = 60Hz noise rejection, 2 = 50Hz noise rejection.
  • NetworkTimeProtocol() fixed so that it can be both a client and a server.
  • Fixed the TXDelay parameter of SerialOpen().
  • Fixed an issue converting doubles to strings.
  • ArrayLength() in a subroutine is now working.
  • Float to double conversion is now working.
  • Fixed an issue when using SDI-12 to collect more than 10 data values. D1 command fixed.
  • Fix FTP server to not send the 220 ready until the stack call back function is completed; for example, when updating the advertised remote window size.
  • Fixed a compile issue that allowed the compiler to use an invalid pipeline mode.
  • Fixed an issue when using TABLE.TableFull().
  • Fixed an issue that caused TABLE.Output() to fail.
  • Fixed an issue that caused pointers to fail in CRBasic
  • Fixed an issue that caused the "^"(pwr) to fail.
  • Removed 300 baud rate option. Minimum supported baud rate is 1200.
  • PPP disconnect success is now recognized by the logger.
  • HTTPPost() header parameter can be a variable.
  • Fixed an issue that caused ArrayLength() to fail when using doubles.
  • Fixed an issue where CRBasic Table.TableFull() failed to return true.
  • Enabled IPV6 PPP support.
  • PPP is now closed prior to a restart.
  • BrFull() using RevDiff option is now working.
  • Fixed an issue that could cause an aborted IP connection to watchdog the datalogger.
  • Fixed an issue where FTP failed to download XML files and the XML file size was set to 0.
  • SerialOpen() will now keep the datalogger awake for all formats not equal to 0. SerialClose() will allow datalogger to sleep.
  • SerialFlush() will now clear the DMA.
  • SerialOpen() format parameter of 4 will keep the logger awake.
  • Fixed an issue that caused FTP file send to fail when sending ASCII files.
  • Fixed an FTP server endianness issue that caused a "501 invalid PORT command" error.
  • TTL logic format options removed from SerialOpen().
  • Fixed a recompile issue that caused the USB to stop communicating.
  • Websocket calls will now trigger a status table update.
  • Status fields CalGainXXX16 updated to CalGainXXX34 for 34mV range.
  • Fixed a lockup when using the NTP server.
  • Fixed endian issues with the NTP server.
  • Fixed an issue that could cause a lockup when retrieving the file list (PakBus).
  • Fixed an issue that caused only a partial list of files to be returned (PakBus).
  • Fixed a Websockets failure when using FireFox and IE.
  • Added constants for CR1000X and CR9 data loggers.
  • Updated PPP to be faster at detecting a loss of connectivity.
  • Fixed a possible memory leak when COM1 is uninitialized.
  • Added memory checking to XMLParse() instruction.
  • Fixed an issue that caused XMLParse() instruction to corrupt memory.
  • XMLParse() instruction updated to handle cases where there is whitespace within namespace declarations.
  • Fixed an issue that caused a "Max TLS connections" setting set too high to cause PakBus communication failures.
  • Fixed an issue where invalid SDI-12 data could cause SDI-12 to temporarily stop receiving data.
  • Removed the 24 hour no running program watchdog.
  • Fixed an optimization issue that caused a "Could not find ..." compile error.
  • Updated PPP info to display "IP Opened" when PPP is connected.
  • IPTrace() trace instruction has been added.
  • Updated FTP code to match CRX000 code.
  • If a TLS certificate and key are found and "Max TLS Server Connections" is 0 the max TLS server connection will be set to 2.
  • Fixed a task lockup issue with PPP.
  • Updated compile to handle "Out of memory errors" without constant restarts.
  • Updated OSVERSION constant.
  • Updated memory allocation.
  • Fixed an issue that caused SNMP to fail.
  • Updated TLS memory allocation.
  • Ethernet Network Addresses now shows all DNS servers.
  • Updated compiler optimizations from low to medium.
  • PWM() instruction added.
  • Added terminal serial talk through to the terminal.
  • Updated memory allocation for open files.
  • Fixed and issue that caused TLS stack to cause a watchdog reset.
  • Added terminal command to modify constant table.
  • Adjusted memory allocation for task stacks.
  • Updated memory allocation for COM1.
  • Fixed a compile issue that caused an invalid “Webpage name must be a constant” error.
  • USB com updated to fix error: "failed to set the comm state".
  • Fixed an endianness issue with ModbusMaster() over TCP.
  • Fixed an issue with ModbusMaster() start swath over TCP.
  • Fixed an issue that caused an "Out of base memory error".
  • Fixed and issue with DevConfig where the model number displayed was not always correct.
  • Fixed Pakbus encryption.
  • Fixed several issues relating to MODBUS over TCP.
  • Fixed an issue that caused the default net to be set incorrectly.
  • Updated terminal watch -> ip trace to not show CR300 prompt.
  • Fixed an issue that caused an invalid function "declared but not used" warning.
  • Fixed an issue that caused RS-232 and COM1 baud rate to revert to the baud rate setting and not the programmed baud rate.
  • Fixed a buffer overrun error when collecting data with doubles.
  • Fixed IP trace. IP trace only worked when using USB, RS-232 or COM1 to trace.
  • Fixed a memory allocation issue with the IP Stack.
  • Fixed an issue that caused partial PakBus packets to be ignored.
  • Updated comms to handle continuous communications.
  • Updated ET calculation to catch negative sinB night time values.
  • FileManage() using attribute delete all (16) is now working.
  • ExciteV() when using the delay parameter will now turn off excitation after the delay.
  • Expanded Quadrature() instruction to now include Port parameters C1 and SE1.
  • Hiding ".csipasswrd" file now works.
  • Updated PakBus USB to respond more quickly to a beacon.
  • Logger will now restart when IP address setting is modified. This was done so memory could be modified correctly and allow the setting to take effect. This functionality is similar to the way the other dataloggers behave.
  • Fixed an issue that caused the RSo value in the ETo calculation to return NAN's at night.
  • Fixed an issue that caused the USB to fail and not recover.
  • Increased maximum number of open files to 20.
  • Updated program file type checking to not allow ".CR3" files to compile.
  • Updated random time function for Pakbus.
  • Telnet terminal 'Q' will now close the telnet session.
  • Added OSVERSION constant.
  • Fixed the USB hop metric.
  • CRBasic SetSetting() "FilesManager" is now working.
  • Updated the hardware MAC filter setting to allow IPV6 packets.
  • IP Trace added to terminal.
  • Fixed an issue that caused PeriodAvg() to NAN when cycles equal 1.
  • Low level Ethernet filtering added.
  • Broadcast filter setting added.
v2May 3, 2016
  • Modified the operating system so that negative baud rates will now generate a compile error.
  • Fixed a low-level AC compile error that displayed the wrong port number.
  • Fixed an issue that caused PakBus field data collection to fail.
  • Fixed DNP3 so it will now reset the class data available flags after sending unsolicited responses and read requests.
  • Fixed an issue that caused DNP3 overflow pending flag to clear inappropriately.
  • Updated table write pointers so they are now stored in backup SRAM.
  • Increased the maximum number of tables to twenty.
  • Fixed a DMA hardware conflict between C2 (when using SDI-12) and RS232.
  • Updated DNP3 time synchronization so it now responds more appropriately.
  • Fixed SW12Volts to work and show correctly in the Status table.
  • Added a delay to ClockSet() to allow hardware clock synchronization.
  • Added the NetworkTimeProtocol() instruction.
  • Fixed an issue with low power mode so that it works correctly with PakBus timeouts. Previously, beacon requests were sent out a port every time the device came out of low power mode.
  • Changed DNP3 confirm flag so it is not enabled for OBJ 50. Previously, the flag was being set which caused more unnecessary delay. The confirm flag does not need to be set in order to work properly.
  • Changed DNP3 request delay measurement to more accurately return the delay measurement time when using DNP3 function code 23.
  • Fixed coms buffer size issue that could cause some routing packets to fail.
  • Fixed an issue that caused the program start name to clear when a program was stopped.
  • Updated USB power cycle program stop feature.
  • Fixed SlowSequence() after time change; before this fix, SlowSequence() could be delayed.
  • Fixed an Endianness issue with PakBus send hello verify interval.
  • Fixed a type conversion issue when sorting floats.
  • Fixed Out of memory error that could cause loss of communication.
  • Updated Memory allocation to keep fragmentation to a minimum.
  • Fixed PeriodAvg() timer rollover count issue.
  • Changed PulseCount() on port C1 and C2 to return NAN and temporarily disable pulse counting interrupts when frequency is greater than 3KHZ.
  • Fixed communications watch timeout when using communications watch over an IP port.
  • Changed communications watch so it will reset if terminal is closed.
  • Added "Files Manager" setting.
  • Fixed an issue that caused CurrentSE() measurements to be out of spec.
  • Fixed a SDI-12 communications issue that caused a communications lockup when waking up from sleep.
  • Fixed switch closure pulse counting on P_LL that failed due to an interrupt setup issue.
  • Fixed an issue that caused a watchdog reset on wakeup from sleep.
  • Fixed USB wakeup interrupt from sleep issue that caused a wait timer to fail.
  • Fixed an issue that caused an invalid compiler error "not a valid low level AC input port".
  • Updated the watchdog timers to better service watchdog events and set them to more realistic settings.
  • Fixed an issue that caused the IpServerTask to run continuously resulting in a watchdog.
  • Fixed an issue when using SE1-SE4 for digital IO that could set the next sequential port as an input.