commit | 61463824fb2e211bd9fe0f0abf1ddb52fa2f834c | [log] [tgz] |
---|---|---|
author | Kamil Kasperczyk <66371704+kkasperczyk-no@users.noreply.github.com> | Fri Nov 03 14:56:15 2023 +0100 |
committer | GitHub <noreply@github.com> | Fri Nov 03 13:56:15 2023 +0000 |
tree | e826a1e6087ba6fb1cfd1f84fb3d0d8f87ec6679 | |
parent | fab81b30210444bd2f242d663421a572d61f0b01 [diff] |
[nrfconnect] Updated nRF Connect SDK to 2.5.0 (#30118) * [nrfconnect] Pushed downstream patches to align with v2.5.0 Pushed all downstream patches aligning nrfconnect platform to the nRF Connect SDK 2.5.0 version: * Added support for new Wi-Fi dongle board. Added enabling Wi-Fi support in Matter if nRF7002 EB is selected as a shield. Signed-off-by: Kamil Kasperczyk <kamil.kasperczyk@nordicsemi.no> * Turn off wpa_supplicant debug output. This saves ~20kB of FLASH. Signed-off-by: Marcin Kajor <marcin.kajor@nordicsemi.no> * [nrfconnect] Enable zcbor explicitly for mcuboot Mcuboot requires zcbor, so enable it explicitly, otherwise the build fails with latest mcuboot. Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no> * [nrfconnect] Align with the upstream net_if API change net_if_ipv6_maddr_join() now requires to provide a net_if pointer. Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no> * config: nrfconnect: Remove PSA_WANT default n setting With PSA_WANT configurations being default n then these default values are no longer needed for chip-module. Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no> * [zephyr] Add config to enable watermarks support Added a config to control enabling support for heap watermarks within the Zephyr platform. * Fixed Wi-Fi re-connection mechanism. Do not force the Disconnect() if the wpa_supplicant recovered the connection by itself. Signed-off-by: Marcin Kajor <marcin.kajor@nordicsemi.no> * Disabled BLE GATT caching This commit disables BLE Gatt caching for nRF Connect SDK platform. Signed-off-by: Duda, Łukasz <lukasz.duda@nordicsemi.no> * Enabled erasing NVS as default method This commit configures FW to erase flash pages occupied by non-volatile storage when a factory reset is requested, instead of removing Matter-related settings only. Signed-off-by: Duda, Łukasz <lukasz.duda@nordicsemi.no> * Disable shell for OpenThread and HWINFO module This commit reduces the overall memory consumption by disabling the OpenThread shell and HWInfo module. Signed-off-by: Duda, Łukasz <lukasz.duda@nordicsemi.no> * Align finding Python3 executable to NCS requirements. We should try to find Python3 instead of Python within cmake scripts. * Enable Generating Onboarding Codes by default This PR enables automatic generation of onboarding codes to the build directory when Factory Data feature is enabled. * Enable minimal configuration of Shell Enable minimal shell configuration to save some ROM and RAM. Signed-off-by: Łukasz Duda <lukasz.duda@nordicsemi.no> * Fixed boot reason for nRF52 Recently the mechanism of nRF52 reboot type retention which is used in Matter has been deprecated in Zephyr and can be only bring back by a dedicated KConfig. Another solution (chosen) is to explicitly store boot reason in the retention registers for both nRF52 and nRF53. Signed-off-by: Marcin Kajor <marcin.kajor@nordicsemi.no> * Increased number of net sockets poll max Increased CONFIG_NET_SOCKETS_POLL_MAX from 4 to 6, as otherwise it resulted in bus fault during connection. Signed-off-by: Kamil Kasperczyk <kamil.kasperczyk@nordicsemi.no> * Remove recovery mechanism for Wi-Fi connection Currently, the Wi-Fi driver supports the recovery mechanism and it seems that it works properly so we can remove our recovery mechanism when the connection is lost. Apart from losing the network, we need to leave the recovery mechanism to work after the device's reboot because we need to scan periodically to find a known network. * Increase the maximum number of prefixes to match the maximum number of IPv6 addresses per interface. Zephyr ipv6_nbr implementation requires the given address to have a matching prefix set on the interface. Otherwise, the default router is used for sending neighbor advertisement and as a result, in case there are multiple routers in the network, the packet can be sent to the invalid interface (not the one which issued neighbor solicitation). Signed-off-by: Marcin Kajor <marcin.kajor@nordicsemi.no> * [nrfconnect] Enable NVS lookup cache settings optimization By default, use the lookup cache hash function optimized for NVS used as the settings backend. This assumes that a user application uses Zephyr settings API and does not write to the NVS directly. * Disable nRF70 driver logs verbosity by default. This aims to keep memory footprint after this config is enabled by default in NCS. Signed-off-by: Marcin Kajor <marcin.kajor@nordicsemi.no> * Disabled BLE 2M PHY due to interoperability issues There were some interoperability issues discovered due to BLE PHY dynamic changes from 1M to 2M. The 2M was disabled to ensure the interoperability with some of the BT controllers. Signed-off-by: Kamil Kasperczyk <kamil.kasperczyk@nordicsemi.no> * Disabled Wi-Fi logs to save flash Recently some new Wi-Fi logs were enabled by default. These need to be disabled to decrease memory footprint. Signed-off-by: Kamil Kasperczyk <kamil.kasperczyk@nordicsemi.no> * [nrfconnect] Fixed door lock feature map Door lock sample has incorrect feature map value, because it is hardcoded in cpp file, instead of using the value generated from the .zap file. * [nrfconnect] Fixed window covering attributes default values Implemented post cluster init callback to set null values to 0, if any other value was not saved in NVS. * [nrfconnect] Disabled BOOT BANNER for release configuration * Align codebase with the new callback format Align NCS codebase with the new struct mgmt_callback format. * Restore IPC thread priority in Matter samples We noticed that IPC priority on nRF5340 is not set by default. We need to set it in DTS to be sure that the IPC thread does not collide with other threads. * Enable build with the factory data support. This PR enables factory data generation and usage by default in all NCS Matter samples. * Fix missing mcumgr header Header img_mgmt.h added to source file. * Forced using minimal libc for mcuboot image Minimal libc selection has to be forced for all Matter-related mcuboot builds. Otherwise the picolib is enabled and image size increases by several k, so it cannot fit in the dedicated partition. * Add bootutil for image definitions Adds building bootutil, when DFU with MCUmgr is enabled, for application image definitions. * [zephyr] Track number of enqueued platform events Add a new system statistic for tracking the number of enqueued platform events and update it in Zephyr platform. Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no> * Optimize RAM usage - Reduce number of network buffers and packets This commit reduces the number of network buffers and packets used by the nrfconnect platform. - Add support for printing mbedTLS heap This commit adds support for printing the peak usage of mbedTLS heap. - Reduce number of Matter stack packet buffers This commit reduced the number of available Matter's packet buffers to 8 which affects RAM usage. - Introduce KConfig option to enable RAM profiling This commit introduces the KConfig option that enables a set of features useful for profiling the RAM memory. - Disable SSL server support for Matter This commit dissables unused support for SSL server. - Reduce size of platform event queue This commit overwrites the default size of platform event queue and sets it to 64. - Reduce mbedTLS heap and OpenThread stack sizes This commit reduces the mbedTLs heap and OpenThread stack sizes when Joiner role is enabled by not used (case of OT libraries). - Reduce kernel heap size for Matter over Wi-Fi This commit aligns the default heap size to the value used in the Shell example. - Optimize buffer usage of nRF700X driver for Matter Matter device does not need to operate as high-performance STA, and so this commit reduces the default number of buffers. As a result the heap used by the supplicant may be significantly reduced. - Added the missing conditions to HEAP configs. Decrease stack sizes according to the peak results Signed-off-by: Łukasz Duda <lukasz.duda@nordicsemi.no> Signed-off-by: Arkadiusz Balys <arkadiusz.balys@nordicsemi.no> * Increase stability of Wi-Fi LPM operations This commit increases number of TX Tokens to the previous value of 10 to prevent RPU stalls. Additionally it was observed that 500ms delay before executing factory reset is too small for certain situations on Wi-Fi. This commit also increases this delay to 1s. Signed-off-by: Łukasz Duda <lukasz.duda@nordicsemi.no> * [openthread] Aligned to CSL method API changes With the most recent OpenThread version, the API for CSL methods changed, so it had to be aligned in the Matter SDK. Added alternative implementation depending on the OpenThread API version. * [nrfconnect] Updated nRF Connect SDK to 2.5.0 Updated nRF Connect SDK version to 2.5.0 and updated all docker images version to the 24. * Restyled by whitespace * Restyled by clang-format * [shell] Fixed wrong condition for mbedtls include Changed if defined() to if statement to fix missing mbedtls header file for platforms using CHIP_CRYPTO_MBEDTLS = false * [nrfconnect] Disabled factory data for all clusters app The default prj.conf build does not use partition layout with factory data partition included, so the factory data support has to be disabled. * Addressed review comments * Moved MINIMAL_LIBC config to mcuboot defaults * Brought back setting lock feature map, but changed the value from 0x101 to 0x181 (added COTA support) Additionally fixed Zephyr unit tests: * Changed main return type from void to main for Zephyr unit tests runner. * Added decreasing pool size conditionally to not affect tests * Fixed exiting the tests to prevent abort. --------- Signed-off-by: Łukasz Duda <lukasz.duda@nordicsemi.no> Co-authored-by: Restyled.io <commits@restyled.io>
Builds
Tests
Tools
Documentation
Matter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.
Matter is a unified, open-source application-layer connectivity standard built to enable developers and device manufacturers to connect and build reliable, and secure ecosystems and increase compatibility among connected home devices. It is built with market-proven technologies using Internet Protocol (IP) and is compatible with Thread and Wi-Fi network transports. Matter was developed by a Working Group within the Connectivity Standards Alliance (Alliance). This Working Group develops and promotes the adoption of the Matter standard, a royalty-free connectivity standard to increase compatibility among smart home products, with security as a fundamental design tenet. The vision that led major industry players to come together to build Matter is that smart connectivity should be simple, reliable, and interoperable.
Matter simplifies development for manufacturers and increases compatibility for consumers.
The standard was built around a shared belief that smart home devices should be secure, reliable, and seamless to use. By building upon Internet Protocol (IP), Matter enables communication across smart home devices, mobile apps, and cloud services and defines a specific set of IP-based networking technologies for device certification.
The Matter specification details everything necessary to implement a Matter application and transport layer stack. It is intended to be used by implementers as a complete specification.
The Alliance officially opened the Matter Working Group on January 17, 2020, and the specification is available for adoption now.
Visit buildwithmatter.com to learn more and read the latest news and updates about the project.
Matter is developed with the following goals and principles in mind:
Unifying: Matter is built with and on top of market-tested, existing technologies.
Interoperable: The specification permits communication between any Matter-certified device, subject to users’ permission.
Secure: The specification leverages modern security practices and protocols.
User Control: The end user controls authorization for interaction with devices.
Federated: No single entity serves as a throttle or a single point of failure for root of trust.
Robust: The set of protocols specifies a complete lifecycle of a device — starting with the seamless out-of-box experience, through operational protocols, to device and system management specifications required for proper function in the presence of change.
Low Overhead: The protocols are practically implementable on low compute-resource devices, such as MCUs.
Pervasive: The protocols are broadly deployable and accessible, by leveraging IP and being implementable on low-capability devices.
Ecosystem-Flexible: The protocol is flexible enough to accommodate deployment in ecosystems with differing policies.
Easy to Use: The protocol provides smooth, cohesive, integrated provisioning and out-of-box experience.
Open: The Project’s design and technical processes are open and transparent to the general public, including non-members wherever possible.
Matter aims to build a universal IPv6-based communication protocol for smart home devices. The protocol defines the application layer that will be deployed on devices and the different link layers to help maintain interoperability. The following diagram illustrates the normal operational mode of the stack:
The architecture is divided into layers to help separate the different responsibilities and introduce a good level of encapsulation among the various pieces of the protocol stack. The vast majority of interactions flow through the stack captured in the following Figure:
Security: An encoded action frame is then sent down to the Security Layer to encrypt and sign the payload to ensure that data is secured and authenticated by both sender and receiver of a packet.
Message Framing & Routing: With an interaction encrypted and signed, the Message Layer constructs the payload format with required and optional header fields; which specify the message's properties and some routing information.
Matter’s design and technical processes are intended to be open and transparent to the general public, including to Working Group non-members wherever possible. The availability of this GitHub repository and its source code under an Apache v2 license is an important and demonstrable step to achieving this commitment. Matter endeavors to bring together the best aspects of market-tested technologies and redeploy them as a unified and cohesive whole-system solution. The overall goal of this approach is to bring the benefits of Matter to consumers and manufacturers as quickly as possible. As a result, what you observe in this repository is an implementation-first approach to the technical specification, vetting integrations in practice. The Matter repository is growing and evolving to implement the overall architecture. The repository currently contains the security foundations, message framing and dispatch, and an implementation of the interaction model and data model. The code examples show simple interactions, and are supported on multiple transports -- Wi-Fi and Thread -- starting with resource-constrained (i.e., memory, processing) silicon platforms to help ensure Matter’s scalability.
We welcome your contributions to Matter. Read our contribution guidelines here.
Instructions about how to build Matter can be found here .
The Matter repository is structured as follows:
File/Folder | Content |
---|---|
build | Build system support content and built output directories |
build_overrides | Build system parameter customization for different platforms |
config | Project configurations |
credentials | Development and test credentials |
docs | Documentation, including guides. Visit the Matter SDK documentation page to read it. |
examples | Example firmware applications that demonstrate use of Matter |
integrations | 3rd Party integrations |
scripts | Scripts needed to work with the Matter repository |
src | Implementation of Matter |
third_party | 3rd party code used by Matter |
zzz_generated | zap generated template code - Revolving around cluster information |
BUILD.gn | Build file for the gn build system |
CODE_OF_CONDUCT.md | Code of conduct for Matter and contribution to it |
CONTRIBUTING.md | Guidelines for contributing to Matter |
LICENSE | Matter license file |
REVIEWERS.md | PR reviewers |
gn_build.sh | Build script for specific projects such as Android, EFR32, etc. |
README.md | This File |
Matter is released under the Apache 2.0 license.