2022.10
版本发布时间: 2022-12-02 23:31:28
RIOT-OS/RIOT最新发布版本:2024.10(2024-11-30 04:59:58)
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 calledshell_commands
now isshell_cmds_default
and will automagically select shell commands based on the set of modules used. Users can keep usingshell_commands
for now, but the build system will inform them thatshell_commands
is deprecated.
- Shell commands can now be individually selected by using the corresponding
- 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
- 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
- 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()
andgnrc_netreg_getnext()
now need to be guarded
- calls to
- sys/hash/pbkdf2: Accept passwd as
void *
instead ofuint8_t *
(#18941)- This is not breaking any existing C call sides, but new code no longer
needs to cast
char *
touint8_t *
- This is not breaking any existing C call sides, but new code no longer
needs to cast
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 useshell_cmds_default
. For now,shell_commands
is an alias ofshell_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 tohashes_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
Network related issues (53)
- 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)
Timer related issues (9)
- 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)
Drivers related issues (16)
- 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)
Native related issues (6)
- 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)
Other platforms related issues (17)
- 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)
Build system related issues (11)
-
buildtest
uses wrong build directory (#9742) -
make -j flash
fails due to missing make dependencies ormake 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 withesp32-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
andnative
(#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
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.