Wi-SUN Stack Changelog#

Release 2.3#

(release date 2024-12-16)

New Features and Improvements#

  • added sl_wisun_set_leaf() API to make an FFN act as RPL leaf.

  • added sl_wisun_set_tx_power_ddbm() API to set the Tx power with a 0.1 dB resolution

  • added sl_wisun_br_set_ipv6_up_handler() API to register a callback function to handle IPv6 packets received from Wi-SUN network

  • added sl_wisun_br_ipv6_down() API to forward IPv6 packets to Wi-SUN network from backhaul point-of-view

  • added sl_wisun_trace_debug(), sl_wisun_trace_info(), sl_wisun_trace_warn() and sl_wisun_trace_error() to trace events in the stack journal.

  • added sl_wisun_set_phy_sensitivity() API to set the RX sensitivity for a chosen PHY

  • added lfn_na_wait_duration_m in FFN connection params to configure how often an FFN retransmits DAO on behalf of a registered LFN.

  • introduced Direct Connect

  • introduced PAN Defect

  • added Wi-SUN border router libraries. They were previously kept private.

  • added Wi-SUN border router public APIs headers. They were previously kept private.

  • added support for Wi-Fi connectivity based on Silicon LABS SiWx917 and WiSeConnect v3.4.0

  • added support for an external DHCPv6 Server

  • added DAO No-Path transmission to de-register a router prior to leaving the network

  • updated the RX sensitivities with updated values.

  • updated Registration Refresh Request as mandated by FAN TPS 1.1v09.

  • updated NA channel plans 4 and 5 as mandated by PHY TPS amendment 1VA12

  • improved retransmission mechanism

  • improved handling of parent changes/losses

  • reduced weight given to the ETX first measure in the ETX EWMA

  • reduced weight given to the RSL first measure in the RSL EWMA

  • reworked MAC, FFN and LFN bootstrap state machines

  • raised TCP maximum segment size (mss)

  • dropped deprecated definitions related to socket options

RCP API#

  • 2.5.0

    • Allow using security key with index 8.

  • 2.4.1

    • Fix the start of the LFN broadcast schedule.

    • FATAL when failing to start the LFN broadcast schedule.

    • FATAL when trying to send an LFN broadcast frame without having the LFN broadcast schedule running.

  • 2.4.0

    • Add phy sensitivity to REQ_RADIO_LIST command.

  • 2.3.0

    • Add timing info, parent address and parent frame counters to SET_FHSS_FFN_BC command.

Bug Fixes#

  • fixed incorrect EAP packet filtering when the EAP packet ID would rollover

  • fixed PAN Cost calculation

  • fixed memory leak when a node is disconnected and has neighbors with registered POM-IE info

  • fixed IPV6_RECVTCLASS, IPV6_UNICAST_HOPS, IPV6_MULTICAST_HOPS and SO_EDFE_MODE socket options

  • fixed SO_NONBLOCK socket option not being handled correctly

  • fixed POM-IE when only 1 other PhyModeId is available

  • fixed FFN multicast packet transmission timeout when LFN multicast packet also pending for transmission

  • fixed MPL Buffer Message set containing messages with a sequence inferior to min sequence

  • fixed MPL messages not being deleted on expiration when trickle timer was inhibited

  • fixed multicast entry management in LFN parenting

  • fixed RPL candidate parent set, reject neighbors with low RSL

  • fixed hop limit field in IPv6 tunneling

  • changed parent unregistration to include all parents, preventing bad DAO route on reconnection

  • fixed missing probe to a new neighbor in join state 5

  • RPL parents from the previous connection are not loaded from NVM if discovery.allow_skip is false

  • changed BSI / broadcast schedule update to be only when receiving a PC with a new PAN version

  • fixed parent selection causing frequent parent switches or invalid infinite rank advertised

  • fixed segmentation fault when candidate parent timeout and no preferred parent is selected

  • fixed an issue causing the radio to stay in IDLE state until the next TX after an RX timeout

Release 2.0#

(release date 2024-06-05)

New Features and Improvements#

  • dropped the support of our previous socket API.

  • added a random delay before starting an LFN join sequence.

  • added support for select(), sendmsg(), recvmsg(), getpeername() and getsockname().

  • extended the list of supported socket options.

  • split the stack into smaller software modules offering more granularity and helping reduce the memory footprint.

Bug Fixes#

  • fixed an issue causing the radio to be stuck in RX. The cause has been identified as a race in the lower layers of the radio driver.

  • fixed an invalid memory access in the timer and event lists.

  • fixed multiple invalid counter and timer updates during state transitions and RPL parent updates. They were causing abusive router disconnections.

  • fixed an invalid use of a link-local as a source address in the DAO.

  • fixed the condition upon which the MAC reset the CCA failures counter.

  • fixed an invalid PAN ID filter configuration that was preventing routers from connecting to a new border router after a PAN timeout.

Release 1.10#

(release date 2023-04-10)

New Features and Improvements#

Bug Fixes#

  • fixed an invalid initialization causing the number of retries sent by Wi-SUN RCP to be inconsistent.

  • fixed an error that, in some rare occasions, could cause the IPv6 source routing header corruption.

  • fixed an error that was causing significant transmissions delays when a multicast packet reception occurred during the transmission of asynchronous packets.

  • fixed LFN clock drift compensation. It sometimes skipped and caused the LFN to disconnect.

  • improved the resiliance of 4-way handshake to errors. After a missing packet the joining node and the authenticator ended with a different status.

Release 1.9#

(release date 2023-02-14)

New Features and Improvements#

  • major update of the RCP. Must be used in pair with wsbrd v1.9 and more recent. It significantly reduces the memory footprint. The memory required to run the application no longer depends on the number of routers connected to the border router.

  • dropped the high-reliability transmission mechanism. Its use was not recommended and it was causing a significant increase of all communications latency.

  • added support for ETSI Adaptive Power Control.

  • improved LFNs clock drift compensation. It reduces the power consumption and the connection stability.

Bug Fixes#

  • fixed an error causing UDP sockets to be closed when receiving packets with an empty payload.

  • fixed an error causing the frequency hopping to be blocked on rare occasions.

  • fixed an error causing LLC messaging allocation to fail. It was caused by an invalid logic in the mac tx queue.

  • fixed an error causing LFNs to use an invalid broadcast schedule after a reconnection.

  • fixed an error causing LFNs reconnection to a router to fail.

  • fixed an error preventing LFNs to send NS(EARO) and thus to reconnect after a given number of non-consequentive unsuccessful connection attempts.

  • fixed an error causing an invalid memory access in dense topologies.

  • LUS-IE were sent in all LFN data frames, even when the Listen Interval did not change.

Release 1.8#

(release date 2023-12-13)

New Features and Improvements#

  • added a new API sl_wisun_get_stack_version() that returns the stack version.

  • updated sl_wisun_join() to support the customization of PHY configurations. Extended sl_wisun_phy_config_type_t and sl_wisun_phy_config_t to allow the customization of OFDM, FSK and O-QPSK entries.

  • added support for LFN Timing Offset (LTO). Avoid LFN broadcast and unicast overlaps.

  • added support for LFN multicast reception.

  • added support for SUN DSSS-OQPSK.

  • added support for blocking sockets.

  • added support for the new Indian PHY configurations.

Bug Fixes#

  • fixed an error causing an assert when a device connects to network and then later re-join with a different device type.

  • fixed an error causing an LFN parent to hard fault on an LFN disconnection.

  • fixed an invalid variable initialization that could cause a device frame counter to be set to 0 when using IAR.

  • fixed an invalid configuration preventing LFN to connect when using the Balanced or Eco modes.

  • fixed an invalid initialization in MPL that was causing a multicast packet to be considered as old after a router re-connection.

  • fixed an invalid time synchronization between an LFN and his FFN parent. It was causing significant drifts making downstream communications instable after a while.

  • the Join Metric IE was not forwarded when the join state 1 was skipped.

  • fixed an error causing a LFN to be out-of-sync when no packet is exchanged for more than 1h10 (uint32 max us)

  • fixed an error causing MAC retries to be skipped on rare occasions.

  • fixed an error causing routers to stay on the wrong channel after performing asynchronous transmissions.

  • LFN are now send a Neighbor Solicitation with an EARO with a zero lifetime when disconnecting.

  • Wi-SUN OUI was coded with the wrong byte ordering.

  • maintained and restored the DHCP Identity Association ID (IAID) across reboots.

  • that stack performed a CSMA/CA on asynchronous frame transmissions. This behavior is specifically forbidden in the FAN TPS.

  • the stack occasionally tried to send a Neighbor Advertisement (NA) as a reply to a received Neighbor Solicitation (NS) used for Neighbor Unreachability Detection (NUD). This behavior is specifically forbidden in the FAN TPS.

Release 1.7.1#

(release date 2023-10-10)

Bug Fixes#

  • fixed an issue causing LFN LGTK and frame counter recovery from NVM after a reboot to be skipped.

  • fixed an invalid memory access when receiving a multicast packet with a full neighbor table.

  • fixed LFN parent timeout. It was still partially relying on the FFN timeout mechanism.

  • fixed LFN address renewal.

  • fixed an invalid memory access in the RCP. It could either trigger an assert “ref_counter <= 0" or call free() on an invalid memory section.

  • fixed an issue causing a mis-calculation of the ETX.

  • fixed an issue causing an invalid memory access when starting the SoC border router with an invalid PHY configuration

  • fixed an interoperability issue when using JP regulatory domain.

  • fixed a race between FHSS and ND causing an invalid memory access when disconnecting itself or an LFN child.

  • fixed FFN LGTK acquisition. FFN were performing a full 4-way handshake instead of a shorter 2-way handshake.

  • fixed an issue causing DHCP lease renewal to happen too often.

  • fixed an issue causing an invalid memory access when starting the stack without any certificate.

  • added missing Node Role KDE. Routers not supporting LFN parenting were missing the information element and were considered as FAN1.0 devices by Silicon Labs border routers.

Release 1.7#

(release date 2023-06-07)

New Features and Improvements#

  • LFN devices are now able to enter in Energy Mode 2 (EM2) if the application allows it.

  • added support for PAN-Wide IE.

  • adapted EDFE support for FAN 1.1.

  • adapted MPL support for FAN 1.1.

  • major refactoring of the stack internal timekeeping.

Bug Fixes#

  • frame counters were not increased on retries.

  • fixed an issue causing UDP packets to be silently dropped. This was caused by an inappropriate management of fragmented packets.

  • fixed an issue causing a suitable neighbor to be refused as a potential parent. Data packets missing a US-IE were refused while they should have been accepted. The stack was not keeping track of the US-IE received during the authentication process. This was causing interoperability issues with Nissin System routers.

  • fixed an improper stack initialization when used outside of a project generated with SLC.

  • fixed an issue causing a memory corruption when disconnecting an LFN.

Release 1.6#

(release date 2023-06-07)

New Features and Improvements#

  • added a new API sl_wisun_set_lfn_parameters() that configures all the LFN-specific settings.

  • added a new API sl_wisun_set_lfn_support() that sets the maximum number of LFNs that can be connected to a single FFN.

  • added a new API sl_wisun_set_mode_switch() that supersedes sl_wisun_set_mode_switch().The old API is still availa-ble but it is recommended to move to the more recent one.

  • added a new API sl_wisun_set_pti_state() that enable the Packet Trace Interface (PTI). For more information about the PTI in the context of Wi-SUN, refer to Wi-SUN’s Getting Started section on docs.silabs.com.

  • implemented LFN LGTK rotation

  • added support for a non-standard OFDM 64QAM PHY.

  • added support for EFR32FG28

  • optimized the reconnection of routers to an existing network: if configured to do so, the routers will now try to skip the scanning and authenticated step of the joining procedure.

Bug Fixes#

  • fixed an issue that could cause acknowlges to be sent to the wrong channel.

  • fixed several issues that could cause an assert after a call to sl_wisun_disconnect().

  • fixed an issue that could cause a mutex to be kept for an undefined period of time. It was causing devices to be indefinitely stalled.

Release 1.5.2#

(release date 2023-04-19)

  • fixed an RNG error that could happen on EFR32xG12.

  • fixed an error causing LPA to be missed on PHY configurations using a lot of channels.

  • fixed an error causing a segmentation fault on congested networks.

Release 1.5.1#

(release date 2023-03-08)

  • reduced the NS(EARO) retry period during the first connection. It reduces the time to connect in case of retransmission and improves the process’s reliability.

  • unencrypted LPC are not accepted by LFN anymore.

  • fixed FEC support in Linux Border Router RCP.

Release 1.5.0#

(release date 2023-02-01)

  • added a new SL_WISUN_SOCKET_OPTION_SEND_BUFFER_LIMIT socket option to configure the transmission buffer length.

  • added a new SL_WISUN_PHY_CONFIG_IDS option in sl_wisun_join(). It allows the selection of a specific entry in the radio configuration.

  • added LFN parent synchronization and time-out detection.

  • added LFN EAPOL accelerated listening schedule.

Bug Fixes#

  • fixed a regression in the connection time.

Release 1.4.0#

(release date 2022-12-14)

New Features and Improvements#

  • added minimal support for FAN1.1 LFN (Limited Functional Node). LFN devices are able to connect and communicate but are not using any of the EFR32 energy management mode. As such, they are not optimized for battery powered devices and should only be used for evaluation and experimentation.

    • added a new API sl_wisun_set_device_type()that configures the role of device. It can be either a router (FFN – Full Functional Node) or an end node (LFN)

    • added a new set of libraries supporting both LFN and FFN device types. Those libraries are used when the new “Stack LFN Support” plugin is installed.

  • added support for FAN 1.1 PHY mode switch.

    • added a new API sl_wisun_set_mode_switch() that indicates if the device can mode switch with a given neighbor.

    • added new APIs sl_wisun_set_pom_ie()and sl_wisun_get_pom_ie() that write or read the content of the POM-IE (PHY Operating Mode Information Element). It contains the list of the PHY operating mode a node is willing to use for communication.

  • added a new API sl_wisun_join() that triggers a new connection. It can be used either with the old (1V08 – regulatory domain, operating class, operating mode) or the new (1VA8 – regulatory domain, channel plan id, PHY mode if) nomenclature. That new API is meant to replace sl_wisun_connect().

  • added a new API sl_wisun_set_connection_parameters() that extends the set of the configuration parameters. Used in pair with sl_wisun_join(), it replaces sl_wisun_connect() network size parameter.

  • added support for FSK FEC. FEC can be enable either by setting fec field of sl_wisun_phy_config_t structure or by using a PHY mode id that explicity enables FEC.

  • added support of EFR32FG25. It supports all FAN1.1 OFDM modulation schemes and all FAN1.0 FSK configurations.

  • added support of EFF01

Deprecated Items#

Release 1.3.2#

(release date 2022-28-09)

Bug Fixes#

  • fixed an invalid Path Control field configuration in RPL DAO packet.

Release 1.3.1#

(release date 2022-06-08)

Net Features and Improvements#

  • when ARIB radio regulation is selected, the stack refuses all EDFE initialization requests sending an EDFE final frame.

Bug Fixes#

  • fixed PAN Advert and PAN Config Trickle timer configuration. Inconsistent transmissions were not correctly managed. It could lead to suboptimal behavior in dense areas of a network.

  • fixed a performance issue that was causing Linux Border Router RCP to become unreachable when running throughput tests with high-speed data rates. That issue was fixed by using DMA to collect UART data.

  • fixed an initialization issue that was causing PAN Advert and PAN Config asynchronous transmission requests to be dropped. That issue was most likely to happen with TEST and SMALL network size configuration and could cause connection durations to be significantly longer.

Release 1.3.0#

(release date 2022-06-08)

New Features and Improvements#

  • most of the stack crypto operations are now made through ARM PSA Crypo API.

  • added a new API sl_wisun_set_device_private_key_id() that indicates which PSA Crypto key handler contains the device private key and has to be used by the stack. It is the application responsibility to create the key.

  • added a new API sl_wisun_set_regulation() that configures the regional regulation the stack must comply to. Refer to UG495 for more information about regional regulation in Wi-SUN Stack.

  • added a new event SL_WISUN_MSG_REGULATION_TX_LEVEL_IND_ID that is fired when the transmission budget is cross-ing one of the transmission budget threshold. The transmission budget is defined by the regional regulation. Refer to UG495 for more information about regional regulation in Wi-SUN Stack.

  • added a new API sl_wisun_set_regulation_tx_thresholds() that configures the threshold used to fire SL_WISUN_MSG_REGULATION_TX_LEVEL_IND_ID event.

  • added a new API sl_wisun_set_advert_fragment_duration() that configures the asynchronous transmission frag-ment duration. It can be used to reduce the impact on the latency of long advertisement periods.

  • added a new API sl_wisun_set_unicast_tx_mode() that enables a high-reliability transmission mechanism for unicast communication. It trades off unicast communication reliability for latency.

  • sl_wisun_set_channel_mask() channel filter is now applied to asynchronous transmissions and unicast listening schedule. The function was renamed sl_wisun_set_allowed_channel_mask() to make it more self-explanatory.

Bug Fixes#

  • Fixed an error that was causing radio calibrations to be skipped during Wi-SUN Stack initialization.

Release 1.2.3#

(release date 2022-03-09)

Bug Fixes#

  • Applied the PA configuration set in the application. It was previously ignored and the same configuration was always used.

Release 1.2.2#

(release date 2022-02-21)

Bug Fixes#

  • Fixed a recurrence of the error that could cause the stack to assert on a RAIL_StartCcaCsmaTx when trying to connect to a network that cannot be reached.

Release 1.2.1#

(release date 2022-01-26)

Bug Fixes#

  • Fixed an error that could cause the stack to assert on a RAIL_StartCcaCsmaTx when trying to connect to a network that cannot be reached.

Release 1.2#

(release date 2021-10-13)

New Features and Improvements#

  • added release quality libraries. They provide the same Wi-SUN features but are not logging anything.

  • added a new API sl_wisun_reset_statistics that resets all the counters read by calling sl_wisun_get_statistics.

  • added new APIs sl_wisun_get_neighbor_count() and sl_wisun_get_neighbors() that indicate the neighbor count (parents and children) and their MAC address.

  • added a new API sl_wisun_get_neighbor_info() that returns information about a neighbor.

  • added a new API sl_wisun_set_unicast_settings() that configures the frequency hopping unicast dwell interval.

  • added a new API sl_wisun_set_trace_level() and sl_wisun_set_trace_filter() that configure the stack traces.

  • added support for mbedtls v3.0.

  • stack flash footprint reduction.

  • reworked Wi-SUN stack tasks priorities.

  • fixed the unicast channel filtering.

  • fixed an error causing the authentication waiting list to be broken.

Release 1.1.2#

(release date 2021-10-13)

New Features and Improvements#

  • fixed an issue causing a hard-fault during a parent information update.

Release 1.1.1#

(release date 2021-09-08)

New Features and Improvements#

  • fixed a drift in the frequency hopping mechanism that could lead to disconnections in quiet networks.

Release 1.1.0#

(release date 2021-07-21)

New Features and Improvements#

  • fixed an issue causing the event SL_WISUN_MSG_CONNECTED_IND_ID to be fired although no new connection was established. It was fired after each network update.

  • fixed an issue causing connections to fail after an operating class update.

  • fixed an issue causing US-IE configuration to be invalid when excluding channels.

Release 1.0.1#

(release date 2021-06-16)

New Features and Improvements#

  • fixed an issue causing a parent to lose track of its child frequency hopping sequence. The child router was sending an incorrect IFSU misleading the parent router and forcing it to be one frequency hop interval late.

Release 1.0.0#

(release date 2021-04-21)

New Features and Improvements#

  • fixed memory leaks during the disconnection and reset processes.

  • added a new disconnected join state to sl_wisun_get_join_state API.

  • miscellaneous API minor updates

Release 0.2.2#

(release date 2021-04-21)

New Features and Improvements#

  • fixed a bug causing connection with network_size 'Test' to be slower than it used to be.

  • added border router support for custom PHYs

  • added a new API for clearing credential cache

  • added a new API for MAC address management

Release 0.2.1#

(release date 2021-04-07)

New Features and Improvements#

  • fixed a bug causing unicasts to be sent on the wrong channel

  • updated a configuration that prevented multicast to be forwarded

Release 0.2.0#

(release date 2021-01-25)

New Features and Improvements#

  • added support for CMSIS RTOS API2

  • fixed UDP sockets corner cases.

Release 0.1.0#

(release date 2020-12-10)

New Features and Improvements#