- orphan
We are pleased to announce the release of Zephyr version 3.7.0.
Major enhancements with this release include:
- A new, completely overhauled hardware model has been introduced. This changes the way both SoCs and boards are named, defined and constructed in Zephyr. Additional information can be found in the
board_porting_guide
. - Zephyr now requires Python 3.10 or higher
An overview of the changes required or recommended when migrating your application from Zephyr v3.6.0 to Zephyr v3.7.0 can be found in the separate migration guide<migration_3.7>
.
The following sections provide detailed lists of changes by component.
The following CVEs are addressed by this release:
More detailed information can be found in: https://docs.zephyrproject.org/latest/security/vulnerabilities.html
- CVE-2024-3077 Zephyr project bug tracker GHSA-gmfv-4vfh-2mh8
- The Bluetooth subsystem specific debug symbols are removed. They have been replaced with the Zephyr logging ones.
Bluetooth advertiser options
BT_LE_ADV_OPT_USE_NAME
andBT_LE_ADV_OPT_FORCE_NAME_IN_AD
are now deprecated. That means the following macro are deprecated:
- :c
BT_LE_ADV_CONN_NAME
- :c
BT_LE_ADV_CONN_NAME_AD
- :c
BT_LE_ADV_NCONN_NAME
- :c
BT_LE_EXT_ADV_CONN_NAME
- :c
BT_LE_EXT_ADV_SCAN_NAME
- :c
BT_LE_EXT_ADV_NCONN_NAME
- :c
BT_LE_EXT_ADV_CODED_NCONN_NAME
Application developer will now need to set the advertised name themselves by updating the advertising data or the scan response data.
- ARC
- ARM
- RISC-V
- Implemented frame-pointer based stack unwinding.
- The fatal error message triggered from a fault now contains the callee-saved-registers states.
- Xtensa
- Added Nordic UART Service (NUS), enabled by the :kconfig
CONFIG_BT_ZEPHYR_NUS
. This Service exposes the ability to declare multiple instances of the GATT service, allowing multiple serial endpoints to be used for different purposes.
- Added support for these SoC series:
- Made these changes in other SoC series:
- ITE: Rename the Kconfig symbol for all ITE SoC variants.
- Added support for these ARM boards:
- Added support for these Xtensa boards:
- Made these changes for ARM boards:
- Made these changes for RISC-V boards:
- Made these changes for native/POSIX boards:
- LLVM fuzzing support has been refactored while adding support for it in native_sim.
- Added support for these following shields:
- CI-enabled blackbox tests were added in order to verify correctness of the vast majority of Twister flags.
- A
socs
folder for applications has been introduced that allows for Kconfig fragments and devicetree overlays that should apply to any board target using a particular SoC and board qualifier.Board/SoC flashing configuration<flashing-soc-board-config>
settings have been added.- Deprecated the global CSTD cmake property in favor of the :kconfig
CONFIG_STD_C
choice to select the C Standard version. Additionally subsystems can select a minimum required C Standard version, with for example :kconfigCONFIG_REQUIRES_STD_C11
.
- ADC
- Auxiliary Display
- Audio
- Battery
- Added
re-charge-voltage-microvolt
property to thebattery
binding. This allows to set limit to automatically start charging again.
- Added
- Battery backed up RAM
- CAN
- Deprecated the :c
can_calc_prescaler
API function, as it allows for bitrate errors. Bitrate errors between nodes on the same network leads to them drifting apart after the start-of-frame (SOF) synchronization has taken place, leading to bus errors. - Added :c
can_get_bitrate_min
and :ccan_get_bitrate_max
for retrieving the minimum and maximum supported bitrate for a given CAN controller/CAN transceiver combination, reflecting that retrieving the bitrate limits can no longer fail. Deprecated the existing :ccan_get_min_bitrate
and :ccan_get_max_bitrate
API functions. - Extended support for automatic sample point location to also cover :c
can_calc_timing
and :ccan_calc_timing_data
. - Added optional
min-bitrate
devicetree property for CAN transceivers. - Added devicetree macros :c
DT_CAN_TRANSCEIVER_MIN_BITRATE
and :cDT_INST_CAN_TRANSCEIVER_MIN_BITRATE
for getting the minimum supported bitrate of a CAN transceiver. - Added support for specifying the minimum bitrate supported by a CAN controller in the internal
CAN_DT_DRIVER_CONFIG_GET
andCAN_DT_DRIVER_CONFIG_INST_GET
macros. - Added a new CAN controller API function :c
can_get_min_bitrate
for getting the minimum supported bitrate of a CAN controller/transceiver combination. - Updated the CAN timing functions to take the minimum supported bitrate into consideration when validating the bitrate.
- Made the
sample-point
andsample-point-data
devicetree properties optional.
- Deprecated the :c
- Charger
- Added
chgin-to-sys-current-limit-microamp
property tomaxim,max20335-charger
. - Added
system-voltage-min-threshold-microvolt
property tomaxim,max20335-charger
. - Added
re-charge-threshold-microvolt
property tomaxim,max20335-charger
. - Added
thermistor-monitoring-mode
property tomaxim,max20335-charger
.
- Added
- Clock control
- Counter
- Crypto
- Display
- DMA
- Entropy
- eSPI
- Renamed eSPI virtual wire direction macros and enum values to match the new terminology in eSPI 1.5 specification.
- Ethernet
- Deperecated eth_mcux driver in favor of the reworked nxp_enet driver.
- Driver nxp_enet is no longer experimental.
- All boards and SOCs with
nxp,kinetis-ethernet
compatible nodes reworked to use the newnxp,enet
binding.
- Flash
- GNSS
- GPIO
- I2C
- I2S
- I3C
- IEEE 802.15.4
- Input
- MDIO
- MFD
- PCIE
- MEMC
- MIPI-DBI
- Pin control
- PWM
- Regulators
- Retained memory
- RTC
- SMBUS:
- SDHC
- Sensor
- Added TMP114 driver
- Serial
- Added driver to support UART over Bluetooth LE using NUS (Nordic UART Service). This driver enables using Bluetooth as a transport to all the subsystems that are currently supported by UART (e.g: Console, Shell, Logging).
- SPI
- USB
- W1
- Wi-Fi
- Added support for configuring RTS threshold. With this, users can set the RTS threshold value or disable the RTS mechanism.
- DHCPv4:
- Added support for encapsulated vendor specific options. By enabling :kconfig
CONFIG_NET_DHCPV4_OPTION_CALLBACKS_VENDOR_SPECIFIC
callbacks can be registered with :cnet_dhcpv4_add_option_vendor_callback
to handle these options after being initialised with :cnet_dhcpv4_init_option_vendor_callback
. - Added support for the "Vendor class identifier" option. Use the :kconfig
CONFIG_NET_DHCPV4_VENDOR_CLASS_IDENTIFIER
to enable it and :kconfigCONFIG_NET_DHCPV4_VENDOR_CLASS_IDENTIFIER_STRING
to set it. - The NTP server from the DHCPv4 option can now be used to set the system time. This is done by default, if :kconfig
CONFIG_NET_CONFIG_CLOCK_SNTP_INIT
is enabled.
- Added support for encapsulated vendor specific options. By enabling :kconfig
- LwM2M:
- Added new API function:
- :c
lwm2m_set_bulk
- :c
- Added new API function:
- IPSP:
- Removed IPSP support.
CONFIG_NET_L2_BT
does not exist anymore.
- Removed IPSP support.
- Management
- hawkBit
- The hawkBit subsystem has been reworked to use the settings subsystem to store the hawkBit configuration.
- By enabling :kconfig
CONFIG_HAWKBIT_SET_SETTINGS_RUNTIME
, the hawkBit settings can be configured at runtime. Use the :chawkbit_set_config
function to set the hawkBit configuration. It can also be set via the hawkBit shell, by using thehawkbit set
command. - When using the hawkBit autohandler and an update is installed, the device will now automatically reboot after the installation is complete.
- By enabling :kconfig
CONFIG_HAWKBIT_CUSTOM_DEVICE_ID
, a callback function can be registered to set the device ID. Use the :chawkbit_set_device_identity_cb
function to register the callback. - By enabling :kconfig
CONFIG_HAWKBIT_CUSTOM_ATTRIBUTES
, a callback function can be registered to set the device attributes that are sent to the hawkBit server. Use the :chawkbit_set_custom_data_cb
function to register the callback.
- hawkBit
- Logging
- By enabling :kconfig
CONFIG_LOG_BACKEND_NET_USE_DHCPV4_OPTION
, the IP address of the syslog server for the networking backend is set by the DHCPv4 Log Server Option (7).
- By enabling :kconfig
- Modem modules
- Picolibc
- Power management
- Crypto
- Random
- Besides the existing :c
sys_rand32_get
function, :csys_rand8_get
, :csys_rand16_get
and :csys_rand64_get
are now also available. These functions are all implemented on top of :csys_rand_get
.
- Besides the existing :c
- Retention
- SD
- State Machine Framework
- The :c
SMF_CREATE_STATE
macro now always takes 5 arguments.
- The :c
- Storage
- FAT FS: It is now possible to expose file system formatting functionality for FAT without also enabling automatic formatting on mount failure by setting the :kconfig
CONFIG_FS_FATFS_MKFS
Kconfig option. This option is enabled by default if :kconfigCONFIG_FILE_SYSTEM_MKFS
is set.
- FAT FS: It is now possible to expose file system formatting functionality for FAT without also enabling automatic formatting on mount failure by setting the :kconfig
- POSIX API
- LoRa/LoRaWAN
- ZBus
- STM32
- Added snippet for easily enabling UART over Bluetooth LE by passing
-S nus-console
duringwest build
. This snippet sets the :kconfigCONFIG_BT_ZEPHYR_NUS_AUTO_START_BLUETOOTH
which allows non-Bluetooth samples that use the UART APIs to run without modifications (e.g: Console and Logging examples).