RIOT OS RIOT Versions Save

RIOT - The friendly OS for IoT

2024.01

3 months ago

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 from board.h
    • add MTD_XFA_ADD(<mtd_dev>, <idx>); to the definition of <mtd_dev>.
    • MTD_0, MTD_1, … defines are no longer needed. Use mtd_dev_get(0), mtd_dev_get(1), … instead.
  • 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 pyterm
  • tests/periph/uart_locate_pins helps discover which pins are where
  • the periph_timer API supports periph_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)
  • nanocoap: implement coap_find_uri_query() (#20273)
  • pkg/lwip: add support for slipdev (#20022)
  • 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

  • Fix labeler action (#20137)
  • roadmap: extend peripheral drivers section (#20136)

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_sixloenc is used (#20139)
  • pkg/nanocbor: Update for fixed nanocbor_skip_simple() (#19983)
  • sock/udp: work around gnrc_sock_recv() returning early timeout (#19965)
  • sys/psa_crypto: Fix build problems (#19992)
  • sys/psa_crypto: fix compile bug for certain configuration (#20193)
  • sys/psa_crypto: Fix macro for public key max size and SE example (#19995)
  • wasm: fix the memory leak: wasm_buf (#20205)

Known issues

  • 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 (#19846)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc_border_router stops routing after a while (#16398)
  • gnrc_border_router: Kconfig and C disagree about number of addresses per interface (#19947)
  • gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own packet buffer (#12565)
  • gnrc_ipv6: Multicast is not forwarded if routing node listens to the address (#4527)
  • gnrc_netif_pktq leaks memory (#17924)
  • gnrc_rpl: missing bounds checks in _parse_options (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_rpl: old routes are not deleted (#19423)
  • gnrc_rpl: takes unusually long time to start routing packets (#19147)
  • gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
  • gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • ieee802154_submac: IPv6 fragmentation broken (#16998)
  • LoRaWan node ISR stack overflowed (#14962)
  • LWIP TCP Communication Error (#19676)
  • lwip_sock_tcp / sock_async: received events before calling sock_accept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdev_driver_t::recv (#10410)
  • Neighbor Discovery not working after router reboot when using SLAAC (#11038)
  • netdev_ieee802154: Mismatch between radio ll address and in memory address (#10380)
  • nrf52: Not able to add global or ULA address to interface (#13280)
  • nrfmin: communication not possible after multicast ping with no interval (#11405)
  • ping6 is failing when testing with cc2538dk (#13997)
  • pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
  • pkg/tinydtls: DTLS handshake does not work (#19595)
  • samr30 xpro doesn't seem to use its radio ok (#12761)
  • scan-build errors found during 2019.07 testing (#11852)
  • stale border router does not get replaced (#12210)
  • test/lwip: enabling both, IPv4 and IPv6, results in unexpected behavior (#18097)
  • tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
  • two nodes livelock sending neighbor solicitations back and forth between each other (#16670)
  • xbee: setting PAN ID sometimes fails (#10338)
  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periph_timer: systematic proportional error in timer_set (#10545)
  • saml21 system time vs rtc (#10523)
  • stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
  • sys/newlib: gettimeofday() returns time since boot, not current wall time. (#9187)
  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • mdt_erase success, but vfs_format resets board (esp32-heltec- lora32-v2) (#14506)
  • periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS (#6567)
  • periph: GPIO drivers are not thread safe (#4866)
  • PWM: Single-phase initialization creates flicker (#15121)
  • STM32: SPI clock not returning to idle state and generating additional clock cycles (#11104)
  • TCP client cannot send read only data (#16541)
  • tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
  • examples/micropython: floating point exception while testing on native (#15870)
  • native getchar is blocking RIOT (#16834)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • Failing tests on FE310 (Hifive1b) (#13086)
  • boards/hifive1: flashing issue (#13104)
  • cpu/sam0: flashpage write / read cycle produces different results depending on code layout in flash (#14929)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • examples/gnrc_border_router: esp_wifi_init failed with return value 257 on ESP32-C3 with nimble_rpble (#19319)
  • gcoap/esp8266: Stack overflow with gcoap example (#13606)
  • Interrupt callback function is instantly called on samd51 after setting it from within interrupt callback function (#19861)
  • MPU doesn't work on cortex-m0+ (#14822)
  • newlib-nano: Printf formatting does not work properly for some numeric types (#1891)
  • periph_timer: Test coverage & broken on STM32F767ZI (#15072)
  • riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
  • stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • buildtest uses wrong build directory (#9742)
  • Build dependencies - processing order issues (#9913)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • EXTERNAL_MODULE_DIRS silently ignores non-existent entries (#17696)
  • make: ccache leads to differing binaries (#14264)
  • make: use of immediate value of variables before they have their final value (#8913)
  • missing build dependencies in the rust build (#19714)

Other issues (63)

  • _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through shell after flashing with J-Link (#13044)
  • make term no longer works with JLinkExe v6.94 (#16022)
  • at86rf215 stops receiving until sending a packet (#19653)
  • b-l072z-lrwan1: tests/ztimer_overhead: test failure (#19224)
  • backport_pr: Only works for when fork is in user (not in organization) (#18486)
  • benchmark_udp: hammering with low interval causes issues (#16808)
  • boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
  • Builds fail when different execstack options are around in objects (#18522)
  • Can't build relic with benchmarks or tests (#12897)
  • CC2538-CC2592EM has a very weak transmit power (#17543)
  • CC2538DK board docs: broken links (#12889)
  • cpp: Exception handling undefined (#17523)
  • cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
  • doc/boards: information concerning access to RIOT shell (#17453)
  • doc/LOSTANDFOUND: not rendered as expected (#17063)
  • edbg: long lines flooded over serial become garbled (#14548)
  • examples / tests: LoRa tests fail on platforms that don't support LoRa (#14520)
  • examples/gcoap: client broken (#19379)
  • feather-m0: make flash reports "device unsupported" (#17722)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • frdm-k22f fails tests/periph_timer (#19543)
  • Freeze into semtech_loramac_send call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoap_req_send and related should return negative for errors (#19393)
  • gnrc_ipv6_nib: Neighbor Solicitation ping-pong (#18164)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • ieee802154_security: Nonce is reused after reboot (#16844)
  • kconfiglib.py choice override of menuconfig bug (#19069)
  • lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP disconnect (#17209)
  • lwip: invalid state transition on ieee802154_submac users (#17208)
  • Making the newlib thread-safe (#4488)
  • mcuboot: flashes but no output (#17524)
  • MTD is confusing (#17663)
  • nanocoap: incomplete response to /.well-known/core request (#10731)
  • Order of auto_init functions (#13541)
  • periph_rtt: rtt_set_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compile_and_test_for_board.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled gracefully (#17874)
  • rust-gcoap example is incompatible with littlefs2 (#17817)
  • Samr30/gpio: Erasing then write mux can generate spurious IRQ (#19993)
  • samr34-xpro: some tests failing (#19223)
  • sock_dtls: unable to send big messages (#17996)
  • spurious IRQs in periph_timer (#18976)
  • stdio_ethos: infinite shell loop (#17972)
  • stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
  • STM32 Nucleo boards improperly clocked (#19778)
  • sys/riotboot: documentation issues (#11243)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg/relic is failing on samr21-xpro when built using llvm (#19903)
  • tests/pkg_libhydrogen: test fails on master for the samr21-xpro with LLVM (#15066)
  • tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdio_rtt if auto_init is disabled (#13120)
  • tests: some tests don't work with newlib lock functions. (#12732)
  • Types in byteorder.h need a cleanup (#14737)
  • USB identifiers with funny characters create mojibake (#17776)
  • usbus/msc: wrong error handling and behavior after usb reset (#19478)
  • Use of multiple CAN bus on compatible boards (#14801)
  • ztimer is incompatible with real-time requirements (#18883)

There are 158 known issues in this release

Fixed Issues since the last release (2023.10)

  • make debug broken on native (#20265)
  • Bug in drivers/lpsxxx sensor (#20093)
  • stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after __WFI() (#14015)
  • cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)

4 fixed issues since last release (2023.10)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

Matrix and Forum

  • Join the RIOT Matrix room at: #riot-os:matrix.org
  • Join the RIOT Forum at: forum.riot-os.org

License

  • The code developed by the RIOT community is licensed under the GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
  • Some external sources and packages are published under a separate license.

All code files contain licensing information.

2023.10

5 months ago

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

  • 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 (#19846)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc_border_router stops routing after a while (#16398)
  • gnrc_border_router: Kconfig and C disagree about number of addresses per interface (#19947)
  • gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own packet buffer (#12565)
  • gnrc_ipv6: Multicast is not forwarded if routing node listens to the address (#4527)
  • gnrc_netif_pktq leaks memory (#17924)
  • gnrc_rpl: missing bounds checks in _parse_options (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_rpl: old routes are not deleted (#19423)
  • gnrc_rpl: takes unusually long time to start routing packets (#19147)
  • gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
  • gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • ieee802154_submac: IPv6 fragmentation broken (#16998)
  • LoRaWan node ISR stack overflowed (#14962)
  • LWIP TCP Communication Error (#19676)
  • lwip_sock_tcp / sock_async: received events before calling sock_accept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdev_driver_t::recv (#10410)
  • Neighbor Discovery not working after router reboot when using SLAAC (#11038)
  • netdev_ieee802154: Mismatch between radio ll address and in memory address (#10380)
  • nrf52: Not able to add global or ULA address to interface (#13280)
  • nrfmin: communication not possible after multicast ping with no interval (#11405)
  • ping6 is failing when testing with cc2538dk (#13997)
  • pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
  • pkg/tinydtls: DTLS handshake does not work (#19595)
  • samr30 xpro doesn't seem to use its radio ok (#12761)
  • scan-build errors found during 2019.07 testing (#11852)
  • stale border router does not get replaced (#12210)
  • test/lwip: enabling both, IPv4 and IPv6, results in unexpected behavior (#18097)
  • tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
  • two nodes livelock sending neighbor solicitations back and forth between each other (#16670)
  • xbee: setting PAN ID sometimes fails (#10338)
  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periph_timer: systematic proportional error in timer_set (#10545)
  • saml21 system time vs rtc (#10523)
  • stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
  • sys/newlib: gettimeofday() returns time since boot, not current wall time. (#9187)
  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • mdt_erase success, but vfs_format resets board (esp32-heltec- lora32-v2) (#14506)
  • periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS (#6567)
  • periph: GPIO drivers are not thread safe (#4866)
  • PWM: Single-phase initialization creates flicker (#15121)
  • STM32: SPI clock not returning to idle state and generating additional clock cycles (#11104)
  • TCP client cannot send read only data (#16541)
  • tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
  • examples/micropython: floating point exception while testing on native (#15870)
  • native getchar is blocking RIOT (#16834)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • Failing tests on FE310 (Hifive1b) (#13086)
  • boards/hifive1: flashing issue (#13104)
  • cpu/sam0: flashpage write / read cycle produces different results depending on code layout in flash (#14929)
  • cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • examples/gnrc_border_router: esp_wifi_init failed with return value 257 on ESP32-C3 with nimble_rpble (#19319)
  • gcoap/esp8266: Stack overflow with gcoap example (#13606)
  • Interrupt callback function is instantly called on samd51 after setting it from within interrupt callback function (#19861)
  • MPU doesn't work on cortex-m0+ (#14822)
  • newlib-nano: Printf formatting does not work properly for some numeric types (#1891)
  • periph_timer: Test coverage & broken on STM32F767ZI (#15072)
  • riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
  • stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after __WFI() (#14015)
  • stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • buildtest uses wrong build directory (#9742)
  • Build dependencies - processing order issues (#9913)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • EXTERNAL_MODULE_DIRS silently ignores non-existent entries (#17696)
  • make: ccache leads to differing binaries (#14264)
  • make: use of immediate value of variables before they have their final value (#8913)
  • missing build dependencies in the rust build (#19714)

Other issues (67)

  • _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through shell after flashing with J-Link (#13044)
  • make term no longer works with JLinkExe v6.94 (#16022)
  • at86rf215 stops receiving until sending a packet (#19653)
  • b-l072z-lrwan1: tests/ztimer_overhead: test failure (#19224)
  • backport_pr: Only works for when fork is in user (not in organization) (#18486)
  • benchmark_udp: hammering with low interval causes issues (#16808)
  • boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
  • Builds fail when different execstack options are around in objects (#18522)
  • Can't build relic with benchmarks or tests (#12897)
  • CC2538-CC2592EM has a very weak transmit power (#17543)
  • CC2538DK board docs: broken links (#12889)
  • cpp: Exception handling undefined (#17523)
  • cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
  • doc/boards: information concerning access to RIOT shell (#17453)
  • doc/LOSTANDFOUND: not rendered as expected (#17063)
  • edbg: long lines flooded over serial become garbled (#14548)
  • examples / tests: LoRa tests fail on platforms that don't support LoRa (#14520)
  • examples/gcoap: client broken (#19379)
  • feather-m0: make flash reports "device unsupported" (#17722)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • frdm-k22f fails tests/periph_timer (#19543)
  • Freeze into semtech_loramac_send call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoap_req_send and related should return negative for errors (#19393)
  • gnrc_ipv6_nib: Neighbor Solicitation ping-pong (#18164)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • ieee802154_security: Nonce is reused after reboot (#16844)
  • kconfiglib.py choice override of menuconfig bug (#19069)
  • lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP disconnect (#17209)
  • lwip: invalid state transition on ieee802154_submac users (#17208)
  • Making the newlib thread-safe (#4488)
  • mcuboot: flashes but no output (#17524)
  • MTD is confusing (#17663)
  • nanocoap: incomplete response to /.well-known/core request (#10731)
  • Order of auto_init functions (#13541)
  • periph_rtt: rtt_set_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compile_and_test_for_board.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled gracefully (#17874)
  • rust-gcoap example is incompatible with littlefs2 (#17817)
  • Samr30/gpio: Erasing then write mux can generate spurious IRQ (#19993)
  • samr34-xpro: some tests failing (#19223)
  • sock_dtls: unable to send big messages (#17996)
  • spurious IRQs in periph_timer (#18976)
  • stdio_ethos: infinite shell loop (#17972)
  • stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
  • STM32 Nucleo boards improperly clocked (#19778)
  • sys/riotboot: documentation issues (#11243)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg/relic is failing on samr21-xpro when built using llvm (#19903)
  • tests/pkg_libhydrogen: test fails on master for the samr21-xpro with LLVM (#15066)
  • tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdio_rtt if auto_init is disabled (#13120)
  • tests: some tests don't work with newlib lock functions. (#12732)
  • Types in byteorder.h need a cleanup (#14737)
  • USB identifiers with funny characters create mojibake (#17776)
  • usbus/msc: wrong error handling and behavior after usb reset (#19478)
  • Use of multiple CAN bus on compatible boards (#14801)
  • ztimer is incompatible with real-time requirements (#18883)

There are 161 known issues in this release

Fixed Issues since the last release (2023.07)

  • at86rf215 stops receiving when sam0_eth is in use (#19911)
  • drivers/st7735: faulty driver initialization (#19818)

2 fixed issues since last release (2023.07)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

Matrix and Forum

  • Join the RIOT Matrix room at: #riot-os:matrix.org
  • Join the RIOT Forum at: forum.riot-os.org

License

  • The code developed by the RIOT community is licensed under the GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
  • Some external sources and packages are published under a separate license.

All code files contain licensing information.

2023.07

9 months ago

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 (#19636)

Examples

  • examples/suit_update: some test fixes (#19643)

Testing

  • tests/net/gnrc_mac_timeout: add automated test (#19639)
  • tests/README.md: Add directory overview (#19587)
  • tests: move all periph applications to their own periphs/ folder (#19552)
  • tests: move all pkg applications to their own pkgs/ folder (#19551)
  • treewide: fix remaining broken paths to test applications (#19592)
  • tests/drivers: move all driver tests into own folder (#19435)
  • tests: move all bench applications to their own tests/bench/ folder (#19564)
  • tests: move build system applications to tests/build_system (#19567)
  • tests: move core related applications to their own tests/core/ folder (#19565)
  • tests: move cpu related applications to tests/cpu (#19583)
  • tests: move net related applications to test/net (#19586)
  • tests: move nimble and lwip related to test applications to tests/pkg (#19582)
  • tests: move sys related applications to their own tests/sys/ folder (#19566)
  • treewide: replace occurrences of tests/driver_ with new path (#19555)
  • tests/core: remove Makefile.sys_common copy past mistake (#19783)
  • tests/drivers_at24cxxx: make it easier to select other EEPROMS (#19457)
  • tests/lua_loader: move to tests/pkg/lua_loader (#19569)
  • tests/periph_rtt: Fix for tick conversion test (#19522)
  • tests/pkg/lvgl: avoid using floats (#19698)
  • tests/unittests: remove old workaround for SAML1X and gcc9.X bug (#19687)
  • tests: move leftover sys related tests to test/sys + move tests/sys/candev to tests/drivers (#19585)
  • tests: move remaining driver related applications to tests/drivers (#19568)

And 65 minor changes.

Removals (6)

  • makefiles/pseudomodules: remove deprecated event_thread_lowest module (#19627)
  • nanocoap_sock: remove nanocoap_get() (#19553)
  • pkg/tensorflow-lite: remove deprecated package (#19624)
  • sys/gnrc_lorawan: remove deprecated tx port option (#19626)
  • sys/hashes: remove deprecated aes cmac hashing (#19625)
  • usbus: remove deprecated USBUS_HANDLER_FLAG_TR_FAIL flag (#19488)

Bug fixes (53)

  • cpu/stm32/periph_adc: fixes and improvements for L4 support (#19571)
  • all/gnrc: fix null pointer dereference (#19756)
  • boards/esp32: small documentation fixes (#19810)
  • boards/esp32s2-lilygo-ttgo-t8: fix display configuration (#19807)
  • boards/iotlab-m3: enable l3g4200d_ng (#19523)
  • boards/qn9080dk: fix periph conflict (#19730)
  • boards/sipeed-longan-nano: fix TFT display config and documentation (#19793)
  • boards/sipeed-longan-nano: revert default to variant with TFT (#19814)
  • boards/z1: fix broken clock configuration (#19705)
  • boards: fix documentation for GD32V boards (#19790)
  • buildsystem: fix kconfig mismatches (#19813)
  • core/lib: drop read only XFA's const volatile modifiers (#19544)
  • core: fix null pointer dereference (#19757)
  • cpu/cc26x0_cc13x0: Drop feature cortexm_mpu (#19507)
  • cpu/esp32: define RAM_START_ADDR and RAM_LEN (#19763)
  • cpu/esp8266: fix region overflow with '*periph' directory in app path (#19785)
  • cpu/msp430: fix for ti's msp430-gcc-opensource package ld version (#19782)
  • cpu/qn908x/periph_i2c: allow internal pull-up on SCL (#19729)
  • cpu/stm32/periph_gpio: reset PU/PD for ADC channels (#19574)
  • cpu/stm32/usbdev_fs: fix ep registration and EP_REG assignments (#19460)
  • cpu/stm32: Fix periph_gpio_ll_irq (#19446)
  • cpu/stm32: fix riotboot settings for L4 and WB (#19618)
  • drivers/at86rf2xx: fix default page being ignored (#19467)
  • drivers/dht: busy wait reimplementation (#19718)
  • drivers/enc28j60: fix ISR routine and bth (#19461)
  • drivers/hih6130: avoid using floats (#19695)
  • drivers/periph_usbdev: fix set device address (#19471)
  • drivers/servo: Fix missing dep (#19515)
  • drivers/slipdev: fix logic bug (#19633)
  • drivers/usbus_synopsys_dwc2: fix interrupt handling in DMA mode (#19459)
  • gnrc/ipv6/nib: reset rs_sent counter also for not-6LN interfaces (#19747)
  • gnrc_sixlowpan_frag_rb: fix OOB write in _rbuf_add (#19680)
  • gnrc_sixlowpan_frag_sfr: fix ARQ scheduler race-condition (#19679)
  • gnrc_sixlowpan_iphc: fix NULL pointer dereference (#19678)
  • gnrc_sixlowpan_iphc: prefix bits outside context must be zero (#19649)
  • ipv6/nib: 6LBR should not send RS on their downstream interface (#19335)
  • makefiles/arch/riscv.inc.mk: speed up toolchain detection (#19791)
  • makefiles/tools/serial.inc.mk: Handle new miniterm versions (#19444)
  • nrf5x_common: Clear I2C periph shorts (#19735)
  • pkg/openthread: set event callback before netdev init (#19547)
  • sys/color: extend unittest and fix module (#19693)
  • sys/net/rpl: fix missing assignment operator (#19749)
  • sys/net/rpl: fix possible NULL dereference (#19611)
  • sys/shell: fix missing generic lora settings in ifconfig (#19466)
  • sys/usb/usbus_msc: fix typo in C expression (#19637)
  • sys/usbus/msc: fix EP sizes for USB HS and buffer alignment in DMA- mode (#19458)
  • sys/xtimer: improve documentation (#19681)
  • tests/build_system/external_board_dirs: fix broken symlinks (#19584)
  • tests/drivers/l3gxxxx: fix used sensor version for iotlab boards (#19550)
  • tools/mspdebug: fix make debug and make debugserver (#19556)
  • tools/openocd: Fix handling of OPENOCD_CMD_RESET_HALT (#19506)
  • usbus/msc: fixes for synopsys dwc2 driver (#19455)
  • usbus: don't trigger assertion in usbus_urb_submit() (#19664)

Known issues

  • 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 (#19846)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc_border_router stops routing after a while (#16398)
  • gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own packet buffer (#12565)
  • gnrc_ipv6: Multicast is not forwarded if routing node listens to the address (#4527)
  • gnrc_netif_pktq leaks memory (#17924)
  • gnrc_rpl: missing bounds checks in _parse_options (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_rpl: old routes are not deleted (#19423)
  • gnrc_rpl: takes unusually long time to start routing packets (#19147)
  • gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
  • gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • ieee802154_submac: IPv6 fragmentation broken (#16998)
  • LoRaWan node ISR stack overflowed (#14962)
  • LWIP TCP Communication Error (#19676)
  • lwip_sock_tcp / sock_async: received events before calling sock_accept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdev_driver_t::recv (#10410)
  • Neighbor Discovery not working after router reboot when using SLAAC (#11038)
  • netdev_ieee802154: Mismatch between radio ll address and in memory address (#10380)
  • nrf52: Not able to add global or ULA address to interface (#13280)
  • nrfmin: communication not possible after multicast ping with no interval (#11405)
  • ping6 is failing when testing with cc2538dk (#13997)
  • pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
  • pkg/tinydtls: DTLS handshake does not work (#19595)
  • samr30 xpro doesn't seem to use its radio ok (#12761)
  • scan-build errors found during 2019.07 testing (#11852)
  • stale border router does not get replaced (#12210)
  • test/lwip: enabling both, IPv4 and IPv6, results in unexpected behavior (#18097)
  • tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
  • two nodes livelock sending neighbor solicitations back and forth between each other (#16670)
  • xbee: setting PAN ID sometimes fails (#10338)
  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periph_timer: systematic proportional error in timer_set (#10545)
  • saml21 system time vs rtc (#10523)
  • stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
  • sys/newlib: gettimeofday() returns time since boot, not current wall time. (#9187)
  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • drivers/st7735: faulty driver initialization (#19818)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • mdt_erase success, but vfs_format resets board (esp32-heltec- lora32-v2) (#14506)
  • periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS (#6567)
  • periph: GPIO drivers are not thread safe (#4866)
  • PWM: Single-phase initialization creates flicker (#15121)
  • STM32: SPI clock not returning to idle state and generating additional clock cycles (#11104)
  • TCP client cannot send read only data (#16541)
  • tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
  • examples/micropython: floating point exception while testing on native (#15870)
  • native getchar is blocking RIOT (#16834)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • Failing tests on FE310 (Hifive1b) (#13086)
  • [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
  • boards/hifive1: flashing issue (#13104)
  • cpu/sam0: flashpage write / read cycle produces different results depending on code layout in flash (#14929)
  • cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • examples/gnrc_border_router: esp_wifi_init failed with return value 257 on ESP32-C3 with nimble_rpble (#19319)
  • gcoap/esp8266: Stack overflow with gcoap example (#13606)
  • MPU doesn't work on cortex-m0+ (#14822)
  • newlib-nano: Printf formatting does not work properly for some numeric types (#1891)
  • periph_timer: Test coverage & broken on STM32F767ZI (#15072)
  • riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
  • stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after __WFI() (#14015)
  • stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • buildtest uses wrong build directory (#9742)
  • Build dependencies - processing order issues (#9913)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • EXTERNAL_MODULE_DIRS silently ignores non-existent entries (#17696)
  • make: ccache leads to differing binaries (#14264)
  • make: use of immediate value of variables before they have their final value (#8913)
  • missing build dependencies in the rust build (#19714)

Other issues (64)

  • [TRACKING] sys/shell refactoring. (#12105)
  • [tracking] unnecessary use of floating point arithmetic (#19614)
  • _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through shell after flashing with J-Link (#13044)
  • make term no longer works with JLinkExe v6.94 (#16022)
  • at86rf215 stops receiving until sending a packet (#19653)
  • b-l072z-lrwan1: tests/ztimer_overhead: test failure (#19224)
  • backport_pr: Only works for when fork is in user (not in organization) (#18486)
  • benchmark_udp: hammering with low interval causes issues (#16808)
  • boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
  • Builds fail when different execstack options are around in objects (#18522)
  • Can't build relic with benchmarks or tests (#12897)
  • CC2538-CC2592EM has a very weak transmit power (#17543)
  • CC2538DK board docs: broken links (#12889)
  • cpp: Exception handling undefined (#17523)
  • cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
  • doc/boards: information concerning access to RIOT shell (#17453)
  • doc/LOSTANDFOUND: not rendered as expected (#17063)
  • edbg: long lines flooded over serial become garbled (#14548)
  • examples / tests: LoRa tests fail on platforms that don't support LoRa (#14520)
  • examples/gcoap: client broken (#19379)
  • feather-m0: make flash reports "device unsupported" (#17722)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • frdm-k22f fails tests/periph_timer (#19543)
  • Freeze into semtech_loramac_send call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoap_req_send and related should return negative for errors (#19393)
  • gnrc_ipv6_nib: Neighbor Solicitation ping-pong (#18164)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • ieee802154_security: Nonce is reused after reboot (#16844)
  • kconfiglib.py choice override of menuconfig bug (#19069)
  • lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP disconnect (#17209)
  • lwip: invalid state transition on ieee802154_submac users (#17208)
  • Making the newlib thread-safe (#4488)
  • mcuboot: flashes but no output (#17524)
  • MTD is confusing (#17663)
  • nanocoap: incomplete response to /.well-known/core request (#10731)
  • Order of auto_init functions (#13541)
  • periph_rtt: rtt_set_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compile_and_test_for_board.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled gracefully (#17874)
  • rust-gcoap example is incompatible with littlefs2 (#17817)
  • samr34-xpro: some tests failing (#19223)
  • sock_dtls: unable to send big messages (#17996)
  • spurious IRQs in periph_timer (#18976)
  • stdio_ethos: infinite shell loop (#17972)
  • stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
  • STM32 Nucleo boards improperly clocked (#19778)
  • sys/riotboot: documentation issues (#11243)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg_libhydrogen: test fails on master for the samr21-xpro with LLVM (#15066)
  • tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdio_rtt if auto_init is disabled (#13120)
  • tests: some tests don't work with newlib lock functions. (#12732)
  • Types in byteorder.h need a cleanup (#14737)
  • USB identifiers with funny characters create mojibake (#17776)
  • usbus/msc: wrong error handling and behavior after usb reset (#19478)
  • Use of multiple CAN bus on compatible boards (#14801)
  • ztimer is incompatible with real-time requirements (#18883)

There are 161 known issues in this release

Fixed Issues since the last release (2023.04)

  • Not able to flash binary on samr21-xpro boards choosing serial number (#19805)
  • STM32F4-discovery + mrf24j40 not working (#19711)
  • Deprecated documentation? (#19667)
  • usbus_cdc_ecm: failed assertion when host reboots (#19663)
  • Bug: _ep_to_sockaddr() does not update in6_addr->sin6_scope_id (#19486)
  • SPI access in LoRa-e5 and im880b? (#19025)
  • qn9080 I2C driver spins in endless loop (#19021)
  • pkg_libhydrogen tests fail / update libhydrogen (#18508)
  • [gcoap-dtls] Posting a message yields a stack overflow on the samr21-xpro with ECC (#18292)
  • driver/sx126x:sx1268 spreading factor support LORA_SF5 (#17861)
  • Bug: BUILD_IN_DOCKER=1 doesn't work when running make compile- commands (#17507)
  • newlib-nano: Printf formatting does not work properly with "PRIu8" (#17083)
  • cpu/stm32/periph/rtc overflow error (#16574)
  • make -j flash fails due to missing make dependencies or make flash-only rebuilds the .elf (#16385)
  • Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
  • Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
  • build: info-build doesn't work with boards without port set (#15185)
  • Two bugs may lead to NULL dereference. (#15006)
  • tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
  • BUILD_IN_DOCKER ignores USEMODULE (#14504)
  • adc is not a ADC-Driver but a analog pin abstraction (#14424)
  • ethos: Unable to choose global source address. (#13745)
  • Potential security and safety race conditions on attached devices (#13444)
  • Cannot use LLVM with Cortex-M boards (#13390)
  • Sleep mode for Arduino (#13321)
  • Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
  • Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
  • floats and doubles being used all over the place. (#12045)
  • send data with UDP at 10HZ, the program die (#11860)
  • Tracking: remove harmful use of export in make and immediate evaluation (#10850)
  • sys/stdio_uart: dropped data when received at once (#10639)
  • CC2538 RF overlapping PIN usage (#8779)
  • doxygen: riot.css modified by 'make doc' (#8122)
  • cpu/native: timer interrupt issue (#6442)
  • macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)

35 fixed issues since last release (2023.04)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

Matrix and Forum

  • Join the RIOT Matrix room at: #riot-os:matrix.org
  • Join the RIOT Forum at: forum.riot-os.org

License

  • The code developed by the RIOT community is licensed under the GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
  • Some external sources and packages are published under a separate license.

All code files contain licensing information.

2023.04

1 year ago

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)
  • core/xfa: disable asan on llvm (#19271)
  • pkg/libfixmath: bump version (#19182)

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 of fwrite() (#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 System / Tooling

  • tools/compile_like_murdock: Add features (#19351)
  • tools/doccheck: add simple exclude to doccheck (#19240)
  • tools/renode: add support for target reset (#19375)
  • build system: Fix linker feature test with newlib 4.3.0 (#19232)
  • ci/print_versions: print all ESP32 toolchains (#19309)
  • dist/tools/doccheck: Fix grep warning (#19220)
  • dist/tools/insufficient_memory: Improve and clean up script (#19291)
  • esptools/install.sh: Fix shellcheck issues (#19325)
  • Fix compile_like_murdock.py when board is empty (#19370)
  • make: pass make jobserver to cargo (#19203)
  • Makefile.dep: pull in FEATURES_REQUIRED for periph (#19234)
  • toolchain/gnu.inc.mk: don't check version if CC is not installed (#19137)

Kconfig

  • drivers/sx126x: make MODULE_SX126X_RF_SWITCH hidden in kconfig (#19194)
  • Fix SX126X-STM32WL module in Kconfig (#19191)

Examples

  • examples/gnrc_border_router: add BLE as downlink option (#19321)

Testing

  • bors.yaml: re-activate labels check + add block_labels (#19161)
  • CI: re-add "synchronize" event to check-labels (#19136)
  • gh-actions: report release-tests result to Matrix (#19102)
  • CI: .murdock: fix bors fast build (#19241)
  • CI: .murdock: use build checkout for ccache tmp (#19274)
  • CI: separate check-labels and check-commits workflows (#19120)
  • CI: update check-labels-action (#19101)
  • test/periph_rtc: reset struct tm time between tests (#19344)
  • tests/gnrc_rpl: Disable CI test for native (#19171)
  • tests/periph_flashpage_unittest: enable periph_flashpage (#19215)

API Changes

  • usbdev: Add dedicated stall functions (#17086)
  • drivers/mtd_flashpage: implement pagewise API, don't use raw addresses (#19258)
  • gcoap: Finish the gcoap_get_resource_list_tl -> gcoap_get_resource_list renaming (#19295)
  • drivers/servo: reimplement with high level interface (#18392)
  • cpu/esp_common: use generic WIFI_SSID/WIFI_PASS defines (#19286)
  • sys/vfs: add force option to vfs_umount() (#19320)

Uncategorized

  • MAINTAINING.md: add some notes on Bors (#19329)
  • RDM: The 802.15.4 Radio HAL (#13943)
  • SECURITY: Describe that declassification is an option (#19149)
  • SUBSYSTEMS.md: migrate subsystem list from wiki (#19060)

And 57 minor changes.

Bug fixes (53)

  • boards/common: add common timer config for GD32VF103 boards (#19205)
  • cpu/esp_common: Add missing disconnect reasons (#19381)
  • Make: Add generate-Makefile.ci (#19244)
  • usbus: Add support for full speed with high speed phy (#19438)
  • boards/common/cc26xx cc13xx: clean up and fix flash configs (#19050)
  • boards/esp32s2-lilygo-ttgo-t8: fix STDIO selection in Kconfig (#19287)
  • boards/remote-*: drop custom led_init() (#19348)
  • boards/seeedstudio-gd32: fix HXTAL clock in Kconfig (#19129)
  • boards/stm32f4discovery: use default port to access stdio via cdc acm (#19376)
  • boards: fix USB configuration for stm32f429i-disco (#19437)
  • cord: include gcoap_req_send returning 0 in error (#19383)
  • cpu/esp32: fix and improve UART initialization (#19146)
  • cpu/esp32: fix stdio_usb_serial_jtag for ESP32-C3 (#19415)
  • cpu/esp32: fixes for boot issues and crashes on ESP32 (#19192)
  • cpu/esp32: use ets_printf instead of puts in startup (#19420)
  • cpu/gd32v: fix gpio_read in periph_gpio (#19418)
  • cpu/gd32v: move board dependent RTT configs to board config (#19211)
  • cpu/stm32: Fix periph_spi operation in non-DMA mode (#19431)
  • dist/tools/esptools/export.sh: fixes IDF_TOOLS_PATH default setting (#19125)
  • dist/tools/openocd: fix problems with riotboot caused by _flash_addr function for OpenOCD v0.12 (#19409)
  • driver/usbdev_synopsys_dwc2: use correct number of EPs (#19380)
  • drivers/at86rf2xx: fix default page being ignored [backport 2023.04] (#19473)
  • drivers/usbdev_synopsys_dwc2: disable DMA mode (#19388)
  • drivers/usbdev_synopsys_dwc2: fix and re-enable DMA mode (#19397)
  • drivers/usbus_synopsys_dwc2: fix interrupt handling in DMA mode [backport 2023.04] (#19472)
  • efm32/dac: Shift instead of masking (#19318)
  • gcoap: Do not send responses from multicast addresses (#19272)
  • gh-actions: check-labels: move to upstream fix (#19160)
  • gnrc_netif: set lower bound for IEEE802154_STACKSIZE_DEFAULT (#19339)
  • gnrc_static: don't parse address as prefix (#19313)
  • makefiles/boards/stm32: fix DFU_USB_ID handling (#19374)
  • makefiles/tools/serial.inc.mk: Handle new miniterm versions [backport 2023.04] (#19489)
  • matrix keypad: Fix memcpy bug in initialization (#19162)
  • nanocoap_sock: don't include token in empty ACK response (#19366)
  • native/stdio: Explicitly provide getchar (#19330)
  • pkg/esp8266_sdk: fix version string generation (#19123)
  • pkg/nimble/autoadv: fix flag comparisons (#19235)
  • pkg/tinyusb: fix default VID/PID configuration (#19377)
  • release-tests: fix PASSED chat message (#19145)
  • security fixes [backport 2023.04] (#19497)
  • shell/gnrc_icmpv6_echo: acquire ZTIMER_USEC clock for time measurement (#19055)
  • socket_zep: only report size of single datagram (#19121)
  • sys/clif: Fixing out of bounds read under certain conditions (#18746)
  • sys/net/dhcpv6: include IA Prefix Option in SOLICIT (#19225)
  • sys/phydat: Fix unit confusion (#19292)
  • sys/shell: don't include suit command by default (#19294)
  • sys/suit: Ensure previous thread is stopped before reusing its stack (#19199)
  • sys/usbus/cdc/ecm: fix High-Speed mode (#19358)
  • sys/usbus: handle exceeding number of endpoints (#19362)
  • sys/ztimer: ztimer_mock: guard ztimer_ondemand static functions (#19118)
  • tests/driver_dac_dds: fix output of sine and saw functions (#19251)
  • tests/{sys_fido2_ctap/usbus_board_reset}: fix stdio_usb_serial_jtag dependency (#19261)
  • usbus/msc: fixes for synopsys dwc2 [backport 2023.04] (#19456)

Known issues

  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • [gcoap-dtls] Posting a message yields a stack overflow on the samr21-xpro with ECC (#18292)
  • 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)
  • CC2538 RF overlapping PIN usage (#8779)
  • 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 choose global source address. (#13745)
  • ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
  • 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)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc_border_router stops routing after a while (#16398)
  • gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own packet buffer (#12565)
  • gnrc_ipv6: Multicast is not forwarded if routing node listens to the address (#4527)
  • gnrc_netif_pktq leaks memory (#17924)
  • gnrc_rpl: missing bounds checks in _parse_options (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_rpl: takes unusually long time to start routing packets (#19147)
  • gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
  • gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • ieee802154_submac: IPv6 fragmentation broken (#16998)
  • LoRaWan node ISR stack overflowed (#14962)
  • lwip_sock_tcp / sock_async: received events before calling sock_accept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdev_driver_t::recv (#10410)
  • Neighbor Discovery not working after router reboot when using SLAAC (#11038)
  • netdev_ieee802154: Mismatch between radio ll address and in memory address (#10380)
  • nrf52: Not able to add global or ULA address to interface (#13280)
  • nrfmin: communication not possible after multicast ping with no interval (#11405)
  • ping6 is failing when testing with cc2538dk (#13997)
  • pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
  • Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
  • Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
  • samr30 xpro doesn't seem to use its radio ok (#12761)
  • scan-build errors found during 2019.07 testing (#11852)
  • send data with UDP at 10HZ, the program die (#11860)
  • stale border router does not get replaced (#12210)
  • test/lwip: enabling both, IPv4 and IPv6, results in unexpected behavior (#18097)
  • tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
  • two nodes livelock sending neighbor solicitations back and forth between each other (#16670)
  • xbee: setting PAN ID sometimes fails (#10338)
  • cpu/native: timer interrupt issue (#6442)
  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periph_timer: systematic proportional error in timer_set (#10545)
  • saml21 system time vs rtc (#10523)
  • Sleep mode for Arduino (#13321)
  • stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
  • sys/newlib: gettimeofday() returns time since boot, not current wall time. (#9187)
  • adc is not a ADC-Driver but a analog pin abstraction (#14424)
  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • floats and doubles being used all over the place. (#12045)
  • mdt_erase success, but vfs_format resets board (esp32-heltec- lora32-v2) (#14506)
  • periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS (#6567)
  • periph: GPIO drivers are not thread safe (#4866)
  • Potential security and safety race conditions on attached devices (#13444)
  • PWM: Single-phase initialization creates flicker (#15121)
  • STM32: SPI clock not returning to idle state and generating additional clock cycles (#11104)
  • TCP client cannot send read only data (#16541)
  • tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
  • Two bugs may lead to NULL dereference. (#15006)
  • examples/micropython: floating point exception while testing on native (#15870)
  • native getchar is blocking RIOT (#16834)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • Failing tests on FE310 (Hifive1b) (#13086)
  • [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
  • boards/hifive1: flashing issue (#13104)
  • Cannot use LLVM with Cortex-M boards (#13390)
  • cpu/sam0: flashpage write / read cycle produces different results depending on code layout in flash (#14929)
  • cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • examples/gnrc_border_router: esp_wifi_init failed with return value 257 on ESP32-C3 with nimble_rpble (#19319)
  • gcoap/esp8266: Stack overflow with gcoap example (#13606)
  • MPU doesn't work on cortex-m0+ (#14822)
  • newlib-nano: Printf formatting does not work properly for some numeric types (#1891)
  • periph_timer: Test coverage & broken on STM32F767ZI (#15072)
  • riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
  • stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after __WFI() (#14015)
  • stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • buildtest uses wrong build directory (#9742)
  • make -j flash fails due to missing make dependencies or make flash-only rebuilds the .elf (#16385)
  • Build dependencies - processing order issues (#9913)
  • build: info-build doesn't work with boards without port set (#15185)
  • BUILD_IN_DOCKER ignores USEMODULE (#14504)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • doxygen: riot.css modified by 'make doc' (#8122)
  • macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
  • make: ccache leads to differing binaries (#14264)
  • make: use of immediate value of variables before they have their final value (#8913)
  • Tracking: remove harmful use of export in make and immediate evaluation (#10850)

Other issues (48)

  • 2023.04 release bug tracking (#19469)
  • [TRACKING] sys/shell refactoring. (#12105)
  • _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through shell after flashing with J-Link (#13044)
  • make term no longer works with JLinkExe v6.94 (#16022)
  • Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
  • boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
  • Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
  • Can't build relic with benchmarks or tests (#12897)
  • CC2538DK board docs: broken links (#12889)
  • cpu/stm32/periph/rtc overflow error (#16574)
  • cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
  • doc/LOSTANDFOUND: not rendered as expected (#17063)
  • edbg: long lines flooded over serial become garbled (#14548)
  • examples / tests: LoRa tests fail on platforms that don't support LoRa (#14520)
  • feather-m0: make flash reports "device unsupported" (#17722)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • ieee802154_security: Nonce is reused after reboot (#16844)
  • lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP disconnect (#17209)
  • lwip: invalid state transition on ieee802154_submac users (#17208)
  • Making the newlib thread-safe (#4488)
  • mcuboot: flashes but no output (#17524)
  • nanocoap: incomplete response to /.well-known/core request (#10731)
  • newlib-nano: Printf formatting does not work properly with "PRIu8" (#17083)
  • Order of auto_init functions (#13541)
  • pkg/tinydtls: Multiple issues (#16108)
  • pkg_libhydrogen tests fail / update libhydrogen (#18508)
  • Potential race condition in compile_and_test_for_board.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled gracefully (#17874)
  • rust-gcoap example is incompatible with littlefs2 (#17817)
  • SPI access in LoRa-e5 and im880b? (#19025)
  • stdio_ethos: infinite shell loop (#17972)
  • stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
  • sys/riotboot: documentation issues (#11243)
  • sys/stdio_uart: dropped data when received at once (#10639)
  • tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg_libhydrogen: test fails on master for the samr21-xpro with LLVM (#15066)
  • tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdio_rtt if auto_init is disabled (#13120)
  • tests: some tests don't work with newlib lock functions. (#12732)
  • usbus/msc: wrong error handling and behavior after usb reset (#19478)
  • Use of multiple CAN bus on compatible boards (#14801)

There are 156 known issues in this release

Fixed Issues since the last release (2023.01)

  • bootloader: BTN_BOOTLOADER_INVERTED doesn't work as expected. (#19364)
  • Race condition in SUIT around threads terminating (#19195)
  • socket_zep: fragmentation broken if destination is multicast / ACK_REQ not set (#19117)

3 fixed issues since last release (2023.01)

Boards tested during this release

  • esp32-wroom-32 PASS
  • nrf52840dk PASS
  • nucleo-f429zi PASS
  • samr21-xpro PASS
  • arduino-mega2560 FAIL
  • b-l072z-lrwan1 FAIL
  • b-l475e-iot01a FAIL
  • dwm1001 FAIL
  • frdm-kw41z FAIL
  • iotlab-m3 FAIL
  • nrf52dk FAIL
  • nucleo-l452re FAIL
  • nucleo-wl55jc FAIL
  • remote-revb FAIL
  • saml10-xpro FAIL
  • samr34-xpro FAIL

See the release tracking issue (#19469) for more details.

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

Matrix and Forum

  • Join the RIOT Matrix room at: #riot-os:matrix.org
  • Join the RIOT Forum at: forum.riot-os.org

License

  • The code developed by the RIOT community is licensed under the GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
  • Some external sources and packages are published under a separate license.

All code files contain licensing information.

2023.01

1 year ago

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

  • core/lib: define MAYBE_UNUSED (#18884)
  • core/marco: fix DIV_ROUND (#18858)

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 fixes (#18759)
  • Fix kconfig mismatch breaking nightlies (#18805)
  • gnrc: Fix unused function error when using LLVM (#18852)
  • gnrc_sixlowpan: Various hardening fixes (#18817)
  • makefiles/libc/picolibc.mk: fix compilation with modern binutils (#18893)
  • nanocoap_sock: don't store entire sock in coap_block_request_t (#18827)
  • nanocoap_sock: only re-transmit CON messages (#18819)
  • pkg/nimble: signal LINK_UP on initialisation (#18979)
  • pkg/tinyusb: fix the reset of the USB connection for STM32 boards without internal D+ pullup (#18992)
  • pkg/utensor: fix uninitialized variable (#18862)
  • sam0_common: use size_t len for I2C transfers (fixes #19008) (#19009)
  • sys/clif: Fixing out of bounds read under certain conditions (#18744)
  • sys/net/gnrc/pkt: fix gnrc_pkt_delete() (#18874)
  • sys/net/grnc/netreg: avoid freeing wild pointers (#18951)
  • sys/stdio_uart: fix undefined behavior (#18774)
  • sys/uri_parser: fixing potential out of bounds read when consuming ports (#19016)
  • sys/ztimer: model ztimer_periph_lptimer for Kconfig (#18783)
  • test-on-iotlab: several fixes to make it runnable again (#18722)
  • tests/congure_abe: reset node before starting terminal (#18769)
  • tests/pkg_utensor: increase main threads stack size (#18952)
  • tests/shell: fix failure on samr21-xpro (#18891)
  • tests: set netdev event_callback before calling init (#18745)
  • tools/backport_pr: finally fix running outside of repo's root (#18881)

Known issues

  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • [gcoap-dtls] Posting a message yields a stack overflow on the samr21-xpro with ECC (#18292)
  • 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)
  • CC2538 RF overlapping PIN usage (#8779)
  • 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 choose global source address. (#13745)
  • ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
  • 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)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc_border_router stops routing after a while (#16398)
  • gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own packet buffer (#12565)
  • gnrc_ipv6: Multicast is not forwarded if routing node listens to the address (#4527)
  • gnrc_netif_pktq leaks memory (#17924)
  • gnrc_rpl: missing bounds checks in _parse_options (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_rpl: takes unusually long time to start routing packets (#19147)
  • gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
  • gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • ieee802154_submac: IPv6 fragmentation broken (#16998)
  • LoRaWan node ISR stack overflowed (#14962)
  • lwip_sock_tcp / sock_async: received events before calling sock_accept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdev_driver_t::recv (#10410)
  • Neighbor Discovery not working after router reboot when using SLAAC (#11038)
  • netdev_ieee802154: Mismatch between radio ll address and in memory address (#10380)
  • nrf52: Not able to add global or ULA address to interface (#13280)
  • nrfmin: communication not possible after multicast ping with no interval (#11405)
  • ping6 is failing when testing with cc2538dk (#13997)
  • pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
  • Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
  • Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
  • samr30 xpro doesn't seem to use its radio ok (#12761)
  • scan-build errors found during 2019.07 testing (#11852)
  • send data with UDP at 10HZ, the program die (#11860)
  • stale border router does not get replaced (#12210)
  • test/lwip: enabling both, IPv4 and IPv6, results in unexpected behavior (#18097)
  • tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
  • two nodes livelock sending neighbor solicitations back and forth between each other (#16670)
  • xbee: setting PAN ID sometimes fails (#10338)
  • cpu/native: timer interrupt issue (#6442)
  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periph_timer: systematic proportional error in timer_set (#10545)
  • saml21 system time vs rtc (#10523)
  • Sleep mode for Arduino (#13321)
  • stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
  • sys/newlib: gettimeofday() returns time since boot, not current wall time. (#9187)
  • adc is not a ADC-Driver but a analog pin abstraction (#14424)
  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • floats and doubles being used all over the place. (#12045)
  • mdt_erase success, but vfs_format resets board (esp32-heltec- lora32-v2) (#14506)
  • periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS (#6567)
  • periph: GPIO drivers are not thread safe (#4866)
  • Potential security and safety race conditions on attached devices (#13444)
  • PWM: Single-phase initialization creates flicker (#15121)
  • STM32: SPI clock not returning to idle state and generating additional clock cycles (#11104)
  • TCP client cannot send read only data (#16541)
  • tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
  • Two bugs may lead to NULL dereference. (#15006)
  • examples/micropython: floating point exception while testing on native (#15870)
  • native getchar is blocking RIOT (#16834)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • Failing tests on FE310 (Hifive1b) (#13086)
  • [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
  • boards/hifive1: flashing issue (#13104)
  • Cannot use LLVM with Cortex-M boards (#13390)
  • cpu/sam0: flashpage write / read cycle produces different results depending on code layout in flash (#14929)
  • cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • gcoap/esp8266: Stack overflow with gcoap example (#13606)
  • MPU doesn't work on cortex-m0+ (#14822)
  • newlib-nano: Printf formatting does not work properly for some numeric types (#1891)
  • periph_timer: Test coverage & broken on STM32F767ZI (#15072)
  • riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
  • stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after __WFI() (#14015)
  • stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • buildtest uses wrong build directory (#9742)
  • make -j flash fails due to missing make dependencies or make flash-only rebuilds the .elf (#16385)
  • Build dependencies - processing order issues (#9913)
  • build: info-build doesn't work with boards without port set (#15185)
  • BUILD_IN_DOCKER ignores USEMODULE (#14504)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • doxygen: riot.css modified by 'make doc' (#8122)
  • macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
  • make: ccache leads to differing binaries (#14264)
  • make: use of immediate value of variables before they have their final value (#8913)
  • Tracking: remove harmful use of export in make and immediate evaluation (#10850)

Other issues (44)

  • [TRACKING] sys/shell refactoring. (#12105)
  • _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through shell after flashing with J-Link (#13044)
  • make term no longer works with JLinkExe v6.94 (#16022)
  • Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
  • boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
  • Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
  • Can't build relic with benchmarks or tests (#12897)
  • CC2538DK board docs: broken links (#12889)
  • cpu/stm32/periph/rtc overflow error (#16574)
  • cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
  • doc/LOSTANDFOUND: not rendered as expected (#17063)
  • edbg: long lines flooded over serial become garbled (#14548)
  • examples / tests: LoRa tests fail on platforms that don't support LoRa (#14520)
  • feather-m0: make flash reports "device unsupported" (#17722)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • ieee802154_security: Nonce is reused after reboot (#16844)
  • lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP disconnect (#17209)
  • lwip: invalid state transition on ieee802154_submac users (#17208)
  • Making the newlib thread-safe (#4488)
  • mcuboot: flashes but no output (#17524)
  • nanocoap: incomplete response to /.well-known/core request (#10731)
  • newlib-nano: Printf formatting does not work properly with "PRIu8" (#17083)
  • Order of auto_init functions (#13541)
  • pkg/tinydtls: Multiple issues (#16108)
  • pkg_libhydrogen tests fail / update libhydrogen (#18508)
  • Potential race condition in compile_and_test_for_board.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled gracefully (#17874)
  • rust-gcoap example is incompatible with littlefs2 (#17817)
  • SPI access in LoRa-e5 and im880b? (#19025)
  • stdio_ethos: infinite shell loop (#17972)
  • sys/riotboot: documentation issues (#11243)
  • sys/stdio_uart: dropped data when received at once (#10639)
  • tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg_libhydrogen: test fails on master for the samr21-xpro with LLVM (#15066)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdio_rtt if auto_init is disabled (#13120)
  • tests: some tests don't work with newlib lock functions. (#12732)
  • Use of multiple CAN bus on compatible boards (#14801)

There are 151 known issues in this release

Fixed Issues since the last release (2022.10)

  • Race condition in SUIT around threads terminating (#19195)
  • socket_zep: fragmentation broken if destination is multicast / ACK_REQ not set (#19117)
  • sam0_sdhc: SDXC cards are not detected / handled properly (#18458)
  • semtech_loramac_init blocking (#17907)
  • tests/thread_float: crashes on avr-rss2 (#16908)
  • esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
  • SIGFPE on native architecture when printing double floats on Ubuntu 21.04 (#16282)
  • I found stm32 DMA periph driver bugs! when I tested stm32l431rc board. (#16242)
  • pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
  • Unclear how Router Solicitations are (or should be) handled (#15926)
  • examples/ccn-lite: floating point exception while testing on native (#15878)
  • usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial ports (#15814)
  • tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and esp32-wroom-32 (#13133)

13 fixed issues since last release (2022.10)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

Matrix and Forum

  • Join the RIOT Matrix room at: #riot-os:matrix.org
  • Join the RIOT Forum at: forum.riot-os.org

License

  • The code developed by the RIOT community is licensed under the GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
  • Some external sources and packages are published under a separate license.

All code files contain licensing information.

2022.10

1 year ago

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 package (#18592)

Boards

  • boards/nucleo-f446ze: add support for ADC (#18647)
  • boards/nucleo-f767zi: add PWM config (#18393)
  • boards/samr21-xpro: add a note about EDBG UART limitation (#18567)
  • boards/stm32f746g-disco: add LD1 as LED0 definition (#18673)
  • boards: add support for the Waveshare nRF52840 Eval Kit (#13860)
  • cpu/esp32: add support for ESP32-C3 (#18345)
  • cpu/esp32: add support for ESP32-S2 (#18506)
  • cpu/esp32: add support for ESP32-S3 (#18421)
  • cpu/stm32/periph/usbdev_fs: add support for STM32F3 family (#18680)
  • drivers/usbdev_synopsys_dwc2: add USB OTG HS peripheral support for external ULPI HS PHYs (#18679)
  • drivers: add driver for Synopsys DWC2 that is used as USB OTG peripheral on STM32 and ESP32x SoCs (#18644)
  • pkg/tinyusb: add support for SAM0-based boards (#18689)
  • boards/blxxxpill: configure usbdev_fs (#17812)
  • boards/common/stm32: clean up LED definitions (#18415)
  • boards/nucleo-l4r5zi: support for ADC (#18676)
  • boards/remote-revb: define default MTD device (#18611)
  • boards/samr34-xpro: configure SPI NOR flash (#18492)
  • cpu/atxmega: fix building with avr-libc 2.1.0 (#18626)
  • cpu/esp32: use CPU_FAM and CPU_ARCH for ESP32x SoC variant dependent compilation (#18316)
  • cpu/mips: Remove all mips (#18562)
  • cpu/{esp8266,esp32}: cleanup of SPI Flash configuration (#18387)
  • doc: fix unbalaced grouping (#18444)

CPU

  • cpu/avr8_common: add strings.h for compatibility (#18623)
  • cpu/esp32: add Bluetooth LE and NimBLE host support (#18439)
  • cpu/esp32: add ESP32-C3 support in makefiles (#18341)
  • cpu/esp32: add ESP32-S2 support to makefiles (#18503)
  • cpu/esp32: add ESP32-S3 support to makefiles (#18410)
  • cpu/esp32: add linker scripts for ESP32-C3 (#18340)
  • cpu/esp32: add linker scripts for ESP32-S2 (#18509)
  • cpu/esp32: add linker scripts for ESP32-S3 (#18409)
  • cpu/esp32: add platform code for RISC-V based ESP32x SoCs (#18260)
  • cpu/esp32: add some sanity checks in peripheral drivers (#18332)
  • cpu/esp32: enable BLE and NimBLE host support for ESP32-S3 (#18517)
  • cpu/esp32: extend file names of CPU specific files by CPU family (#18326)
  • cpu/esp32: implement periph/gpio_ll and periph/gpio_ll_irq (#17442)
  • cpu/esp32: split cpu_conf.h into ESP32x common and ESP32 specific parts (#18323)
  • cpu/esp32: split periph_cpu.h into ESP32x common and ESP32 specific parts (#18324)
  • cpu/esp32: split sdkconfig.h into ESP32x common and ESP32 specific parts (#18322)
  • cpu/sam0_common: adc: add support for differential mode (#18146)
  • cpu/stm32/periph_eth: Add stm32_eth_tracing (#18418)
  • pkg/nimble: add feature ble_adv_ext and cleanup ble_* features (#18449)
  • sys/tiny_strerror: add tiny strerror() implementation (#18571)
  • core/mutex: clean up (#18619)
  • cpu/cortexm: clear FPU state in cpu_switch_context_exit() (#18697)
  • cpu/esp*: cleanups mainly to reduce the vera++ warnings (#18333)
  • cpu/esp32: cleanup of esp_log_write (#18335)
  • cpu/esp32: enable BLE and NimBLE host support for ESP32-C3 (#18510)
  • cpu/esp32: extend GPIO wake-up from deep sleep (#18405)
  • cpu/esp32: implement periph_spi_reconfigure (#18710)
  • cpu/esp32: make esp_hw_counter feature dependent on ESP32x SoC family (#18317)
  • cpu/esp32: move common ESP-IDF configurations to common files (#18406)
  • cpu/esp32: move linker scripts to a ESP32x variant specific directory (#18325)
  • cpu/esp: improve thread safety in newlib locking functions (#18544)
  • cpu/esp_common: MODULE_XTENSA has to depend on HAS_ARCH_ESP_XTENSA (#18319)
  • cpu/native: get mtd size from file size (#18669)
  • cpu/nrf5x: allow multiple I2C and SPI buses on a shared periph (#18478)
  • cpu/sam0/timer: supply all clocks before accessing any regs (#18527)
  • cpu/sam0_common: spi: limit clock to source clock (#18223)
  • cpu/stm32/periph/usbdev_fs: support for STM32F1 family (#18729)
  • cpu/stm32/periph_eth: optimize IRQ handler (#18417)
  • cpu: cpu_print_last_instruction() -> cpu_get_caller_pc() (#18226)
  • cpu: make use of cortexm.ld (#18636)
  • gnrc_netif: handle NETDEV_EVENT_LINK_UP/DOWN events (#17893)
  • pkg/lwip: Set netdev callback before driver init (#18548)
  • socket_zep: ignore packets sent on the wrong radio channel (#18594)
  • sys/net/gnrc/netif: allow checking if a netdev is legacy or new API (#18426)
  • treewide: Ubuntu jammy build fixes (#18652)

Device Drivers

  • drivers/wx281x: fix DEBUG format string for ESP32x SoCs (#18336)
  • usbdev_synopsys_dwc2: Mask RX FIFO irq when using DMA (#18726)

Documentation

  • cpu/esp32: add ESP32-S2 support in documentation (#18505)
  • cpu/esp32: add ESP32-S3 support to documentation (#18412)
  • cpu/esp32: split the doc into ESP32x common and ESP32 specific parts (#18321)
  • cpu/esp32: update documentation for ESP32-C3 (#18350)
  • doc: Add high-level documentation on flashing boards (#18455)
  • boards/nucleo64: doc update - usage of cpy2remed programmer and short board overview (#18419)
  • boards/remote-revb: fix pinout image in doc.txt (#18615)
  • dist/tools/edbg: bump version (and update SAML11 documentation) (#18384)
  • doc/doxygen: use DuckDuckGo for search (#18358)
  • doc: change protocol for git clone in docs (#18531)
  • gnrc/ipv6_auto_subnets: improve documentation about subnet generation and RIO (#18398)
  • tests/doc: some additions and reorganization of doc page (#18190)

Build System / Tooling

  • Add podman support (#18671)
  • codespell: add false positives for v2.2.1 (#18675)
  • dist/tools/esptools: add ESP32-C3 toolchain (#18337)
  • dist/tools/esptools: add ESP32-S2 toolchain support to {install,export}.sh (#18502)
  • dist/tools/esptools: add ESP32-S3 toolchain support to {install,export}.sh (#18407)
  • dist/tools/esptools: add macOS support to install/export scripts (#18385)
  • dist/tools: add DOSE Linux tool (#18163)
  • makefiles/tools/dfu-util: add option to pass DFU_SERIAL id (#18521)
  • makefiles: Add openocd-rtt (#18526)
  • tools/openocd: add generic FTDI adapter (#18628)
  • tools/zep_dispatch: add Wireshark capture support (via mac802154_hwsim) (#18230)
  • .circleci: remove directory (#18674)
  • dist/tools/suit: encrypt an existing key (#18499)
  • doccheck: remove exclude_patterns not needed (#18597)
  • makefiles/arch/avr8.inc.mk: Fix compilation with GCC 12.2.0 (#18533)
  • makefiles/boards/stm32.inc.mk: improve stm32flash support (#18452)
  • makefiles: Select suitable terminal when stdio_rtt is used (#18528)
  • pseudomodules: document gnrc_netif_cmd_lora as deprecated (#18706)

Kconfig

  • cpu/esp32: add ESP32-S2 support in Kconfig (#18504)
  • cpu/esp32: add ESP32-S3 support in Kconfig (#18411)
  • cpu/esp32: split Kconfig into ESP32x common and ESP32 specific parts (#18320)
  • drivers: model IEEE 802.15.4 devices in Kconfig (#17789)
  • drivers: model kconfig for Ethernet drivers (#17739)
  • Kconfig/ieee802154: fix typo in HAL selector and add missing radios (#18430)
  • .murdock: disable hash checks of kconfig/make (#18423)
  • cpu/esp_{common,32,8266}: improve Kconfig submenu structure (#18314)
  • drivers/kw2xrd/Kconfig: fix kconfig model (#18497)
  • Fix kconfig models breaking nightlies (#18718)

Examples

  • examples/gcoap_dtls: Add coap-client example (#18660)
  • examples/filesystem: drop manual mounts (#18495)
  • examples: Move in RIOT/applications (#18602)

Testing

  • .murdock.yml: Add preview link to documentation to comment (#18677)
  • release-tests: add capability to run on PR comment (#18713)
  • Revert "release-tests: add capability to run on PR comment" (#18736)
  • tests/external_boards: add esp32c3-ci board for optional modules (#18404)
  • tests/external_boards: add esp32s2-ci board for optional modules (#18507)
  • tests/external_boards: add esp32s3-ci board for optional modules (#18422)
  • tests/gcoap_fileserver: add integration test for GCoAP fileserver (#18199)
  • CI: improve makefile broken handling (#18595)
  • ci: teach github-labeler about .murdock.yml (#18666)
  • gh-actions: move actions/checkout to main (#18730)
  • murdock: honour RUN_TESTS setting (#18546)
  • murdock: make available boards instance dependent (#18659)
  • riotctrl_shell.cord_ep: remove regif parameter (#18716)
  • tests/ieee802154_*: fix tx_done handler on ACK_TIMEOUT and improve tests (#18382)
  • tests/periph_gpio_ll: drop core dump merged by accident (#18541)
  • tests/periph_timer_short_relative_set: clarify outcome (#18513)
  • tests/pkg_lvgl_touch: randomize button position on click (#18481)
  • tests/pkg_tinyvcdiff: Initialize mtd->write_size (#18529)
  • tests/thread_priority_inversion: blacklist esp32 (#18535)
  • tests/ztimer_periodic: improve output and relax on native (#18491)
  • tests/{periph_gpio_ll,pkg_fff}: change CPU_FAM to MCU for ESP32x SoCs (#18356)

API Changes

  • drivers/kw2xrf: add support for IEEE 802.15.4 Radio HAL (#18383)
    • Applications using the proper network stack APIs (such as the SOCK API or POSIX sockets) will not notice any chances, except for e.g. the better packet reception rate
  • sys/shell: make cmds submodules and add KConfig modeling (#18355)
    • Shell commands can now be individually selected by using the corresponding shell_cmd_<name> module. What previously was called shell_commands now is shell_cmds_default and will automagically select shell commands based on the set of modules used. Users can keep using shell_commands for now, but the build system will inform them that shell_commands is deprecated.
  • cpu/sam0_common: adc: drop pin from adc_conf_chan_t (#18658)
    • Application developers will not have to change their code. However, out of tree SAM0 boards that contain an ADC configuration will need to remove the .pin member and rename the existing .muxpos member to .inputctrl
  • hashes_cmac: rename to hashes_aes128_cmac (#18539)
    • Existing C call sides will continue to work due to compatibility wrappers. However, applications should migrate before the deprecated wrappers are dropped.
  • nanocoap_sock: constify remote (#18588)
    • This will not break any existing C call sides
  • gnrc_netreg: Use locks around netreg (#18740)
    • calls to gnrc_netreg_lookup() and gnrc_netreg_getnext() now need to be guarded
  • sys/hash/pbkdf2: Accept passwd as void * instead of uint8_t * (#18941)
    • This is not breaking any existing C call sides, but new code no longer needs to cast char * to uint8_t *

Uncategorized

  • .murdock.yml: add footer comment about production stage (#18667)
  • .murdock.yml: add new Murdock configuration (#18084)
  • pkg/lwip: add missing initialization for async_cb (#18693)
  • bootloader/riotboot_dfu: move ztimer_init() prior to usbus start (#18538)
  • murdock: fix bors branch name (testing -> trying) (#18665)
  • Release notes 2022.07 (#18512)

And 40 minor changes.

Deprecations

  • The module shell_commands is now deprecated. User should use shell_cmds_default. For now, shell_commands is an alias of shell_cmds_default
  • Shell commands that were individually selectable even before this release were renamed to match the pattern shell_cmd_<name>, while they previously where often called <name>_cmd. The previous names are aliases of the new names and the build system will list any deprecated modules used.
  • Users of hashes_cmac should update to hashes_aes128_cmac before the legacy wrappers now in place for backward compatibility will be removed.

Bug fixes (107)

  • .murdock: Fix kconfig hash check (#18364)
  • asymcute: Compare request message type when matching acknowledgement (#18434)
  • asymcute: fix one byte out-of-bounds access in _len_get (#18433)
  • boards/common/stm32: Fix LED configuration (#18568)
  • boards/nrf52dk: fix doc (#18646)
  • core/mbox: fix race condition (#18960)
  • core/msg.c: irq was not restored properly (#18606)
  • core/mutex: fix priority inheritance on AVR (#18584)
  • core/sched.c: fix undefined behavior on 8-bit/16-bit (#18573)
  • cpu/arm7_common: align stacks correctly (#18641)
  • cpu/arm7_common: fix compilation with 12.2.0 (#18638)
  • cpu/atmega_common/periph_timer: fix spurious IRQs (#18981)
  • cpu/esp32/periph_timer: allow changing callback or freq (#18973)
  • cpu/esp32: fix dependency for periph/rtt and module esp_rtc_timer_32k (#18334)
  • cpu/esp32: fix provided features and Kconfig for esp_eth (#18394)
  • cpu/esp8266/periph_timer: allow changing callback or freq (#18973)
  • cpu/esp: fix netdev register (#18391)
  • cpu/esp_common/periph_uart: fix call to _uart_set_mode (#18720)
  • cpu/nrf5x_common/periph_timer: fix spurious IRQs (#18974)
  • cpu/qn908x: use bitarithm_test_and_clear() & fix cb (#18990)
  • cpu/qn909x/periph_timer: make clangd happy (#18990)
  • cpu/stm32/periph_eth: fix typo in initialization code (#18416)
  • cpu/stm32/periph_timer: fix race conditions (#18972)
  • cpu/stm32/periph_timer: fix spurious IRQs (#18972)
  • cpu/stm32: fix KConfig modeling for STM32F1 / usbdev_synopsys_dwc2 (#18741)
  • dist/tools/flatc: Fix compilation on musl (#18864)
  • dns_cache: handle TTL=0 properly (#18441)
  • dns_cache: synchronize access with mutex (#18330)
  • drivers/atwinc15x0: reset device if m2m_wifi_handle_events() fails (#18476)
  • drivers/ethos: Fix off-by-one in ETHOS driver (#18831)
  • drivers/lis2dh12: release instead of acquire (#18353)
  • drivers/mtd: fix module name for mtd_sdcard in Kconfig (#18395)
  • drivers/nrf802154: do not filter broadcast PAN ID (#18283)
  • drivers/sdcard_spi: make 8-bit safe (#18572)
  • drivers/shtcx: I2C-line is not released properly (#18347)
  • drivers/slipdev: fix off-by-one error in _recv() (#18830)
  • drivers/{dose, slipdev, sam0_eth}: generate RX event for queued packets (#18201)
  • examples/dtls-echo: set address family for sessions (#18369)
  • examples/wasm/wasm_sample: fix linking with new wasm-ld (#18867)
  • gcoap: fixes around empty ACKs (#18429)
  • gcoap_dns: various fixes (#18367)
  • gcoap_fileserver: bugfix recursive delete (#18536)
  • gcoap_forward_proxy: copy Max-Age from forwarded Valid if it exists (#18471)
  • gnrc_ipv6_nib: make configurable via Kconfig again (#18360)
  • gnrc_netif: don't allocate message queue on the stack (#17905)
  • gnrc_netif_conf: fix auto-6ctx switch (#18370)
  • gnrc_netif_ieee802154: Ignore packets without source address (#18820)
  • gnrc_sixlowpan_frag_rb: fix integer underflow in _6lo_frag_size() (#18820)
  • gnrc_sixlowpan_frag_vrb: Assert no usage of a vrb with src_len == 0 (#18820)
  • gnrc_sixlowpan_iphc.c: dereference ipv6_hdr in DEBUG() after assignment (#18820)
  • gnrc_sixlowpan_iphc: fix buffer overflow in gnrc_sixlowpan_iphc_recv() (#18820)
  • gnrc_sixlowpan_iphc: fix integer underflow in gnrc_sixlowpan_iphc_recv() (#18820)
  • gnrc_sixlowpan_iphc: fix null pointer dereference in _iphc_encode() (#18820)
  • gnrc_sixlowpan_iphc: fix packet type confusion in _iphc_encode() (#18820)
  • ieee802154: Adjust parsing of IEEE 802.15.4 frame header (#18820)
  • kw2xrf/Kconfig: remove netdev_ieee802154 from dependency resolution (#18469)
  • makefiles/arch/avr8.inc.mk: fix detection of GCC 12 (#18732)
  • makefiles/arch/cortexm.inc.mk: fix ASMFLAGS (#18899)
  • makefiles/arch/riscv.inc.mk: Fix with BUILD_IN_DOCKER (#18654)
  • makefiles/cflags.inc.mk: add -z noexecstack to link flags (#18928)
  • makefiles/libc/picolibc.mk: fix compilation with modern binutils (#18909)
  • makefiles/libc: fix wchar_t size warnings on LLVM (#18928)
  • makefiles/suit: avoid unwanted key creation trigger (#18344)
  • makefiles: quiet messages on CI (#18470)
  • nib/_nib-6ln: correct ABR timeout in ABRO (#18661)
  • pkg/arduino_sdi_12: bump version, fix patches (#18812)
  • pkg/ccn-lite: Fix use after free bug (#18897)
  • pkg/ccn-lite: patch to fix use-after-free (#18483)
  • pkg/lwip: ease debugging & fix sending from socket bound to anyaddr (#18288)
  • pkg/nimble: fix the event queue size for nimble_adv_ext (#18467)
  • pkg/nimble: signal LINK_UP on initialisation (#18980)
  • pkg/tflite-micro: fix compilation with GCC >= 12.x (#18895)
  • pkg/utensor: fix uninitialized variable (#18865)
  • pkg/wolfssl: fix compilation with GCC >= 12.x (#18898)
  • pkg/{littlefs,littlefs2}: fix unaligned memory accesses (#18473)
  • release-tests: use Ubuntu Jammy runner (#18712)
  • sys/clif: Fixing out of bounds read under certain conditions (#18810)
  • sys/log_*: modularize log into log_color and log_printfnoformat (#18425)
  • sys/net/gnrc/pkt: fix gnrc_pkt_delete() (#18880)
  • sys/net/sock_util: fix _find_hoststart() (#18723)
  • sys/print_stack_usage: update MIN_SIZE (#18924)
  • sys/shell/cmds: fix shell_cmd_netif LoRaWAN integration (#18649)
  • sys/string_utils : new (header-only) module for string utilities (#18609)
  • test-on-iotlab: add missing scapy dependency (#18757)
  • test-on-iotlab: several fixes to make it runnable again (#18757)
  • test/unittest: initialize ztimer64 is required, use xtimer test-fib (#18365)
  • tests/cc2538_rf: set event_callback before init (#18751)
  • tests/gcoap_fileserver: add test for PUT (#18725)
  • tests/gnrc_rpl: mark the test as only for native in build system (#18757)
  • tests/heap_cmd: fix test script (#18634)
  • tests/mpu_stack_guard: Fix compilation on modern GCC (>= 12.x) (#18872)
  • tests/nrf802154: set event_callback before init (#18751)
  • tests/pbkdf2: de-flaky-fy test (#18941)
  • tests/periph_gpio_ll: fix the output for GPIO_OUTPUT_OPEN_SOURCE tests (#18331)
  • tests/pkg_emlearn: fix compilation (#18902)
  • tests/pkg_tinyvcdiff: fix stack overflow (#18896)
  • tests/pkg_utensor: increase main threads stack size (#18959)
  • tests/shell: fix failure on samr21-xpro (#18908)
  • tests/socket_zep: set event_callback before init (#18751)
  • tests/sx12xx: set event_callback before init (#18751)
  • tests/unittests: Correct typo in documentation (#18438)
  • tests/unittests: fix get_frame_hdr_len tests for hardened parsing (#18820)
  • tests: call gnrc_ipv6_nib_iface_up() after gnrc_ipv6_nib_init_iface() (#18635)
  • tests: set netdev event_callback before calling init (#18751)
  • treewide: fix conditionals on deprecated module (#18616)
  • unittest/main: do not initialize xtimer if ztimer_xtimer_compat (#18352)
  • usbus/hid: fix buffer overflow in hid_io (#18889)

Known issues

  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • [gcoap-dtls] Posting a message yields a stack overflow on the samr21-xpro with ECC (#18292)
  • 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)
  • CC2538 RF overlapping PIN usage (#8779)
  • 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 choose global source address. (#13745)
  • ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
  • 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)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc_border_router stops routing after a while (#16398)
  • gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own packet buffer (#12565)
  • gnrc_ipv6: Multicast is not forwarded if routing node listens to the address (#4527)
  • gnrc_netif_pktq leaks memory (#17924)
  • gnrc_rpl: missing bounds checks in _parse_options (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
  • gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • ieee802154_submac: IPv6 fragmentation broken (#16998)
  • LoRaWan node ISR stack overflowed (#14962)
  • lwip_sock_tcp / sock_async: received events before calling sock_accept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdev_driver_t::recv (#10410)
  • nanocoap: problem with [re]transmission behaviour: (some blocks are sent twice immediately) (#18217)
  • Neighbor Discovery not working after router reboot when using SLAAC (#11038)
  • netdev_ieee802154: Mismatch between radio ll address and in memory address (#10380)
  • nrf52: Not able to add global or ULA address to interface (#13280)
  • nrfmin: communication not possible after multicast ping with no interval (#11405)
  • ping6 is failing when testing with cc2538dk (#13997)
  • pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
  • Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
  • Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
  • samr30 xpro doesn't seem to use its radio ok (#12761)
  • scan-build errors found during 2019.07 testing (#11852)
  • send data with UDP at 10HZ, the program die (#11860)
  • stale border router does not get replaced (#12210)
  • test/lwip: enabling both, IPv4 and IPv6, results in unexpected behavior (#18097)
  • tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
  • two nodes livelock sending neighbor solicitations back and forth between each other (#16670)
  • Unclear how Router Solicitations are (or should be) handled (#15926)
  • xbee: setting PAN ID sometimes fails (#10338)
  • cpu/native: timer interrupt issue (#6442)
  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periph_timer: systematic proportional error in timer_set (#10545)
  • saml21 system time vs rtc (#10523)
  • Sleep mode for Arduino (#13321)
  • stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
  • sys/newlib: gettimeofday() returns time since boot, not current wall time. (#9187)
  • adc is not a ADC-Driver but a analog pin abstraction (#14424)
  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • floats and doubles being used all over the place. (#12045)
  • mdt_erase success, but vfs_format resets board (esp32-heltec- lora32-v2) (#14506)
  • periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS (#6567)
  • periph: GPIO drivers are not thread safe (#4866)
  • Potential security and safety race conditions on attached devices (#13444)
  • PWM: Single-phase initialization creates flicker (#15121)
  • STM32: SPI clock not returning to idle state and generating additional clock cycles (#11104)
  • TCP client cannot send read only data (#16541)
  • tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
  • Two bugs may lead to NULL dereference. (#15006)
  • examples/ccn-lite: floating point exception while testing on native (#15878)
  • examples/micropython: floating point exception while testing on native (#15870)
  • native getchar is blocking RIOT (#16834)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • SIGFPE on native architecture when printing double floats on Ubuntu 21.04 (#16282)
  • Failing tests on FE310 (Hifive1b) (#13086)
  • [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
  • boards/hifive1: flashing issue (#13104)
  • Cannot use LLVM with Cortex-M boards (#13390)
  • cpu/sam0: flashpage write / read cycle produces different results depending on code layout in flash (#14929)
  • cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
  • gcoap/esp8266: Stack overflow with gcoap example (#13606)
  • I found stm32 DMA periph driver bugs! when I tested stm32l431rc board. (#16242)
  • MPU doesn't work on cortex-m0+ (#14822)
  • newlib-nano: Printf formatting does not work properly for some numeric types (#1891)
  • periph_timer: Test coverage & broken on STM32F767ZI (#15072)
  • riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
  • stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after __WFI() (#14015)
  • stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • buildtest uses wrong build directory (#9742)
  • make -j flash fails due to missing make dependencies or make flash-only rebuilds the .elf (#16385)
  • Build dependencies - processing order issues (#9913)
  • build: info-build doesn't work with boards without port set (#15185)
  • BUILD_IN_DOCKER ignores USEMODULE (#14504)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • doxygen: riot.css modified by 'make doc' (#8122)
  • macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
  • make: ccache leads to differing binaries (#14264)
  • make: use of immediate value of variables before they have their final value (#8913)
  • Tracking: remove harmful use of export in make and immediate evaluation (#10850)

Other issues (49)

  • semtech_loramac_init blocking (#17907)
  • [TRACKING] sys/shell refactoring. (#12105)
  • _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through shell after flashing with J-Link (#13044)
  • make term no longer works with JLinkExe v6.94 (#16022)
  • Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
  • boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
  • Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
  • Can't build relic with benchmarks or tests (#12897)
  • CC2538DK board docs: broken links (#12889)
  • cpu/stm32/periph/rtc overflow error (#16574)
  • cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
  • doc/LOSTANDFOUND: not rendered as expected (#17063)
  • edbg: long lines flooded over serial become garbled (#14548)
  • examples / tests: LoRa tests fail on platforms that don't support LoRa (#14520)
  • feather-m0: make flash reports "device unsupported" (#17722)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • ieee802154_security: Nonce is reused after reboot (#16844)
  • lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP disconnect (#17209)
  • lwip: invalid state transition on ieee802154_submac users (#17208)
  • Making the newlib thread-safe (#4488)
  • mcuboot: flashes but no output (#17524)
  • nanocoap: incomplete response to /.well-known/core request (#10731)
  • newlib-nano: Printf formatting does not work properly with "PRIu8" (#17083)
  • Order of auto_init functions (#13541)
  • pkg/tinydtls: Multiple issues (#16108)
  • pkg_libhydrogen tests fail / update libhydrogen (#18508)
  • Potential race condition in compile_and_test_for_board.py (#12621)
  • pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled gracefully (#17874)
  • rust-gcoap example is incompatible with littlefs2 (#17817)
  • sam0_sdhc: SDXC cards are not detected / handled properly (#18458)
  • stdio_ethos: infinite shell loop (#17972)
  • sys/riotboot: documentation issues (#11243)
  • sys/stdio_uart: dropped data when received at once (#10639)
  • tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg_libhydrogen: test fails on master for the samr21-xpro with LLVM (#15066)
  • tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and esp32-wroom-32 (#13133)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests/thread_float: crashes on avr-rss2 (#16908)
  • tests: broken with stdio_rtt if auto_init is disabled (#13120)
  • tests: some tests don't work with newlib lock functions. (#12732)
  • usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial ports (#15814)
  • Use of multiple CAN bus on compatible boards (#14801)

There are 161 known issues in this release

Fixed Issues since the last release (2022.07)

  • tests/thread_priority_inversion: Fails on AVR (#18545)
  • tests/thread_priority_inversion failing with esp32-wroom-32 (#18534)
  • (almost solved) SPI SD-Card driver: SPI initialisation freeze until timeout (#14439)
  • MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
  • make term output is inconsistent between boards, ethos and native (#12108)
  • ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
  • arm7: printf() with float/double not working (#11885)
  • net: netdev_driver_t::send() doc unclear (#10969)
  • openthread: does not build on current Arch (#10809)
  • Possible memset optimized out in crypto code (#10751)
  • xtimer_set_msg: crash when using same message for 2 timers (#10510)
  • Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
  • RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10 (#10121)
  • cpu/cortexm_common: irq_enable returns the current state of interrupts (not previous) (#10076)
  • xtimer_usleep wrong delay time (#10073)
  • assert: c99 static_assert macro doesn't function for multiple static_asserts in the same scope (#9371)
  • xtimer mis-scaling with long sleep times (#9049)
  • 6lo gnrc fragmentation expects driver to block on TX (#7474)
  • scheduler: priority inversion problem (#7365)
  • xtimer_usleep stuck for small values (#7347)
  • General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
  • sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
  • xtimer: add's items to the wrong list if the timer overflows between _xtimer_now() and irq_disable() (#7114)
  • Windows AVR Mega development makefile Error (#6120)
  • tests: xtimer_drift gets stuck on native (#6052)
  • C++11 extensions in header files (#5561)
  • at86rf2xx: lost interrupts (#5486)
  • make: Setting constants on compile time doesn't really set them everywhere (#3256)
  • Tracker: Reduce scope on unintended COMMON variables (#2346)

29 fixed issues since last release (2022.07)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

Matrix and Forum

  • Join the RIOT Matrix room at: #riot-os:matrix.org
  • Join the RIOT Forum at: forum.riot-os.org

License

  • The code developed by the RIOT community is licensed under the GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
  • Some external sources and packages are published under a separate license.

All code files contain licensing information.

2022.07

1 year ago

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 of restrict (#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)
  • ensure response address is the same as request address (#18026)
  • small dependencies fixes (#17944)

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 variant independent makefiles (#18249)
  • invert MCU_* and CPU* conditionals (#18248)
  • move platform code for Xtensa-based ESP32x SoCs to module esp_xtensa (#18259)
  • Remove dependency on module libc_gettimeofday (#18202)
  • split module esp_wpa supplicant into several modules (#18239)
  • FreeRTOS adaptation layer changes/extension required for ESP-IDF HAL/LL (#18224)
  • use LittleFS2 as default FS (#18159)
  • pkg/esp32_sdk: Update version to 4.4.1 (#18165)

Device Drivers

  • periph/gpio_ll: New Peripheral GPIO API (#16787)
  • driver/lcd: add common lcd base driver (#16176)
  • sys/mtd: Introduce write granularity (#17683)
  • drivers/mtd_mapper: inherit physical properties (#18113)

  • drivers/netdev_ieee802154: drop duplicate struct member (#17979)

  • drivers/periph_common/cpuid: disable false positive warnings (#17909)

  • drivers/hd44780: PCF857x I2C interface added (#12665)

  • drivers/ir_nec: NEC remote receiver implementation (#17935)

  • drivers/mcp2515: enable filtering (#18062)

  • drivers/mcp2515: apply filters to target mailbox (#18131)

  • drivers/mcp2515: fixes and cleanups (#17945)

  • drivers/scard_spi: _dyn_spi_rxtx_byte return void (#17968)

  • drivers/ws281x: update ESP32 driver to use ESP-IDF CPU HAL (#18252)

  • pkg/driver_atwinc15x0: bump version to 1.6.1 (#18215)

Documentation

  • boards/nucleo144: doc update - usage of cpy2remed programmer and short overview of board (#18291)
  • boards/nucleo32: doc update - usage of cpy2remed programmer and short overview of board (#18225)
  • cpu/esp32: small doc fixes (#18240)
  • doc/rust: Update texts (#18208)
  • doc: fix broken link/footnote in using-rust.md/maintenance (#17961)
  • Documentation: Renaming OS X to macOS (#18256)
  • native/periph_can: usability improvements and documentation updates (#17949)
  • pkg/hacl: documentation link update (#18002)

Build System / Tooling

  • dist/tools/suit: add support for password protected private keys (#18130)
  • examples/gnrc_border_router: allow to use gnrc_ipv6_auto_subnets for prefix configuration (#16993)
  • .murdock: print hash input when hashes mismatch (#18236)
  • buildsystem: Improve RISC-V compilation handling with newer toolchain (#18098)
  • buildsystem: split default modules include early and late (#17662)
  • dist/tools/compile_and_test_for_board: fix lint (#18160)
  • dist/tools/cosy: allow to specify port (#18194)
  • make: create cargo folders for Docker images (#18086)
  • makefiles/tools/uf2conv.inc.mk: partial riotboot support (#16323)
  • makefiles: allow to override suit manifest payloads (#16771)
  • makefiles: Reject 2>&1 >/dev/null, and weed out remaining offenders (#16806)
  • tools/edbg: bump version (#18076)
  • tools/zep_dispatch: allow to pin nodes to MAC address (#17338)
  • tools/zep_dispatch: run dispatch with custom topology (#18170)

Kconfig

  • drivers/cst816s: add touch_dev interface + add Kconfig + migrate to ztimer (#17459)
  • pkg/tflite-micro: add kconfig support (#17985)
  • sys/cpp11-compat: add kconfig support and add Kconfig for cpp11 test applications (#17992)
  • pkg/cmsis-nn: model in Kconfig (#17997)
  • pkg/corejson: fix missing kconfig import + model test application configuration (#18008)
  • pkg/cryptoauthlib: model in kconfig (#18011)
  • pkg/jerryscript: model in Kconfig (#18012)
  • pkg/lua: model in kconfig (#18017)
  • pkg/nanors: model in kconfig (#18024)
  • sys/random/kconfig: remove HWRNG default in backend choice (#18025)
  • tests/pkg_utensor: model in Kconfig + fix utensor package dependencies (#17995)
  • tests/{cpp_ext, cpp_exclude}: model in kconfig (#17994)

Examples

  • examples/telnet_server: add support for LWIP (#17899)
  • example/twr_aloha: fixes (#17988)
  • examples/lorawan/main: use auto_init_loramac (#17695)
  • examples/suit_udpate: update check suit command (#17963)

Testing

  • cpu/esp: add compilation tests for optional ESP modules (#18158)
  • unittest/sock_util: add test for missing addr variants (#18061)
  • CI: disable microbit testing (#17933)
  • gh_action/test-on-iotlab: update available boards (#18303)
  • murdock: don't do both "clean" and "test-input-hash" targets (#18254)
  • test/pbkdf2: enlarge stdio rx buffer (#17928)
  • tests/pkg_tflite-micro: update list of low memory boards (#18101)
  • tests/{cpp_ext, cpp_exclude}: cleanup HAS_* (#18082)
  • tests: move riot_logo.h to tests base directory (#17917)
  • unittest/sock_util: move test_strings to their tests (#18067)

API Changes

  • drivers/disp_dev: use struct to store display area coordinates (#17921)
  • makefiles/suit: place keys in $XDG_DATA_HOME (#18157)
  • nanocoap: define and use coap_request_ctx_t for request handlers (#17957)
  • sys/shell/gnrc_netif: List netifs in registration order (#17078)

And countless minor changes.

Deprecations

Deprecations (1)

  • ztimer: deprecate ztimer_now64 and ztimer_now_t (#18054, #18105)

Removals (2)

  • net/netopt: drop NETOPT_RX_END_IRQ (#18089)
  • pkg/lvgl7: remove deprecated package (#18304)

Bug fixes (64)

  • cpu/stm32/include/periph/f7: add missing ADC_DEVS (#17923)
  • dist/tools/kconfiglib: add configuration evaluation function (#18192)
  • drivers/periph/timer: add TIM_FLAG_SET_STOPPED flag (#17723)
  • drivers/st7735/kconfig: add hardware feature symbol (#18135)
  • gnrc/nib: don't add routers from WPAN as default router on the 6LBR (#18127)
  • [Backport] asymcute: Compare request message type when matching acknowledgement (#18446)
  • [Backport] asymcute: fix one byte out-of-bounds access in _len_get (#18453)
  • asymcute: Fix deadlocks in REGACK, SUBACK and UNSUBACK handler (#18289)
  • bitarithm: Move extern const out of static inline functions (#18140)
  • boards/common/nrf52: fix compilation of thingy52 and ruuvitag (#18180)
  • boards/im880b: im880b board clock definition (#18295)
  • boards/stm32f469i-disco: LEDX_ON LEDX_OFF mismatch (#18041)
  • build system: Fix compilation for RISC-V with newer GCC (#17951)
  • core/assert: print last instruction in assert() (#18195)
  • core/msg: yield after thread_flags_wake() in queue_msg() (#16899)
  • cpu/atmega_common: Fix atmega_port_addr() (#18265)
  • cpu/esp32: fix malloc thread safety (#18209)
  • cpu/esp32: fix pm_reboot function (#18207)
  • cpu/esp32: fixes for gcc 8.4.0 (#18104)
  • cpu/sam0_common: mtd_sdhc: ensure source address alignment (#18222)
  • cpu/samd21: handle NVM block errata (#18188)
  • cpu/stm32/periph_eth: fix typo in initialization code [backport 2022.07] (#18420)
  • cpu/{atmega_common,atxmega}: increase idle thread stack size (#18263)
  • dirvers/mtd: fix documentation of mtd_write_page_raw() and mtd_read_page() (#18231)
  • dist/tools/compile_commands: don't adds -nostdinc (#18080)
  • dist/tools/compile_commands: fix clangd linting (#18063)
  • dns_cache: synchronize access with mutex [backport 2022.07] (#18342)
  • docker: don't export KCONFIG_ADD_CONFIG variable (#17993)
  • drivers/at86rf2xx: fix NETOPT_RANDOM (#18305)
  • drivers/at86rf2xx: Switch SRT mode to get random values. (#18290)
  • drivers/atwinc15x0: disconnect when sleeping (#17889)
  • drivers/mcp2515: fix set bittiming (#18019)
  • drivers/rtt_rtc: normalize tm struct in rtc_set_alarm (#18197)
  • examples/dtls-echo: set address family for sessions [backport 2022.07] (#18371)
  • examples/lorawan: disable loramac state persistence on EEPROM (#17969)
  • gcoap: fixes around empty ACKs [backport 2022.07] (#18436)
  • gcoap_dns: various fixes [backport 2022.07] (#18373)
  • gnrc/ipv6_auto_subnets: always send RIO to upstream network (#18187)
  • gnrc/nib: only enable RTR_ADV on RA if MULTIHOP_P6C is enabled (#17600)
  • gnrc_dhcpv6_client: Fix out-of-bounds access during option parsing (#18307)
  • gnrc_ipv6_nib: make configurable via Kconfig again [backport 2022.07] (#18362)
  • gnrc_netif_conf: fix auto-6ctx switch [backport 2022.07] (#18375)
  • gnrc_netif_pktq: protect against concurrent access (#18153)
  • gnrc_netreg: drain mbox on unregister (#18143)
  • ipv6/nib: bugfix handle SLLAO on 6LR if ARO is not present (#17814)
  • makefiles/boot/riotboot: set DEBUG_ELFFILE to slot0.elf (#18138)
  • nanocoap: follow-up fixes (#17950)
  • nanocoap_sock: fix wrong assertion (#18221)
  • net/eui_provider: provide netif index to EUI provider function (#18251)
  • pkg/ccn-lite: patch to fix use-after-free [backport 2022.07] (#18488)
  • pkg/emlearn: fix kconfig model (#18306)
  • pkg/emlearn: Remove unused emlearn module (#18287)
  • pkg/mynewt-core: fix timer configuration for nrf51 (#18136)
  • release-tests: install libasan as native dependency (#18124)
  • sys/fmt: disarm footgun (#18162)
  • sys/fmt: fix output on native (#18186)
  • sys/net/gnrc/rpl: sync access to netstats (#18275)
  • sys/net/netopt: change NETOPT_STATS semantics (#18269)
  • sys/rtc_utils: small doc fix of rtc_mktime (#18196)
  • sys/uri_parser: check port length (#18092)
  • tests/thread_float: fix test script (#18255)
  • unittest: fix ztimer(64)_initilization #18352 #18365 [backport 2022.07] (#18377)
  • unittests: fix assertion for nanocoap_cache_key_compare() (#18125)
  • vfs: fix dir detection in vfs_sysop_stat_from_fstat() (#18050)

Known issues

  • 6lo gnrc fragmentation expects driver to block on TX (#7474)
  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • [gcoap-dtls] Posting a message yields a stack overflow on the samr21-xpro with ECC (#18292)
  • 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)
  • at86rf2xx: lost interrupts (#5486)
  • CC2538 RF overlapping PIN usage (#8779)
  • 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 choose global source address. (#13745)
  • ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
  • 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)
  • General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc_border_router stops routing after a while (#16398)
  • gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own packet buffer (#12565)
  • gnrc_ipv6: Multicast is not forwarded if routing node listens to the address (#4527)
  • gnrc_netif_pktq leaks memory (#17924)
  • gnrc_rpl: missing bounds checks in _parse_options (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
  • gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • ieee802154_submac: IPv6 fragmentation broken (#16998)
  • LoRaWan node ISR stack overflowed (#14962)
  • lwip_sock_tcp / sock_async: received events before calling sock_accept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdev_driver_t::recv (#10410)
  • nanocoap: problem with [re]transmission behaviour: (some blocks are sent twice immediately) (#18217)
  • Neighbor Discovery not working after router reboot when using SLAAC (#11038)
  • net: netdev_driver_t::send() doc unclear (#10969)
  • netdev_ieee802154: Mismatch between radio ll address and in memory address (#10380)
  • nrf52: Not able to add global or ULA address to interface (#13280)
  • nrfmin: communication not possible after multicast ping with no interval (#11405)
  • openthread: does not build on current Arch (#10809)
  • ping6 is failing when testing with cc2538dk (#13997)
  • pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
  • Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
  • Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
  • samr30 xpro doesn't seem to use its radio ok (#12761)
  • scan-build errors found during 2019.07 testing (#11852)
  • send data with UDP at 10HZ, the program die (#11860)
  • stale border router does not get replaced (#12210)
  • test/lwip: enabling both, IPv4 and IPv6, results in unexpected behavior (#18097)
  • tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
  • two nodes livelock sending neighbor solicitations back and forth between each other (#16670)
  • Unclear how Router Solicitations are (or should be) handled (#15926)
  • xbee: setting PAN ID sometimes fails (#10338)
  • cpu/native: timer interrupt issue (#6442)
  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periph_timer: systematic proportional error in timer_set (#10545)
  • saml21 system time vs rtc (#10523)
  • Sleep mode for Arduino (#13321)
  • stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
  • sys/newlib: gettimeofday() returns time since boot, not current wall time. (#9187)
  • tests/periph_timer_short_relative_set results are misleading (#18511)
  • tests: xtimer_drift gets stuck on native (#6052)
  • xtimer mis-scaling with long sleep times (#9049)
  • xtimer: add's items to the wrong list if the timer overflows between _xtimer_now() and irq_disable() (#7114)
  • xtimer_set_msg: crash when using same message for 2 timers (#10510)
  • xtimer_usleep stuck for small values (#7347)
  • xtimer_usleep wrong delay time (#10073)
  • (almost solved) SPI SD-Card driver: SPI initialisation freeze until timeout (#14439)
  • adc is not a ADC-Driver but a analog pin abstraction (#14424)
  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • floats and doubles being used all over the place. (#12045)
  • mdt_erase success, but vfs_format resets board (esp32-heltec- lora32-v2) (#14506)
  • periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS (#6567)
  • periph: GPIO drivers are not thread safe (#4866)
  • Potential security and safety race conditions on attached devices (#13444)
  • PWM: Single-phase initialization creates flicker (#15121)
  • STM32: SPI clock not returning to idle state and generating additional clock cycles (#11104)
  • TCP client cannot send read only data (#16541)
  • tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
  • Two bugs may lead to NULL dereference. (#15006)
  • examples/ccn-lite: floating point exception while testing on native (#15878)
  • examples/micropython: floating point exception while testing on native (#15870)
  • native getchar is blocking RIOT (#16834)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • SIGFPE on native architecture when printing double floats on Ubuntu 21.04 (#16282)
  • Failing tests on FE310 (Hifive1b) (#13086)
  • [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
  • arm7: printf() with float/double not working (#11885)
  • boards/hifive1: flashing issue (#13104)
  • Cannot use LLVM with Cortex-M boards (#13390)
  • cpu/cortexm_common: irq_enable returns the current state of interrupts (not previous) (#10076)
  • cpu/sam0: flashpage write / read cycle produces different results depending on code layout in flash (#14929)
  • cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
  • gcoap/esp8266: Stack overflow with gcoap example (#13606)
  • I found stm32 DMA periph driver bugs! when I tested stm32l431rc board. (#16242)
  • Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
  • MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
  • MPU doesn't work on cortex-m0+ (#14822)
  • newlib-nano: Printf formatting does not work properly for some numeric types (#1891)
  • periph_timer: Test coverage & broken on STM32F767ZI (#15072)
  • riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
  • stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after __WFI() (#14015)
  • stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • buildtest uses wrong build directory (#9742)
  • make -j flash fails due to missing make dependencies or make flash-only rebuilds the .elf (#16385)
  • Build dependencies - processing order issues (#9913)
  • build: info-build doesn't work with boards without port set (#15185)
  • BUILD_IN_DOCKER ignores USEMODULE (#14504)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • doxygen: riot.css modified by 'make doc' (#8122)
  • macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
  • make: ccache leads to differing binaries (#14264)
  • make: Setting constants on compile time doesn't really set them everywhere (#3256)
  • make: use of immediate value of variables before they have their final value (#8913)
  • Tracking: remove harmful use of export in make and immediate evaluation (#10850)
  • Windows AVR Mega development makefile Error (#6120)

Other issues (57)

  • semtech_loramac_init blocking (#17907)
  • [TRACKING] sys/shell refactoring. (#12105)
  • _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through shell after flashing with J-Link (#13044)
  • make term no longer works with JLinkExe v6.94 (#16022)
  • make term output is inconsistent between boards, ethos and native (#12108)
  • assert: c99 static_assert macro doesn't function for multiple static_asserts in the same scope (#9371)
  • Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
  • boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
  • Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
  • C++11 extensions in header files (#5561)
  • Can't build relic with benchmarks or tests (#12897)
  • CC2538DK board docs: broken links (#12889)
  • cpu/stm32/periph/rtc overflow error (#16574)
  • cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
  • doc/LOSTANDFOUND: not rendered as expected (#17063)
  • edbg: long lines flooded over serial become garbled (#14548)
  • examples / tests: LoRa tests fail on platforms that don't support LoRa (#14520)
  • feather-m0: make flash reports "device unsupported" (#17722)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • ieee802154_security: Nonce is reused after reboot (#16844)
  • lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP disconnect (#17209)
  • lwip: invalid state transition on ieee802154_submac users (#17208)
  • Making the newlib thread-safe (#4488)
  • mcuboot: flashes but no output (#17524)
  • nanocoap: incomplete response to /.well-known/core request (#10731)
  • newlib-nano: Printf formatting does not work properly with "PRIu8" (#17083)
  • Order of auto_init functions (#13541)
  • pkg/tinydtls: Multiple issues (#16108)
  • pkg_libhydrogen tests fail / update libhydrogen (#18508)
  • Possible memset optimized out in crypto code (#10751)
  • Potential race condition in compile_and_test_for_board.py (#12621)
  • pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
  • RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10 (#10121)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled gracefully (#17874)
  • rust-gcoap example is incompatible with littlefs2 (#17817)
  • sam0_sdhc: SDXC cards are not detected / handled properly (#18458)
  • scheduler: priority inversion problem (#7365)
  • stdio_ethos: infinite shell loop (#17972)
  • sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
  • sys/riotboot: documentation issues (#11243)
  • sys/stdio_uart: dropped data when received at once (#10639)
  • tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg_libhydrogen: test fails on master for the samr21-xpro with LLVM (#15066)
  • tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and esp32-wroom-32 (#13133)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests/thread_float: crashes on avr-rss2 (#16908)
  • tests: broken with stdio_rtt if auto_init is disabled (#13120)
  • tests: some tests don't work with newlib lock functions. (#12732)
  • Tracker: Reduce scope on unintended COMMON variables (#2346)
  • usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial ports (#15814)
  • Use of multiple CAN bus on compatible boards (#14801)

There are 188 known issues in this release

Fixed Issues since the last release (2022.04)

  • core: "Invalid read of size 4" (#7199)
  • Use-after-free in ccnl-core (#18480)
  • [puf_sram] Hardfault (#18468)
  • esp32: gnrc_networking crashing (#18083)
  • boards/saml11-xpro: second UART is broken (#17206)

5 fixed issues since last release (2022.04)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

Matrix and Forum

  • Join the RIOT Matrix room at: #riot-os:matrix.org
  • Join the RIOT Forum at: forum.riot-os.org

License

  • The code developed by the RIOT community is licensed under the GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
  • Some external sources and packages are published under a separate license.

All code files contain licensing information.

2022.04

2 years ago

RIOT-2022.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 2022.04 release includes the following new features and improvements:

Core:

The scheduler allows for changing the priority of a thread at runtime.

System libraries:

The module ztimer64_xtimer_compat was added, providing the complete xtimer API on top of ztimer64_usec. This is now the default implementation when using the xtimer module. Most modules use ztimer instead of xtimer now.

The sequence of modules during auto initialization can be customized via statically assigned numbers now. This feature is experimental, so use it with caution. Priorities may change in the future.

SenML implementation: supports CBOR encoding, Phydat to SenML encoding and basic SAUL integration.

Various improvements have been made to the file system modules: VFS supports automatic mount (and formatting) at startup and reliable disk enumeration, and mount_by_path. Default mount points can be provided by the board configuration. exFAT support was added to FATFS.

Using Rust in RIOT no longer requires a nightly version of Rust, but can be built on the latest stable on Rust instead.

Boards:

Boards no longer have to provide a board_init() function. LEDs are initialized automatically if they follow the LED<x>_PIN naming scheme.

Networking:

gcoap now provides a simple forward-proxy and allows for switching between plain CoAP and CoAP-over-DTLS at runtime.

The NimBLE module supports the new PHY modes that have been introduced with Bluetooth 5.

A Telnet server module is available now.

Packages:

The build system now allows for package directories to reside outside the RIOT tree.

Various new packages have been added:

  • the C++ Embedded Template Library (ETL)
  • nanors, a tiny, performant implementation of reed solomon codes
  • tflite-micro as a replacement for tensorflow-lite
  • WAMR adds Web assembly (WASM) support

Hardware support:

New support for the boards Adafruit-PyBadge and STM32 Nucleo-F439ZI as well as for the LPS22CH nano pressure sensor and MCP47xx DAC. The DOSE bus now supports baud rates of 1 MHz and above.

Summary:

328 pull requests, composed of 810 commits, have been merged since the last release, and 6 issues have been solved. 40 people contributed with code in 83 days. 1851 files have been touched with 50235 (+) insertions and 18701 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core

  • core/sched: add sched_change_priority() (#17093)
  • core: add functionality to check queue state of another thread (#16174)
  • core: split out library code (#17652)
  • core/rmutex: use atomic utils (#16919)

System Libraries

  • drivers: migrate xtimer64 and xtimer/ticks users to ztimer (#17367)
  • drivers/mtd_flashpage: add mtd_flashpage_t type (#17627)
  • sys/bitfield: add support for bit-wise bitfield operations (#17710)
  • sys/senml: add SenML modules (#16384)
  • sys/vfs: add vfs_mount_by_path() (#17661)
  • sys/xtimer: introduce xtimer_is_set() (#17630)
  • sys/ztimer: add ztimer64_xtimer_compat complete xtimer replace module (#17670)
  • vfs: Introduce reliable disk enumeration (#17660)
  • rust: test on stable (#17805)
  • sc_vfs: print file size (#17622)
  • sys/auto_init: custom auto-initialization sequence (simple) (#17794)
  • sys/event/timeout: remove alternative xtimer implementation (#17689)
  • sys/evtimer: remove deprecated evtimer_now_min (#17655)
  • sys/fido2: use ztimer instead of xtimer (#17753)
  • sys/posix/pthread: newlib compatibility (#17734)
  • sys/test_utils/print_stack_usage: work with small stacks (#17891)
  • sys/vfs: add file-system auto-mount (#17341)
  • sys/vfs: provide vfs_fsync() (#17621)
  • sys/xtimer: make xtimer_ztimer_compat default backend (#17721)
  • sys/ztimer doc: List prerequisites for successful use of ztimer_now (#17614)
  • sys/ztimer64/util.c: fix ztimer64_set_timeout_flag (#17561)
  • sys/ztimer: add auto_adjust module (#17633)
  • sys/ztimer: cleanup xtimer_compat.h for 32Bit only (#17690)
  • sys/ztimer: Name callback types (#17758)
  • sys: some simple xtimer->ztimer conversions (#17892)
  • sys/*timer: rework dependencies to ease backend switch, prefer ztimer_xtimer_compat over xtimer_on_ztimer (#17811)
  • sys/syscalls: make gettimeofday() implementation optional (#17733)
  • sys/ztimer: auto-select ztimer_no_periph_rtt only for samd21 (#17786)
  • sys: sort out ztimer_xtimer_compat and ztimer64_xtimer_compat depes (#17732)
  • tests: add stack usage metrics (#17706)
  • {examples,tests}/rust: Rust updates (-sys/-wrappers version, stable) (#17761)

Networking

  • gcoap: add simple forward-proxy (#13790)
  • gnrc_pktbuf_cmd: add od dependency with gnrc_pktbuf_static (#17228)
  • nanocoap: add nanocoap_get_blockwise_url_to_buf() function (#17833)
  • nanocoap: introduce coap_opt_remove() (#17881)
  • nimble/netif: add support for BT5 PHY modes (#16860)
  • sys,examples,tests,fuzzing: add missing includes (#17714)
  • sys/net/application_layer/sock_dns: add pseudomodule auto_init_sock_dns (#17493)
  • sys/net/application_layer/sock_dns_mock: add module for mocking sock_dns (#17871)
  • sys/net/application_layer: add telnet server module & example (#16723)
  • sys/net/dsm: add missing dependencies (#17685)
  • sys/net/nanocoap: introduce nanocoap_sock_*(), use in suit/transport/coap (#17474)
  • sys/net/netutils: add netutils_get_ipv4() (#17764)
  • sys/net/sock: add sock_udp_sendv() API (#17485)
  • sys/net/sock_util: add sock_tl_name2ep() to optionally perform DNS lookups (#17510)
  • sys/stdio_nimble: add new stdio module using nimble (#12012)
  • drivers/encx24j600: define default parameters (#17747)
  • gcoap: multi-transport support (#16688)
  • gnrc/ipv6nib: remove the need for evtimer-minutes (#17411)
  • gnrc/netif: convert to ztimer (#17354)
  • ipv6/nib: bugfix of 6CO length checking (#17850)
  • ipv6/nib: fix memcpy() bug in _handle_rtr_timeout() (#17741)
  • lwip: enable LWIP_SO_RCVTIMEO if sock layer is used (#17779)
  • pkg/lwip: use ztimer_msec instead of xtimer (#17115)
  • pm: don't (un)block IDLE mode (#17975)
  • sys/gnrc/sixlowpan/frag/fb: guard sfr_types.h header include (#17730)
  • sys/net/gnrc/sock: use ztimer_usec or xtimer for timeout (#17852)
  • sys/net/gnrc/sock_types: guard tcp.h header inclusion (#17743)
  • sys/net/gnrc: ztimer_no_periph_rtt if gomach (#17729)
  • sys/net/gnrc_sixlowpan_frag_sfr: use xtimer_set (#17668)
  • sys/net/link_layer/csma_sender: use public xtimer_now() (#17731)
  • sys/net/sock_util: fix compilation for IPv4-only mode (#17766)

Packages

  • buildsystem: add EXTERNAL_PKG_DIRS functionality (#17211)
  • pkg/etl: Add the embedded template library (etl) (#17477)
  • pkg/lvgl: add extra widget dependency (#17760)
  • pkg/nanors: add reed solomon codec implementation (#17703)
  • pkg/tflite-micro: add support and deprecate tensorflow-lite (#17908)
  • pkg/tinydtls: add IPv4 support (#17765)
  • pkg/uwb-dw1000: add patch for rf_txctrl value (#17724)
  • pkg/wamr: add WAMR to provide WASM support in RIOT (#15329)
  • buildsystem/pkg: expand packages from USEPKG early as path into PKG_PATHS (#17551)
  • make: pkg.mk: don't call git am if there are no patches (#17858)
  • pkg/edhoc-c: bump version (#17777)
  • pkg/fatfs: fatfs_vfs: wire up format() (#14430)
  • pkg/fatfs: enable exFAT support (#17798)
  • pkg/fatfs: implement statvfs() (#17634)
  • pkg/littlefs2: bump version to 2.4.2 (#17837)
  • pkg/lv_drivers: initial commit (#17713)
  • pkg/lvgl: bump to 8.2.0 (#17681)
  • pkg/lvlgl: allow cusomizing LV_MEM_SIZE (#17759)
  • pkg/mbedtls: initial pkg import to use entropy module (#15671)
  • pkg/mynewt-core: fix semaphore (#17771)
  • pkg/semtech-loramac: enable setting channels mask (#17824)
  • pkg/tinycbor: bump version (#17604)
  • pkg/tinydtls/sock_dtls: use ztimer_usec (#17677)
  • pkg/tinydtls: migrate to ztimer64_msec (#17564)

Boards

  • boards/adafruit-pybadge: add support (#17807)
  • boards/b-l475e-iot01a: Add SPI2 and SPI3 buses (#17885)
  • boards/nucleo-f429zi: add support for ethernet (#17828)
  • boards: add support for nucleo-f439zi (#17827)
  • cpu/esp32: update to Espressif's precompiled ESP32 vendor toolchain with gcc 8.4.0 (#17769)
  • cpu/stm32: add backup battery monitoring (VBAT) (#16989)
  • sys/auto_init: add auto_init_leds, drop LED init code from boards (#17584)
  • sys/board_common: add generic board_init() function (#17008)
  • sys/vfs: add vfs_default, configure default fs for same54-xpro (#17643)
  • tests/external-boards: add esp compile test boards (#17525)
  • vfs_default: add compile test and add default mount for more boards (#17656)
  • boards/native: select MTD defaults for FAT (#17653)
  • boards/nucleo-f334r8 f429zi and f446ze: enable cpy2remed programmer (#17708)
  • boards/nucleo-f767zi: fix adc_config indentation (#17682)
  • boards/same54-xpro: support for board variation with SST26VF064B flash (#17613)
  • boards/stm32mp157c-dk2: Overwrite mpu_stack_guard in kconfig (#17629)
  • boards: drop board_init() from board.h (#17707)
  • boards: fix ztimer adjust values for arduino-mega2560 and z1 (#17839)
  • drivers/ft5x06: allow multiple device types (#17540)
  • kconfig explore all allowed boards on all apps (#17595)

CPU

  • cpu/native/netdev_tap: Add to netdev_register (#17635)
  • cpu/nrf52-9160: add periph_spi_init_gpio (#17617)
  • cpu/riscv_common: Enable Rust applications (#17520)
  • cpu/sam0_common: add periph_spi_init_gpio (#17616)
  • cpu/stm32: Add STM32_LINE cases for STM32L1xxx6 (#17727)
  • cpu: add flash_writable section to linker script (#17436)
  • cpu/arm7, arch/cortexm: Remove -fno-builtin flag (#17898)
  • cpu/cc2538/rtt: fix rtt_set_counter (#17535)
  • cpu/efm32: bump Gecko SDK version (#17672)
  • cpu/esp*: nvs-flash / cpp dependencies cleanup (#17548)
  • cpu/esp32/esp-eth: move GNRC auto_init to init_devs (#17745)
  • cpu/esp32: changes for toolchain update to gcc version 8.4.0 (#17546)
  • cpu/esp32: download Espressif SDK ESP-IDF as package (#17455)
  • cpu/esp32: enable puf_sram feature (#17671)
  • cpu/esp32: use macros/units (#16341)
  • cpu/lpc23xx-mci: migrate to ztimer_msec (#17363)
  • cpu/riscv_common: enable puf_sram feature (#17665)
  • cpu/riscv_common: fix undeclared memory region linker error (#17581)
  • cpu/sam0_common: implement EXTWAKE for SAM L21 (#17687)
  • cpu/sam0_eth: implement SLEEP state (#17886)
  • cpu/samd5x: allow to block IDLE mode (#17883)
  • cpu/saml21: derive low power SRAM length from model number (#17686)
  • cpu/samx21: allow to override PM_BLOCKER_INITIAL (#17793)
  • cpu/samd51: allow to support ADC0 and ADC1 in the same configuration (#17819)
  • cpu/stm32/i2c: fix wrong speed parameters (#17324)
  • cpu/stm32: Fix clock tree (#17609)
  • cpu/stm32: Fix CLOCK_CORECLOCK on stm32l0/l1 (#17725)
  • cpu/stm32: make backup SRAM available (#16870)
  • drivers/periph_spi: spi_init_with_gpio_mode mode by reference (#17531)

Device Drivers

  • driver/lpsxxx: adding lps22ch support (#17697)
  • drivers/dose: introduce watchdog timer (#17180)
  • drivers/dose: make use of ringbuffer for RX (#17210)
  • drivers/mtd_spi_nor: add ztimer_usec alternative (#17836)
  • drivers/shtcx: converted the shtc1 driver into shtcx and added shtc3 support (#17699)
  • drivers: add driver for L3GD20H 3-axis gyroscope (#10082)
  • drivers: support for Microchip MCP47xx DAC devices added (#10518)
  • mtd doc: Add overview defining terms; link modules (#17666)
  • driver/mtd_spi_nor: cleanup sleep timing (#17879)
  • drivers/dose: migrate to ztimer_usec (#17565)
  • drivers/lis2dh12: use ifdef instead of IS_USED (#17563)
  • drivers/mtd_sdcard: support unaligned reads & writes (#17619)
  • drivers/periph_common/cpuid: disable false positive warnings (#17910)
  • drivers/rtt_rtc: select rtc_utils (#17530)
  • drivers/sht3x: ztimer_msec port (#17783)

Documentation

  • boards/cc1352-launchpad doc: adding information concerning shell access (#17522)
  • doc/doxygen: add BUILD_IN_DOCKER extended doc (#17820)
  • doc/doxygen: recommend adding ADJUST ztimer values for new boards (#17846)
  • doc: add RIOT root doxygen example path (#17572)
  • net/ieee802154: Add overview documentation (#16940)
  • boards/nucleo-f429zi: improvements to documentation (#17875)
  • boards/nucleo-l552ze-q doc: Improvements to documentation (#17639)
  • boards/p-nucleo-wb55: update documentation (#17582)
  • core (largely doc): Differentiate message types from thread flags (#17472)
  • doc/emulator: update qemu doc with unix sockets (#17751)
  • doc: small fix of "Getting Started" document structure in section docker (#17756)
  • doc: Start documenting pseudomodules (#17133)
  • tools/zep_dispatch: document topogen usage (#17586)

Build System / Tooling

  • dist/tools/genconfig: add error on hidden symbols (#17597)
  • dist/tools/usb-serial/ttys.py: Add regex support (#17876)
  • dist/tools/usb_serial: Add tool for listing and filtering TTY interfaces (#17737)
  • make: Add ubsan support (#17278)
  • makefiles/dependency_resolution: add outer loop for DEFAULT_MODULE deps (#17632)
  • makefiles/docker.inc.mk: add DOCKER_ENV_VARS_ALWAYS (#17396)
  • testbed/iotlab: add mapping for samr34-xpro and nucleo-wl55jc (#17578)
  • tests/gnrc_rpl: add automated test for gnrc_rpl (#17353)
  • tools/pr_check: add "Update" keyword to "needs squashing" check (#17822)
  • make/emulate: use unix sockets with qemu (#17679)
  • Makefile.include: pass IOTLAB_NODE to docker (#17545)
  • makefiles/docker.ink.mk: do not always pass CFLAGS to docker (#17818)
  • makefiles/libc/newlibc: allow toolchains with nano version only (#17553)
  • makefiles: socat set tty mode 8N1 (#17853)
  • makefiles: use C++14 standard by default for C++ compilations (#17479)
  • tools/dhcpv6-pd_ia: create /run/kea on startup (#17674)
  • tools/cpy2remed: Addition of new programmer for nucleo boards (#17550)

Kconfig

  • boards/Kconfig: remove wrongfully added MODULE_AUTO_INIT_LED* sym (#17684)
  • cpu/stm32: Add clock config for mp1 to kconfig (#17521)
  • board/*/kconfig: Fix boards on kconfig blocklist (#17467)
  • boards: Use BOARD.config pattern for kconfig (#17648)
  • cpu/stm32/wl: Model kconfig clocks (#17496)
  • drivers/*/Kconfig: Cleanup of simple drivers (#17669)
  • pkg/littlefs2: model Kconfig (#17882)
  • sys/chunked_ringbuffer: model Kconfig (#17744)
  • sys/fido2: model Kconfig (#17435)
  • {disp,touch}_dev: improve Kconfig at different levels (#17458)

Examples

  • examples/gcoap_block_server: add gcoap block server example (#17843)
  • examples/lorawan: add the possibility to use ABP activation procedure (#11237)
  • examples/gcoap_dtls: match Makefile of examples/gcoap (#17552)
  • examples/twr_aloha: refactor (#17406)
  • examples/twr_aloha: blacklist test on ci (#17557)
  • Make example/emcute_mqtt honor radio settings (#17773)

Testing

  • .github/workflows/test-on-iotlab: add dwm1001 (#17558)
  • tests/*: add BOARDs to Makefile.ci (#17754)
  • tests: add default BOARDS (#17715)
  • CI: disable microbit testing (#17953)
  • murdock: prioritize job collection over build jobs (#17610)
  • murdock: support emulated boards (#17434)
  • murdock: use json output $(BINDIR) size (#17213)
  • tests/*: remove unneeded xtimer_init (#17566)
  • tests/xtimer: remove unneeded timex calls (#17728)
  • tests/driver_dfplayer: use event_thread instead of event_thread_lowest (#17750)
  • tests/periph_uart_nonblocking: migrate to ztimer (#17567)
  • tests/pkg_edhoc: handle multiple interfaces (#17534)
  • tests/pkg_mbedtls: improve entropy test case and doc (#17606)
  • tests/pkg_relic: increase stacksize (#17528)
  • tests/senml: do no include saul_default (#17641)
  • tests/sys_atomic_utils: use ztimer_usec (#17851)
  • tests/sys_crypto: fix potentially uninitialized error (#17718)
  • tests/thread_float: use ztimer_usec (#17835)
  • tests: multiple fixes (#17840)
  • workflow/tool-test: update prior install (#17738)

API Changes

  • drivers/periph_common: add periph_init_buttons to init on-board buttons (#17711)
  • drivers/atwinc15x0: register with netdev (#17887)
  • sys/pm_layered: use array representation, get rid of implicit IDLE mode (#17895)
  • tests: rework eth drivers (#17813)
  • ztimer_periodic: make callback function return bool (#17351), i.e., the logic of the return value is inverted now (ZTIMER_PERIODIC_KEEP_GOING was 0, now it is true).

And 57 minor changes.

Deprecations

Deprecations (3)

  • sys/quad_math: this module has been marked as deprecated and will be removed for the next release
  • sys/sema: add sema_ztimer64 to implement old api, deprecate sema (#17719)
  • periph/flashpage: deprecate *_free functions (#17860)

Removals (3)

  • drivers/at: remove deprecated AT_SEND_ECHO define (#17500)
  • sys/lora: remove deprecated LORA_PAYLOAD_CRC_ON_DEFAULT define (#17517)
  • sys/loramac: remove deprecated LORAMAC_DEFAULT_PUBLIC_NETWORK (#17516)

Bug fixes (39)

  • make: add -ffunction-sections -fdata-sections to LINKFLAGS if LTO=1 (#16789)
  • pkg/openwsn: add patch to use memmove() instead of memcpy() (#17900)
  • [treewide] lora: use int16_t for RSSI value (#17497)
  • boards/common/qn908x: perform elf checksum on shadow copy (#17757)
  • boards/nucleo-f767zi: Fix adc pin config in periph_conf.h (#17560)
  • core/assert: avoid including panic.h with assert.h (#17574)
  • cpu/native: fix build with afl-gcc 11.2 (#17583)
  • cpu/nrf52 radio: Populate info (#17592)
  • cpu/nrf52/radio: fix confirm_op info cast (#17848)
  • cpu/sam0_common/eth: expose correct setup function (#17746)
  • dist/tools/kconfiglib: avoid rewriting /dev/null (#17873)
  • drivers/at86rf215: fix disabling individual modulations (#17667)
  • drivers/atwinc15x0: join multicast groups (#17880)
  • drivers/dose: only disable watchdog when transiting from RECV state (#17716)
  • drivers/ethos: fix build without ethos_stdio (#17608)
  • drivers/mtd_mapper: fix read_page and write_page backend (#17866)
  • examples/lorawan: disable loramac state persistence on EEPROM (#17970)
  • fs/constfs: omit leading '/' in readdir() (#17626)
  • gnrc/ndp: bugfix set O-flag if target is not anycast (#17778)
  • gnrc/nib: don't advertise single address for auto-configuration (#17803)
  • gnrc_netif: fix potential null pointer dereference (#17856)
  • makefiles.kconfig.mk: use EXTERNAL_MODULE_DIRS in Kconfig resolution (#17596)
  • murdock: fix exit -> return in subfunction (#17518)
  • pba-d-01-kw2x: fix clock init by preceding cpu_init with modem clock init (#17857)
  • pkg/fatfs: fix missing mutex header (#17865)
  • pkg/littlefs*: align readdir() with documentation (#17623)
  • pkg/tinydtls/contrib/sock_dtls: fix ep_to_session (#17849)
  • pkg/tinydtls: crypto: remove unnecessary usage of malloc() (#17878)
  • pkg: fix documentation on includes (#17538)
  • shell/sc_gnrc_udp: always use delay in µs (#17657)
  • sys/benchmark: fix divide by zero if runs < 1000 (#17624)
  • sys/event/callback: in init set list_node.next to NULL (#17625)
  • sys/fido2/ctap: fix parsing validation (#17816)
  • sys/net/dhcpv6: miscellaneous tweaks (#17736)
  • sys/ztimer/xtimer_compat: fix bug introduced in #17690 (#17705)
  • sys/ztimer64: fix ztimer64_remove() not properly clearing timer struct (#17720)
  • tests/cpu_avr8_xmega_driver: fix BOARD name (#17749)
  • treewide: initialize several stack-allocated, but uninitialized timer structs (#17855)
  • vfs: Initialize stat buffers so FSs don't have to (#17645)

Known issues

  • 6lo gnrc fragmentation expects driver to block on TX (#7474)
  • 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)
  • at86rf2xx: lost interrupts (#5486)
  • CC2538 RF overlapping PIN usage (#8779)
  • core: "Invalid read of size 4" (#7199)
  • 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 choose global source address. (#13745)
  • ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
  • 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)
  • General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc_border_router stops routing after a while (#16398)
  • gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own packet buffer (#12565)
  • gnrc_ipv6: Multicast is not forwarded if routing node listens to the address (#4527)
  • gnrc_netif_pktq leaks memory (#17924)
  • gnrc_rpl: missing bounds checks in _parse_options (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
  • gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • ieee802154_submac: IPv6 fragmentation broken (#16998)
  • LoRaWan node ISR stack overflowed (#14962)
  • lwip_sock_tcp / sock_async: received events before calling sock_accept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdev_driver_t::recv (#10410)
  • Neighbor Discovery not working after router reboot when using SLAAC (#11038)
  • net: netdev_driver_t::send() doc unclear (#10969)
  • netdev_ieee802154: Mismatch between radio ll address and in memory address (#10380)
  • nrf52: Not able to add global or ULA address to interface (#13280)
  • nrfmin: communication not possible after multicast ping with no interval (#11405)
  • openthread: does not build on current Arch (#10809)
  • ping6 is failing when testing with cc2538dk (#13997)
  • pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
  • Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
  • Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
  • samr30 xpro doesn't seem to use its radio ok (#12761)
  • scan-build errors found during 2019.07 testing (#11852)
  • send data with UDP at 10HZ, the program die (#11860)
  • stale border router does not get replaced (#12210)
  • tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
  • two nodes livelock sending neighbor solicitations back and forth between each other (#16670)
  • Unclear how Router Solicitations are (or should be) handled (#15926)
  • xbee: setting PAN ID sometimes fails (#10338)
  • cpu/native: timer interrupt issue (#6442)
  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periph_timer: systematic proportional error in timer_set (#10545)
  • saml21 system time vs rtc (#10523)
  • Sleep mode for Arduino (#13321)
  • stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
  • sys/newlib: gettimeofday() returns time since boot, not current wall time. (#9187)
  • tests: xtimer_drift gets stuck on native (#6052)
  • xtimer mis-scaling with long sleep times (#9049)
  • xtimer: add's items to the wrong list if the timer overflows between _xtimer_now() and irq_disable() (#7114)
  • xtimer_set_msg: crash when using same message for 2 timers (#10510)
  • xtimer_usleep stuck for small values (#7347)
  • xtimer_usleep wrong delay time (#10073)
  • (almost solved) SPI SD-Card driver: SPI initialisation freeze until timeout (#14439)
  • adc is not a ADC-Driver but a analog pin abstraction (#14424)
  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • floats and doubles being used all over the place. (#12045)
  • mdt_erase success, but vfs_format resets board (esp32-heltec- lora32-v2) (#14506)
  • periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS (#6567)
  • periph: GPIO drivers are not thread safe (#4866)
  • Potential security and safety race conditions on attached devices (#13444)
  • PWM: Single-phase initialization creates flicker (#15121)
  • STM32: SPI clock not returning to idle state and generating additional clock cycles (#11104)
  • TCP client cannot send read only data (#16541)
  • tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
  • Two bugs may lead to NULL dereference. (#15006)
  • examples/ccn-lite: floating point exception while testing on native (#15878)
  • examples/micropython: floating point exception while testing on native (#15870)
  • native getchar is blocking RIOT (#16834)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • SIGFPE on native architecture when printing double floats on Ubuntu 21.04 (#16282)
  • Failing tests on FE310 (Hifive1b) (#13086)
  • [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
  • arm7: printf() with float/double not working (#11885)
  • boards/hifive1: flashing issue (#13104)
  • Cannot use LLVM with Cortex-M boards (#13390)
  • cpu/cortexm_common: irq_enable returns the current state of interrupts (not previous) (#10076)
  • cpu/sam0: flashpage write / read cycle produces different results depending on code layout in flash (#14929)
  • cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
  • gcoap/esp8266: Stack overflow with gcoap example (#13606)
  • I found stm32 DMA periph driver bugs! when I tested stm32l431rc board. (#16242)
  • Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
  • MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
  • MPU doesn't work on cortex-m0+ (#14822)
  • newlib-nano: Printf formatting does not work properly for some numeric types (#1891)
  • periph_timer: Test coverage & broken on STM32F767ZI (#15072)
  • riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
  • stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after __WFI() (#14015)
  • stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • buildtest uses wrong build directory (#9742)
  • make -j flash fails due to missing make dependencies or make flash-only rebuilds the .elf (#16385)
  • Build dependencies - processing order issues (#9913)
  • build: info-build doesn't work with boards without port set (#15185)
  • BUILD_IN_DOCKER ignores USEMODULE (#14504)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • doxygen: riot.css modified by 'make doc' (#8122)
  • macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
  • make: ccache leads to differing binaries (#14264)
  • make: Setting constants on compile time doesn't really set them everywhere (#3256)
  • make: use of immediate value of variables before they have their final value (#8913)
  • Tracking: remove harmful use of export in make and immediate evaluation (#10850)
  • Windows AVR Mega development makefile Error (#6120)

Other issues (56)

  • semtech_loramac_init blocking (#17907)
  • [TRACKING] sys/shell refactoring. (#12105)
  • _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through shell after flashing with J-Link (#13044)
  • make term no longer works with JLinkExe v6.94 (#16022)
  • make term output is inconsistent between boards, ethos and native (#12108)
  • assert: c99 static_assert macro doesn't function for multiple static_asserts in the same scope (#9371)
  • Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
  • boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
  • boards/saml11-xpro: second UART is broken (#17206)
  • Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
  • C++11 extensions in header files (#5561)
  • Can't build relic with benchmarks or tests (#12897)
  • CC2538DK board docs: broken links (#12889)
  • cpu/stm32/periph/rtc overflow error (#16574)
  • cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
  • doc/LOSTANDFOUND: not rendered as expected (#17063)
  • edbg: long lines flooded over serial become garbled (#14548)
  • examples / tests: LoRa tests fail on platforms that don't support LoRa (#14520)
  • feather-m0: make flash reports "device unsupported" (#17722)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • ieee802154_security: Nonce is reused after reboot (#16844)
  • lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP disconnect (#17209)
  • lwip: invalid state transition on ieee802154_submac users (#17208)
  • Making the newlib thread-safe (#4488)
  • mcuboot: flashes but no output (#17524)
  • nanocoap: incomplete response to /.well-known/core request (#10731)
  • newlib-nano: Printf formatting does not work properly with "PRIu8" (#17083)
  • Order of auto_init functions (#13541)
  • pkg/tinydtls: Multiple issues (#16108)
  • Possible memset optimized out in crypto code (#10751)
  • Potential race condition in compile_and_test_for_board.py (#12621)
  • pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
  • RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10 (#10121)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled gracefully (#17874)
  • rust-gcoap example is incompatible with littlefs2 (#17817)
  • scheduler: priority inversion problem (#7365)
  • stdio_ethos: infinite shell loop (#17972)
  • sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
  • sys/riotboot: documentation issues (#11243)
  • sys/stdio_uart: dropped data when received at once (#10639)
  • tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg_libhydrogen: test fails on master for the samr21-xpro with LLVM (#15066)
  • tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and esp32-wroom-32 (#13133)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests/thread_float: crashes on avr-rss2 (#16908)
  • tests: broken with stdio_rtt if auto_init is disabled (#13120)
  • tests: some tests don't work with newlib lock functions. (#12732)
  • Tracker: Reduce scope on unintended COMMON variables (#2346)
  • usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial ports (#15814)
  • Use of multiple CAN bus on compatible boards (#14801)

There are 185 known issues in this release

Fixed Issues since the last release (2022.01)

  • Kconfig: genconfig.py rewrites /dev/null (#17862)
  • gcoap_dtls: Selecting transport at run time is not possible (#16674)
  • LTO broken (binaries too large) (#16202)
  • File systems report names with leading slashes (#14635)

4 fixed issues since last release (2022.01)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

Matrix and Forum

  • Join the RIOT Matrix room at: #riot-os:matrix.org
  • Join the RIOT Forum at: forum.riot-os.org

License

  • The code developed by the RIOT community is licensed under the GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
  • Some external sources and packages are published under a separate license.

All code files contain licensing information.

2022.01

2 years ago

RIOT-2022.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 2022.01 release brings support for new packages, new boards and drivers, as well as several package upgrades and bug fixes. Among others, this release improves the RIOT codebase with:

Rust support

RIOT now offers convenient integration of Rust application programming, with wrappers interfacing to RIOT modules such as timers, network stack.

Improved timers

Many modules have migrated from using xtimer to our more power-efficient alternative ztimer. Also, ztimer64 was introduced, which enables a drop-in replacement for all of xtimer features.

Kconfig support

Kconfig modeling coverage is significantly extended. Nearly all supported boards are now modeled with Kconfig.

Summary:

436 pull requests, composed of 1159 commits, have been merged since the last release, and 11 issues have been solved. 43 people contributed with code in 88 days. 2475 files have been touched with 44925 (+) insertions and 14687 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Full list available at https://github.com/RIOT-OS/RIOT/milestone/37?closed=1

Core

  • core/include/kernel_defines.h: add index_of() macro (#17142)
  • core: Add IS_CT_CONSTANT() (#17273)
  • core: add WITHOUT_PEDANTIC() and DECLARE_CONSTANT() (#17176)
  • core: Warn about using irq_enable (#17433)
  • core: make SCHED_TEST_STACK boolean and default to 1 with DEVELHELP (#17132)

System Libraries

  • sys/architecture: add HAS_ALIGNMENT_OF() helper (#17177)
  • sys/arduino: add assertion to gpio handling (#17443)
  • sys/atomic_utils: add atomic_{load,store}_ptr() (#17256)
  • sys/include/event/periodic: add count (#17276)
  • sys/isrpipe: add isrpipe_write (#17336)
  • sys/sched_rr: Add a round robin scheduler module (#16126)
  • sys/stdio: add optional function stdio_available (#17446)
  • sys/test_utils/result_output: add sort to multiple output check (#17269)
  • sys/tsrb: add peek functions (#17266)
  • sys/tsrb: add tsrb_clear (#17337)
  • sys/ztimer: add 'ztimer_no_periph_rtt' (#17284)
  • sys/ztimer: add some best practices (#17370)
  • sys/ztimer: ztimer_now() add warning regarding comparing now() values (#17404)
  • usb/hid: Add HID report descriptor defines (#17242)
  • sys/arduino: add Serial over stdio support (#17447)
  • sys: introduce sysclk function to retrieve core clock frequency (#17342)
  • sys/new_delete: add malloc/free based new/delete implementation (#17464)
  • event/timeout: remove forced ZTIMER_USEC dependency (#16958)
  • riotboot_dfu: use ztimer instead of xtimer (#17051)
  • riotboot_serial: enter bootloader mode by pin (#17248)
  • schedstatistics: Convert to ztimer (#17216)
  • stdio_rtt: Convert to ztimer (#17122)
  • stdio_semihosting: Convert to ztimer (#17123)
  • sys/can: migrate to ztimer (#17366)
  • sys/cpp11-compat: use new/delete operators from sys/cpp_new_delete (#17475)
  • sys/evtimer: use now returned by set (#17394)
  • sys/fmt: make fmt_s32_dfp() string based (#17106)
  • sys/Makefile.dep: fix event periodic dependency (#17318)
  • sys/picolibc_syscalls_default: support new picolibc stdio globals (#17001)
  • sys/random: default to musl LCG instead of TinyMT (#17188)
  • sys/suit: adjust dependencies for CoAP transport (#17182)
  • sys/test_utils/result_output/json: optional space after symbol (#17034)
  • sys/turo: Allow default selection of json (#17039)
  • sys/ztimer/xtimer2ztimer.cocci: extend and fix api replacements (#17234)
  • sys/ztimer64: default select ztimer64_init (#17414)
  • sys/ztimer64: make _del_entry_from_list() safe for uninit ztimer64_t (#17368)
  • sys/ztimer: remove double ztimer indirection (#17272)
  • sys/ztimer: ztimer_remove report success (#17408)
  • usbus/cdc_acm: Return stall on line coding not supported (#17085)
  • usbus/hid: fix ep_out readiness (#17230)
  • usbus/hid: fix ep_out readiness (#17245)
  • usbus: Bind extra USB config (#17380)
  • usbus: check received setup request data amount (#17203)
  • sys/ztimer64: initial PR (#16928)

Networking

  • gnrc_pktbuf_cmd: add od dependency with gnrc_pktbuf_static (#17228)
  • sys/net/dhcpv6: Add stateless DHCPv6 (#16731)
  • sys/net: Add ipv4/ipv6 pseudomodules (#16966)
  • sys/shell/sc_nimble_netif: add ping subcommand (#16539)
  • dsm: rename DTLS_PEER_MAX and make it dependent on CONFIG_DTLS_PEER_MAX (#16967)
  • gcoap_dtls: destroy session in _tl_send only on connection errors (#16963)
  • gnrc_dhcpv6_client / uhcp: delay router advertisements until prefix was received (#16755)
  • gnrc_gomach: adapt duty recording parameters' namings. (#8954)
  • gnrc_netif: move netdev initialization to ops->init (#16918)
  • lwip: bump to v2.1.3 (#16774)
  • net/gcoap: port to ztimer (#17141)
  • nimble/statconn: use errno return values (#17344)
  • pkg/lwip: Don't control IPv6 via IPv4 flag (#17175)
  • pkg/lwip: Fix dualstack build when only using 6lowpan (#17174)
  • pkg/openthread: bump version to 20200818 + adapt to use CMake to configure the build (#16948)
  • pkg/openthread: migrate to ztimer (#17120)
  • pkg/paho-mqtt: migrate to ztimer (#17143)
  • pkg/semtech-loramac: fix get/set dr command (#17117)
  • sys/evtimer,ztimer: do not depend on ztimer_now64 (#17357)
  • sys/net/gnrc: fix compilation with -Wcast-align (#17157)
  • sys/shell/gnrc_netif: Allow 'ifconfig help' (#17006)
  • test/ieee802154_hal: general cleanup and cosmetic fixes (#16913)
  • tests/lwip_sock: Take lock before calling etharp (#17145)
  • socket_zep: port to radio HAL (#16932)
  • ieee802154/hal: adapt to latest changes of #13943 (#16946)

Packages

  • pkg/lz4: add support for LZ4 compression/decompression (#17178)
  • pkg/uzlib: add support for zlib compression/decompression (#17179)
  • pkg: add support for Elk Tiny Javascript engine (#16887)
  • pkg: add support for FreeRTOS coreJSON library (#16997)
  • pkg/arduino_sdi_12: add SDI-12 for Arduino as package (#16587)
  • hacl: Switch git address to RIOT-OS-pkgmirror (#16941)
  • make: support package mirrors (#16927)
  • pkg/emlearn: bump to 0.12 (#16937)
  • pkg/jerryscript: bump to 2.4.0 (#16938)
  • pkg/mynewt-core/patches: silence cast-align (#17397)
  • pkg/qr-code-generator: bump to 1.7.0 (#16939)
  • pkg/uwb-core: fix wrong header include (#17345)
  • pkg/uwb-core: enable frame filtering, allow usage of common event thread (#17264)
  • pkg/wakaama: use ztimer (#17103)
  • pkg/arduino_sdi_12: support the remote-revb board (#17119)
  • pkg/fatfs: bump version to r0.14b (#16412)
  • Update tiny-asn1 package (#16936)
  • pkg/lvgl: use ztimer instead of xtimer (#17031)
  • pkg: migrate some packages to ztimer (#17309)

Boards

  • boards/feather-m0: add arduino feature (#17401)
  • boards/iotlab-m3: add MTD definition (#17339)
  • boards/nrf9160dk: add riotboot support (#17226)
  • boards/nucleo-g431rb: added PWM configuration (#17030)
  • boards/p-l496g-cell02: add riotboot feature (#17463)
  • boards/stm32f469i-disco: Add DAC (#17214)
  • boards/stm32g031-disco,examples,tests: Added STM32G031-DISCO board (#16959)
  • boards: add board support for Alientek Pandora (#17259)
  • boards: add support for stm32f746g-disco (#17198)
  • boards/common/microbit: fix doxygen grouping (#17440)
  • boards/esp* and cpu/esp: feature definition cleanup (#17438)
  • boards/lora-e5-dev: enable 3.3V and 5V output by default (#17158)
  • boards/lora-e5-dev: fix default DARWIN port (#17373)
  • boards/stm32f469i-disco: Create board (#16898)
  • boards/{calliope-mini,microbit*}: factorize common microbit module, use ztimer (#17124)
  • boards: cpu: replace GPIO_UNDEF by SPI_CS_UNDEF in SPI configuration (#17468)
  • boards: model nrf52 boards (#17299)
  • boards: unify user button defines (#17428)
  • tools/elf2uf2: addition of new PROGRAMMER for RPi-pico (#17348)

CPU

  • Add some Rust building infrastructure and example (#16274)
  • cpu/esp32: add clear bus during init to the I2C software implementation (#17346)
  • cpu/nrf9160: add periph_flashpage support (#17225)
  • cpu/stm32: Add hardening changes to stm32 (#16979)
  • nimble_scanner: rework to enable scanning BLE5 PHYs and extended advertisements (#16843)
  • nrf5x_common: Add qdec peripheral implementation (#17201)
  • cpu/esp32: Add openocd programming support (#16911)
  • cpu/stm32: add driver for the LTDC peripheral (#17437)
  • cpu/stm32: add new usbdev FS support (#17281)
  • cpu/stm32: add support for U5 family (#17410)
  • boards/common/esp8266: Set RTS and DTR to 0 on pyterm. (#16305)
  • cc2538_rf: remove RX Busy detection in request_set_trx_state (#16821)
  • cpu/arm7_common: suppress false positives of cppcheck (#17218)
  • cpu/atmega_common: make cppcheck happy (#17219)
  • cpu/atmega_common: Remember CTC mode with timer_periodic (#17387)
  • cpu/atxmega/include/cpu_conf: ztimer64 arithmetic idle stack fix (#17362)
  • cpu/cortexm_common: make CI happy (#17220)
  • cpu/esp32: make CI happy (#17221)
  • cpu/esp32: place freertos and periph in IRAM (#17087)
  • cpu/esp32: support CPU clocks 2 MHz and 40 MHz (#17413)
  • cpu/esp: change dynamic SSID option handling (#17415)
  • cpu/esp: migrate to ztimer (#17386)
  • cpu/kinetis/include: fix xtimer backend timer selection (#17393)
  • cpu/native/include: other stacksizes based on default (#16956)
  • cpu/native: migrate periph_rtc to ztimer (#17125)
  • cpu/qn908x: migrate ADC periph to ztimer (#17321)
  • cpu/sam0_common: SPI: don't perform DMA transfer for small buffers (#16926)
  • cpu/sam0_common: uart: set oversampling based on baud rate (#17186)
  • cpu/stm32/include/cpu_conf_stm32_common.h: fix typo in macro (#17187)
  • cpu/stm32: bump cmsis repositories to latest releases + extend CPU models kconfig (#17293)
  • cpu/stm32: duplicated ADC devices definitions (#16968)
  • cpu/stm32: migrate adc and eth periphs to ztimer (#17320)
  • cpu/stm32: split periph_cpu.h in sub headers (#17441)
  • cpu: do not auto-select ztimer_periph_rtt for sam0, fe310 (#17395)
  • drivers/periph: use uint_fast8_t as default type (#17191)
  • esp8266: Download Espressif RTOS SDK as a new RIOT PKG (#16425)
  • periph/flashpage: extend API (#16972)
  • periph/flashpage: fix wrong doxygen group (#17202)
  • stm32/usbdev: Use ztimer instead of xtimer (#17047)
  • cpu/esp: compile optional modules in CI (#17314)
  • cpu/stm32/wl: initial periph_adc implementation (#17183)
  • cpu/stm32: enable USB OTG FS on high end L4 (#17302)

Device Drivers

  • drivers/dose: enable standby pin (#16752)
  • drivers/hm330x: initial commit (#16333)
  • drivers: add PCF857X I2C I/O expander driver (#10430)
  • drivers: only build saul interface if saul module is used + add saul_drivers test application (#17470)
  • netdev: add netdev_register_signal (#16922)
  • drivers/ft5x06: add support for touch panel controller (#17448)
  • drivers/stmpe811: add spi mode (#17088)
  • drivers/dose: make use of UART collision detection feature (#16681)
  • driver/at30tse75x: port to ztimer_usec (#17137)
  • drivers/ads101x: migrate to ztimer (#17102)
  • drivers/ata8520e: migrate to ztimer (#17105)
  • drivers/atwinc15x0: migrate to ztimer (#17381)
  • drivers/bmp180: migrate to ztimer (#17101)
  • drivers/dose: calculate timeout based on symbol rate (#16768)
  • drivers/dsp0401: migrate to ztimer (#17110)
  • drivers/mhz19: migrate to ztimer (#17308)
  • drivers/rn2xx3: migrate to ztimer (#17112)
  • drivers/sdcard_spi: convert to ztimer_usec (#17361)
  • drivers/stmpe811: improve interrupt callback management (#17487)
  • drivers/xbee: migrate to ztimer_msec (#17114)
  • drivers: migrate mpu9x50 and si70xx to ztimer (#17358)
  • drivers: migrate some drivers to ztimer (#17315)
  • drivers: remove some useless xtimer includes (#17303)
  • drivers: several cleanups related to xtimer + some ztimer migration (#17375)
  • makefiles: remove PCF857x pseudomodule definitions (#17343)
  • drivers/periph_common: build periph module selectively (#17418)

Documentation

  • boards/lora-e5-dev: add warning in doc (#17185)
  • doc/getting-started.md: added beginner friendly instructions (#17050)
  • doc/rust: Add maintenance guidance (#17505)
  • boards/lora-e5-dev: extended documentation (#17244)
  • boards/stm32f746g-disco: extend documentation (#17310)
  • doc/.../getting-started.md: update software requirements (#17002)
  • doc/boards/rpi-pico: Addition of section concerning shell access (#17454)
  • doc: fix libcoap removal commit (#17378)
  • pkg/openwsn: update doc (#17131)
  • tools/zep_dispatch: document foren6 usage (#17326)
  • doc: fix missing or non matching arguments in Doxygen documentation (#17461)

Build System / Tooling

  • dist/tools/ci: add can_fast_ci_run.py (#17239)
  • dist/tools/doccheck/exclude_patterns: add new warnings (#17104)
  • dist/tools/doccheck: add create_pattern.sh (#17082)
  • make: add info-emulated-boards helper target (#16975)
  • Makefile.base: add SUBMODULES_NO_SRC to excluded a selected SUBMODULE *.c (#17222)
  • tools/compile_and_test_for_board: apply black automatic code formatter + add format checker in tox (#16905)
  • tools/insufficient_memory: add create_makefile.ci.sh and Makefile.ci make target (#16109)
  • tools/pythonlibs/riotctrl_*: add code format check with black (#16915)
  • tools/zep_dispatch: add support for foren6 sniffer (#16879)
  • tools/zep_dispatch: add topology generator (#16889)
  • makefiles/cflags.inc.mk: Add -Wcast-align (#14955)
  • cppcheck: output all annotations as error (#17134)
  • dist/tools/coccinelle/force: remove static.cocci (#17139)
  • Makefile.include: remove warning about EXTERNAL_MODULE_DIRS API change (#16984)
  • Makefile.include: rename Makefile.ci target to create-Makefile.ci (#17205)
  • makefiles/docker.inc.mk: pass TEST_KCONFIG (#17398)
  • murdock: make use of can_fast_ci_run.py (#17325)
  • static-tests: disable cppcheck (#17282)
  • tools/backport_pr: check code format with black (#16907)
  • tools: can_fast_ci_run.py: ignore comment changes for \.[ch]$ (#17405)

Kconfig

  • cpu/avr8: model kconfig (#16929)
  • cpu/efm32: model kconfig (#16912)
  • cpu/esp: integrate CPU clock frequency selection in Kconfig (#17424)
  • cpu/msp430: add Kconfig (#17290)
  • cpu/nrf52: initial kconfig modeling (no netif) (#16837)
  • cpu/nrf9160: add Kconfig dependencies (#17291)
  • cpu/riscv: model Kconfig (#16909)
  • makefiles/kconfig: add board & CPU config variables (#17376)
  • pkg/uwb*: add Kconfig dependency modelling (#16780)
  • sys/trace: migrate to ztimer and add Kconfig support (#17319)
  • .murdock: Add modules/pkgs diff of make/kconfig (#17094)
  • .murdock: Add nucleo boards to kconfig test (#16845)
  • .murdock: Add same54-xpro to kconfig tests (#17255)
  • .murdock: Kconfig test apps for all boards (#17402)
  • boards/adafruit-itsybitsy-m4: Model kconfig (#17331)
  • boards/feather-m0*: base board definition in Kconfig (#17445)
  • boards/samd21-based: model Kconfig (#17355)
  • boards/saml21-based: model kconfig (#17270)
  • boards/stm32-based: model Kconfig (#17374)
  • cpu/esp{32,8266}: model kconfig (#17232)
  • cpu/kinetis: model kconfig (#17235)
  • cpu/lpc23xx: model kconfig (#17279)
  • cpu/nrf51: model kconfig (#17274)
  • cpu/qn908x: model kconfig (#17277)
  • cpu/{cc26xx, cc13xx}: model kconfig (#17236)
  • drivers/sx126x/Kconfig: rework model selection (#17289)
  • sys/benchmark/kconfig: cleanup ztimer dependency (#17317)
  • sys/log: model Kconfig (#17286)
  • sys/vfs: model Kconfig (#17287)

Examples

  • example/gcoap: add LWIP make option (#17130)
  • examples/gcoap: split client and server implementation (#17471)
  • examples/gnrc_networking_subnets: remove broken symlink (#17389)
  • examples/lorawan: use ztimer_msec if not rtc (#17181)
  • examples/gnrc_networking: cleanup and static function declarations in udp.c (#17384)

Testing

  • pkg/fff: Add fake functions framework package (#17076)
  • murdock: add some doc on how to efficiently limit builds (#17312)
  • tests/bench_ztimer: add port of bench_xtimer (#17391)
  • tests/pkg_ucglib: add missing function declaration (#17347)
  • gh/workflows/release-tests: update LoRaWAN parameters to ttnv3 (#17009)
  • gha/workflows/release-test: set python version to 3.8 (#17038)
  • tests/*: Fix nightly failures due to f-string (#17283)
  • tests/malloc: fix counting bugs (#17323)
  • tests/periph_adc: migrate to ztimer (#17322)
  • tests/periph_timer_periodic: spice up test (#17388)
  • tests/unittests/tests-base64: enlarge test buffer for worst case (#17292)
  • test/pkg_u8g2: increase main stacksize for SDL (#16954)
  • tests/pkg_fatfs{_vfs}: drop whitelist (#17478)
  • Fix some cppcheck errors (#17271)

API Changes

  • core/kernel_defines.h: drop ALIGN_OF() (#17267)
  • core/kernel_defines: drop BUILD_BUG_ON() (#17268)
  • core/msg: make msg_avail() return 0 on no queue (#17262)
  • cpu: call cpu_init() from startup code, not from board (#16055)
  • drivers/periph_i2c: let i2c_acquire return void (#17275)
  • sys/ztimer: ztimer_set() return the now value (#17385)
  • USB: refactor to xmit-based API (#17064)

Deprecations

Deprecations (2)

  • cpu/mips: deprecate mips cpu (#17304)
  • sys/include/xtimer.h: deprecate nanosleep (#17296)
  • sys/include/evtimer.h: deprecate evtimer_now_min (#17357)
  • usbdev/USBUS: deprecate transfer failure reporting report (#17046)

Removals (9)

  • boards/fox: remove BOARD (#17021)
  • dist/iotlab: remove deprecated auto-ssh backward compatibility (#17476)
  • drivers/ethos: remove deprecated USE_ETHOS_FOR_STDIO define (#17499)
  • make: remove deprecation warnings raised with flasher tools old vars (#17490)
  • pkg/libcoap: remove (#17163)
  • sys/asymcute: remove deprecated CONFIG_ASYMCUTE_BUFSIZE_EXP (#17481)
  • sys/crypto: remove deprecated CIPHER_AES_128 (#17480)
  • sys/saul_reg: remove deprecated saul_reg_rm function (#17489)
  • sys/shell: remove deprecated SHELL_NO_{ECHO,PROMPT} defines (#17484)

Bug fixes (66)

  • cpu/native: add -no-pie to LINKFLAGS (#16186)
  • boards/adafruit-clue: use internal RC oscillator (#17069)
  • boards/feather-m0-*: fix Arduino feature in Kconfig (#17444)
  • boards/nrf9160dk: fix LED macros (#17328)
  • boards/nucleo-g07xrb: fix or exclude some doxygen warnings (#17079)
  • boards/nucleo-g07xrb: fix or exclude some doxygen warnings [backport 2021.10] (#17084)
  • boards/stm32f723e-disco: use connect_assert_srst with openocd (#17462)
  • boards/stm32f746g-disco: use connect_assert_srst with openocd (#17449)
  • boards/stm32f769i-disco: fix and cleanup default configuration (#17199)
  • cdc_ecm: Truncate frames at max ethernet size (#17200)
  • cpu/atmega1281: fix pcint (#17227)
  • cpu/esp*: small documentation fixes (#17456)
  • cpu/esp32: fix esp_wifi_enterprise compilation problem (#17306)
  • cpu/esp8266: fix problems with ESP WiFi and migration to ztimer (#17427)
  • cpu/esp8266: place freertos functions in IRAM (#17080)
  • cpu/esp: revert the change for default definition of ESP_WIFI_PASS (#17420)
  • cpu/esp_common: fix unaligned access in periph_flashpage (#17150)
  • cpu/native: align stack in thread_stack_init() (#17155)
  • cpu/sam0: prevent disabled irq from being called (#17007)
  • cpu/stm32/periph/usbdev: fix alignment issues (#17154)
  • cpu/stm32: clone cmsis header in build/stm32 (#17212)
  • dhcpv6_client: keep integers in retransmission calculations signed (#16992)
  • doc: fix the reference to libcoap removal commit in LOSTANDFOUND.md (#17371)
  • driver/css811: fix read status (#17340)
  • drivers/ccs811: fix of documentation (#17169)
  • drivers/dht: correct interpreting raw values (#16934)
  • drivers/dose: fix standby mode (#17184)
  • drivers/encx24j600: fix unaligned memory access (#17156)
  • drivers/lis3dh: fix unaligned memory access (#17149)
  • drivers/sx126x: fix sync word and TX PA configuration (#17138)
  • ethos: move bulk of state machine out of ISR context (#17265)
  • Fix NDEBUG compilation problems (#14364)
  • gnrc_ipv6_nib: queue packets that trigger probing on border router (#16947)
  • ieee802154 / tests/unittests: fix all-asan reported errors (#17329)
  • Makefile.base: cleanup non selected source object files (#16945)
  • Makefile.base: do not clean objects of bindist modules (#16981)
  • makefile.dep: require arch_% cpu_core_% features first (#17224)
  • murdock: don't run can_fast_ci_run if FULL_BUILD==1 (#17495)
  • nimble: fix nimble_scanner regression bugs (#17334)
  • pkg/arduino_sdi_12: fix for the feather-m0 board (#17501)
  • pkg/ccn-ndn: migrate to ztimer (#17377)
  • pkg/littlefs{,2}: fix compilation with -Wcast-align (#17151)
  • pkg/nimble: version bump to fix broken scanning (#16960)
  • pkg/paho-mqtt: fix memory corruption (#17503)
  • pkg/relic: bump to current master (#17161)
  • pycrypto: use pycryptodome instead (#17107)
  • SECURITY.md: fix broken email reference (#17118)
  • shell/gnrc_icmpv6_echo: Fix hang with no msg queue (#17261)
  • sys/fido2: fix CBOR parsing (#17192)
  • sys/fido2: fix CBOR parsing [backport 2021.10] (#17193)
  • sys/net/dns: mark dns_hdr_t as packed (#17153)
  • sys/net/fib: fix compilation with -Wcast-align (#17194)
  • sys/net/gcoap: Use socket _buf API to recognize truncated requests (#16378)
  • sys/posix/socket: align struct sockaddr{,_storage} (#17152)
  • sys/posix/socket: use explicit bind (#16852)
  • sys/test_utils/result_output: fix turo_float() precision value (#17036)
  • sys/ztimer/kconfig: enable xtimer compat only with timer backend (#17307)
  • sys/ztimer: don't access non-existent timer (#17409)
  • sys/ztimer: don't default to rtc for ztimer_sec (#17113)
  • sys/ztimer: fix backend selection (#17372)
  • tests/socket_zep: fix automatic test (#17432)
  • tests/unittests: fix unaligned access (#17195)
  • tools/openocd: check OPENOCD_VERIFY after IMAGE_OFFSET is computed (#17251)
  • tools/zep_dispatch: forward based on source addr, not MAC addr (#16957)
  • turo: some json fixes (#17027)
  • usbus/dfu: fix underflow condition while updating firmware (#17128)

Known issues

  • 6lo gnrc fragmentation expects driver to block on TX (#7474)
  • 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)
  • at86rf2xx: lost interrupts (#5486)
  • CC2538 RF overlapping PIN usage (#8779)
  • core: "Invalid read of size 4" (#7199)
  • 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 choose global source address. (#13745)
  • ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
  • 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)
  • General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc_border_router stops routing after a while (#16398)
  • gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own packet buffer (#12565)
  • gnrc_ipv6: Multicast is not forwarded if routing node listens to the address (#4527)
  • gnrc_rpl: missing bounds checks in _parse_options (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • ieee802154_submac: IPv6 fragmentation broken (#16998)
  • LoRaWan node ISR stack overflowed (#14962)
  • lwip_sock_tcp / sock_async: received events before calling sock_accept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdev_driver_t::recv (#10410)
  • net: netdev_driver_t::send() doc unclear (#10969)
  • netdev_ieee802154: Mismatch between radio ll address and in memory address (#10380)
  • nrf52: Not able to add global or ULA address to interface (#13280)
  • nrfmin: communication not possible after multicast ping with no interval (#11405)
  • openthread: does not build on current Arch (#10809)
  • ping6 is failing when testing with cc2538dk (#13997)
  • pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
  • Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
  • Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
  • samr30 xpro doesn't seem to use its radio ok (#12761)
  • scan-build errors found during 2019.07 testing (#11852)
  • send data with UDP at 10HZ, the program die (#11860)
  • stale border router does not get replaced (#12210)
  • tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
  • two nodes livelock sending neighbor solicitations back and forth between each other (#16670)
  • Unclear how Router Solicitations are (or should be) handled (#15926)
  • xbee: setting PAN ID sometimes fails (#10338)
  • cpu/native: timer interrupt issue (#6442)
  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periph_timer: systematic proportional error in timer_set (#10545)
  • saml21 system time vs rtc (#10523)
  • Sleep mode for Arduino (#13321)
  • stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
  • sys/newlib: gettimeofday() returns time since boot, not current wall time. (#9187)
  • tests: xtimer_drift gets stuck on native (#6052)
  • xtimer mis-scaling with long sleep times (#9049)
  • xtimer: add's items to the wrong list if the timer overflows between _xtimer_now() and irq_disable() (#7114)
  • xtimer_set_msg: crash when using same message for 2 timers (#10510)
  • xtimer_usleep stuck for small values (#7347)
  • xtimer_usleep wrong delay time (#10073)
  • (almost solved) SPI SD-Card driver: SPI initialisation freeze until timeout (#14439)
  • adc is not a ADC-Driver but a analog pin abstraction (#14424)
  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • floats and doubles being used all over the place. (#12045)
  • mdt_erase success, but vfs_format resets board (esp32-heltec- lora32-v2) (#14506)
  • periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS (#6567)
  • periph: GPIO drivers are not thread safe (#4866)
  • Potential security and safety race conditions on attached devices (#13444)
  • PWM: Single-phase initialization creates flicker (#15121)
  • STM32: SPI clock not returning to idle state and generating additional clock cycles (#11104)
  • TCP client cannot send read only data (#16541)
  • Two bugs may lead to NULL dereference. (#15006)
  • examples/ccn-lite: floating point exception while testing on native (#15878)
  • examples/micropython: floating point exception while testing on native (#15870)
  • native getchar is blocking RIOT (#16834)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • SIGFPE on native architecture when printing double floats on Ubuntu 21.04 (#16282)
  • Failing tests on FE310 (Hifive1b) (#13086)
  • [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
  • arm7: printf() with float/double not working (#11885)
  • boards/hifive1: flashing issue (#13104)
  • Cannot use LLVM with Cortex-M boards (#13390)
  • cpu/cortexm_common: irq_enable returns the current state of interrupts (not previous) (#10076)
  • cpu/sam0: flashpage write / read cycle produces different results depending on code layout in flash (#14929)
  • cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
  • gcoap/esp8266: Stack overflow with gcoap example (#13606)
  • I found stm32 DMA periph driver bugs! when I tested stm32l431rc board. (#16242)
  • Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
  • MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
  • MPU doesn't work on cortex-m0+ (#14822)
  • newlib-nano: Printf formatting does not work properly for some numeric types (#1891)
  • periph_timer: Test coverage & broken on STM32F767ZI (#15072)
  • riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
  • stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after __WFI() (#14015)
  • stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • buildtest uses wrong build directory (#9742)
  • make -j flash fails due to missing make dependencies or make flash-only rebuilds the .elf (#16385)
  • Build dependencies - processing order issues (#9913)
  • build: info-build doesn't work with boards without port set (#15185)
  • BUILD_IN_DOCKER ignores USEMODULE (#14504)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • doxygen: riot.css modified by 'make doc' (#8122)
  • LTO broken (binaries too large) (#16202)
  • macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
  • make: ccache leads to differing binaries (#14264)
  • make: Setting constants on compile time doesn't really set them everywhere (#3256)
  • make: use of immediate value of variables before they have their final value (#8913)
  • Tracking: remove harmful use of export in make and immediate evaluation (#10850)
  • Windows AVR Mega development makefile Error (#6120)

Other issues (53)

  • [TRACKING] sys/shell refactoring. (#12105)
  • _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through shell after flashing with J-Link (#13044)
  • make term no longer works with JLinkExe v6.94 (#16022)
  • make term output is inconsistent between boards, ethos and native (#12108)
  • assert: c99 static_assert macro doesn't function for multiple static_asserts in the same scope (#9371)
  • Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
  • boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
  • boards/saml11-xpro: second UART is broken (#17206)
  • Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
  • C++11 extensions in header files (#5561)
  • Can't build relic with benchmarks or tests (#12897)
  • CC2538DK board docs: broken links (#12889)
  • cpu/stm32/periph/rtc overflow error (#16574)
  • cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
  • doc/LOSTANDFOUND: not rendered as expected (#17063)
  • edbg: long lines flooded over serial become garbled (#14548)
  • examples / tests: LoRa tests fail on platforms that don't support LoRa (#14520)
  • File systems report names with leading slashes (#14635)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • gcoap_dtls: Selecting transport at run time is not possible (#16674)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • ieee802154_security: Nonce is reused after reboot (#16844)
  • lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP disconnect (#17209)
  • lwip: invalid state transition on ieee802154_submac users (#17208)
  • Making the newlib thread-safe (#4488)
  • mcuboot: flashes but no output (#17524)
  • nanocoap: incomplete response to /.well-known/core request (#10731)
  • newlib-nano: Printf formatting does not work properly with "PRIu8" (#17083)
  • Order of auto_init functions (#13541)
  • pkg/tinydtls: Multiple issues (#16108)
  • Possible memset optimized out in crypto code (#10751)
  • Potential race condition in compile_and_test_for_board.py (#12621)
  • pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
  • RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10 (#10121)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • scheduler: priority inversion problem (#7365)
  • sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
  • sys/riotboot: documentation issues (#11243)
  • sys/stdio_uart: dropped data when received at once (#10639)
  • tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg_libhydrogen: test fails on master for the samr21-xpro with LLVM (#15066)
  • tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and esp32-wroom-32 (#13133)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests/thread_float: crashes on avr-rss2 (#16908)
  • tests: broken with stdio_rtt if auto_init is disabled (#13120)
  • tests: some tests don't work with newlib lock functions. (#12732)
  • Tracker: Reduce scope on unintended COMMON variables (#2346)
  • usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial ports (#15814)
  • Use of multiple CAN bus on compatible boards (#14801)

There are 179 known issues in this release

Fixed Issues since the last release (2021.10)

  • sx127x: wrong RSSI values (#17451)
  • drivers/aip31068: initialization fails in most cases when using esp_i2c_sw (#17311)
  • cpu/esp32: esp_wifi_enterprise compilation error (#17305)
  • ethos: race condition seems to cause packet loss (#17254)
  • tests/lwip_sock_ip: failing on native when using IPV4 (#17144)
  • Sam boards: isr_eic call all IRQ raised without taking into account their status (enabled/disabled) (#16978)
  • esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi (#16281)
  • esp32: can't use newer C++ standard than c++11 (#15685)
  • tests/mpu_noexec_ram: fails on i-nucleo-lrwan1 (#14572)
  • Different build behavior between murdock and riot/riotbuild:latest image (#9645)
  • pkg: libcoap is partially broken and outdated (#7737)

11 fixed issues since last release (2021.10)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

Matrix and Forum

  • Join the RIOT Matrix room at: #riot-os:matrix.org
  • Join the RIOT Forum at: forum.riot-os.org

License

  • The code developed by the RIOT community is licensed under the GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
  • Some external sources and packages are published under a separate license.

All code files contain licensing information.

2021.10

2 years ago

RIOT-2021.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, softreal-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 2021.10 release includes:

The last three months again brought many new features, fixes and improvements to the RIOT codebase. There is new hardware support, new helper functions and many new modules that help with building IoT applications.

Some of the new features are:

GCOAP DTLS (#15549)

The GCOAP CoAP library now supports transport encryption via tinyDTLS. This is a compile-time toggle, so either all requests are encrypted or none. There is already a PR (#16688) that will allow to mix encrypted and unencrypted requests.

FIDO2 support (#16489)

We now have an implementation of the Fast Identity Online 2 (FIDO2) specification. With this you can use any RIOT device with USB support as an authentication token similar to the YubiKey.

RPL-over-BLE (#16364)

The 6LoWPAN over Bluetooth Low Energy module has gained support for the RPL routing protocol. With this it's now possible to set up IPv6 based mesh networks over BLE on chips supported by the Nimble Bluetooth stack.

GNRC TCP (#16494)

RIOT's native GNRC network stack now has support for the TCP protocol via the socket API. Now you can switch between LWIP and GNRC without changing your application.

DHCPv6 relay agent (#16606)

The DHCP module can now act as a relay, forwarding DHCPv6 requests for multihop-operation.

DHCPv6 IA_NA support (#16228)

The DHCPv6 client can now also request non-temporary addresses as an alternative to Stateless Access Autoconfiguration (SLAAC) that is used by default. The feature can be enabled by selecting the dhcpv6_client_ia_na module.

gnrc_ipv6_auto_subnets (#16536, #16750)

This new module allows to split a large IPv6 prefix into smaller ones that can be used to configure downstream interfaces with a prefix. The process can be repeated recursively for a cascading subnet topology.

This can be a lightweight alternative to DHCPv6 that only relies on router advertisements.

For more details on this, see the talk at the 2021 RIOT summit.

UDP benchmark (#16710)

The examples section has gained a UDP benchmark. This can be used as a network stress test and is accompanied by a host tool (dist/tools/benchmark_udp) that acts as the benchmark server to which the benchmark clients will connect.

URI template processor (#16702)

URI templates up to level 3 (according to RFC 6570) can now be parsed with this tool.

riotboot serial flasher (#15493)

RIOT's native bootloader has gained the ability to load a firmware via UART. This allows to program a board without the need for external programmers, a serial console is enough.

RTC mem for sam0 and STM32 (#16758)

Many real-time clocks have the ability to store a few bytes in their memory as user data. This memory is retained across reboots and deep sleep.

We now have an interface for this feature and implemented it on SAM L21, SAM D5x/E5x and STM32.

LWIP improvements (#16162, #16761, #16636, #16762)

The alternative LWIP network stack can now make use of multiple interfaces. Initialisation is done using the new XFA (cross-file array) feature so new drivers can be added by only adding a single file.

Advanced topologies in ZEP dispatcher (#15773)

With socket_zep and the ZEP dispatcher it is possible to simulate a virtual IEEE 802.15.4 network with native nodes. ZEP dispatcher has now gained support for lossy connections that make this simulation behave closer to reality.

There are also PRs pending to automatically generate such topologies (#16889) and to hook up the ZEP dispatcher to the foren6 network visualizer (#16879).

RIOT_VERSION_CODE macro (#16765)

We have added a RIOT_VERSION_CODE macro that can be used by external modules / boards to check against which RIOT version it is compiled.

This allows to react to API changes if the module is built against different versions of RIOT.

gnrc_netif_ipv6_wait_for_global_address() (#16824)

For apps that want to connect to a remote server, send some data and then go back to sleep, there is now the new gnrc_netif_ipv6_wait_for_global_address() function.

This function blocks until a global address has been configured (e.g. via router advertisement) or a timeout happens. So no more guessing if a connection can yet be established or if the interface is not configured yet.

This feature depends on the gnrc_netif_bus module.

netutils_get_ipv6() (#16634)

This simple function can parse a IPv6 address from a string. But that's not all - if the sock_dns module is enabled, the string can also be a hostname which will then be resolved.

This provides a small and simple alternative to getaddrinfo() that can be used by shell commands and applications alike.

gnrc_icmpv6_echo corruption detection (#15622)

On Linux the ping command from iputils has the neat feature that it fills the payload with of the ICMP echo request with a pattern that is then echoed back by the receiver.

That means it can detect if the payload got corrupted on the way, e.g. by broken fragmentation or other errors.

The RIOT ping command now also implements this feature that lets you easily detect if something broke along the way.

New Hardware Support

In this cycle we have seen the addition of three new MCU families! Our latest additions are the Raspberry Pi RP2040 (#16609) and the GD32VF103 RISC-V MCU from GigaDevice (#16036).

Both only have very basic support so far (only GPIO, UART and timers), which still leaves many low hanging fruits for adding peripheral drivers. (#15822, #16935) Patches welcome!

The nRF9160 is closer to it's nRF52 siblings (#16650), but brings GPS and LTE-M/NB-IoT peripherals. While we are not there yet, there is ongoing work to also support these in RIOT.

The ATxmega family of 8-bit MCUs can now make use of the EBI interface to use external memory. (#16288) The new XMEGA-A1 Xplained already makes use of this feature. (#15758)

On the STM32 side we have now support for the nucleo-wl55jc and it's LoRa transceiver. The IEEE 802.15.4 / BLE radio on the STM32WB family is however still waiting for a driver.

The common LM75 family of temperature drivers is now supported by RIOT. (#16678)

The Ethernet driver for the SAM E5x line of MCUs is now stable. (#16683)

The sub-MAC layer that implements common MAC features for IEEE 802.15.4 radios has again seen many improvements. It is currently used by the nRF52 and CC2538 line of MCUs.

API changes

The spi_acquire() no longer returns an error code but will throw an assertion if called with the wrong parameters. This allows to speed up SPI operations a bit as SPI parameters are usually fixed at compile time.

The gnrc_netdev_default was replaced by the network stack agnostic netdev_default module.

For now gnrc_netdev_default remains an alias for netdev_default, but it will be removed in a future release.

Summary

263 pull requests, composed of 590 commits, have been merged since the last release, and 14 issues have been solved. 36 people contributed with code in 98 days. 1756 files have been touched with 138909 (+) insertions and 12027 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core (3)

  • core/sched: add runq_callback hook and runq inspection functions (#16463)
  • core: add irq_is_enabled() function to irq interface (#11117)
  • core/msg doc: Clarify; elaborating on interaction with queue (#16794)

System Libraries (12)

  • riotboot: implement serial flasher (#15493)
  • FIDO2 support in RIOT (#16489)
  • test_utils: add UDP benchmark (#16710)
  • uri_parser: provide function to split query (#16695)
  • usbus/hid_io: add missing header file, add RX callback function (#16689)
  • ut_process: initial import of a URI template processor (#16702)
  • sys/picolibc_syscalls_default: support new picolibc stdio globals [backport 2021.10] (#17020)
  • sys/random/fortuna: change interval ressed to ms (#16594)
  • sys/shell/commands/gnrc_icmpv6_echo: test for ICMPv6 reply corruption (#15622)
  • sys/shell/commands: gnrc_icmpv6_echo: use msg_avail() (#16611)
  • uri_parser: constify result (#16707)
  • sys/credman: add key load functions (#16263)

Networking (49)

  • dhcpv6_relay: initial import of a lightweight DHCPv6 relay agent (#16606)
  • gnrc/netif: add gnrc_netif_ipv6_wait_for_global_address() (#16824)
  • gnrc_ipv6_nib: handle route information option and add config to add to final RAs (#16568)
  • gnrc_ipv6_simple_subnets: auto-configuration for nested subnets on a simple tree topology (#16536)
  • gnrc_netif: add gnrc_netif_ipv6_add_prefix() & helper functions (#16672)
  • gnrc_sock_tcp: add gnrc sock tcp (#16494)
  • gnrc_tcp: Add GNRC_TCP_NO_TIMEOUT (#16735)
  • net/BLE: add support for RPL-over-BLE (#16364)
  • net/gcoap: support DTLS (#15549)
  • net/gnrc_lorawan: implement unconfirmed uplink redundancy (#15946)
  • net/netif: add function to get interface by name from a buffer (#16709)
  • netutils: add netutils_get_ipv6() (#16634)
  • sys/net/dhcpv6: Add IA_NA support to the DHCPv6 client (#16228)
  • tests/gnrc_lorawan: add initial tests (#16654)
  • dhcpv6_client: make IA_PD an optional module (#16658)
  • dhcpv6_client: mrd calculation fixed (#16679)
  • dhcpv6_client: refactor to use event_timeout for non-sock timeouts (#16668)
  • drivers/sx126x : r/NETOPT_RX_TIMEOUT/NETOPT_RX_SYMBOL_TIMEOUT (#16599)
  • gnrc/ipv6_auto_subnets: relax topology requirements (#16750)
  • gnrc/nib: consolidate prefix removal code in _nib_offl_remove_prefix() (#16729)
  • gnrc_ipv6_nib: provide functions to get offset of public timestamps (#16706)
  • gnrc_netif_pktq: schedule immediately if timer us is equal to zero (#16745)
  • gnrc_tcp: align with sock tcp (#16493)
  • gnrc_tcp: experimental feature "dynamic msl" (#16764)
  • gnrc_tcp: handle zero size buffers (#16738)
  • ipv6: fix typo in ipv6_addr_to_str documentation (#16828)
  • netdev/lora: fix size of NETOPT_RX_SYMBOL_TIMEOUT (#16604)
  • sock_dns: factor out message parsing and composition (#16669)
  • sys/net/dhcpv6: Refactor DHCPv6 client (#16728)
  • sys/net/dhcpv6: Refactor IA_NA implementation (#16724)
  • sys/net/netopt: Drop deprecated NETOPT_MAX_PACKET_SIZE (#16023)
  • tree-wide: avoid explicit cast to netdev (#16577)

Packages (8)

  • pkg/wakaama: add get set functions and cleanup client connection (#16203)
  • make: support package mirrors [backport 2021.10] (#16996)
  • pkg/edhoc-c: ignore llvm flagged error (#16871)
  • pkg/edhoc-c: remove nimble blacklist (#16819)
  • pkg/edhoc: bump version (#16708)
  • pkg/nanocbor: bump version (#16829)
  • pkg/tinydtls: bump version (#16624)
  • pkg/nimble/autoadv: make AD flag optional (#16703)
  • pkg/nimble: bump version, rmv patches (#16830)
  • pkg/nimble: configure BLE_LL_INIT_SLOT_SIZE to 1 (#16602)
  • pkg/nimble: have RIOT always initialize nimble timers (#16623)
  • pkg/nimble: use tinycrypt pkg (#16540)
  • pkg/lwip: add auto-init for DOSE & at86rf215, cc2538_rf (#16761)
  • pkg/lwip: Add thread safety check when using DEVELHELP (#16259)
  • pkg/nimble/netif: add nimble_netif_accept_direct() (#16603)
  • pkg/nimble/scanner: add function to set scan duration (#16701)
  • pkg/lwip: Allow initializing different types of netifs (#16162)
  • pkg/lwip: implement netif_get_name() (#16741)
  • pkg/semtech-loramac: forward uplink schedule request to upper layer (#16961)
  • pkg/tinydtls: handling of close_notify (#16422)

Boards (19)

  • boards/{pic32-wifire,6lowpan-clicker}: Add CLOCK_CORECLOCK (#16607)
  • boards: Introduce atxmega-a1-xplained board (#16289)
  • gd32v/seeedstudio-gd32: Initial support (#16036)
  • boards/adafruit-clue: fix doxygen warnings (#16847)
  • boards/lora-e5-dev: initial support (#16660)
  • boards/nrf52: replace gnrc_netdev_default with netdev_default (#16788)
  • boards/saml21-xpro: configure UART & SPI on EXT2, 3 (#16694)

CPU (27)

  • cpu/atxmega/periph: Add ebi driver (#16288)
  • cpu/atxmega: Fix features config (#16742)
  • cpu/nrf9160: add initial support for nRF9160DK board (#16650)
  • cpu/nrf9160: add twi and spi support (#16814)
  • cpu/rpx0xx: add periph timer (#16627)
  • cpu/rpx0xx: port RIOT to the Raspberry Pi RP2040 MCU (#16609)
  • cpu/stm32: added ADC for g0 (#16885)
  • cpu/stm32: added APB12 bus multiplier entry for applicable cpus (#16881)
  • cpu/nrf52: i2c: add support for 16-bit register addresses (#16711)
  • cpu/riscv: add CPU_ARCH information (#16877)
  • cpu/stm32: add rtc_mem (#16802)
  • cpu/stm32: added RAM_LEN identifier for stm32g03x (#16886)
  • stm32/spi : Add check for GPIO_UNDEF (#16625)
  • cpu/nrf52: add SAUL driver for VDDH sensor (#16003)
  • avr_libc_extra: implement strerror() (#16717)
  • cpu/cc2538: don't pollute global namespace with cc2538_rfcore.h (#16863)
  • cpu/kinetis: fix RAM_LEN calculation (#16608)
  • cpu/native: fix thread_yield_higher() with IRQs disabled (#16754)
  • cpu/native: make use of stdio_read() / stdio_write() (#16822)
  • cpu/rpx0xx: fix minor gpio warnings (#16685)
  • cpu/sam0: improve ethernet driver resilience (#16683)
  • cpu/stm32/periph/rtc_all.c for CPU_FAM_STM32L5 support. (#16656)
  • riscv: Simplify reset trampoline (#16876)

Device Drivers (7)

  • drivers/cc2538_rf: remove cc2538_rf_netdev_legacy (#16628)
  • drivers/nrf802154: remove nrf802154_rf_netdev_legacy (#16630)
  • drivers/sx127x: remove ZTIMER_USEC dependency (#15030)
  • ieee802154/radio_hal: detach hal descriptor from driver (#16534)
  • ieee802154/submac: reimplement using FSM (#16746)
  • ieee802154/submac: avoid race condition between RX_DONE and ACK_TIMEOUT (#16964)
  • ieee802154/submac: fix leftovers of #16746 (#16823)
  • drivers/dose: make use of start condition received interrupt (#16506)
  • drivers/periph: define rtc_mem and implement it for sam0_common (#16758)
  • drivers/cc110x: add power off (sleep) functions (#16232)
  • drivers/lm75: add SAUL integration (#16763)
  • drivers/lpsxxx: add support for lps22hh (#16880)
  • rtt_rtc: add rtt_rtc_settimeofday() & rtt_rtc_gettimeofday() (#16682)
  • drivers/at86rf215: remove msg queue dependency (#16747)
  • drivers/lm75: driver for the lm75 sensor and derivatives (#16678)
  • sx126x: add support for multiple simultaneous variants (#16597)
  • drivers/ili9341: add rotation mode to ili9341_params_t (#16773)
  • drivers/sx126x: Add support for Nucleo -WL55JC (#16579)
  • drivers/cc110x: use pseudo-modules for band selection (#16865)

Documentation (9)

  • boards/nrf52840dongle docs: Introduce "quick start" section (#15658)
  • dist/tools/doccheck: add exclude file for warnings and use it (#16779)
  • cpu: fix doxygen grouping warnings (#16813)
  • doc/doxygen/src/advanced-build-system-tricks: fix no udev link (#16810)
  • doc/doxygen: increase dot graph max nodes (#16686)
  • doc/porting-boards.md: improve with porting graph and reference section (#15981)
  • feather-nrf52840: several fixes to documentation (#16777)
  • net/ieee802154_security doc: Shape security expectations (#16841)
  • README.md: fix doc link (#16786)

Build System / Tooling (8)

  • build system: add machine-readable RIOT_VERSION_CODE macro (#16765)
  • build system: add VERBOSE_ASSERT flag (#16884)
  • make: add capability to check config for test-with-config (#16795)
  • makefiles/clang-tidy: initial support (#16509)
  • dist/tools/compile_and_test_for_board: fix W1514 (#16772)
  • dist/tools/doccheck: generate exclude_patterns using C.UTF-8 (#16846)
  • dist/tools/pyterm: ipv6 address support for tcp_serial option (#16726)
  • dist/tools: use f-strings where possible (#16867)
  • Makefile.include: only warn if not curl, wget, unzip, 7z (#16784)
  • tools/zep_dispatch: add support for advanced topologies (#15773)
  • Remove which from shell invocations (#16776)

Kconfig (5)

  • cpu/cc2538: Add Kconfig support (#16719)
  • makefiles/kconfig.mk: generate config file from RIOT_CONFIG_% environment variables (#16052)
  • drivers/lm75: fixed a typo in Kconfig (#16825)
  • drivers/mtd: fix Kconfig dependencies (#16836)
  • makefiles/kconfig.mk: force SHOULD_USE_KCONFIG if config file is present (#16641)

Examples (3)

  • examples/lorawan: add LoRaWAN keys to DOCKER_ENV_VARS (#17010)
  • examples/nimble_*: use nimble_autoadv module (#13506)
  • examples/suit_update: Add compatibility with native (#15994)

Testing (10)

  • dist/pythonlibs/riotctrl_shell/tests/common: add expect to mock (#17003)
  • gnrc_tcp: refactor tests (#16461)
  • tests/gnrc_dhcpv6_client: add script to check if $IFACE exists (#16797)
  • CODEOWNERS: remove Robert Hartung (#16858)
  • gh/workflows/release-tests: update LoRaWAN parameters to ttnv3 [backport 2021.10] (#17013)
  • Small fatfs usability fixes (#16800)
  • tests/gnrc_dhcpv6_client: kill potential previous Kea session (#16820)
  • tests/ieee802154_hal: check error codes and improve error reporting (#16556)
  • tests/unittests/tests-ipv6_hdr: fix too short ipv6_hdr_t allocations (#16616)
  • tests/ieee802154_submac: remove netdev dependency (#16826)

API Changes (5)

  • drivers/ina3221: style fixes and improvements (#15915)
  • drivers/periph_spi: let spi_acquire return void (#15902)
  • gnrc_tcp: rewrite passive open (#16459)
  • nanocoap & gcoap: allow path to be non-\0-terminated. (#16712)
  • sys/net/nanocoap: block_finish returns if more are expected (#16704)

Uncategorized (3)

  • README.md: add graphical logo (#16856)
  • release-notes.txt: add 2021.07 release notes (#16651)
  • README.md: Expose HiL CI overview link (#16720)
  • Remove duplicated includes introduced in #15902 (#16798)
  • treewide: Fix "too many consecutive empty lines" warnings (#16733)

And 63 minor changes.

Deprecations

Deprecations (1)

  • gnrc: deprecate gnrc_netdev_default, use netdev_default instead (#16744)

Bug fixes (32)

  • boards/nucleo-wl55jc: add SX126X_PARAM_TYPE to board.h (#16646)
  • build system: add fallback for RIOT_VERSION_CODE (#16895)
  • cpu/avr8_common: Fix link with binutils > 2.35.2 (#16790)
  • cpu/cortexm: ldscripts: bkup-ram -> bkup_ram (#16753)
  • cpu/esp_common: fix boot issue on ESP8266 (#16639)
  • cpu/saml21: uart: use arithmetic baud rate mode (#16693)
  • dhcpv6_client: keep integers in retransmission calculations signed [backport 2021.10] (#16995)
  • drivers/cc2538_rf: fix deadlock when receiving too fast. (#16716)
  • drivers/sx126x: fix netdev send and recv function (#16570)
  • event_timeout: check clock before removing ztimer on clear (#16667)
  • gnrc/nib: gnrc_ipv6_nib_get_next_hop_l2addr(): only assume neighbor cache entries to always be on-link (#16671)
  • gnrc/sock: recv avoid spinning xtimer (#16831)
  • gnrc_ipv6_nib: consider largest prefix match when deciding if host on-link (#16557)
  • gnrc_ipv6_nib: queue packets that trigger probing on border router [backport 2021.10] (#16949)
  • gnrc_lorawan: fix gnrc_pktbuf_release_error (introduced by #16080) (#16617)
  • gnrc_sock: imply end-point netif only if unset (#16643)
  • ieee802154/submac: fix initialization code (#16533)
  • Makefile.base: cleanup non selected source object files [backport 2021.10] (#16953)
  • mtd: fix mtd_write_page() across sector boundaries (#16848)
  • net/gnrc_lorawan: fix pick channel (#16664)
  • net/lorawan: Revert #16604 and fix NETOPT_RX_SYMBOL_TIMEOUT documentation (#16640)
  • netutils: get interface by name rather than ID (#16673)
  • pkg/lwip: Fix compilation without IPv6 (#16762)
  • pkg/lwip: Fix DHCP autostart (#16636)
  • pkg/mynewt-core: initial commit (#16348)
  • pkg/nimble/autoconn: stop scan/adv on NETIF_ABORT_SLAVE (#16699)
  • pkg/wakaama: fix object common get functions (#16691)
  • Revert "Remove which from shell invocations" (#16803)
  • tests/gnrc_dhcpv6_client: Fix for newer Kea versions and remove sudo requirement (#16792)
  • tests/gnrc_dhcpv6_client: honor configured $IFACE in Kea config (#16796)
  • tinydtls: sock_dtls: only use ifindex with link-local addresses (#16910)

Known issues

  • 6lo gnrc fragmentation expects driver to block on TX (#7474)
  • 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)
  • at86rf2xx: lost interrupts (#5486)
  • CC2538 RF overlapping PIN usage (#8779)
  • core: "Invalid read of size 4" (#7199)
  • 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 choose global source address. (#13745)
  • ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
  • 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)
  • General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc_border_router stops routing after a while (#16398)
  • gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own packet buffer (#12565)
  • gnrc_ipv6: Multicast is not forwarded if routing node listens to the address (#4527)
  • gnrc_rpl: missing bounds checks in _parse_options (#16085)
  • gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • ieee802154_submac: IPv6 fragmentation broken (#16998)
  • LoRaWan node ISR stack overflowed (#14962)
  • lwip_sock_tcp / sock_async: received events before calling sock_accept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdev_driver_t::recv (#10410)
  • net: netdev_driver_t::send() doc unclear (#10969)
  • netdev_ieee802154: Mismatch between radio ll address and in memory address (#10380)
  • nrf52: Not able to add global or ULA address to interface (#13280)
  • nrfmin: communication not possible after multicast ping with no interval (#11405)
  • openthread: does not build on current Arch (#10809)
  • ping6 is failing when testing with cc2538dk (#13997)
  • pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
  • pkg: libcoap is partially broken and outdated (#7737)
  • Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
  • Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
  • samr30 xpro doesn't seem to use its radio ok (#12761)
  • scan-build errors found during 2019.07 testing (#11852)
  • send data with UDP at 10HZ, the program die (#11860)
  • stale border router does not get replaced (#12210)
  • two nodes livelock sending neighbor solicitations back and forth between each other (#16670)
  • Unclear how Router Solicitations are (or should be) handled (#15926)
  • xbee: setting PAN ID sometimes fails (#10338)
  • cpu/native: timer interrupt issue (#6442)
  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periph_timer: systematic proportional error in timer_set (#10545)
  • saml21 system time vs rtc (#10523)
  • Sleep mode for Arduino (#13321)
  • stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
  • sys/newlib: gettimeofday() returns time since boot, not current wall time. (#9187)
  • tests: xtimer_drift gets stuck on native (#6052)
  • xtimer mis-scaling with long sleep times (#9049)
  • xtimer: add's items to the wrong list if the timer overflows between _xtimer_now() and irq_disable() (#7114)
  • xtimer_set_msg: crash when using same message for 2 timers (#10510)
  • xtimer_usleep stuck for small values (#7347)
  • xtimer_usleep wrong delay time (#10073)
  • (almost solved) SPI SD-Card driver: SPI initialisation freeze until timeout (#14439)
  • adc is not a ADC-Driver but a analog pin abstraction (#14424)
  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • floats and doubles being used all over the place. (#12045)
  • mdt_erase success, but vfs_format resets board (esp32-heltec- lora32-v2) (#14506)
  • periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS (#6567)
  • periph: GPIO drivers are not thread safe (#4866)
  • Potential security and safety race conditions on attached devices (#13444)
  • PWM: Single-phase initialization creates flicker (#15121)
  • STM32: SPI clock not returning to idle state and generating additional clock cycles (#11104)
  • TCP client cannot send read only data (#16541)
  • Two bugs may lead to NULL dereference. (#15006)
  • examples/ccn-lite: floating point exception while testing on native (#15878)
  • examples/micropython: floating point exception while testing on native (#15870)
  • native getchar is blocking RIOT (#16834)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • SIGFPE on native architecture when printing double floats on Ubuntu 21.04 (#16282)
  • Failing tests on FE310 (Hifive1b) (#13086)
  • [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
  • arm7: printf() with float/double not working (#11885)
  • boards/hifive1: flashing issue (#13104)
  • Cannot use LLVM with Cortex-M boards (#13390)
  • cpu/cortexm_common: irq_enable returns the current state of interrupts (not previous) (#10076)
  • cpu/sam0: flashpage write / read cycle produces different results depending on code layout in flash (#14929)
  • cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • esp32: can't use newer C++ standard than c++11 (#15685)
  • esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
  • esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi (#16281)
  • gcoap/esp8266: Stack overflow with gcoap example (#13606)
  • I found stm32 DMA periph driver bugs! when I tested stm32l431rc board. (#16242)
  • Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
  • MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
  • MPU doesn't work on cortex-m0+ (#14822)
  • periph_timer: Test coverage & broken on STM32F767ZI (#15072)
  • riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
  • stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after __WFI() (#14015)
  • stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • tests/mpu_noexec_ram: fails on i-nucleo-lrwan1 (#14572)
  • buildtest uses wrong build directory (#9742)
  • make -j flash fails due to missing make dependencies or make flash-only rebuilds the .elf (#16385)
  • Build dependencies - processing order issues (#9913)
  • build: info-build doesn't work with boards without port set (#15185)
  • BUILD_IN_DOCKER ignores USEMODULE (#14504)
  • Different build behavior between murdock and riot/riotbuild:latest image (#9645)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • doxygen: riot.css modified by 'make doc' (#8122)
  • LTO broken (binaries too large) (#16202)
  • macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
  • make: ccache leads to differing binaries (#14264)
  • make: Setting constants on compile time doesn't really set them everywhere (#3256)
  • make: use of immediate value of variables before they have their final value (#8913)
  • Tracking: remove harmful use of export in make and immediate evaluation (#10850)
  • Windows AVR Mega development makefile Error (#6120)

Other issues (45)

  • [TRACKING] sys/shell refactoring. (#12105)
  • _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through shell after flashing with J-Link (#13044)
  • make term no longer works with JLinkExe v6.94 (#16022)
  • make term output is inconsistent between boards, ethos and native (#12108)
  • assert: c99 static_assert macro doesn't function for multiple static_asserts in the same scope (#9371)
  • Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
  • boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
  • Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
  • C++11 extensions in header files (#5561)
  • Can't build relic with benchmarks or tests (#12897)
  • CC2538DK board docs: broken links (#12889)
  • edbg: long lines flooded over serial become garbled (#14548)
  • examples / tests: LoRa tests fail on platforms that don't support LoRa (#14520)
  • File systems report names with leading slashes (#14635)
  • flashing issue on frdm-k64f (#15903)
  • Gcoap drops long packages instead of gracefully erring out (#14167)
  • gcoap_dtls: Selecting transport at run time is not possible (#16674)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • ieee802154_security: Nonce is reused after reboot (#16844)
  • Making the newlib thread-safe (#4488)
  • nanocoap: incomplete response to /.well-known/core request (#10731)
  • Order of auto_init functions (#13541)
  • pkg/tinydtls: Multiple issues (#16108)
  • Possible memset optimized out in crypto code (#10751)
  • Potential race condition in compile_and_test_for_board.py (#12621)
  • pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
  • RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10 (#10121)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • Sam boards: isr_eic call all IRQ raised without taking into account their status (enabled/disabled) (#16978)
  • scheduler: priority inversion problem (#7365)
  • sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
  • sys/riotboot: documentation issues (#11243)
  • sys/stdio_uart: dropped data when received at once (#10639)
  • tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/pkg_libhydrogen: test fails on master for the samr21-xpro with LLVM (#15066)
  • tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and esp32-wroom-32 (#13133)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests/thread_float: crashes on avr-rss2 (#16908)
  • tests: broken with stdio_rtt if auto_init is disabled (#13120)
  • tests: some tests don't work with newlib lock functions. (#12732)
  • Tracker: Reduce scope on unintended COMMON variables (#2346)
  • usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial ports (#15814)
  • Use of multiple CAN bus on compatible boards (#14801)

There are 173 known issues in this release

Fixed Issues since the last release (2021.07)

  • make check_bindist fails to find reference to main (#16977)
  • dhcpv6_client: no prefix on downstream interface via IA_PD (#16971)
  • Deleted or non selected source files are linked in (#16942)
  • tests/thread_float: broken on AVR (#16896)
  • Kconfig/tinydtls: Unable to compile examples/dtls-sock with CONFIG_DTLS_ECC enabled (#16873)
  • particle: error while flashing using Docker build and DFU mode (#16749)
  • test/pkg_u8g2: using SDL is failing (#16714)
  • cpu/saml21: can't set baud rate on SERCOM5 (#16692)
  • sam0_eth: extremely long time to RX (frames stuck in buffer?) (#16451)
  • w5100 driver's improvement (#16417)
  • border_router: significant packet loss when sending out packets using USB cdc-ecm on nrf52 (#16411)
  • XFA support on AVR and MSP430 broken with binutils 2.36.1 (#16251)
  • SDL2 does not work due to missing getpid (#13501)
  • hello-world example crashes on BOARD=nucleo-f446re (#9775)

14 fixed issues since last release (2021.07)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

IRC, Matrix and Forum

License

  • The code developed by the RIOT community is licensed under the GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
  • Some external sources and packages are published under a separate license.

All code files contain licensing information.