Releases: RIOT-OS/RIOT
Release-2024.10
RIOT-2024.10 "FlexTape" - Release Notes
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release
Highlights of the 2024.10 release:
This release fixes some long-standing packet buffer leaks that occurred when using
gnrc_netif_pktq
and 6LoWPAN or netdev_new_api
(#20983, #20834).
A long standing-bug in the CC2538 radio driver has been fixed when processing
corrupted frames, that before could render the device unresponsive. This can be
triggered due to radio interference, but we also believe that an attacker within range
of the radio could send crafted frames to reliably trigger the issue. We therefore
consider this a denial of service vulnerability and advise all users of the CC2538 to
upgrade to 2024.10 or cherry-pick 1b61216. More
details are published in the security advisory.
With SUIT it is now easier to accept firmwares signed with different keys,
e.g., a node build and signed with a development key can be configured to
accept images signed with either the development key or the production key (#21019).
The public keys are now also stored on the developer's machine, so if a
encrypted private key is used, you don't need the decryption password to build
a firmware, only for signing it (#20862).
THREAD_CREATE_STACKTEST
is now the default when DEVELHELP
is used.
This release saw the addition of the adafruit-metro-m4-express
board.
129 pull requests, composed of 255 commits, have been merged since the
last release, and 5 issues have been solved. 29 people contributed with
code in 119 days. 502 files have been touched with 142126 (+) insertions and
1896 deletions (-).
Notations used below
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
System Libraries
- Rust: Add
make cargo-command
and refactoring around it (#20828) - static_tests: Add test for Rust code formatting rules (#20887)
- sys/event: add API to start periodic event without initial delay (#20911)
- sys/event: add event_sync() (#20916)
- event/timeout: event_timeout_set() enqueues immediately if timeout is
zero (#20870) - examples/rust: Update CoAP example modules (#20821)
- Rust: Update to riot-wrappers 0.9 (#20829)
Networking
- drivers: Add shield_llcc68 module (#20885)
- nib.c: add interface selection rules for static link local address
assignment (#20784) - sys/event: add assertion that event has a handler (#20847)
- sys/net/application_layer/nanocoap: add
nanocoap_sock_get_non()
(#20852) - tests/net: add stub test for gcoap_forward_proxy (#20909)
- gcoap: Avoid reading beyond defined input buffer (#20549)
- gnrc/ipv6/nib: don't queue packets on 6lo neighbors and drop/flush
if… (#20834) - gnrc_ipv6_nib: Force unspecified next hop addresses (#20371)
- gnrc_sixlowpan_frag: enable
gnrc_netif_pktq
ifnetdev_new_api
is
used (#20879) - net/dhcpv6: Improve option handling in dhcpv6 advertise (#20801)
Packages
- pkg/emlearn: bump version to 0.17.1 (#20347)
- pkg/littlefs: make use of RIOT's log module instead of pkg provided
macros (#20894) - pkg/lvgl: Increase default LV_MEM_SIZE for 64 bit and enable tests
for native64 (#20846) - pkg/nanocbor - upgrade to last version (#20813)
- pkg/wamr : updated wamr version to v2.1.1 (#20795)
Boards
- boards/adafruit-grand-central-m4-express: provide arduino features (#20904)
- boards/adafruit-metro-m4-express: initial port (#20912)
- boards/nucleo-f439zi: add ADC support (#20814)
- boards/nucleo-g474re: add MCU table (#20851)
- boards/nucleo64: add pinout source (#20931)
- boards/stm32l476g-disco: add ADC support (#20793)
- boards/stm32l476g-disco: add PWM support (#20807)
- boards/ek-lm4f120x: Change internal LED macro for C2Rust
compatibility (#20831) - boards/nucleo-l432kc: enable CAN support (#20845)
CPU
- core/thread: always use THREAD_CREATE_STACKTEST when DEVELHELP is
enabled (#20450) - cpu/cc2538: mask length byte before checking CRC (#21038)
- cpu/esp32: Improve error descriptions (#20914)
- cpu/msp430: Implement periph_gpio_ll & periph_gpio_ll_irq (#20679)
- cpu/nrf52: fix RSSI calculation in nrf802154_radio (#20839)
- cpu/sam0_common/periph: fix rtt reset after hibernation (#20842)
- drivers/periph/gpio: make
gpio_write()
take a bool (#20935)
Device Drivers
- drivers/dht: fix null deref with saul (#20927)
- drivers/led: Allow LEDn_ON to be disabled by other modules (#20833)
Documentation
- CODING_CONVENTIONS.md: Add preprocessor directive formatting (#20866)
- boards/nucleo-g070rb & g071rb: add pinouts to documentation (#20822)
- boards/nucleo-g070rb: add MCU table to doc page (#20825)
- boards/nucleo-g071rb: add MCU table to doc page (#20827)
- boards/nucleo-g431rb & g474re: add pinouts to boards doc page (#20832)
- boards/nucleo-g431rb: add MCU table to documentation (#20848)
- boards/stm32l476g-disco: add pinout to documentation page (#20808)
- riot.doxyfile: Update and remove deprecated options (#20897)
- boards/nucleo-l053r8: MCU table addition to doc page (#20804)
- boards/stm32l0538-disco: addition of pinout to documentation page (#20810)
- build system: document
riotbuild.h
and deprecatedRIOT_MCU
(#20566) - doc/doxygen: print link to generated documentation (#20896)
- doc: Point out common problem installing c2rust (#20844)
- sys/net/app/cord: update doc (#20921)
Build System / Tooling
- Makefile: add .DEFAULT target to further guide new users (#20895)
- .clang-format: Add default clang-format configuration (#20865)
- CI: fix true and false positives by newer codespell version (#20899)
- dist/tools/bootterm: bump to 0.5 (#20871)
- dist/tools/cosy: take BUILD_DIR into account (#20789)
- make: export DEVELHELP (#20889)
- makefiles/arch/native: don't be pedantic (#20873)
- makefiles/suit: make use of
SUIT_SEC_PASSWORD
optional (#20862) - makefiles/suit: store public keys, make it easier to work with
multiple keys (#20858) - makefiles/docker.inc.mk: bump riotbuild docker image to last
available (#20840) - gh-actions: bump deprecated packages (#20892)
Examples
- examples: Add asynchronous Rust example (#20830)
- examples/leds_shell: add example for interactive LEDs/GPIO control (#20782)
- examples/gcoap-rust: Expose more functionality (#20838)
- examples/leds_shell: use periph_gpio_mock on native (#20796)
Testing
- tests/pkg/emlearn: add model.h to repo (#20841)
- tests/gnrc_ipv6_nib: rtr_ltime test (#20372)
API Changes
- cpu/stm32: implement
periph_gpio_ll_switch_dir
(#20805) - drivers/periph_gpio: let gpio_read() return bool (#20936)
- drivers/periph_gpio_ll: change API to access GPIO ports (#20639)
And 26 minor changes.
Deprecations
Removals (1)
- sys/ztimer: Remove the deprecated ztimer_now64 (#20826)
Bug fixes (27)
- boards/common/arduino-zero: Add Arudino SPI mapping (#20884)
- cpu/native/periph_timer: add missing -lrt to linker flags (#20816)
- cpu/sam0_common/periph_adc: add work around for errata 2.1.6 (#21001)
- bluetil: Ensure advertisement length does not exceed pkt len (#20881)
- boards/samd5x: GCLK source for ADC must not exceed 100 MHz (#20932)
- boards/stm32f429i-disc1: fix touch screen axis (#21014)
- build system: simplify docker image pinning (#20877)
- core/mutex: use thread_yield_higher() in mutex_unlock() (#20890)
- core/panic: don't use LOG_ functions in panic handler (#20790)
- cpu/sam0_common/periph_gpio_ll: fix gpio_get_port() and gpio_ll_query_conf() (#21008)
- dns_msg: skip RDLENGTH_LENGTH field when skipping record (#20857)
- drivers/at86rf215: return ENETDOWN when interface is down (#21037)
- examples/lorawan: drop crazy STM32 hack (#20883)
- gcoap/forward_proxy: handle timeout case (#20915)
- gh-actions: bump upload-artifact to v4 (#20875)
- gnrc/ipv6:
nib route
: hide off-link PLEs (#20835) - gnrc/ipv6: Store all SLAAC prefixes (#20757)
- gnrc_lorawan: Ensure minimal packet length (#20880)
- gnrc_netif: fix double free with netdev_new_api & gnrc_netif_pktq
(#20979) - gnrc_netif: fix packet leak with gnrc_netif_pktq & netdev_new_api
(#20997) - nanocoap: always write at least 1 byte in coap_block2_finish() (#20855)
- net/dhcpv6: Improve option parsing in dhcpv6 advertise (#20882)
- sys/net/application_layer/gcoap: fix Observe notifications
correlation (#20684) - sys/net/nanocoap: fix UB when building hdr (#20917)
- sys/usb_cdc_acm_stdio: only submit and flush for non-empty buffer
(#20987) - sys/ztimer: fix re-scheduling of timers (#20924)
- Various PSA Crypto fixes (#20854)
Known issues
Network related issues (55)
- 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
- Address registration handling inappropriate (#15867)
- app/netdev: application stops working after receiving frames with
assertion or completely without error (#8271) - at86rf2xx: Dead lock when sending while receiving (#8242)
- cpu/esp8266: Tracking open...
Release-2024.07
RIOT-2024.07 "StrikinglyCrowded" - Release Notes
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release
The 2024.07 release, nicknamed "StrikinglyCrowded", includes many features and bug fixes.
Here are some of the highlights:
- RIOT now boots on the Arduino Nano 33 BLE Sense (#20668)
- To support boards with Ethernet plugs such as the Adafruit Ethernet FeatherWing, RIOT now ships a driver for the W5500 ethernet chip (#20301)
- RIOT now leverages the ARMv8-M hardware support to enforce the stack size (#20633)
- The PSA Crypto API implementation in RIOT now supports persistent key storage and additional hashing algorithms (#20099, #20598, #20698)
- This release features several useful additions to the RIOT CoAP stacks: a coaps forward proxy for gcoap, delayed responses for nanocoap_sock, and the ability to mount a remote filesystem over CoAP (#20454, #20266, #20687)
- Support of the 16-bit MSP430 MCU has been improving over the last few releases, with the addition of power management in this release as an example (#20613)
- First steps towards enabling RIOT support of new Microchip SAM MCUs (#20708, #20710, #20713, #20714)
- Compiling with
BUILD_IN_DOCKER=1
will now by default use the exact container version the code was tested in the CI, fetching it from upstream if not locally present. (#20472)
175 pull requests, composed of 358 commits, have been merged since the
last release, and 5 issues have been solved. 36 people contributed with
code in 80 days. 650 files have been touched with 88156 (+) insertions and
3949 deletions (-).
Notations used below
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
Core
- core/assert: halt running thread instead of panic (#20627)
- core/lib/assert: consistify output and cleanup documentation (#20701)
- core/panic: make reboot on panic configurable (#20630)
- core/thread: "fix" valgrind errors in thread_measure_stack_free() (#20726)
System Libraries
- sys/event.h: Fixed documentation error by adding a type cast. (#20704)
- sys/shell: add support for running a batch of commands from a file (#20651)
- rust: bump rust-riot-{sys,wrappers} version (#20786)
- shell/vfs: Handle print failure in genfile cmd gracefully (#20595)
- sys/hashes: change SHA2 PAD type to const (#20729)
- sys/psa_crypto: ed25519 private key {ex,im}port (#20334)
- sys/psa_crypto: Implement persistent key storage (#20099)
- sys/psa_crypto: remove keysize determination from Kconfig files (#20674)
- sys/psa_crypto: SHA-{384,512/{224,256}} (#20598)
- sys/psa_crypto: sha3 support (#20698)
- sys/shell: Update cryptoauthlib shell commands (#20673)
- sys/vfs: use atomic_utils rather C11 atomics (#20513)
Networking
- gcoap: add coaps forward proxy (#20454)
- gnrc, nanocoap: add optional work-arounds for buggy CoAP servers (#20564)
- nanocoap_fs: add nanoCoAP as VFS backend (remote CoAP fs) (#20687)
- nanocoap_sock: add nanocoap_get_blockwise_to_buf() (#20690)
- nanocoap_sock: implement separate response (#20266)
- driver/w5500: driver for the W5500 ethernet chip (#20301)
- examples/gcoap: take full URI as input (#20554)
- gnrc/ipv6: Check for overflow (#20771)
- l2filter: mark module and related netopt options as experimental (#20634)
- pkg/lwip: use sys/event for handling ISR and bhp (#18359)
Packages
- pkg/tflite-micro: add proper options to flatc (#20703)
- pkg/wakaama: implement IPSO sensor objects in LwM2M (#20652)
- pkg/wamr: Added support for THUMB_VFP in wamr Makefile (#20628)
- Makefile.include: creation of CACHEDIR.TAG as a dependency of pkg-
prepare (#20689) - pkg/littlefs2: bump to v2.9.2 (#20591)
- pkg/tflite-micro: Update tflite-micro to latest version. requires
update of pkg/flatbuffers as well. (#20683) - pkg/wamr: updated package to WAMR 1.3.3 (#20691)
Boards
- boards/arduino-nano-33-ble-sense: add support for arduino-
nano-33-ble-sense (#20668) - boards/b-l072z-lrwan1: add missing adc feature (#20733)
- boards/nucleo-f303ze: add pinout (#20717)
- boards/nucleo-l452re: add ADC (#20778)
- boards/sodaq-sara-sff: add status pin for SARA (#20279)
- cpu/stm32: add ADC support for WB55 (#20773)
- drivers/led: add LED_NUMOF and convenience inline functions (#20783)
- drivers/ws281x: Add saul support (#20562)
- boards/common/stm32: simplify ifdef logic (#20617)
- boards/nRF52xx: correctly set JLINK_DEVICE (#20599)
- boards/nucleo-l476rg & stm32l476g-disco: fix MCU table (#20751)
- boards/stm32l0538-disco: enable cpy2remed (#20766)
- boards/stm32l476g-disco: enable cpy2remed (#20734)
- build system: clean up netif features (#20700)
- cpu/{gd32v,stm32}/periph/adc: make ADC clock setable (#19630)
CPU
- cpu/cortexm: add stack limit support for Cortex-M33 (#20633)
- cpu/cortexm: rework bkpt instruction call on panic (#20616)
- cpu/cortexm_common: print last active thread on stack corruption (#20709)
- cpu/esp: Handle format print errors (#20596)
- cpu/msp430: implement power management (#20613)
- cpu/nrf5x: implement pm_off() for nRF53/9160 (#20590)
- cpu/nrf5x_common: fix ztimer issue on warm-boot (#20665)
- cpu/nrf5x_common: properly calibrate RC-based low-frequency clock (#20669)
- cpu/sam0: Remove deprecated muxpos (#20525)
- cpu/sam0_common: avoid bitfield usage (#20747)
- cpu/samd21: avoid the use of bitfield (#20713)
- cpu/samd5x: avoid the use of bitfields (#20714)
- cpu/samd5x: handle CAN errors (#20667)
- cpu/saml1x: avoid the use of bitfield in register calls (#20710)
- cpu/saml21: avoid the use of bitfield in register call (#20708)
- cpu/stm32/periph/stm32_eth: provide confirm_send (#18428)
- cpu/stm32: de-duplicate ifdefs (#20609)
- periph/flashpage: remove deprecated flashpage_*_free functions (#18093)
- pkg/lwip: make use of confirm send (#18427)
- Remove extraneous bitwise assignment operation on NRF5X_common gpio.c (#20737)
- sam0_eth: implement .confirm_send() to fix fragmented sending (#20666)
- tree wide: compilation fixes for
native64
on musl systems (#20730)
Device Drivers
- drivers/at24cxxx: Add M24C01 device and enhance documentation (#20588)
- drivers/led: add LEDX_IS_PRESENT defines (#20637)
- drivers/mtd: Add check for integer overflow (#20587)
- Drivers: add MAX31855 thermocouple-to-digital converter (#20741)
Documentation
- boards/nucleo-c031c6: add pinout to doc (#20657)
- boards/nucleo-l452re: add pinout to doc page (#20678)
- boards/nucleo-l4r5zi and l496zg: add pinout to documentation page (#20707)
- boards/nucleo144: add pinout diagrams to boards documentation (#20614)
- doc/getting-started: add hint for correct access rights on serial
device (#20600) - doc/terminals: add putty and sort terminals (#20611)
- /README.md: match doc (#20740)
- boards/doc: Adafruit Feather nRF52840 Sense is popular (#20597)
- boards/nucleo-f429zi & f439zi: documentation improvements (#20594)
- boards/nucleo-f722ze: doc update (#20671)
- boards/stm32l0538-disco: doc improvements (#20767)
- boards: Update SAM0-based documentation (#20621)
- doc: fix links to GNRC master thesis (#20785)
- doc/doxygen: remove default value for search form (#20681)
Build System / Tooling
- .editorconfig: add EditorConfig (#20746)
- pkg: Add script to check third party package version (#20662)
- tools/dhcpv6-pd_ia: fix: Add explicit subnet id (#20776)
- dist/tools/buildsystem_sanity_check: make shellcheck happy (#20721)
- dist/tools/tapsetup: make compatible with doas (#20712)
- Makefile.include: place compile_commands.json by rule target (#20716)
- makefiles/docker.inc.mk: Pin riotbuild version with BUILD_IN_DOCKER=1 (#20472)
- makefiles/docker: prevent recursive docker invocation (#20638)
- makefiles/tools/serial.inc.mk: make use of pyterm session names (#20121)
- makesfiles/jlink: fix exports for flashing (#20779)
- tree-wide: Introduce netif feature and use it (#20682)
Examples
- examples/psa_crypto: pass environment variable down to docker (#20663)
Testing
- tests/drivers/at: add check if device is initialized before sending
command (#20140)
- check-labels.yml: bump to v1.1.2 (#20727)
- ci: disable esp32-wroom-32 tests (#20715)
- release-tests.yaml: remove (always failing) matrix notification (#20742)
- test/sys/progress_bar: temporary printout to debug flaky test (#20763)
- tests/drivers/pn532: fix init error handling and increase verbosity (#20750)
- tests/sys/progress_bar: move configuration to app.config (#20764)
- tests/sys/progress_bar: remove debug print (#20768)
- tests/sys/psa_crypto*: remove test symlinks (#20545)
- tests/sys/psa_crypto: increase timeout (#20612)
- tests/sys/psa_crypto: test interleaved hash operations (#20606)
- tests/sys/psa_crypto_ecdsa: fix stacksize determination (#20760)
API Changes
- build system: rename ethernet feature into netif_ethernet (#20694)
- cpu/native: fix build with musl (#18942)
- pkg/monocypher: bump to 4.0.2 (#20670)
And 32 minor changes.
Deprecations (1)
====...
Release-2024.04
RIOT-2024.04 "UwUtastic" - Release Notes
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release
The 2024.04 release, nicknamed "UwUtastic", includes many features and bug fixes.
Here are some of the highlights:
- RIOT boots on two newly added boards:
- The documentation features a new guide to help you set up a RIOT develpoment environment on Windows (#20426)
- To accommodate the ever growing RAM sizes in the IoT, RIOT can now monitor your
malloc
usage (#20363)
- Dependency modelling via Kconfig is no longer part of RIOT. A big step forward towards having only one source of truth for configurations (#20438)
210 pull requests, composed of 446 commits, have been merged since the
last release, and 4 issues have been solved. 42 people contributed with
code in 82 days. 2409 files have been touched with 26218 (+) insertions and
29933 deletions (-).
Notations used below
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
Core
- mbox: provide function to unset initialized mbox (#15485)
System Libraries
- add error check of aes_encrypt() (#15576)
- event_periodic_callback: add event_periodic_callback_create() (#20459)
- shell/cmds: add udptty command (#19742)
- sys/libc: add endian.h (#20310)
- sys/shell/lwip: add IPv4 configuration to lwip ifconfig command (#19849)
- tests: Add NULL pointer argument test for fmt_lpad/to_lower/str (#20344)
- makefiles/cargo: Remove CARGO_CHANNEL, add
make info-rust
and simplify Cargo invocations (#20319) - Monitoring malloc usage (#20363)
- rust: Increase Cargo.lock stability and usefulness (#18684)
- sys/checksum: Remove deprecated crc16_ccitt functions (#20527)
- sys/hashes: support for SHA-{384,512/{224,256}} (#20484)
- sys/isrpipe/read_timeout: don't set up timer if data is available (#20558)
- sys/newlib_syscalls_default: fix race condition in __sinit() (#20392)
- sys/psa_crypto: use SHA256 CSPRNG as default (#20460)
- sys/shell: Document that shell access means root access (#20546)
- sys/suit: Remove deprecated suit_coap_run function (#20528)
- sys/suit: return error when URL buffer is too small (#20559)
- sys/tiny_strerror: fix compilation on LLVM (#20483)
Networking
- gcoap: add some client-side observe handling (#20073)
- nanocoap: add coap_build_reply_header() (#20284)
- nanocoap: introduce coap_get_method() (#20191)
- nanocoap_sock: add support for IPv4 (#20476)
- net/sock_dtls: add public key verification (#20048)
- pkg/wakaama: Notify resource updates when writing to resources (#20326)
- sys/net/ipv4: add IPV4_ADDR_INIT() macro (#20354)
- always use nanocoap_resources instead of manually assembling
coap_resources[] (#20374) - cord_lc: Process truncated reads (#20547)
- gnrc_ipv6_nib: Ignore PIO with on-link flag (#20418)
- nanocoap/cache: Extend with option-only cache keygen (#20043)
- pkg/tinydtls: enforce the default dtls user params to be configurable (#20478)
- routing/rpl: Fixing styling & format (#20294)
- sys/net/gnrc: Remove code duplication (#16502)
Packages
- pkg/wakaama: add Light Control object implementation (#16204)
- ci: support git-cache-rs (#20311)
- Makefile.{include,base},pkg/nanopb: fix target deps & code generation (#20400)
- pkg/flashdb: enhance FAL config (#20221)
- pkg/uzlib: warn about memory leak during compression (#20293)
Boards
- boards/cpu: Add GBA boot support to RIOT (#19519)
- boards/nucleo-c031c6: add PWM configuration (#20520)
- boards/nucleo-u575zi-q: Add support (#20444)
- boards/weact-g030f6: add support for minimal break-out board (#20337)
- cpu/rpx0xx: add initial pwm support (#20473)
- cpu/stm32: add support for STM32C0 and NUCLEO-C031C6 (#20300)
- boards/feather-nrf52840-sense: declare lsm6ds33 accelerometer (#20436)
- boards/feather-nrf52840-sense: use generic lsm6dsxx (#20526)
- cpu/msp430/f2xx: clean up periph_uart,periph_spi (#20357)
- cpu/nrf9160: fix GPIOTE ISR (#20560)
- cpu/samd5x write can driver (#19736)
- cpu/stm32u5: Enable rtc support (#20521)
CPU
- cpu/native: add gpio-mock (#20431)
- cpu/native: Add support for periph_timer_query_freqs (#20306)
- drivers/periph_gpio_ll: Implement API to switch direction (#20292)
- stdio_dispatch: allow to select multiple stdio methods at the same
time (#19738)
- cpu/esp8266: allow arbitrary SPI clocks (#20410)
- cpu/native/periph/uart: uart_poweroff() closes the file descriptor +
extended baud-rate support on Linux (#20365) - cpu/native: Fix executable stack warning (#20307)
- cpu/native: return error code on failed assertion (#20419)
- cpu/stm32/periph/gpio: simplify condition code (#20479)
- cpu/stm32/periph/usbdev_fs: avoid using ztimer when not needed (#20467)
- cpu/stm32: Fix ifdefs in periph_gpio_ll (#20530)
- cpu/stm32: remove redundant conditional compile block (#20495)
- drivers/mtd_flashpage: allow to define AUX slot on flash (#18608)
- sys/byteorder: clean up implementation (#20313)
- sys/cpp_new_delete: always enable the module when C++ is used (#20348)
- tests: exit
native
with error value on failure (#20445) - treewide: Rust updates (#20303)
Device Drivers
- drivers/lsm6dsxx: Allow generic LSM6DSXX driver (#20504)
- drivers/lsm6dsxx: refactoring Lsm6dsl into common driver Lsm6dsxx (#20170)
- drivers/w5100: make use of netdev_eui48_get() (#20304)
Documentation
- build system: add list of features for documentation and sanity
checking (#20366) - doc: Add guide for dev setup on Windows (#20426)
- doc: add terminal program configuration (#20493)
- doc: doxygen: add "Topics" to menus (#20443)
- doc: Move community processes and vision (import from Wiki) (#20496, #20491, #20498)
- RDM: Naming boards (#18589, #20469)
- boards/feather-nrf52840*: doc cleanup (#20422)
- boards/nucleo-c031c6: fix ADC and enhance doc (#20502)
- doc/roadmap: Make working 6LBR a goal (#20351)
- doc: Allow resizing of doxygen side-nav (#20511)
- README: Change Section titles from all caps to regular (#20405)
Build System / Tooling
- build system: add
--no-warn-rwx-segments
to linker (#20381) - dist/tools/mspdebug: build from source (#20345)
- Avoid using egrep (#20522)
- build system: Improve failure mode for FEAUTRES_REQUIRED_ANY (#20408)
- dist/tools/dhcpv6-pd_ia: recognize Debian correctly (#20487)
- Enable compile_and_test_for_board to skip if nothing changed (#19546)
- tools/openocd: define SWD_EN signal for tigard (#20507)
- tree wide: accommodate RISC-V toolchain update (#20380)
Kconfig
- Remove Kconfig dependency modelling (#20438)
Examples
- examples/rust-gcoap: Add SAUL (#17554)
- examples/filesystem: Update README and increase default stack size (#20439)
- examples/psa_crypto: Fix modules to run ECDSA on SEs (#20461)
- examples/wakaama: rename to lwm2m (#20327)
Testing
- ci: disable some more flakey native tests (#20358)
- examples, tests: disable native and native64 for more flaky tests (#20401)
- make use of nanocoap_server_auto_init (#20378)
- Refactor tests periph uart (#20281)
- release-test.yml: return of the Matrix notification (#20424)
- tests/pkg/lwip: include default-radio-settings.inc.mk (#20325)
- tests/sys/shell: increase the stack size of periodic thread (#20548)
- tests/sys/timer_overhead: disable test on native in CI (#20324)
- tests/unittests/README: link to Supported Boards updated (wiki ->
site) (#20500) - tests: 64-bit support preparations (#20276)
- tests: Cover API of scn_u32_hex in the unittest (#20458)
- tests: disable flaky tests on
native
in the CI (#20382) - unittests: Move at test to driver tests (#20540)
API Changes
- drivers/at: fix URC handling and add better testing (#20423)
- drivers/at: parse +CME/+CMS responses and save error value (#20289)
- gcoap: make gcoap_req_send_tl() an alias of gcoap_req_send() (#20514)
- gcoap_fileserver: rename to nanocoap_fileserver (#20030)
- makefiles, treewide: Remove MCU variable (#20397)
Uncategorized
- release-notes.txt: add 2024.01 release notes (#20350)
- Roadmap: Add Home-Assistant integration on the roadmap (#20403)
- vscode: Add hard-coded path to compile_commands.json (#20417)
And 59 minor changes.
Deprecations
Deprecations (3)
- gnrc_mac / gnrc_lwmac / gnrc_gomach: Deprecate modules (#20512)
- Deprecate MCU preprocessor defines (#20397)
Removals (4)
- drivers/rgbled: Remove driver (#20407)
- periph_usbdev: remove deprecated event flag (#20488)
- treewide: remove deprecated modules (#20471)
- treewide: remove deprecated shell_commands module (#20485)
- gnrc_netif: remove deprecated CONFIG_GNRC_NETIF_LORAWAN_NETIF_HDR (#20515)
- sys/phydat: Remove deprecated print...
Release-2024.01
RIOT-2024.01 - Release Notes
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release
The 2024.01 release includes:
- Breaking change for board definition due to XFA for pointers to defined MTD.
This means users will need to:- remove the
MTD_NUMOF
definition fromboard.h
- add
MTD_XFA_ADD(<mtd_dev>, <idx>);
to the definition of<mtd_dev>
. MTD_0
,MTD_1
, … defines are no longer needed. Usemtd_dev_get(0)
,
mtd_dev_get(1)
, … instead.
- remove the
- Many fixes to peripherals due to the periph testing shield
- The AVR-8 now has power management
- The ESP32 family is now supported by the SDMMC peripheral driver
native
now is supported in pytermtests/periph/uart_locate_pins
helps discover which pins are where- the
periph_timer
API supportsperiph_timer_query_freqs
- The GNRC boarder router application supports ZEP topology
- Removal of Kconfig dependency modelling (but still configurations supported)
194 pull requests, composed of 475 commits, have been merged since the
last release, and 4 issues have been solved. 30 people contributed with
code in 64 days. 1083 files have been touched with 36196 (+) insertions and
4976 deletions (-).
Notations used below
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
Core
- core, sys, drivers: 64-bit support preparations (#20257)
- core: Express -1 as ~0 in thread_status_t cast (#19976)
System Libraries
- Fletcher32: Add incremental API (#19981)
- sys/event/timeout: add event_timeout_is_pending() (#19963)
- sys/hashes: add SHA-512 support (#19969)
- sys/suit: introduce suit_worker_done_cb() (#20237)
- riotboot: fix build errors (#20210)
- sys/benchmark: fix integer overflow in benchmark_print_time() (#20220)
- sys/psa_crypto: allow repeated initialization (#19990)
- sys/shell/gnrc_netif: Fix a few blockers for sharing ifconfig shell (#19971)
- sys/shell: fix getopt() support (#20209)
- sys/busy_wait: add busy wait helper (#20241)
Networking
- gnrc: make message queues static (#19998)
- coap: create typedef for CoAP methods (#20003)
- gcoap_dns: Housekeeping with regards to draft status (#20015)
- gnrc/ipv6/nib: allow for predictable static link-local addresses (#20224)
- gnrc/nib: allow prefix to be on-link without being used for address (#20243)
- nanocoap: fix incorrect uses of coap_get_code() (#20028)
- nanocoap_sock: implement FETCH methods (#20238)
- print: Missing size_t print format specifiers (#20249)
Packages
- Bump nanopb to 0.4.8 (#20132)
- mjson: Initial include of package (#20129)
- pkg/ccn-lite: Bump version (#20248)
- pkg/flashdb: bump to 2.1.0 (#20155)
- pkg/nanocbor: Bump to latest commit (#19975)
- pkg/tinydtls: bump version (#20159)
- pkg: micropython: bump version (#20208)
- pkg: 64-bit support preparations (#20271)
Boards
- boards/feather-nrf52840-sense: Add bootloader info (#20034)
- boards/gd32vf103c-start: new board (#20270)
- boards/generic-cc2538-cc2592-dk: add board support (#20226)
- boards/nucleo-l4r5zi : add PWM configuration (#20036)
- boards/nucleo-l552ze: add PWM configuration (#20032)
- boards/p-nucleo-wb55: add PWM configuration (#20120)
- boards: add support for Adafruit Feather nRF52840 Sense (#20027)
- drivers/include/periph: add FREQM peripheral driver (#20020)
- drivers/ws281x: Add gpio_ll and timer based driver (#19891)
- pyterm: add native support (#20172)
- sys/shell: add firmware version to version cmd (#20244)
- AVR-8: Implement Power Management (#19784)
- boards/nrf52dk: Minimal Arduino pinout support (#20286)
- boards/same54-xpro: configure pins for UART HW flow control &
ethernet LED (#20183) - boards: remove
extern mtd_dev_t *mtd<n>
declarations from board
definitions (#20104) - makefiles/tests/tests.inc.mk: use native term for tests (#20215)
- treewise: typo "or RAM" (#20219)
CPU
- cpu/msp430: rework MSP430 x1xx periph drivers (#19835)
- cpu/nrf5x: clean up periph_uart (#20102)
- cpu/stm32: FMC used for low-level LCD parallel interface (#19943)
- cpu/esp32/periph: add low-level SDMMC peripheral driver for ESP32 and
ESP32-S3 (#19786) - cpu/msp430: improve periph_timer (#20160)
- cpu/stm32/periph: add low-level SDMMC peripheral driver (#19540)
- cpu/*: implement periph_timer_query_freqs (#20142) (#20143) (#20144) (#20145)
(#20146) (#20147) (#20148) - cpu/stm32: add ADCAL operation (#20044)
- drivers/periph/uart: add periph_uart_tx_ondemand feature (#20108)
- cpu/avr8_common: allow to build with !periph_pm (#20247)
- cpu/avr8_common: fix build with !core_thread (#20240)
- cpu/nrf5x_common: clean up UART implementation (#20111)
- cpu/sam0/uart: implement uart_pin_cts()/uart_pin_rts() (#20171)
- cpu/sam0_common: implement periph_gpio_ll and periph_gpio_ll_irq (#20189)
- cpu/stm32/periph_spi: only perform DMA transfer above threshold (#20214)
- cpu/stm32: uart: don't do DMA for small transfers (#20230)
Device Drivers
- driver/mtd: mtd_init add documentation for return value (#20033)
- drivers/periph_timer: add timer_query_freqs() (#16349)
- drivers/mtd_flashpage: improve _write_page (#20173)
- drivers/mtd: improve doc consistency (#20184)
- drivers: make use of busy_wait() (#20258)
Documentation
- boards/nucleo-l433rc: doc update - image and MCU table (#20098)
- boards/nucleo-l452re: doc update (#20207)
- boards/p-nucleo-wb55: documentation update (#20115)
- doc/mainpage: don't claim to be a microkernel (#20246)
- doc: Move and update roadmap in from the wiki (#20122, #20123)
Build System / Tooling
- dist/testbed-support: Add openmote board (#19979)
- dist/tools/riotboot_gen_hdr/genhdr: add update command (#20239)
- Bump version of UF2 package (#20035)
- examples/gnrc_border_router: enable setting ZEP topology (#20006)
- make all: document targets for RIOT base module (#20187)
- make help: show generate-Makefile.ci (#20186)
- tools/zep_dispatch: enhancements and fixes (#19996)
Kconfig
- tests/build_system: drop Kconfig tests (#20229)
Examples
- examples/dtls-sock: Enable non 32-bit architectures (#20196)
- examples/dtls-sock: make use of helper functions (#20125)
Testing
- tests/periph/uart_locate_pins: new test/utility app (#20253)
- tests/pkg/minmea: adding GGA, GSA and RMC sentences to test
application (#20005) - tests/unittests: add a unit test for ztimer (#20011)
- .murdock: drop Kconfig compile check (#20211)
- ci: ensure "xxx succeeded" properly fail (#20288)
- ci: make native tests show up in "tests" (#20269)
- tests/drivers/at: fix device table overflow (#20025)
- tests/net/gnrc_sixlowpan_frag_sfr_congure_impl: disable test on
native (#20151) - tests/periph/uart: allow to set line ending (#20128)
- tests/pkg/minmea: fixing RMC timestamp (#20018)
- tests/sys/psa_crypto*: Fix failing tests (#20178)
- tests/sys/psa_crypto_se_cipher: disable test on esp32-wroom-32 (#20152)
- tests/sys/psa_crytpo_se: disable test on esp32-wroom-32 (#20150)
- tests/unittests: blacklist LLVM on native (#19958)
- tests: Slightly increase coverage of fmt unittests (#20272)
API Changes
- print: Added size_t print format specifier (#20194)
- drivers/mtd: use XFA for pointers to defined MTDs (#19465)
- drivers/periph/gpio_ll: shrink gpio_conf_t (#20236)
- hashes/sha2{24,56}: Remove static variables from sha256 (#20116)
- nanocoap: defuse footgun in coap_get_uri_query() (#20195)
- nanocoap: rename coap_get_code() -> coap_get_code_decimal() (#20004)
Uncategorized
And 52 minor changes.
Deprecations
None
Removals (1)
- mtd/*: drop .write() if .write_page() is implemented (#15380)
Bug fixes (26)
- dist/tools/uf2: add target to also copy families.json file (#20042)
- backport_pr.py: increase entries per page for branches GET (#19985)
- boards/esp32s3-usb-otg: fix the table of contents in documentation (#20156)
- boards/native: only use pyterm wrapper with term target (#20264)
- boards/nucleo-f413zh: Fix DMA mapping (#20225)
- ci: fix murdock tests after dwq change (#20268)
- cpu/cc2538: fix EUI provider (#20228)
- cpu/cortexm_common: work around bug on WFI for STM32 (#20149)
- cpu/stm32/periph_spi: Fix /CS handling (#20084)
- cpu/stm32: fix periph_i2c for F1, F2, L1 and F4 families (#20100)
- drivers/mtd: fix the order of entries in the MTD pointer XFA
mtd_dev_xfa
(#20113) - drivers/mtd_sdmmc: always enable the erase function (#20180)
- drivers/slipdev: make use of chunked ringbuffer (#18066)
- fatfs_vfs: fix the Memory leak: work (#20206)
- gcoap: fix underflow when correcting ETag from cache (#19968)
- gnrc/ipv6/nib: rejoin ipv6_addr_all_nodes_link_local on interface up (#20259)
- gnrc_ipv6_nib: fix config for mixed 6lo/classic setup (#20167)
- nanocoap: prevent integer underflow in coap_opt_put_uri_pathquery() (#19994)
- net/gnrc/netif: set 6LN flag for ethernet if gnrc_sixloe...
Release-2023.10
RIOT-2023.10 - Release Notes
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release
The 2023.10 release includes:
- PSA Crypto API implementation, one step closer to a secure IoT!
- A bunch of default drivers for boards
- Improved clang support
116 pull requests, composed of 318 commits, have been merged since the
last release, and 2 issues have been solved. 23 people contributed with
code in 95 days. 1109 files have been touched with 437877 (+) insertions and
3189 deletions (-).
Notations used below
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
System Libraries
- drivers/periph_sdmmc: define a High-level SDIO/SD/MMC API and low-
level SDMMC peripheral driver interface (#19539) - sys/event: add event_is_queued() (#19966)
- sys/shell/gnrc_netif: fix ifconfig set language issue (#19970)
- sys/shell/gnrc_txtsnd: Move to separate module (#19973)
- sys: PSA Crypto API implementation (#18547)
Networking
- coap: add missing Content-Format definitions (#19875)
- coap: add missing option numbers (#19874)
- drivers/atwinc15x0: support dynamic scanning and connection to AP (#19387)
- sys/net/sock: add sock_aux_ttl (#19836)
- cmds_gnrc_netif: Support enabling/disabling lwIP netifs from
gnrc_netif shell (#19972)
Packages
- mcufont: Initial addition of MCUFont package (#19726)
- pkg/driver_cryptocell_310: Fix Makefile (#19959)
- pkg/flashdb: bump to 2.0.0 (#19863)
- pkg/littlefs2: bump to v2.8 (#19942)
- pkg/lvgl: bump to v8.3.9 (#19901)
- lwip: bump to v2.2.0 (#19780)
Boards
- boards/stm32f723e-disco: enable ST7789 display (#19939)
- boards/stm32f769i-disco: enable FMC with SDRAM support (#19851)
- boards/stm32l496g-disco: enable ST7789 display and touch panel (#19938)
- boards: add Silabs EFM32 Giant Gecko GG11 Starter Kit (#19923)
- boards: add support for ESP32-S3 WT32 SC01 Plus board (#19917)
- boards/adafruit-itsybitsy-m4: configure littleFS on external flash (#19355)
- boards/nucleo64: fix SPI Arduino mapping for most boards (#19935)
- boards/sipeed_longan_nano: separate board definition for Sipeed
Longan Nano TFT (#19824) - boards/stm32f469i-disco: enable FMC with SDRAM support (#19910)
- boards: complete SD Card MTD definition for several bords (#19914)
CPU
- cpu/stm32/periph: add FMC/FSMC support for STM32 (#19843)
- cpu/sam0_common/periph: add low-level SDMMC peripheral driver for SDHC (#19760)
- cpu/efm32/periph: add DAC support for EFM32 Series 1 (VDAC) (#19887)
- cpu/atmega_common: hook up BAT LOW irq to power bus (#19822)
- cpu/riscv_common: remove picolibc from blacklisting in CI (#19862)
- cpu/stm32/periph/eth: Disable hardware checksums (#19952)
- cpu/stm32: bump cmsis packages version (#19904)
- cpu/stm32: fix ld script for SRAM4 (#19842)
- dist/tools/esptools: upgrade ESP32x toolchains to GCC version 12.2 (#19452)
- sys/psa_crypto: Ed25519 (EdDSA) support (#19954)
Device Drivers
- drivers/ft5x06: introduce conversion for X and Y coordinates (#19867)
- drivers/st77xx: introduce rotation defines (#19919)
- drivers/lcd: add MCU 8080 16-bit parallel mode support (#19937)
- drivers/lcd: add MCU-driven low-level parallel interface (#19941)
- drivers/lcd: support MCU 8080 8-bit parallel mode (#19915)
- drivers/touch_dev_gestures: add gesture recognition for touch devices (#19884)
- drivers/ft5x06: use a pointer to config parameters instead of copying
them (#19866) - drivers/sdmmc: store SDMMC device descriptor references in XFA (#19899)
- drivers/stmpe811: changes for interrupt-driven touch handling and
gesture recognition (#19885)
Documentation
- tests/pkg/lwip: Add README.md (#19949)
- drivers/periph: Add documentation on thread safety and initialization (#19794)
- boards/sltb009a: complete and fix documentation (#19888)
- doc: fix references and inches unit (#19948)
Build System / Tooling
- compile_and_test_for_boards: Add no-compile flag (#19817)
- dist/testbed-support: Add openmote board [backport 2023.10] (#19984)
- dist/tools/jlink: fix DBG_PID assignment (#19960)
- dist/tools/usb-serial: call ttys.py with its path (#19823)
- make: COMPILE_COMMANDS_PATH adapt for external apps (#19869)
Examples
- examples/gcoap: add saml11-xpro to CI boards with insufficient memory (#19933)
Testing
- tests/drivers/touch_dev: allow to test a touch device in polling mode (#19882)
- .github/test-on-iotlab: prefer Toulouse site for dwm1001 board (#19950)
- .github: drop test-on-ryot workflow (#19847)
- clang floating point handling fix (#19852)
- gh-actions: remove reporting release tests to Matrix (#19879)
- tests/gcoap_fileserver: only enable test with GCC (#19870)
- tests/net/gcoap_fileserver: disable test on CI (#19898)
- tests/net/gcoap_fileserver: Fix failing nightlies (#19856)
- tests/pkg/relic: skip CI testing with samr21-xpro and llvm toolchain (#19902)
And 13 minor changes.
Bug fixes (37)
- tree-wide: mixed box of compilation fixes with clang (#19634)
- drivers/stmpe811: introduce conversion for X and Y coordinates (#19883)
- pkg/tinyusb: add missing include (#19893)
- release-test.yml: Add strasbourg creds [backport 2023.10] (#20013)
- tests/gcoap_fileserver: add zep_dispatcher to TEST_DEPS (#19864)
- boards/esp32-wt32-sc01-plus: fix I2C driver selection in Kconfig (#19945)
- boards/esp32s3-wt32-sc01-plus: fix Kconfig (#19953)
- boards/msb-430: Fix periph config & improve doc (#19922)
- boards: fix documentation for GD32V boards and doxygen 1.9.4 (#19931)
- cpu/efm32: fix DAC configuration (#19886)
- cpu/esp32: fix heap definition for ESP32-S2 and ESP32-S3 (#19956)
- cpu/esp32: fix Octal SPI RAM for ESP32-S3 (#19957)
- cpu/esp32: fix RISC-V ISA for ESP32-C3 with GCC 12.2 (#19962)
- cpu/sam0_common/periph/sdhc: busy waiting and clock fixes (#19815)
- drivers/at86rf215: switch example config to use EXT3 on same54-xpro (#19912)
- drivers/enc28j60: disable flow control (#19845)
- drivers/ft5x06: fix initialization if callback function parameter is
NULL (#19880) - drivers/ft5x06: fix vendor ID for FT6xx6 and FTxxxx register
addresses (#19860) - drivers/mtd_default: fix for boards that define MTD_NUMOF (#19907)
- drivers/mtd_spi_nor: fix init when only ztimer_msec is used (#19908)
- drivers/st77xx: implement initialization (#19827)
- drivers/stmpe811: fix initialization if callback function parameter
is NULL (#19881) - drivers: rename st7735 to more generic st77xx (#19825)
- gcoap: fix underflow when correcting ETag from cache [backport
2023.10] (#19987) - gnrc_ipv6_nib: disable router advertisements on interface startup (#19920)
- gnrc_ipv6_nib: fix for border router with non-6lo interfaces (#19900)
- nanocoap: prevent integer underflow in coap_opt_put_uri_pathquery()
[backport 2023.10] (#20038) - netdev/ieee802154_submac: support setting promiscuous mode option (#19906)
- nib/_nib-6ln: bail out early if address is no longer assigned
[backport 2023.10] (#20037) - pkg/nanocbor: Update for fixed nanocbor_skip_simple() [backport
2023.10] (#19988) - pkg/tinydtls: allow to set buffer size from application again (#19892)
- posix_sockets.c: Fix 2 byte int compilation errors (#19946)
- sys/psa_crypto: Fix macro for public key max size and SE example
[backport 2023.10] (#20039) - sys/shell/ping: fix ping packet size overflow (#19927)
- tests/drivers/disp_dev: fix off by one in display area (#19844)
- tests/pkg/lvgl*: fix the main thread stack size for ESPs (#19865)
- ztimer/periodic: reinit remove from right clock and handle acquired
ztimer (#19826)
Known issues
Network related issues (52)
- 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
- Address registration handling inappropriate (#15867)
- app/netdev: application stops working after receiving frames with
assertion or completely without error (#8271) - at86rf2xx: Dead lock when sending while receiving (#8242)
- cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
- dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
PC (#14689) - driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
- drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
- DTLS examples cannot send message to localhost (#14315)
- Emcute cannot create a double-byte name (#12642)
- ethernet: Missing multicast addr assignment (#13493)
- ethos: fails to respond to first message. (#11988)
- ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
- example/gnrc_border_router cannot answer after some time (#19578)
- examples/cord_ep: Dead lock when (re-)registering in callback
function (#12884) - examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
- Forwarding a packet back to its link layer source should not be
allowed (#5051) - gcoap example request on tap I/F fails with NIB issue (#8199)
- gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
- Global IPv6 addresses remain deprecated after receiving RA (#...
Release-2023.07
RIOT-2023.07 - Release Notes
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release
This release sees the addition of the openDSME IEEE 802.15.4 MAC.
So far it is limited to 2.4 GHz O-QPSK and drivers that have been converted
to the new sub-MAC architecture yet.
We also have two new supported MCUs: nRF53 and ATmega8. They share common
peripherals with their siblings, for nRF53 only the application core is
supported so far.
Finally, all tests live in subdirectories now, so the tests/ directory is much
more orderly.
288 pull requests, composed of 661 commits, have been merged since the
last release, and 35 issues have been solved. 26 people contributed with
code in 96 days. 6844 files have been touched with 251875 (+) insertions and
224148 deletions (-).
Notations used below
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
Core
- core/compiler_hints: add assume() hint (#19354)
- core: add core_mutex_debug to aid debugging deadlocks (#18620)
- core/lib: make the use of DEBUG_BREAKPOINT on assert optional (#19766)
- gnrc/ipv6_auto_subnets: allow to configure minimal prefix length (#19656)
System Libraries
- shell/cmds: add genfile command (#19401)
- sys: add common imath module mv isin() form test/driver_dac_dds (#19378)
- usbus: Add support for endpoint halt condition (#17090)
- buildsystem: Always expose CPU_RAM_BASE & SIZE flags (#19746)
- cpp11-compat: thread::sleep_for in microseconds (#19436)
- Rust: Update dependencies (#19495)
- SUIT: Prepared manifests (#19601)
- sys /cpp11-compat: remove pseudo anonymous namespaces (#19477)
- sys/isrpipe: Replace xtimer with ztimer_usec (#19645)
- sys/posix/sockets: fix code style & set sin6_scope_id in
_ep_to_sockaddr() (#19658) - sys: partly refactor make dependency resolution (#19492)
- usbus: Implement USB_FEATURE_DEVICE_REMOTE_WAKEUP handling (#19800)
- ztimer/periodic: remove timer on init if already running (#19806)
Networking
- pkg/opendsme: add initial support for IEEE 802.15.4 DSME time-slotted
MAC (#18156) - sys/string_utils: add memchk() (#19686)
- drivers/sx127x: reduce use of floats (#19697)
- gnrc/gnrc_netif_hdr_print: printout timestamp if enabled (#19589)
- gnrc/ipv6/nib: fix 6Lo ND options on non 6Lo interface (#19604)
- gnrc/rpl: fix incorrect addition overflow check (#19739)
- gnrc_ipv6_nib: include RIO with all subnets in downstream RA (#19644)
- nanocoap: allow to define CoAP resources as XFA (#19296)
- nanocoap: clean up coap_iterate_option(), make it public (#19713)
- nanocoap: implement extended tokens (RFC 8974) (#19487)
- nanocoap_sock: defuse nanocoap_sock_get() API footgun (#19535)
- pkg/openthread: remove deprecated functions (#19685)
- semtech-loramac: extend list of supported radio with sx1261, sx1262
and sx1268 (#19525)
Packages
- pkg/littlefs2: bump version to 2.7 (#19812)
- pkg/lvgl: bump to 8.3.7 (#19542)
- pkg/lvgl: Change all references of LittlevGL to LVGL (#18788)
- pkg/ndn-riot: drop unmaintained pkg (#19612)
- pkg/qcbor: bump to v1.2 (#19494)
Boards
- board: add Adafruit Grand Central M4 Express support (#19580)
- boards,sys/arduino: major clean up (#19759)
- boards/b_u585i_ iot02a/periph usbdev (#19796)
- boards/nucleo-l432k: provide three periph_timer instances (#19677)
- boards/olimex-msp430-h2618: add new board (#19706)
- boards: add ESP32-S3-Box support (#19811)
- boards: add ESP32-S3-USB-OTG support (#19808)
- boards: add stm32l496g-disco support (#19576)
- boards: support for Olimex MSP430-H1611 board (#19558)
- cpu/gd32v: add riotboot support (#19411)
- cpu/native: add host fs access via VFS (#19315)
- cpu/nrf53: add I2C and SPI support (#19798)
- cpu/nrf53: add initial support with nRF5340DK-APP board (#19769)
- cpu/nrf53: add usbdev support (#19809)
- cpu/nrf{53,9160}: add periph_rtt support (#19804)
- cpu/nrf{53,9160}: add pwm support (#19781)
- cpu/rpx0xx: add initial ADC support (#19516)
- drivers/usbdev_synopsys_dwc2: add GD32V support (#19389)
- boards/adafruit-clue: use shared usb_board_reset.mk for
flash/reset/term targets (#19616) - boards/arduino-mkrwan1300: update board name to correct one (#19526)
- boards/atmega8: new board (#19754)
- boards/esp32: deduplication in common ESP32x board definitions (#19432)
- boards/frdm-k22f: fixes long lines in periph_conf.h (#19774)
- boards/nrf9160dk: use all available CC timer channels (#19771)
- boards/nucleo-f429zi: Provide 2nd timer (#19447)
- boards/rpi-pico: specify needed args when using jlink flasher (#19537)
- boards/rpi-pico: update openocd.cfg file (#19717)
- cpu/msp430: reorganize code (#19733)
- cpu/nrf5x/periph/wdt: enable support for nRF53/nRF9160 (#19789)
- cpu/nrf5x_common: rework LFCLK source selection (#19803)
- cpu/rpx0xx: implement periph_spi (#19440)
- cpu/rpx0xx: initial PIO support (#17425)
- makefiles/tools/jlink.inc.mk: use ELF file for flashing (#19541)
CPU
- cpu/avr8 common: added avr4.ld script (#19751)
- cpu/riscv: Add PMP driver (#19712)
- cpu/stm32/periph_dac: small improvements (#19573)
- cpu/stm32/periph_pwm: support of complementary timer outputs (#19572)
- debug: add DEBUG_BREAKPOINT() macro, set breakpoint on failed
assertion (#19368)
- build-system: Allow out of tree BUILD_DIR (#19600)
- cpu/arm7: Fix undefined behavior based on invalid assembly (#19619)
- cpu/atmega8: new cpu (#19753)
- cpu/atmega_common: checking features instead of CPU models (#19752)
- cpu/avr8_common: Prepare for rework ISR (#19777)
- cpu/esp32: fix compilation issues with GCC 12.2 (#19450)
- cpu/esp32: fix remaining compilation errors for GCC 12.2 (#19577)
- cpu/nrf53: enable flashpage support (#19802)
- cpu/nrf5x_common: reset all available CC channels (#19770)
- cpu/nrf{52,9160}: remove duplicate sevonpend bit (#19773)
- cpu/sam0_eth: interrupt based link detection/auto-negotiation (#19703)
- cpu/samd5x: enable FDPLL1 at 200MHz (#19581)
- cpu/stm32/periph/adc: fix setting ADC clock (#19629)
- cpu/stm32/periph/dac: optimize setting DAC (#19529)
- cpu/stm32: stm32f4 BRR from BSRR (#19670)
- drivers/at86rf2xx: setting rx timestamp based on symbol counter for
ATmega*RFR2 (#19605) - drivers/periph/rtc: improve doc on rtc_set_alarm (#19610)
- Fix periph clk (#19628)
- makefiles/arch/msp430.inc.mk: Fix compilation issues with GCC 12 (#19484)
- native/syscalls: rename real_clock_gettime to clock_gettime (#19476)
- pkg/cmsis: use unique package for CMSIS headers, DSP and NN modules (#18056)
- pkg/tinydtls: allow build for AVR (#19346)
Device Drivers
- drivers/mtd: add support for MTDs emulated in RAM (#19443)
- drivers/mtd_default: add external declarations for mtd* (#19538)
- driver/lc709203f: remove unnecessary use of float (#19662)
- drivers/lcd: code deduplication for st7735 and ili9341 (#19816)
- drivers/mpu9x50: clean up code (#19657)
- drivers/mrf24j40: cleanup function (#19635)
- drivers/pcf857x: allow to define PCF857x_BASE_ADDR at compile time (#19734)
- drivers/sdcard_spi: small cleanup (#19527)
Documentation
- doc: add board selection guide (#19606)
- SUBSYSTEMD.md: add @kaspar030 to core, Rust, build system, CI &
timers (#19727) - SUBSYSTEMS.md: add @maribu (#19732)
- SUBSYSTEMS.md: add jia200x to subsystems (#19512)
- README.md: Remove HiL Badge (#19453)
- gnrc_sixlowpan_frag_sfr: mark as experimental + doc fixes (#19682)
Build System / Tooling
- buildsystem: add target debug-client (#19725)
- dist/tools/openocd: add OPENOCD_SERVER_ADDRESS variable (#19724)
- dist/tools/openocd: add RTT port variable (#19723)
- tools/build_system_sanity_check: add check to verify test
applications are at the right place (#19673)
- dist/testbed-support: remove obsolete boards from iotlab archi (#19514)
- dist/tools/insufficient_memory: fix collection of app folders (#19598)
- dist/tools/openocd: fix parsing of flash bank base (#19620)
- dist/tools/openocd: start debug-server in background and wait (#19737)
- dist/tools/usb-serial: call ttys.py with its path [backport 2023.07] (#19831)
- dist/tools: Use
/usr/bin/env
to lookup Python. (#19448) - make/usb_board_reset: define {preflash,term}-delay when necessary (#19617)
- Makefile.include: don't use target lstfile implicitly (#19797)
- Makefile.include: Generate lst file using objdump (#19745)
Kconfig
- pkg/libbase58: add kconfig support (#19623)
- sys: add Kconfig support for clif (#19621)
- sys: add some missing kconfig + adapt related tests when possible (#19622)
- boards/esp32s3-pros3: Fix stdio kconfig model (#19708)
- cpu/esp32: deduplication in Kconfig for ESP32x SoCs (#19433)
- cpu/rpx0xx: Fix kconfig model (#19660)
- drivers/nrf24l01p: model in kconfig (#19650)
- periph/timer: fix Kconfig menu title (#17830)
- pkg/micropython: model in Kconfig (#19672)
- pkg/openthread: Fix Kconfig and broken example (#19700)
- pkg/openthread: model in kconfig (#19671)
- Remodel the USB in Kconfig (#19086)
- sys/stdio_semihosting: model in Kconfig (#19651)
- sys/usb/Kconfig: Fix default PID (#19701)
- sys: model ecc, evtimer, pipe and shell_lock in kconfig (#1963...
Release-2023.04
RIOT-2023.04 - Release Notes
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release
The 2023.04 release includes:
- Mass Storage Class Support in USBUS
- Initial support for libSCHC
- FlashDB support
- BLE downlink in GNRC Border Router
- DTLS support for nanoCoAP in client mode
- Congestion control for 6LoWPAN Selective Fragment Recovery
- avr/flash_utils: strings (and other const data) no longer needs to be copied
to RAM - New boards:
- esp32c3-wemos-mini
- esp32s2-lilygo-ttgo-t8
- esp32s2-wemos-mini
- esp32s3-pros3
- rpi-pico-w
- sipeed-longan-nano
- New device drivers:
- Black/white e-Paper/e-Ink display
- RFID reader (MFRC522)
- ST VL53L1X Time-of-Flight sensor
280 pull requests, composed of 595 commits, have been merged since the
last release, and 3 issues have been solved. 27 people contributed with
code in 83 days. 1246 files have been touched with 177090 (+) insertions and
36429 deletions (-).
Notations used below
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
Core
- core/compiler_hints: add likely() / unlikely() hints (#19156)
System Libraries
- drivers/wdt: add periph_wdt_auto_start for early watchdog (#18257)
- fuzzing: Add uri_parser setup (#19057)
- Revert "sys/pm_layered: pm_(un)block add attribute optimize(3)" (#19155)
- sys/coding: add XOR based coding module (#17045)
- sys/event: add event sources (#18758)
- sys/irq: Add C++ wrapper using RAII (#17066)
- sys/phydat: add functions for Unix time conversion to phydat (#19080)
- sys/trickle: cleanup deps (#19404)
- sys/vfs: add force option to vfs_umount() (#19320)
- usbus/msc: add CONFIG_USBUS_MSC_AUTO_MTD option to create LUNs on
init (#19356) - usbus/msc: add initial Mass Storage Class support (#19242)
- USBUS: Add URB support (#17091)
- ztimer: add ztimer_stopwatch convenience functions (#19343)
- bootloaders: fix bootloader button logic (#19365)
- makefiles/suit: make it possible to accept multiple SUIT keys (#18459)
- sys/bitfield: don't touch unrelated bits in bf_{set, clear}_all() (#19400)
- sys/cpp11-compat: Remove xtimer deps (#19369)
- sys/fmt: optimize scn_u32_dec scn_u32_hex (#19027)
- sys/fmt: use
fflush(); stdio_write()
instead offwrite()
(#19250) - sys/shell_lock: do not call strlen, less jumpy (#19157)
- sys/tiny_strerror: make use of flash_utils.h (#19332)
- test_utils/print_stack_usage: use thread.h API (#19226)
- usbus/dfu: do not create alt interface if NUM_SLOTS=1 (#19386)
Networking
- gcoap/fileserver: add event callbacks (#18414)
- gnrc_sixlowpan_frag_sfr_congure: optional congestion control support
(#16171, #16159, #16170, #16158) - gnrc_static: add static network configuration (#18477)
- nanocoap_link_format: add helper function to parse Link Format (#18134)
- pkg/tinyusb: add tinyUSB netdev driver (#18903)
- cord: bump reference from draft to rfc (#19367)
- cord: convert to ztimer (#19391)
- gnrc_ipv6_nib: clean up _resolve_addr() (#18939)
- nanocoap_sock: ensure response address is the same as request address (#19361)
- nanocoap_sock: implement DTLS socket (#18724)
- nanocoap_sock: implement nanocoap_sock_delete() (#18738)
- nanocoap_sock: store message ID in nanocoap_sock_t (#19178)
- pkg/tinydtls: Reduce default verbosity, increase default sizes when CoAP is
used (#19331) - shell/cmds: GNRC: replace puts() with printf() (#19327)
- shell/gnrc_icmpv6_echo: separate ICMPv6 echo sending / parsing from
shell command (#18934) - sock_dtls: move common code into sock_dtls_establish_session() (#19142)
- sys/net/gnrc/netif: fixing no global address wait (#19402)
- sys/net/grnc/netreg: avoid creating an infinite loop (#19238)
Packages
- libschc: initial import as package (#18515)
- pkg/arduino_adafruit_sensor: add Adafruit Unified Sensor Driver as
package (#17460) - pkg/wolfssl: Update wolfSSL to 5.5.4 and add DTLS 1.3 support (#19302)
- pkg: add FlashDB (#17612)
- pkg/fatfs: bump to r0.15 (#19347)
- pkg/lz4: bump version to 1.9.4 (#19180)
- pkg/minmea: bump version (#19183)
- pkg/nanopb: bump version to 0.4.7 (#19179)
- pkg/tinydtls: bump version (#19184)
- pkg/tinydtls: drop libc_gettimeofday dependency (#19247)
- pkg/tinyusb: bump to 0.15 (#19276)
- pkg/u8g2: bump version (#19285)
- pkg/wolfssl: Fix memory leaks in wolfSSL sock_tls (#19190)
- tests/pkg_nanors: use static allocation (#19382)
- pkg/tinyusb: add GD32VF103 support (#19256)
- pkg/lwext4: add lightweight implementation of the ext2/3/4 filesystem (#18682)
Boards
- boards/esp32c3-wemos-mini: add support for Wemos ESP32-C3 mini (#19417)
- boards/esp32s2-mini: add definition for ESP32 S2 Mini (#18863)
- boards/nucleo64: Add pinout diagrams from UM1724 (#19406)
- boards/seeedstudio-gd32: add mtd_sdcard_default (#19293)
- boards/seeedstudio-gd32: complete and improve board definition (#19166)
- boards/sipeed-longan-nano: add BOOT as user button (#19419)
- boards/sipeed-longan-nano: add definition for the Sipeed Longan Nano
GD32VF103 board (#19170) - boards: add esp32s3-pros3 support (#19088)
- boards: support for the LILYGO TTGO T8 ESP32-S2 board (#19284)
- cpu/native: implement periph_rtc_ms (#19340)
- drivers/mrf24j40: add support for IEEE 802.15.4 Radio HAL (#18472)
- drivers/mtd_sdcard: add mtd_sdcard_default module (#19216)
- makefiles/tools/serial.inc.mk: Allow detection of debug adapter (#19119)
- boards/adafruit-itsybitsy-m4: turn off APA102 LED on startup (#19357)
- boards/esp*: complete SD Card MTD config (#19255)
- boards/esp32: enable RGB LED support (#19408)
- boards/gd32v: improve board definitions (#19249)
- boards/rpi-pico-w: fix too large board image (#19159)
- boards/rpi-pico-w: initial support for rpi pico W board (#19071)
- boards/sipeed-longan-nano: default to flashing via DFU (#19204)
- boards/stm32f4discovery: default to stdio via CDC ACM (#19259)
- boards: common: stdio_cdc_acm: let tests wait a bit for serial port (#19128)
- cpu/rpx0xx/cmsis: Update vendor header files (#19416)
CPU
- bootloaders/riotboot: add tinyUSB DFU support (#19010)
- core/init: add early_init() (#19082)
- cpu/esp32: add periph_flashpage support (#19079)
- cpu/gd32v: add periph_adc support (#19188)
- cpu/gd32v: add periph_dac support (#19248)
- cpu/gd32v: add periph_gpio_irq support (#19185)
- cpu/gd32v: add periph_gpio_ll and periph_gpio_ll_irq support (#19243)
- cpu/gd32v: add periph_i2c support (#19201)
- cpu/gd32v: add periph_pwm support (#19209)
- cpu/gd32v: add periph_rtc support (#19186)
- cpu/gd32v: add periph_rtc_mem support (#19254)
- cpu/gd32v: add periph_rtt support (#19202)
- cpu/gd32v: add periph_spi support (#19214)
- cpu/gd32v: add pm_layered support in periph_pm (#19187)
- cpu/stm32/periph: Add GPIO LL IRQ support for STM32F1 (#19412)
- cpu/stm32/periph: Implement GPIO LL for STM32F1 without IRQ support
(yet) (#19407) - picolibc: add support for picolibc >= 1.8 (#19341)
- sys/stdio_udp: add stdio over UDP (#19081)
- cpu/esp32: cleanup of ESP-IDF interface API (module
esp_idf_api
) (#19426) - cpu/esp_common: use generic WIFI_SSID/WIFI_PASS defines (#19286)
- cpu/gd32v/periph_i2c: interrupt based driver (#19269)
- cpu/native: Switch to ztimer for gettimeofday (#19349)
- cpu/riscv_common: convert to uword_t usage (#19345)
- cpu/sam0_common: adc: implement 16 bit mode by oversampling (#19165)
- cpu/stm32/periph/i2c: export PERIPH_I2C_MAX_BYTES_PER_FRAME (#19279)
- cpu/stm32/periph/timer: don't stop counter (#19263)
- cpu/stm32/periph/timer: fix clobered IRQ flag (#19385)
- cpu/stm32/usbdev_fs: fix ep registration and EP_REG assignments
[backport 2023.04] (#19462) - drivers/at24cxxx: implement _mtd_at24cxxx_read_page (#19270)
- Fix stm32 timer periodic (#19363)
- sam0/usbdev: partial revert of #17086 (#19384)
- sys/usbus: check for the number of required and provided EPs in
static configurations (#19371)
Device Drivers
- black/white e-Paper/e-Ink display driver (#12509)
- drivers/mfrc522: add new driver (#16782)
- drivers/servo: reimplement with high level interface (#18392)
- drivers/usbdev_synopsys_dwc2: add ESP32x power management (#19399)
- drivers: add driver for ST VL6180X ranging and ambient light sensor (#10462)
- drivers/at24cxxx: merge mtd driver with at24cxxx.c (#19281)
- drivers/periph_common/flashpage: fix silent error (#19175)
- drivers/slipdev: implement sleep states (#17810)
- drivers/ws281x: improve timing for ESP32x (#19422)
- drivers/ws281x: add RMT hardware support for ESP32x SoCs (#19424)
Documentation
- doc: Add out of tree RIOT app documentation (#19324)
- blobs: include documentation in doxygen (#19200)
- doc/porting-boards.md: fix code snippets in md view (#19206)
- Doc: document generate-makefile.ci (#19239)
- doccheck: avoid generating dot or html (#19228)
Build Sy...
Release-2023.01
RIOT-2023.01 - Release Notes
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release
We are proud to announce the release of RIOT 2023.01, marking the tenth
anniversary of the project. Over the past decade, RIOT has become a thriving
open-source community, delivering cutting-edge technology for Internet of
Things (IoT) devices. This release builds on top of the hard work and
dedication of our developers, users, and contributors, and we would like to
extend a heartfelt thank you to everyone who has been a part of our journey.
Here's to another decade of innovation and growth!
Noteworthy changes the 2023.01 release includes, among many fixes and little
things:
- ztimer_ondemand: The next step towards seamless and automatic power management.
- The Rust examples now default to stable Rust.
187 pull requests, composed of 570 commits, have been merged since the
last release, and 13 issues have been solved. 37 people contributed with
code in 58 days. 1248 files have been touched with 516544 (+) insertions and
12047 deletions (-).
Notations used below
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
Core
System Libraries
- congure_abe: initial import of TCP Alternative Backoff with ECN for
CongURE (#15968) - congure_quic: initial import of QUIC congestion control (#15952)
- pkg/tinyusb: add common USB descriptors implementation (#18835)
- sys/bitfield: add bf_find_first_{set, unset}() (#18833)
- sys/bitfield: add bf_popcnt() (#18879)
- sys/malloc_tracing: add module to trace dyn memory management (#18912)
- sys/stdio_uart: add stdio_uart_onlcr (pseudo-) module (#18731)
- sys/tiny_strerror: add tiny_strerror_minimal (#18768)
- ztimer: add ztimer_ondemand module for implicit power management (#17607)
- rust: Use stable Rust (#18839)
- suit: start worker thread on demand, make suit_handle_url() public (#18551)
- sys/pm_layered: align pm_blocker_t for speed (#18846)
- sys/print_stack_usage: update MIN_SIZE (#18917)
- sys/shell: drop ping6 alias (#18931)
- sys: preprocessor successor module (#18299)
- tests/pbkdf2: de-flanky-fy test (#18932)
- usbus/hid: fix buffer overflow in hid_io (#18860)
Networking
- examples/gcoap: add IPv4 support (#17763)
- gnrc/ipv6_auto_subnets: add CONFIG_GNRC_IPV6_AUTO_SUBNETS_STATIC
option (#17429) - gnrc_sixlowpan_frag_sfr: add support for queue-based ECN (#16175)
- gnrc_sixlowpan_frag_sfr: provide CongURE support (#16156)
- nanocoap: add support for no-response option (#18154)
- sys/net/nanocoap: introduce Accept option helper (#18772)
- sys/net: add Size1 and Size2 option numbers (#18799)
- drivers/at86rf2xx: migrate to ztimer (#18822)
- gnrc: make pseudo-modules explicit + documentation improvements (#18727)
- gnrc_sock_udp: accept response from any address if remote is
multicast (#18854) - gnrc_udp: use small stack-size (#18709)
- net/nanocoap: remove coap_pkt token ptr (#17983)
- paho: use GNRC instead of lwip (#18982)
- sys/include: remove kernel_defines.h where not needed (#18887)
Packages
- pkg/arduino_sdi_12: bump version, fix patches (#18796)
- pkg/lvgl: bump to 8.3.3 (#18794)
- pkg/tinyusb: support for multiple configuration descriptors (#18983)
- pkg/wamr: Update to WAMR-1.1.1 (#18994)
Boards
- boards/cc1350: add info concerning shell access (#18808)
- boards/dwm1001: add saul_gpio support (#18818)
- boards/lora-e5-dev: add arduino feature (#18792)
- boards/nucleo-l496zg: add ADC support (#18940)
- boards: add support for EFM32GG12 Thunderboard Kit (SLTB009A) (#18755)
- cpu/efm32: add periph_adc support for Gecko Series 2 (#18933)
- cpu/efm32: add periph_uart_modecfg support for Gecko Series 2 (#18946)
- drivers/usbdev_synopsys_dwc2: add support for internal UTMI HS PHY (#18714)
- EFM32: add cpu family EFR32ZG23 and board xG23-PK6068A (#18780)
- pkg/tinyusb: add nrf52 support (#18781)
- pkg/tinyusb: add STM32 USB FS device driver (#18786)
- pkg/tinyusb: add ULPI and UTMI+ HS PHY support for STM32 USB OTG HS
ports (#18776)
- boards/blxxxpill-128kib: default to CDC ACM for stdio (#18743)
- boards/common/nrf52: improve default clock config (#18811)
- boards/im880b: refactor code (#18451)
- boards/nucleo-f207zg: support for ADC (#18847)
- boards/nucleo-l* and g*: update doc concerning Vbat (#18984)
- cpu/stm32: Fix stm clock configuration (#18797)
CPU
- cpu/saml21: add interaction with pm_layered for peripheral drivers (#18821)
- cpu/stm32: add unused backup RAM as extra heap (#18921)
- debug_irq_disable: add module to debug time spent in irq_disable (#18795)
- boards/native: Remove macOS as native target (#18735)
- cpu/efm32: preparing introduction of Gecko Series 2 (#18764)
- cpu/saml21/pm: allow blocking IDLE mode (#18825)
- cpu/stm32: improvement of USB device driver selection (#18787)
- makefiles/cflags.inc.mk: don't include absolute path in FILE
macro (#18913) - makefiles/gnu.inc.mk: set flags based on compiler version (#18935)
- pkg/gecko_sdk: Bump to version 4.1.2 (#18739)
- pkg/tinyusb: implement stdio via CDC ACM (#18804)
- sam0/rtc_rtt: optimizations to get around the painful long syncwaits (#18920)
- socket_zep: make use of crc16_ccitt_false_update() (#18779)
- treewide: replace RIOT_FILE_RELATIVE with FILE (#18936)
Device Drivers
- drivers/at: add a function read a response plus the OK (#18753)
- matrix_keypad: Add matrix-style keypad module (#18733)
- drivers/at86rf2xx: isolate netdev logic (#18988)
- drivers/sdcard_spi: make use of crc16_ccitt_false_update() (#18778)
Documentation
- boards/cc13xx_cc26xx: remove broken HTML links and headings in doc (#18809)
- boards/nucleo-l4r5zi: doc improvements (#18747)
- docs/kconfig: "not longer" -> "no longer" typo (#18922)
- pkg/tinyusb: update doc for tusb_app_config.h and common descriptor
handling (#18901)
Build System / Tooling
- .vscode: import initial RIOT-OS style (#18945)
- build-system: add capability to execute scripts with custom executor (#18770)
- dist/tools: add "RESET_PIN" value for the dwm1001 (#18815)
- examples/gnrc_border_router: add option to re-use existing TAP
interface (#18836) - makefiles/tools/serial.inc.mk: add support for bootterm (#18749)
- tapsetup: add --loss & --delay option (#18885)
- tools/cpy2remed: add support for NOD_xxxx removable media (#18824)
- build system: fix compilation with LLVM (#18845)
- CI: can_fast_ci_build.py unittests fix (#18996)
- dist/tools/pyterm: avoid deprecated .setDaemon (#18754)
- utils/uncrustify: display warning instead of error (#18877)
Kconfig
- pkg/tinyusb: add Kconfig support for stdio_tinyusb_cdc_acm (#19007)
Examples
- examples/gcoap: replace _parse_endpoint by sock_udp_name2ep (#17870)
- examples/timer_periodic_wakeup: switch to ztimer (#19001)
- examples: Remove macOS references in README (#18850)
Testing
- tests/pkg_tinyusb*: add a BOARD to make make build (#18888)
- CI: drop obsolete murdock note (#18905)
- CI: update murdock yml (#19022)
- test/unittest: cleanup most vera++ complains (#18807)
- tests/bitarithm_timings: shorten timeout from 5s to 200ms (#18894)
- tests/periph_timer: also test for spurious IRQs (#18963)
- unittests/uri_parser: Rework tests to be more verbose (#18734)
API Changes
- nanocoap: add request context to coap_handle_req() (#18816)
Uncategorized
- release-notes.txt: add 2022.10 release notes (#18947)
- .drone: Remove unmaintained .drone file (#18832)
- README.md: update CI badge (#18685)
- README.md: update features (#18777)
And 38 minor changes.
Bug fixes (44)
- pkg/tinyusb: add usb_board_reset support (#19006)
- boards/common/blxxxpill: Fix pin conflicts in periph_conf (#18785)
- boards/common/nrf52: fix timer config (#18948)
- boards/dwm1001: use lis2dh12_i2c instead of lis2dh12_spi (#18857)
- bootloaders/riotboot_dfu: fixes including sys/usb/usbus/dfu (#18964)
- core/mbox: fix race condition (#18955)
- cpu/atmega_common/periph_timer: fix spurious IRQs (#18978)
- cpu/efm32/pm: fix blocking EM1 (#18775)
- cpu/efm32/timer_series2: fix interaction with pm_layered (#18814)
- cpu/esp32: set bootloader XTAL frequency configuration to automatic (#18829)
- cpu/esp{32,8266}/periph_timer: allow changing callback or freq (#18971)
- cpu/nrf5x/timer: fix high current consumption in powered off state (#18953)
- cpu/nrf5x/uart: run STOPTX task after finished tx (#18954)
- cpu/nrf5x_common/periph_timer: fix spurious IRQs (#18970)
- cpu/qn908x: use bitarithm_test_and_clear() & fix cb (#18989)
- cpu/stm32/periph_timer: fix spurious IRQs and race conditions (#18969)
- cpu/stm32: fix periph_dma (#18711)
- cpu/stm32: fix RAM_LEN for F427, F429, F437, F439 models (#18919)
- dist/tools/usb-serial: fix exception on missing entries (#19011)
- drivers/atwinc15x0: don't disable interrupts (#18800)
- drivers/ethos: Fix off-by-one bug (#18823)
- drivers/slipdev: fix off-by-one error in _recv() (#18826)
- drivers/usbdev_synopsys_dwc2: small f...
Release-2022.10
RIOT-2022.10 - Release Notes
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release
The 2022.10 release includes, among many many bug fixes and improvements, the
following prominent contributions:
Security Fixes
The GNRC network stack has received a number of security fixes. All users of
GNRC are advised to update to the new release. Given that no user facing
breaking API changes are included, we are hopeful that the update is painless
and quickly possible.
ESP32 family
RIOT has been ported to the ESP32-C3, ESP32-S2, and the ESP32-S3 MCUs. In
addition driver support for the integrated BLE transceiver of the ESP32 MCUs
has been added.
Major CI Upgrade
While the CI is developed in an independent repository, it is still a noteworthy
change that our CI software, Murdock, was updated since the last release. In
addition to changes under the hood the web front end got a major revamp. You
will directly notice the improvements in page load time and clarity/structure of
the interface. If you haven't already, please check out https://ci.riot-os.org
to take a look.
Support for Priority Inheritance in core_mutex
If a shared resource guarded by a mutex is used by a high priority and a low
priority thread, the high priority thread may end up waiting on the low priority
thread to return the resource. If medium priority threads now interrupt the
low priority thread while working with the shared resource, the high priority
thread ends up waiting on both medium and low priority threads. This effect is
called priority inversion.
Priority inversion can in most cases be solved by carefully assigning priorities
and resources. In some cases however, this cannot be avoided: Let's consider
a scenario in which an I2C temperature sensor and an I2C IMU are used. Since
temperature changes are slow in frequency, the temperature readings are
assigned the lowest priority, while the IMU readings are assigned the highest
priority. The sensible approach here is to have both sensors on distinct I2C
buses. However, if e.g. only a single I2C bus is available by the hardware
priority inversion cannot be prevented by careful resource and priority
assignment alone. In these cases the module core_mutex_priority_inheritance
can be used to lend the low priority thread the priority of the high priority
thread while the high priority thread is waiting for the mutex hold by the
low priority thread.
After RIOT has already been launched into space
it is now ready to for
Mars.
USB Support for STM32F1 MCUs
While RIOT has longstanding USB support for many STM32 MCU families, the F1
family was not supported due to some peculiarities in the memory layout. The
driver has now been extended to handle them correctly. With this, the popular
STM32F103 bluepill board now supports stdio via USB, which however still
has to be manually enabled e.g. by:
USEMODULE=stdio_cdc_acm BOARD=bluepill make -C examples/default
Support for podman
Just add an export DOCKER=podman
to your ~/.profile
(or ~/.bashrc
, or ...)
and an make BUILD_IN_DOCKER=1
will use podman instead of
docker to run the RIOT build container. Two major advantages of using podman
over docker
is the support of rootless containers and not depending on a
central background daemon.
Support for Sharing nRF52 combined I2C/SPI Peripherals
The nRF52 MCUs have a limited number of combined I2C/SPI peripherals.
Previously, each such peripheral could either provide a single I2C or a
single SPI bus. A board configuration that used the same combined peripheral
to provide both an SPI and an I2C bus previously resulted in bad surprises at
run-time.
The I2C/SPI drivers have now been reworked so that they can be shared in
round-robin fashion between multiple I2C and SPI buses. This is especially
useful for the upcoming support of the Bangle.js 2 watch that uses more I2C
buses than combined I2C/SPI peripherals available on the used nRF52840 MCU.
Thanks to the sharing of peripherals, all I2C buses can now be provided by a
single peripheral.
Support for GCC 12.2.0
Many fixes for compilation and runtime issues that only started to surface
with GCC 12.2.0 have been fixed. This allows our users to confidentially choose
the current release with little to no fear that toolchain updates in the near
future will break the precious projects. In addition, we hope that the next
CI update will also cause less friction.
Release Statistics
312 pull requests, composed of 819 commits, have been merged since the
last release, and 29 issues have been solved. 47 people contributed with
code in 84 days. 1799 files have been touched with 56827 (+) insertions and
108634 deletions (-).
Notations used below
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
Core
- core/macros: add math helper macros (#17702)
- core/mutex: fix typo in docs (#18605)
- core: implement core_mutex_priority_inheritance (#17040)
- core: Treat stack overflows as an unrecoverable error (#18448)
System Libraries
- doc: add deprecation notice on deprecated pseudo-modules (#18698)
- event_periodic_callback: add convenience wrapper for periodic
callbacks (#18598) - shell/cord_ep: Add user guidance & prevent accidental crash (#18053)
- sys/bhp_*: add initial support for generic Bottom Half Processor (#18435)
- sys/bhp_msg: add IPC based implementation of Bottom Half Processor (#18464)
- sys/checksum: add CRC-16 implementation without lookup table (#18701)
- sys/checksum: add CRC-32 checksum (#18686)
- sys/checksum: Adding three new crc16 variations (#18516)
- sys/string_utils: add strscpy() (#18621)
- sys/ztimer: add LPTIMER auto init (#17654)
- vfs: introduce vfs_format_by_path() (#18447)
- doccheck: make the file pattern more match riot.doxyfile (#18431)
- event_periodic_callback: remove unnecessary dependency (#18610)
- fmt: unify and align wording regarding characters, digits, and bytes (#18315)
- littlefs: make block size configurable at compile time (#18141)
- makefiles/tools/serial.inc.mk: Improve PORT selection when RIOT's USB
CDC ACM is used for stdio (#18525) - makefiles: Rust fixes and info extensions (#18630)
- rust: Update dependencies (#18642)
- rust: Update dependencies, build and test more on stable (#18678)
- security: Reference CPE used for RIOT (#18574)
- suit: rename worker thread functions (#18549)
- sys/shell/vfs: make output of vfs df human readable (#18550)
- USBUS/cdc_ecm: register with netdev (#18603)
- vfs: drop unused abs_path parameter (#18672)
Networking
- dns: provide generic dns_query() function (#18378)
- gcoap/fileserver: add file and directory creation and deletion (#18133)
- gcoap: add remote sock_udp_ep_t to coap_request_ctx_t (#18519)
- gcoap_dns: Add DNS cache support (#18329)
- gnrc/lorawan: add basic LoRaWAN 1.1 features (#17884)
- gnrc_netif_lorawan: add support for LINK_UP/_DOWN events (#18699)
- nanocoap_sock: add nanocoap_sock_put() (#18514)
- net/gnrc_netif: add support for priority queues (#18496)
- net/sock/dtls: introduce sock_dtls_sendv_aux() (#18363)
- pkg/lwip: add support for HAL radios that require IRQ offloading (#18465)
- sock_dodtls: Initial import of a DNS over DTLS client (#16861)
- sys/net/gnrc_netif: Make use of confirm send (#18139)
- sys/net/network_layer/ipv4/addr: add ipv4_addr_print function (#18694)
- sys/shell: ncput: add option to read from stdin (#18639)
- sys/uri_parser: Adding the port as uint16_t (#18096)
- codespell: fix remaining issues (#18604)
- dhcpv6: don't treat zero option as an end-of-payload marker (#18625)
- gcoap: accept resources in any order (#18651)
- gcoap: Forego IP address comparison in memo finding of multicasts (#17978)
- gcoap: move tl_type to coap_request_ctx_t (#18313)
- gcoap_dns: implement Max-Age-based TTL calculation (#18443)
- gcoap_forward_proxy: send empty ACK when response takes too long (#18386)
- gnrc_ipv6_nib: handle iface_up/iface_down in IPv6 thread (#18708)
- pkg/lwip: fix netdev concurrency issues (#18479)
- pkg/nimble: Replace double quotes with single quotes for two CFLAGS (#18376)
- pkg/nimble:derive peer address type from peer address (#18474)
- sock_dns_cache: move to dns_cache (#18318)
- sys/net: include misplacement inside linkage-specification (#18587)
- treewide: s/gnrc_pktbuf_cmd/shell_cmd_gnrc_pktbuf/ (#18640)
Packages
- Add package tiny-vcdiff (#17797)
- pkg/cryptoauthlib: Pass ATCA_NO_HEAP Flag to library (#18705)
- pkg/esp32_sdk: additional patches required for ESP32-C3 (#18339)
- pkg/esp32_sdk: additional patches required for ESP32-S3 (#18408)
- lvgl/contrib: allow for SDL display driver height/width to be
adjusted (#18463) - pkg/libhydrogen: bump version (#18564)
- pkg/lvgl: bump version to 8.3.1 (#18366)
- pkg/nanocbor: bump version (#18543)
- pkg/tinydtls: bump version (#18368)
- remove version comment fixing build issue (#18489)
- pkg/tinyusb: add tinyUSB as packa...
Release-2022.07
RIOT-2022.07 - Release Notes
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release
The 2022.07 release includes many changes, some highlights of which are:
GPIO Low-level drivers
A new API, gpio_ll
, has been introduced for highly efficient access to GPIO
pins grouped in ports.
The API is limited to internal use for the time being, but still paves the way
towards using port multipliers like local GPIO pins, and for improved
bit-banging implementations (e.g. around WS281x-style LEDs).
Improved serial port selection
When using multiple boards simultaneously, a new serial port selection
algorithm can be activated by setting MOST_RECENT_PORT=1
. Of all serial ports
whose metadata matches the board's known properties, it selects the most
recently connected one.
ESP support
The ESP IDF (IoT Development Framework; the vendor's provided tools) has been
upgraded to version 4.4, and many peripheral drivers are now implemented using those.
343 pull requests, composed of 767 commits, have been merged since the
last release, and 5 issues have been solved. 38 people contributed with
code in 107 days. 1684 files have been touched with 43451 (+) insertions and
82174 deletions (-).
Notations used below
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
Core
- provide dummy implementation of thread and mutex for riotboot (#17959)
- kernel_defines: drop CONST definition (#18212)
System Libraries
- sys/event: Add documentation and enforce waiter on wait (#17952)
sha256sum shell commands (#18040) - sys/shell: new module shell_lock (#13082)
- Fido2: Enhance flash persistence (#17096)
- pkg/fatfs, shell: enable RTC support if rtt_rtc is used (#17912)
- pm: don't (un)block IDLE mode (#17974)
- sys/posix/include/arpa: use
__restrict
instead ofrestrict
(#18034) - sys/quad_math: remove unused module for quad arithmetic (#18032)
- sys/shell: drop
_builtin_cmds
define (#18075) - sys/shell_commands: convert to SHELL_COMMAND() (#18152)
- sys/ztimer: no log for stdio_rtt/semihosting (#18176)
SUIT
- suit/transport/vfs: add VFS as source for firmware updates (#18045)
- sys/sc_suit: add seq_no command (#17941)
- examples/suit_update/test: use 'suit seq_no' to get version (#17973)
- sys/suit/storage/vfs: initial import (#17943)
- sys/suit/storage: change log to LOG_DEBUG (#18020)
- sys/suit: avoid installing payload twice (#17984)
- sys/suit: save seq_number when parsing manifest (#17939)
VFS
- sys/shell/vfs: add umount, rmount and mkdir commands (#18112)
- sys/vfs: add vfs_unmount_by_path() (#18109)
- sys/vfs_util: add VFS helper functions (#18038)
- sys/vfs_util: add vfs_file_() functions and md5sum, sha1sum and
Rust
- Add some Rust library building infrastructure (#16833)
- makefiles/rust: Err early on setup issues, provide suggestions (#18220)
- rust: Build from git branches (#18151)
- rust: Explicitly select nightly (#18243)
- rust: Update versions (#18181)
Networking
- congure_reno: initial import of TCP Reno congestion control (#15953)
- drivers/sx1280: add driver for SX1280 transceiver v2 (#18033)
- gnrc/ipv6_auto_subnets: init RPL root when adding a prefix (#17350)
- ieee802154: add default max frame retransmissions config (#18264)
- pkg/lwip: Add basic version of netif_get/set_opt (#18069)
- pkg/lwip: Add netif_t struct, register all netifs (#16974)
- pkg/nimble/autoadv: add support for ext_adv (#17774)
- sys/iolist: add helper functions (#18044)
- sys/net/gnrc: add gnrc_tx_sync for gnrc_sixlowpan_frag_sfr (#16090)
- sys/net/gnrc_pktbuf_static: add use-after-free detection (#18227)
- sys/net/netif: add convenience functions for getting/printing IPv6
addresses (#18161)
- gnrc/ipv6_auto_subnets: allow to join multiple subnets (#17547)
- gnrc_ipv6_nib: fix inconsistent ABR valid lifetime representation (#18126)
- gnrc_netif: make auto-config of compression context optional (#17678)
- gnrc_netif: use event loops by default to process ISR (#16748)
- gnrc_sock: implicitly set netif if there is only a single one (#18065)
- gnrc_sock: warn about non-zero receive timeouts with sock_async (#17691)
- net/ble/skald: make advertising interval configurable per context (#17834)
- net/gnrc: Fixing whitespace in the documentation (#18036)
- net/sock/udp: designated initializer, C++ compatibility (#18035)
- sock_dns: implement DNS cache (#17680)
- sock_dns_cache: move to dns_cache (#18318)
- sock_dns_cache: move to dns_cache [backport 2022.07] (#18327)
- sys/include/net/af: fix doc comment (#17946)
- sys/net/gnrc_pktbuf_static: fix documentation of use-after-free
detection (#18244) - tests: rework ieee802154 drivers (#17838)
GCoAP
- Add file server (#17956)
- add helper function to get request header from a request memo (#18095)
- add nanocoap_cache support for clients (#17888)
- DNS: initial import of a DNS over CoAP (DoC) client (#16705)
- Forward prxy: provide cache validation mechanism (#17801)
Nanocoap
- add coap_get_token() (#17976)
- Add handler for resource-based subtrees (#13698)
- cache for CoAP responses (#13889)
- add nanocoap_sock_block_request() (#17958)
- add nanocoap_sock_url_connect() (#17960)
- add nanocoap_vfs_get() (#17937)
- add nanocoap_vfs_put() (#17962)
- follow-up fixes (uncontroversial parts) (#17977)
- clean up state management (#18047)
- deprecate coap_pkt token ptr (#18013)
- refactor to remove work-buffer requirement (#17509)
Packages
- drivers/atwinc15x0: add timeout to init (#18214)
- pkg/libcose: add RIOT as crypto backend (#17701)
- pkg/pkg: add GIT_QUIET (#17987)
- tests/pkg_cmsis-dsp: add kconfig configuration + cleanup package
modules (#18001)
- makesystem: speedup pkg cloning if no git-cache is available (#16316)
- pkg/littlefs2: bump version to 2.5.0 (#18049)
- pkg/lv_drivers: cleanup Makefile (#18302)
- pkg/lvgl: bump to v8.3.0 (#18301)
- pkg/minmea: bump version (#18166)
- pkg/nanopb: bump version to 0.4.6 (#18149)
- pkg/pkg.mk: silence info if QUIETER (#18031)
- pkg/uwb-core: adjust holdoff time when rxdiag_enabled (#17999)
- pkg/uwb-core: reduce default stacksize (#18022)
- pkg/uwb-core: remove uwbcfg (#17998)
- pkg/uwb-dw1000: fix default group delay, use OTP values when possible (#18000)
- pkg/wamr: update to tagged release WAMR-05-18-2022 (#18119)
Boards
- boards/nucleo-f401re: add riotboot (#17948)
- boards/stm32f7508-dk: add support (#17954)
- cpu/samd5x: add SD Host Controller implementation (#17863)
- boards/adafruit-pybadge: enable ST7735 display (#17903)
- boards/common/arduino-atmega: fix issue with wrong port for LED0 (#18245)
- boards/esp32: cleanup board_init_common (#18238)
- boards/esp32: cleanup CI compilation for esp_wifi_enterprise (#18218)
- boards/nucleo-X: enable cpy2remed programmer (#18057)
- boards/stm32f469i-disco: enable cpy2remed programmer (#18039)
- boards/{thingy52,ruuvitag}: allow OpenOCD as programmer (#18237)
- build system: improve serial port selection (#18167)
- cpu/esp32: Upgrade to ESP-IDF v4.4 (#17601)
- cpu/esp32: use ESP-IDF i2c HAL for ESP32 periph/i2c (#18279)
- cpu/esp32: use ESP-IDF ledc HAL for periph/pwm (#18276)
- drivers/lcd: rework rotation management and enable it for st7735 (#17930)
- drivers/lcd: slightly rework params to expose offset values to
ili9341 driver (#17925) - periph_can,candev: socketcan pkg for native, candev test cleanup (#17533)
- pkg/cryptoauthlib: Update package to latest version (#18137)
- unittests: enable ASAN on native (#18099)
CPU
- netdev_tap: make 'wired' property configurable (#17709)
- pkg/nimble: version bump to NimBLE 1.5.0 RC1 (#18029)
AVR
- atmega_common: implement periph/gpio_ll{,_irq} (#17982)
Cortex-M
- cortexm_common: allow to overwrite nmi_handler (#18232)
- cortexm_common: enable FPU on cortexm33 (#18064)
- cortexm_common: remove breakpoint from hard_fault_handler (#17781)
- efm32: Minimal support for gpio_ll (#18023)
- nrf5x_common: implement periph/gpio_ll{,_irq} (#17980)
- stm32: Implement periph/gpio_ll{,_irq} except for STM32F1 (#17981)
- sam0_common: adc: Automatically configure external reference pin (#18042)
- stm32: support for B subfamily of g0 to determine the ram length (#18296)
ESP32
- add ESP-IDF API (#18253)
- use ESP-IDF ...
- adc/dac HAL for periph/adc and periph/dac (#18271)
- function esp_efuse_mac for CPU ID (#18273)
- gpio HAL for periph/gpio (#18270)
- interrupt HAL for periph/uart (#18274)
- interrupt handling API (#18261)
- random API for ESP32 (#18277)
- sleep API for periph/pm (#18280)
- spi HAL for periph/spi (#18281)
- spli_flash_* funcs in periph/flash (#18250)
- startup function (#18268)
- timer HAL for system timer and watchdog (#18267)
- timer/interrupt HAL for periph/timer (#18282)
- twai HAL for periph/can (#18278)
- ESP32x SoC variant independent syscalls (#18266)
- always include libc_gettimeofday (#18027)
- ESP32 SoCx variant independent bootloader makefile (#18246)
- ESP32x SoC varian...