
                     Release Notes PN 93000689_D

                   ConnectPort X2 for Smart Energy

                            82002458_D EOS

                           Version 2.17.0.6


INTRODUCTION

    This is a specialized production release of firmware for Digi's
    ConnectPort X2 gateway. This image provides a platform for execution
    of Digi applications implementing Zigbee Smart Energy devices.

    This firmware is intended solely for Digi Smart Energy devices.
    For more details, visit the Digi Support website.

SUPPORTED PRODUCTS

    ConnectPort X2 Ethernet

ENHANCEMENTS

    Rebranded "iDigi" as "Device Cloud"

    Improve event log and trace messages to better identify the general cause
    of a PPP chat script failure.

    Support differential configuration backups via the web user interface and
    command line interface (CLI), containing only settings groups whose values
    differ from the device defaults (settings class and custom defaults). This
    produces a smaller backup file that is more readily reviewed and perhaps
    edited for use as a defaults.rci file (custom factory defaults).

    Add support for XBee-Pro 900HP S3B radio, including OTA firmware updates

    XBee ZB OTA update improvements:
    - Recover nodes that have failed an OTA update and are on the default
      channel after reset or losing power. Requires XBee firmware 2xAA or
      later on the updater node.
    - Restart update using a different updater node after a failure when
      automatically selecting an updater.
    - Use source routes to choose an updater with the shortest route, reject
      updaters further away in the route than the target, and increase timeouts
      for longer routes. This is effective only when source routing is enabled.
    - Use updaters from a previous attempt if updaters cannot be found after an
      update failure.
    - When "stop on error" option is enabled, stop all updates when an error
      occurs, not just automatic updates.
    - When "stop on error" option is disabled, repeatedly try to update the
      same node if an error occurs, until cancelled by the user.
    - Work around XBee bootloader bug that sends NAK on retransmitted block 0xff.

    Add the CR parameter for XBee ZB radio to XBee advanced settings web page,
    "set xbee" command, and RCI <set/query_setting>. (41292)

    For user configuration, improve the web page text and associated help
    to emphasize the selection of the desired device access and feature
    permissions for user logins that are added beyond the default "root"
    user. (44865)

    Add support to perform configuration backup/restore operations via the
    CLI "backup" command and the web UI. Files are in the internal WEB
    filesystem.

    Add the CLI "file" command that can copy, remove, rename and list files
    in the Digi flash filesystems. For security reasons, the file options
    copy, remove and rename are not permitted for files in subdirectories
    of the WEB filesystem (e.g., "python"). The "file" command also supports
    the display of total/used/available filesystem space. The options are
    described by "help file".

    New Packet Capture (PCAP) feature:

      Add support to the network stack for internal packet captures from
      various network interfaces. Users can capture packets from eth0, eth1,
      wln0, mobile0, wmx0 and pppN (serial, N=0-9), with the possible network
      interfaces differing among Digi products. Only a single interface at a
      time can be captured. Capture output is a standard PCAP-format stream
      that can be interpreted by common capture analysis tools.

      The feature adds a CLI "pcap" command with a variety of options to
      manage and perform captures. As a security measure, by default, the
      packet capture capability is disabled when a device boots. There are no
      stored settings -- all configuration and use of PCAP is a runtime matter
      after a device boots. The pcap command is hidden from the usual command
      help unless it is explicitly invoked. Trace output for "pcap" is added
      to trace capture actions and activity for debugging purposes.

      Packet captures can be obtained locally to the device from the CLI,
      with the output written to a local file in the WEB flash filesystem.
      Local captures may be performed as "foreground" or "background" tasks.

      Captures also can be obtained by connecting to the configured PCAP
      capture TCP port of the NDS device, when such "network" captures are
      enabled by the user. This permits "clients" such as netcat to connect
      and capture the packet stream. Such remote packet captures should not
      be performed by connecting over the network interface whose packets
      are being captured.

      The CLI "pcap" help text documents the various options and caveats for
      use of the packet capture feature.

    Improve the network stack's support for unpredictable IP ID use. The
    change provides better protection against a potential attacker as well
    as addresses a possible issue with IP fragmentation and reassembly.

    Implement changes for possible programming issues that were identified
    by a static code analysis tool. The identified issues were reviewed and
    triaged, with changes resulting in many cases. Issues addressed include
    possible memory leak elimination, removal of unneeded code, improved
    error detection and handling, data initialization and buffer overflow
    prevention. While none of the changes are directly linked to issues
    reported by customers, the changes do improve overall firmware quality.

    Add event logging and a CLI command to report status of Custom Factory
    Defaults (CFD). If custom defaults are applied, or if some error occurs
    while trying to process them at start-up time, a "system" event log
    record is created. A hidden "cfd" CLI command will display the status of
    CFD processing. This is added to "display techsupport" as well. This is
    provided as an aid for troubleshooting.

    Add event logging and trace for two internal APIs that can disconnect
    the iDigi connection, via Python. Helpful for troubleshooting.

    Optimize the internal na_pton() API to immediately fail look-ups when
    an empty string (IP address or domain name) is passed to that API. This
    improves performance in application code such that the eventual failure
    is more immediate

    XBee/mesh changes:
    - Add command to reset radio to factory default settings to Factory
      Default Settings web page, XBee Device Operations web page, xbee CLI
      command, and RCI <do_command>. (41893)
    - Change max value for JN parameter to 1. (42084)
    - Expose D6 parameter on ZB gateway radio to enable RTS flow control.
    - Allow manually scheduled OTA firmware updates even if OTA update
      setting is disabled.
    - Add "xbee restart" CLI command to restart gateway radio.
    - Add ability to include XBee gateway radio settings in the configuration
      backup file.
    - Add option to Backup/Restore web page and CLI backup command.
    - Change RciProcessor and QueryCommands to generate backup directly,
      rather than changing query_setting to set_setting afterwards.
    - Add support for DigiMesh 865/868LP radio, including OTA firmware updates.
    - Add OTA update progress messages, improve error messages.
    - Check for a valid gateway firmware file before starting update.
    - Fix threading bug that returned an empty node list when another thread
      cleared the node list, causing a Python exception.
    - Indicate "unknown" instead of "end device" if node type is not known.
    - OTA firmware update improvements (customer-requested:
      - Invalidate network address on all transmit errors.
      - Improve command timeout handling.
      - Give preference to local radio as updater.
      - Test updater with smaller payload to allow room for encryption and
        and source routes.
    - Add RCI <do_command target="zigbee"><radio_command> to allow commands
      directly specified to be executed on the Zigbee module.
    - Add SN parameter for DigiMesh and Smart Energy.
    - Don't enable RTS flow control (set D6=1) on ZB radio to avoid dropping
      data in the XBee module when fragmentation is enabled. This is because
      RTS and fragmentation aren't supported at the same time. (41307)

    Improve the Python xbee module:
    - Add source_route member to nodes returned by get_node_list().
    - Add option to clear node list to get_node_list().

    Eliminate unneeded code and data to reduce runtime memory use.

    Improve the web pages for the Alarms Settings:
    - For the individual alarm configuration page in the web UI, add a link
      to the SNMP Settings page in existing page text where the SNMP trap
      can be enabled for the alarm. If no trap destination is configured,
      display "(not configured)" as the destination value rather than nothing.
    - Improve error detection in the alarm edit web page.

    Add "display serial" and "info serial" to "display techsupport" command
    list.

    Add the Python version number to the RCI query_state/device_info reply.


BUG FIXES

    Don't block forever when radio serial port is flow controlled.
    Part of a fix for (NDS-19)
    Treat self-addressed TX status (0x23) as a successful transmission.
    Needed to support 2xB1 and 4x23 and future XBee firmware.

    Fixed a bug that updated XBee last contact time for a node no longer
    on the network during ZDO node discovery

    Fix XBee bug that sent repeated LQI requests when response contains
    no entries.  Happens during ZDO node discovery with 4023 firmware.

    Cancel queued and pending XBee commands when gateway is disabled.
    Caused 900HP and potentially others to lock up when re-enabled (NDS-20).

    Fix a bug that used too small a buffer when processing ZDO address,
    routing, and LQI responses from an S2C node.

    DBL-143: Use the gateway as the default node for xbee child_table and
    neighbor_table commands.

    Fixed a bug where an unauthenticated user could delete a file from
    the filesystem (NDS-69)

    Fix "xbee factory_default" command error on non-ZigBee radios.

    Fix an XBee Python issue: Don't throw exception on register joining device
    status 0xb1, which means key not found. Set get_node_list() clear parameter
    default value to True only if performing node discovery. (45027)

    For XBee, allow sending to a 16-bit network address (e.g. [1234]!) on XBee
    firmware versions that support it.

    For XBee, allow RCI get_lqi command on XBee with smart energy firmware.

    For XBee, fix an incorrect error status following gateway firmware update.
    (45789)

    Fix a bug that could corrupt the tuple returned by the Python method
    xbee.get_node_list() when previously discovered nodes are cleared from
    the list and are no longer discovered. (44746)

    Fix a bug in which the "file copy ..." CLI command might fail if the
    destination is a directory rather than a file.

    Fix a bug in the PPP settings (both serial and mobile) in which the 
    maximum value length for the phone number fields was not sufficiently 
    large. Values were limited to four characters rather than the intended 
    maximum of 20.
    This issue affected iDigi users when configuring these settings. (45000)

    Modify the TCP retransmit timeout (RTO) settings to support different
    minumum and maximum value ranges. Use of these new ranges may reduce 
    TCP retransmits on mobile networks if application data is sent when 
    the cell modem is in a standby state. The TCP RTO settings are modified
    to permit a minimum of 30-5000 ms (previously 30-1000) and a maximum of
    5-240 seconds (previously 1-240). This system-wide setting affects all 
    TCP connections at the time they are first established. The default 
    values for RTO minimum and maximum are unchanged; only the permissible
    value ranges have changed.  (44960)

    Fixed a bug that caused the clockstamp returned with J1708 callbacks
    to roll over to zero after about 49.7 days. (NDS-24)

    Fix a problem in which DSA security does not work with the Digi SSL
    implementation. (42451)

    Fix a bug in which autoconnect was failing to attempt a sslauth
    connection. (42575)

    Fix a problem with serial PPP that results in a failed LCP negotiation
    on the next (immediate) connection attempt following a PPP session
    disconnect. (44060)

    Fix a data abort exception in the Python digicli module that can occur
    due to an allocated buffer overflow for CLI output lines that exceed 256
    characters. Although such long lines aren't likely, the crash could
    result from any CLI output with long lines. The fix limits the output
    strings to 2048 bytes at most, breaking them into segments if necessary,
    and it precludes the overflow condition. No CLI output is lost as a
    consequence of this change.

    Fix problems in the RCI handling for the <user> and <group> settings.
    The problems were exposed in the iDigi device configuration interface
    for these settings. Issues addressed are:
    - Add missing elements in <user> settings.
    - Remove excess/incorrect elements in <group> settings.
    - Correct the value range identification for some <user> elements,
      specifically those related to group association.
    Improve the element description strings displayed by iDigi. (41545)

    Fix a problem in which configuration backup/restore with keys/password
    option selected, does not include some keys. In particular, the SSH and
    SSL private keys were absent but are now included in the backup RCI as
    encrypted values, only if the user requests them as such. This uses the
    same method as for passwords and other keys. (44048)

    Fix a problem in which the CLI "certmgmt" command quietly creates empty
    files when saving private keys (SSH, SSL, VPN). Per security requirements,
    disallow saving private keys via "certmgmt" and provide an explicit error
    message to the user. Detect empty certificates and invalid index (range)
    values and provide an appropriate error message for such cases. (44048)

    Fix the web server to reset form items for multipart/form-data. (41637)

    XBee fixes:
    - Fix lock up after "xbee factory_default" command. (43950)
    - Ignore unsupported settings when restoring from backup. (44040)
      XBee/mesh changes:
    - Add a missing permissions check for the "xbee" command.
    - Fix a crash that occurs when passing a long hex string to getaddrinfo()
      or xbsGetAddr(). (41692)
    - Fix parsing of a 16-bit cluster ID. Only 8-bit worked correctly.
    - Ignore flag bits added for DigiMesh in DDO command status byte.
    - Allow extra time for DigiMesh node discovery.
      This fix is needed by 868 MHz firmware 1x61 and 2.4 GHz firmware 8x62.
    - Fix a bug that blocked all transmissions while waiting for a DDO command
      issued to an unresponsive node.
    - Update radio command processing limits for SE and S2C. (38712)
    - Add SP radio parameter for DigiMesh gateway radio to web UI, CLI, and RCI.
      (38766)
    - Fix a bug handling join notification status frame that created incorrect
      node list entries.
    - Return None instead of garbage from xbee.ddo_command() when the
      timeout parameter is 0. This means don't wait for the result. (39245)
    - Throw an exception from xbee.ddo_get_param() when the timeout
      parameter is 0 after rounding to milliseconds. (39338)
    - Reserve extra space in the transmit queue and use a different node
      address to prevent data messages from blocking the send of local
      commands to the radio. (39370)

    Fix this reported bug: Python TFTP Remote Start Fails with \r\n line
    endings. Uninitialized "garbage" at the end of the result buffer could
    cause odd error messages. A previous change for issue 26971 (in 2008)
    strips carriage returns from the received file. That change had a bug
    in which it did terminate the remaining text correctly, leaving garbage
    at the end of the result buffer. This commit corrects that bug. (40307)

    Fix a bug in which Python digicli.digicli.__doc__ returns a confusing
    response. (40421)

    Fix an SNMP issue that could cause an SNMP denial of service. (39737)

    Fix a panic that could occur while accessing some System Information pages
    in the web UI. (38729)


KNOWN ISSUES

    The Web User Interface (WebUI) is removed with this firmware.
    Configuration must be performed from the Command Line Interface (CLI)
    or the iDigi Platform instead.

DOCUMENTATION ERRATA

    None.

ADDITIONAL INFORMATION

    On initial boot of this device, it will generate some encryption key
    material. This process can take as long as 40 minutes to complete.
    Until the corresponding key is generated, the device will be unable to
    initiate or accept that type of encrypted connection.  It will also
    report itself as 100% busy, but, since key generation takes place at a
    low priority, the device will still function normally.  On subsequent
    reboots, the device will use its existing keys and will not need to
    generate another unless a reset to factory defaults is done, which will
    cause a new key to be generated on the next reboot.

HISTORY
  82002458_D (2.17.0.6)

    See ENHANCEMENTS and BUG FIXES information above.

  82002458_C (2.14.0.3) - June 22, 2011

   ENHANCEMENTS

    The iDigi feature has been improved to support binary data service and
    file system service betwen the device and iDigi Server. These services
    are supported through interfaces available to python applications in
    the device. See www.idigi.com for more information on iDigi.

    The clock (time) source management functionality has been improved to
    better detect failures to retrieve time sync samples from an NTP server
    as a time source. Failures or "lost" replies result in quick retries
    for both the initial sample after boot time as well as for subsequent
    samples. Additional configurability is supported via the "set timemgmt"
    CLI command and the iDigi platform. Event logging is improved for
    time-related events.

    Add support for a user-configured Maximum Transmit Unit (MTU) size for
    the Ethernet interface. The MTU size can be configured using the "mtu"
    option of the "set network" CLI command.

    Improve the parsing of RCI documents to better handle embedded XML
    comment and declaration values. (37651)

    To CLI and RCI, add flash (web) filesystem reporting for total, used and
    free space in the filesystem. Add these to:
    - CLI: display device (info device)
    - RCI: DeviceStats class (new <device_stats> elements)
    (38557)

   BUG FIXES

    Fix a bug in which the localtime() API didn't correctly adjust time by
    the specified timezone offset. (36959)

    For Digi products that do not expose the serial port to the end user, fix
    a bug in which profile settings are exposed but should not be. This affects:
    - CLI (set/show/revert profile and "display techsupport")
    - Configuration backup
    (33414)

    Fix a bug in which the "set_factory_default" RCI request incorrectly states
    in its RCI descriptor text that a device reboot will be performed after the
    "factory" action has been completed. No reboot is performed.

    Update radio command processing limits for SE and S2C. (38712)

    Fix a bug handling join notification status frame that created incorrect
    node list entries.

  82002458_B (2.13.0.10) - April 27, 2011

    HIGHLIGHTED PRODUCT CHANGES:

      Starting with the 2.13.0 firmware version, the changes described in this
      section are incorporated in this product. Please refer to the HISTORY
      section of these release notes to identify the specific revision in which
      these changes were introduced.

      CLOCK (TIME) SOURCE MANAGEMENT SUPPORT

        The "Clock Source" functionality of the system has been replaced so as
        to simplify the behavior and improve the consistency of the time values
        delivered by the system, while still allowing the system to maintain a
        level of synchronization with external time sources.

        The updated feature includes a ranking system for clock sources. If a
        sample is taken from a better clock source than what has thus far been
        received (has a smaller number), the sample will be used to influence
        the baseline of our time measurements, and all sources of a less
        significant rank will be temporarily disabled. This allows the system
        to get a relatively accurate sense of time as quickly as possible, but
        eventually to run only listening to the best possible external sources.

        Internally, on products that have an RTC, the RTC itself is given a
        ranking of 50. This allows clock sources to be configured with a lower
        ranking... arranging so that they are only enabled when the RTC has not
        yet been initialized with a time value, essentially assigning them as
        one-shot programmers of the RTC.

        The rankings are re-evaluated when the clock sources are reconfigured,
        or when a user interface causes a "jump" in the time.

        Event logging of time-related events also is improved. The event log
        may be displayed using the "display logging" CLI.

    ENHANCEMENTS:

      Improve support for management of clock (time) sources. Refer to the
      HIGHLIGHTED PRODUCT CHANGES section for further information.

      When restoring a device to factory defaults, revert the certificates
      and keys only if the ALL settings are being reverted. (36710)

      Improve the network stack to address the issue described in US-CERT
      Vulnerability Note VU#498440: Multiple TCP/IP implementations may use
      statistically predictable initial sequence numbers. The note can be
      viewed at: http://www.kb.cert.org/vuls/id/498440. (36183)

      Improve the error messages that are reported due to ping CLI failures,
      such as when there is no route to the destination IP address, to be more
      specific to the underlying problem. (36872)

      Add the TCP "timewait" option to the "set network" command. This option
      specifies the desired system-wide value in seconds for the TCP TIME_WAIT
      interval. The default value is 60 seconds, and the supported range is
      from 10 to 240 seconds inclusive. Also added to the RCI settings.

      Add a note to the "set network" help, and to the "set network" output
      if a TCP option is changed, to clarify that the change is not applied to
      existing TCP connections, nor to service listeners until the listeners
      are restarted or a reboot occurs. Add similar notes to "revert network"
      help and "revert network" output if the global settings are reverted.

      For the "display logging" CLI, add the ability to display the event log
      and continue to check for and display new log messages as they are written
      to the log. The help text for this command is updated to describe how to
      request and terminate the continuous log "tailing".

      Add iDigi connection status items for send and receive idle times.

      Improve the error recovery algorithm for failed RCI requests received
      via iDigi. The updated algorithm reduces network activity by eliminating
      redundant error reports. Improve trace output for troubleshooting. (37637)

      Add event log and trace messages for the "Disconnect" iDigi protocol
      message, to help with troubleshooting the loss of iDigi connections.

      For iDigi client configuration, expose the (previously hidden)
      devicesecurity CLI option from these commands: set, show, revert.
      This was previously available but hidden to prevent misuse of some of
      that command's capabilities. The options that could cause problems if
      misconfigured have been removed, so it is no longer necessary nor
      appropriate to hide the devicesecurity option. (34535)

      Mesh / Zigbee / XBee networking:
      - Add join notification, BR and TC commands for SE 3x28 firmware.
      - Allow DDO commands to broadcast address from CLI.
      - Fix bug when setting extended timeout option on DDO commands.

    BUG FIXES:

      Fix a problem that caused the Python built-in time.clock() call to return
      a value that "rolls over" after approximately 49.7 days of operation after
      a boot of the Digi device. This occurred due to an internal clock counter
      rollover. It could cause Python application program to assume that the
      clock (and time) had gone backwards, resulting in unpredictable behavior
      of the application. (37986)

      Fix a problem in which Classless Inter-Domain Routing (CIDR) fails to
      route correctly under certain narrow instances (such as routing between
      hosts with IP addresses 25.0.0.50 and 24.0.0.50, with a subnet mask of
      248.0.0.0). (37043)

      Fix a problem in which Ethernet driver might lose synchronization between
      its interrupt handler and its packet receive processing thread. This could
      cause received packets to be held in the driver's receive buffer ring and
      not passed to the network stack in a timely manner. Under such a condition,
      network communication might appear to be broken for network protocols and
      applications. (35638)

      Fix a possible panic that occurs while configuring the primary network
      interface (Ethernet) and saving the changes to NVRAM. (35715)

      Fix a bug in which the file system component was incorrectly accounting
      for open directories in the system. Due to this bug, it was possible that
      the open would fail regardless of actual resource availability. (31645)

      Fix a bug in a previous fix to gettimeofday() that causes incorrect display
      and behavior in "set time" and the Date and Time web page. (35957)

      Fix a bug in uudecodeToFile() that causes RCI file transfers to fail when
      there is white space after the file data. (36147)

      Fix a Python socket read failure that could occur if a timeout is set
      on an SSL socket.

      Fix an inconsistency and bug in which the Python command string was not
      properly managed with its maximum length value of 127 characters.

      Throw an exception instead of returning None from the Python
      xbee.get_node_list() function when the node list is empty or an error
      occurs. (35111)

      The value returned by the Python time.time() function is no longer
      modified by the offset option of "set time". The function gettimeofday()
      was returning UTC biased by "offset". (34994)

      Mesh / Zigbee / XBee networking:
      - Fix a problem in which a specific status message from an XBee radio
        could cause a false firmware update failure. (34471)
      - Correct inconsistent return codes from CLI commands "set xbee" and "xbee".
        The bug resulted in problems for the Python interface to the Digi CLI.
        (34683)

      Eliminate several potential memory leaks. (34946)

  82002458_A1 (2.10.0.3) - February 23, 2011

    ENHANCEMENTS:

      Enable the telnet client command in the command-line interface (CLI).
      (37525)

      Enable "file hashing" via RCI to help with file version verification.
      This extends the file system "ls" command in RCI to request that a hash
      value be returned for files in the listing. The supported hash methods
      are "none" (the default) and "crc32".

    BUG FIXES:

      Fix a bug that caused XBee early request timeout and retries resulting
      from a race condition. (37735)

      Fix a bug that may result in a memory leak when a fully qualified domain
      name (FQDN) is configured for a SNTP Server as a time source in the
      Date and Time Settings (CLI "set clocksource"). (37807)

  82002458_A (2.10.0.3) - May 25, 2010

    Initial release.

