1:orphan:
2
3.. _zephyr_4.1:
4
5Zephyr 4.1.0 (Working Draft)
6############################
7
8We are pleased to announce the release of Zephyr version 4.1.0.
9
10Major enhancements with this release include:
11
12An overview of the changes required or recommended when migrating your application from Zephyr
13v4.0.0 to Zephyr v4.1.0 can be found in the separate :ref:`migration guide<migration_4.1>`.
14
15The following sections provide detailed lists of changes by component.
16
17Security Vulnerability Related
18******************************
19The following CVEs are addressed by this release:
20
21More detailed information can be found in:
22https://docs.zephyrproject.org/latest/security/vulnerabilities.html
23
24API Changes
25***********
26
27Removed APIs in this release
28============================
29
30 * The deprecated Bluetooth HCI driver API has been removed. It has been replaced by a
31   :c:group:`new API<bt_hci_api>` that follows the normal Zephyr driver model.
32 * The deprecated ``CAN_MAX_STD_ID`` (replaced by :c:macro:`CAN_STD_ID_MASK`) and ``CAN_MAX_EXT_ID``
33   (replaced by :c:macro:`CAN_EXT_ID_MASK`) CAN API macros have been removed.
34 * The deprecated ``can_get_min_bitrate()`` (replaced by :c:func:`can_get_bitrate_min`) and
35   ``can_get_max_bitrate()`` (replaced by :c:func:`can_get_bitrate_max`) CAN API functions have been
36   removed.
37 * The deprecated ``can_calc_prescaler()`` CAN API function has been removed.
38
39Deprecated in this release
40==========================
41
42* Deprecated the :c:func:`bt_le_set_auto_conn` API function. Application developers can achieve
43  the same functionality in their application code by reconnecting to the peer when the
44  :c:member:`bt_conn_cb.disconnected` callback is invoked.
45
46* Deprecated TinyCrypt library. The reasons for this are (:github:`43712`):
47
48  * The upstream version of this library is no longer maintained.
49  * Reducing the number of cryptographic libraries in Zephyr to reduce maintenance overhead.
50  * The PSA Crypto API is the recommended cryptographic library for Zephyr.
51
52Architectures
53*************
54
55* Common
56
57  * Introduced :kconfig:option:`CONFIG_ARCH_HAS_CUSTOM_CURRENT_IMPL`, which can be selected when
58    an architecture implemented and enabled its own :c:func:`arch_current_thread` and
59    :c:func:`arch_current_thread_set` functions for faster retrieval of the current CPU's thread
60    pointer. When enabled, ``_current`` variable will be routed to the
61    :c:func:`arch_current_thread` (:github:`80716`).
62
63* ARC
64
65* ARM
66
67* ARM64
68
69* RISC-V
70
71  * Implements :c:func:`arch_current_thread_set` & :c:func:`arch_current_thread`, which can be enabled
72    by :kconfig:option:`CONFIG_RISCV_CURRENT_VIA_GP` (:github:`80716`).
73
74* Xtensa
75
76* native/POSIX
77
78  * :kconfig:option:`CONFIG_NATIVE_APPLICATION` has been deprecated.
79  * For the native_sim target :kconfig:option:`CONFIG_NATIVE_SIM_NATIVE_POSIX_COMPAT` has been
80    switched to ``n`` by default, and this option has been deprecated.
81
82Kernel
83******
84
85Bluetooth
86*********
87
88* Audio
89
90* Host
91
92  * :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` has been deprecated and
93    :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA` has been added.
94
95* HCI Drivers
96
97* Mesh
98
99  * Introduced a :c:member:`bt_mesh_health_cli::update` callback which is used to update the message
100    published periodically.
101
102Boards & SoC Support
103********************
104
105* Added support for these SoC series:
106
107  * Added Raspberry Pi RP2350
108
109* Made these changes in other SoC series:
110
111* Added support for these boards:
112
113   * :zephyr:board:`Raspberry Pi Pico 2 <rpi_pico2>`: ``rpi_pico2``
114   * :zephyr:board:`Adafruit QT Py ESP32-S3 <adafruit_qt_py_esp32s3>`: ``adafruit_qt_py_esp32s3``
115
116* Made these board changes:
117
118  * All HWMv1 board name aliases which were added as deprecated in v3.7 are now removed
119    (:github:`82247`).
120  * ``mimxrt1050_evk`` and ``mimxrt1060_evk`` revisions for ``qspi`` and ``hyperflash`` have been
121    converted into variants. ``mimxrt1060_evkb`` has been converted into revision ``B`` of
122    ``mimxrt1060_evk``.
123  * Enabled USB, RTC on NXP ``frdm_mcxn236``
124
125* Added support for the following shields:
126
127Build system and Infrastructure
128*******************************
129
130* Space-separated lists support has been removed from Twister configuration
131  files. This feature was deprecated a long time ago. Projects that do still use
132  them can use the :zephyr_file:`scripts/utils/twister_to_list.py` script to
133  automatically migrate Twister configuration files.
134
135* Twister
136
137  * Test Case names for Ztest now include Ztest suite name, so the resulting identifier has
138    three sections and looks like: ``<test_scenario_name>.<ztest_suite_name>.<ztest_name>``.
139    These extended identifiers are used in log output, twister.json and testplan.json,
140    as well as for ``--sub-test`` command line parameters (:github:`80088`).
141  * The ``--no-detailed-test-id`` command line option also shortens Ztest Test Case names excluding
142    its Test Scenario name prefix which is the same as the parent Test Suite id (:github:`82302`).
143    Twister XML reports have full testsuite name as ``testcase.classname property`` resolving
144    possible duplicate testcase elements in ``twister_report.xml`` testsuite container.
145
146Drivers and Sensors
147*******************
148
149* ADC
150
151* Battery
152
153* CAN
154
155* Charger
156
157* Clock control
158
159* Counter
160
161* DAC
162
163* Disk
164
165* Display
166
167  * Added flag ``frame_incomplete`` to ``display_write`` that indicates whether a write is the last
168    write of the frame, allowing display drivers to implement double buffering / tearing enable
169    signal handling (:github:`81250`)
170  * Added ``frame_incomplete`` handling to SDL display driver (:dtcompatible:`zephyr,sdl-dc`)
171    (:github:`81250`)
172  * Added transparency support to SDL display driver (:dtcompatible:`zephyr,sdl-dc`) (:github:`81184`)
173
174* Ethernet
175
176* Flash
177
178  * NXP MCUX FlexSPI: Add support for 4-byte addressing mode of Micron MT25Q flash family (:github:`82532`)
179
180* FPGA
181
182  * Extracted from :dtcompatible:`lattice,ice40-fpga` the compatible and driver for
183    :dtcompatible:`lattice,ice40-fpga-bitbang`. This replaces the original ``load_mode`` property from
184    the binding, which selected either the SPI or GPIO bitbang load mode.
185
186* GNSS
187
188* GPIO
189
190* Hardware info
191
192* I2C
193
194* I2S
195
196* I3C
197
198* Input
199
200* LED
201
202  * Added a new set of devicetree based LED APIs, see :c:struct:`led_dt_spec`.
203  * lp5569: added use of auto-increment functionality.
204  * lp5569: implemented ``write_channels`` api.
205  * lp5569: demonstrate ``led_write_channels`` in the sample.
206
207* LED Strip
208
209* LoRa
210
211* Mailbox
212
213* MDIO
214
215* MFD
216
217* Modem
218
219* MIPI-DBI
220
221* MSPI
222
223* Pin control
224
225  * Added new driver for Silabs Series 2 (:dtcompatible:`silabs,dbus-pinctrl`).
226
227* PWM
228
229* Regulators
230
231* Reset
232
233* RTC
234
235* RTIO
236
237* SDHC
238
239* Sensors
240
241* Serial
242
243* SPI
244
245* Stepper
246
247  * Added driver for ADI TMC2209. :dtcompatible:`adi,tmc2209`.
248  * Added driver for TI DRV8424. :dtcompatible:`ti,drv8424`.
249  * Added :kconfig:option:`CONFIG_STEP_DIR_STEPPER` to enable common functions for step/dir steppers.
250
251* USB
252
253* Video
254
255  * Changed :file:`include/zephyr/drivers/video-controls.h` to have control IDs (CIDs) matching
256    those present in the Linux kernel.
257
258* Watchdog
259
260* Wi-Fi
261
262Networking
263**********
264
265* ARP:
266
267* CoAP:
268
269* Connection manager:
270
271* DHCPv4:
272
273* DHCPv6:
274
275* DNS/mDNS/LLMNR:
276
277* gPTP/PTP:
278
279* HTTP:
280
281* IPSP:
282
283* IPv4:
284
285* IPv6:
286
287* LwM2M:
288
289* Misc:
290
291* MQTT:
292
293* Network Interface:
294
295* OpenThread:
296
297  * Removed the implicit enabling of the :kconfig:option:`CONFIG_NVS` Kconfig option by the :kconfig:option:`CONFIG_NET_L2_OPENTHREAD` symbol.
298
299* PPP
300
301* Shell:
302
303* Sockets:
304
305  * The deprecated :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` option has been removed.
306    It was a legacy option and was used to allow user to call BSD socket API while not enabling POSIX API.
307    This removal means that in order to use POSIX API socket calls, one needs to enable the
308    :kconfig:option:`CONFIG_POSIX_API` option.
309    If the application does not want or is not able to enable that option, then the socket API
310    calls need to be prefixed by a ``zsock_`` string.
311
312* Syslog:
313
314* TCP:
315
316* Websocket:
317
318* Wi-Fi:
319
320  * hostap: Removed the unused default Crypto module :kconfig:option:`CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO` Kconfig option.
321
322* zperf:
323
324USB
325***
326
327Devicetree
328**********
329
330* Added :c:macro:`DT_ANY_INST_HAS_BOOL_STATUS_OKAY`.
331
332Kconfig
333*******
334
335Libraries / Subsystems
336**********************
337
338* Debug
339
340* Demand Paging
341
342* Formatted output
343
344* Management
345
346* Logging
347
348* Modem modules
349
350* Power management
351
352* Crypto
353
354  * The Kconfig symbol :kconfig:option:`CONFIG_MBEDTLS_PSA_STATIC_KEY_SLOTS` was
355    added to allow Mbed TLS to use statically allocated buffers to store key material
356    in its PSA Crypto core instead of heap-allocated ones. This can help reduce
357    (or remove, if no other component makes use of it) heap memory requirements
358    from the final application.
359
360  * The Kconfig symbol :kconfig:option:`CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT` was
361    added to allow selecting the number of key slots available in the Mbed TLS
362    implementation of the PSA Crypto core. It defaults to 16. Since each
363    slot consumes RAM memory even if unused, this value can be tweaked in order
364    to minimize RAM usage.
365
366* CMSIS-NN
367
368* FPGA
369
370* Random
371
372* SD
373
374* State Machine Framework
375
376* Storage
377
378  * Shell: :kconfig:option:`CONFIG_FILE_SYSTEM_SHELL_MOUNT_COMMAND` was added,
379    allowing the mount subcommand to be optionally disabled. This can reduce
380    flash and RAM usage since it requires the heap to be present.
381
382* Task Watchdog
383
384* POSIX API
385
386* LoRa/LoRaWAN
387
388* ZBus
389
390HALs
391****
392
393* Nordic
394
395* STM32
396
397* ADI
398
399* Espressif
400
401MCUboot
402*******
403
404OSDP
405****
406
407Trusted Firmware-M
408******************
409
410LVGL
411****
412
413* Added ``frame_incomplete`` support to indicate whether a write is the last
414  write of the frame (:github:`81250`)
415
416Tests and Samples
417*****************
418
419* Fixed incorrect alpha values in :zephyr_file:`samples/drivers/display`. (:github:`81184`)
420* Added :zephyr_file:`samples/modules/lvgl/screen_transparency`. (:github:`81184`)
421
422Issue Related Items
423*******************
424
425Known Issues
426============
427