Recent Releases of riot

riot - Release-2025.07

RIOT-2025.07 "FieldGuide" - 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 2025.07 release puts documentation front and center. With our new and shiny guide pages (#21404, #21436), it is easier than ever to pick up RIOT and start hacking! The new guides are available on https://guide.riot-os.org/

Two new checksum calculations have been added to RIOT: CRC16/IBM-SDLC (#21552) and reflected CRC8 with LSB first (#21543). The first one is needed for the new Slipmux driver (#21418) that is also part of this release. The latter in preparation for an upcoming 1-Wire driver (#19848).

This release includes the first part of the new Unified and Modular CoAP stack (unicoap #21390), providing initial parser and message APIs.

One new MCU is available for RIOT: The ESP32-H2 (#21522), including support for it's IEEE 802.15.4 capabilities (#21590).

RIOT continues the transition to #pragma once header guards and to the SPDX license format (#21497, #21504, #21501, #21496, #21430, #21591, #21517).

132 pull requests, composed of 443 commits, have been merged since the last release, and 3 issues have been solved. 29 people contributed with code in 90 days. 3833 files have been touched with 77135 (+) insertions and 49624 deletions (-).

Notations used below

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

New features and changes

Core

  • core/thread_flags: add thread flags group (#21254)
  • tree-wide: fix compilation with GCC 15.1 and picolibc 1.8.10 (#21443)

System Libraries

  • checksum: Add crc16-fcs / IBM-SDLC (#21552)
  • dist/tools/riotbootgenhdr: don't be pedantic, add riotbootslotgetcurrenthdr() (#21509)
  • sys/atomic_utils: add bit set/clear helpers for unsigned int (#21440)
  • sys/atomic_utils: add helpers for unsigned int (#21429)
  • sys/bcd: add bcd_buf_to_u32() and bcd_buf_from_str() (#21428)
  • sys/checksum: Add LSB-first (reflected) CRC8 Function (#21543)
  • sys/stdio: add printflonglong (#21445)
  • sys/psa_crypto: Adding aead aes ccm (#21455)
  • sys/psa_crypto: Adding ecc p256r1 pub key derivation (#21461)
  • sys/ztimer: add support for timers running at a 500kHz frequency (#21553)
  • sys/arduino: define LED_BUILTIN as frequently used by Arduino sketches (#21485)
  • sys/event/deferred_callback: disable timer before modifying event (#21539)
  • sys/event/thread: optimize stack usage (#21556)
  • sys/event: make debug output of event_loop_debug more useful (#21456)
  • sys/mineplex: Enhance Documentation (#21536)
  • sys/psa_crypto: Rework Headers (#21512)
  • sys/shell/cmd: typo in ifconfig helptext, \'transition\' fixed as \'transmission\' (#21474)
  • sys/shell: expose readline() (#21505)
  • sys/shell: rename shell_readline() (#21506)
  • treewide: migrate to XFA SHELL_COMMAND (#21514)

Networking

  • gnrc/ipv6/nib: add option to disable router solicitations (#21437)
  • net/unicoap: Unified and Modular CoAP stack: Parser and Message APIs (pt 1) (#21390)
  • submac: add TX power to retrievable netopts (#21579)
  • sys/net/sock_util: Do not depend on network stack (#21419)
  • sys: replace header guards with #pragma once (#21497)

Packages

  • pkg/mpaland-printf: Add alternative stdio as package (#20664)
  • pkg/wakaama: add on off switch (#21109)
  • pkg/driver_sx126x: bump to v2.3.2 (#21521)
  • pkg: use esptool.py v4.9.0 as package (#21557)
  • pkg/littlefs2: bump to 2.11.1 (#21583)
  • pkg/littlefs2: bump version to v2.11.0 (#21491)
  • pkg/nanopb: support more recent google.protobuf versions (#21587)

Boards

  • boards/esp32s3-usb-otg: enable SDMMC peripheral (#21471)
  • boards: add Wemos D1 R32 (aka ESPDuino-32) board definition (#21479)
  • cpu/esp32: add ESP32-H2 support (#21522)
  • features.yaml: add feather_shield feature (#21513)
  • boards/adafruit-{clue,itsybitsy-nrf52}: Convert to Common adafruit- nrf52-bootloader module (#21395)
  • boards/esp32: Arduino I/O mapping completion (#21484)
  • boards/nucleo-l412kb: enable ADC (#21566)
  • boards/nucleo-l432: enable ADC (#21546)
  • boards: replace header guards with #pragma once (#21504)

CPU

  • cpu/cortexm_common: add .backup.noinit section (#21559)
  • cpu/esp32: add IEEE 802.15.4 support for ESP32-H2 (#21590)
  • cpu/esp32: Migration to ESP-IDF v5.4 (#21261)
  • cpu/sam0_common: enable static voltages (#21555)
  • cpu/sam0common: implement pmoff() (#14999)
  • cpu/samd5x: improve isr buffer handling (#21486)
  • cpu: replace header guards with #pragma once (#21501)
  • periph_common/init.c: unblock i2c bus (#20787)

Device Drivers

  • drivers/abp2: add abp2 driver (#20398)
  • drivers/slipmux: Add to RIOT (#21418)
  • drivers: add driver for MAX31865 resistance-to-digital converter (#21498)
  • drivers: add MCP23x17 I/O expander support (#10688)
  • drivers/netdevieee802154submac: port to netdevnewapi (#20992)
  • drivers: replace header guards with #pragma once (#21496)
  • drivers/periph/gpio(_ll): Enhance and fix the documentation (#21538)
  • pkg/driver_atwinc15x0: remove the compilation of the SPI Flash driver part (#21494)

Documentation

  • doc/guide: Introduce a Guide Site (#21404)
  • doc/guides: Add Getting Started guide (#21436)
  • boards/avr: Update the link to the AVaRICE documentation (#21595)
  • boards/nucleo-f031k6: improve board doc (#21581)
  • boards/nucleo-f042k6: doc improvement (#21584)
  • boards/nucleo-l412kb: improve board doc page (#21554)
  • boards/nucleo-l432kc: improve board doc page (#21460)
  • boards/nucleo: fix Cortex-M4F family in doc page (#21561)
  • boards: rename doc.txt -> doc.md for particle, Microchip, nrf ... boards (#21596)
  • cpu/esp*: migrate doc files to Markdown files *.md (#21589)
  • doc/creating-an-app: clarify wording about Makefile.board.dep (#21493)
  • doc/guides/general: switch out @ref usage (#21457)
  • doc: move vision to starlight, deprecate vision in doxygen (#21576)
  • sys/stdio: better document configuration (#21459)

Build System / Tooling

  • tools: add default .clang-tidy configuration (#21431)
  • dist/tools/riotbootgenhdr: add JSON mode (#21511)
  • dist/tools: add a leading whitespace check for #pragma once in the headerguards static test (#21430)
  • build system: improve cargo/docker interaction (#21465)
  • build-sytem/openocd: detect serial port TTY (#21523)
  • dist/tools/bmp: in-line dependencies using PEP 723 (#21131)
  • dist/tools/compile_test: specify toolchain and exit code (#21534)
  • dist/tools: bump uf2conv version (#21469)
  • makefiles/defaultmodules*.mk: fix the description in comments (#21499)
  • makefiles/docker: update riotbuild digest (#21542)

Examples

  • Guides: Introduce C Tutorial (#21434)
  • examples/basic/subfolders: switch from DIRS to EXTERNALMODULEDIRS (#21476)
  • examples/gnrc_lorawan: simplify configuration a bit (#21526)
  • examples: move licenses from headers to SPDX format (#21591)
  • examples: replace header guards with #pragma once (#21517)

Testing

  • .github/workflows: Guide Site Build Test (#21458)
  • tests/pkg/fatfs*: cleanup MTD default dependencies (#21478)

And 19 minor changes.

Deprecations

Bug fixes (22)

  • drivers/sdmmc_sdhc: add timeout to wait for ISR mutex unlock (#21432)
  • drivers/sx126x: add shield_sx1262 (#21441)
  • tests/unittests: Add missing module dependency to enable UDP (#21597)
  • boards/feather-m0: Correct ADC Settings (#21508)
  • boards/nucleo-l432kc: fix typo in MCU table (#21550)
  • boards/nucleo-l4: fix VBAT capable boards list (#21547)
  • boards/seeedstudio-xiao-esp32c3: fix pin conflict (#21463)
  • cpu/cc2538: Distinguish between GPIOOD and GPIOOD_PU (#21488)
  • cpu/native: use correct isr_stack for valgrind (#21492)
  • cpu/nrf5xcommon: fix uartpoweroff() (#19926)
  • cpu/nrf{52,9160}: set GPIO modes correctly for MISO/MOSI SPI signals (#21549)
  • cpu/sam0_common: fix DAC on SAM D5x/E5x (#21548)
  • doc/guides: fix examples directories (#21568)
  • examples/basic/subfolders: fix test (#21480)
  • guides: Fix link to docker setup (#21570)
  • guides: use absolute path to fix url (#21571)
  • Makefile.include: fix override headers from application (#20744)
  • pkg/esptool: force installation of version 4.9.0 (#21588)
  • pkg/lwip: fix dependencies when LWIP IPv4 is used (#21342)
  • pkg/mpaland-printf: fix overriding printf with printf_float (#21439)
  • sys/embunit: fix return value on failure (#21468)
  • tests/drivers/{st77xx,ili9341}: fix coordinates in lcd_fill() (#21518)

Known issues

Network related issues (55)

  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • Address registration handling inappropriate (#15867)
  • app/netdev: application stops working after receiving frames with assertion or completely without error (#8271)
  • at86rf2xx: Dead lock when sending while receiving (#8242)
  • cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
  • DHCPv6 client: Handling of NotOnLink incorrect (#20349)
  • dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC (#14689)
  • driver/mrf24j40: blocks shell input with autoinitgnrc_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/gnrcborderrouter cannot answer after some time (#19578)
  • examples/cord_ep: Dead lock when (re-)registering in callback function (#12884)
  • examples/gnrcborderrouter: 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/ipv6: "invalid payload length" - corrupted IPv6 header when ENABLE_DEBUG=1 in mbox.c (#20390)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcborderrouter: Kconfig and C disagree about number of addresses per interface (#19947)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#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)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)
  • Removing a TNT global address then adding a new one does not work (#20318)
  • 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)

Timer related issues (6)

  • misc issues with tests/trickle (#9052)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periphtimer: systematic proportional error in timerset (#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)

Drivers related issues (11)

  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • mdterase success, but vfsformat 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)

Native related issues (5)

  • examples/micropython: floating point exception while testing on native (#15870)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • VFS_READ show correct data on every SECOND request only (#21470)
  • ztimer doesn't wake up on native if the pm_layered module is used (#21083)

Other platforms related issues (14)

  • 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)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • esp8266 crashes on WiFi disconnect (#21558)
  • examples/gnrcborderrouter: espwifiinit 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)

Build system related issues (5)

  • Build dependencies - processing order issues (#9913)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • EXTERNALMODULEDIRS 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)

Other issues (72)

  • 2023.04 release bug tracking (#19469)
  • [tracking] Bugs found by the peripheral selftest (#20071)
  • [Tracking] Fix failures of test-on-iotlab (#20791)
  • [TRACKING] sys/shell refactoring. (#12105)
  • [tracking] unnecessary use of floating point arithmetic (#19614)
  • NVICSystemReset 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/doxygen: Broken LaTeX Formulas (#21490)
  • doxygen: CSS hack to hide doc breaks on older browsers (#21312)
  • 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)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • frdm-k22f fails tests/periph_timer (#19543)
  • Freeze into semtechloramacsend call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoapreqsend and related should return negative for errors (#19393)
  • gnrcipv6nib: Neighbor Solicitation ping-pong (#18164)
  • I2C Crashes Kernel on Raspberry Pi Pico (#21187)
  • 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)
  • Order of auto_init functions (#13541)
  • periphrtt: rttset_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compileandtestforboard.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled gracefully (#17874)
  • rpl, rpble: handle closed connection to parent(s) (#21574)
  • 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 UART input truncated (#21564)
  • stdio_ethos: infinite shell loop (#17972)
  • stdiotinyusbcdc_acm hangs with picolibc (#19277)
  • STM32 Nucleo boards improperly clocked (#19778)
  • STM32F4-discovery + mrf24j40 not working (#19711)
  • sys/riotboot: documentation issues (#11243)
  • sys/usb/usbus/cdc/ecm: interface thread blocked when connected host interface is down (#21098)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg/lvgl: compilation error for BOARD=samr21-xpro (#21446)
  • 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/pkglibschc: Failing testreassemblesuccessack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdiortt if autoinit 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 168 known issues in this release

Fixed Issues since the last release (2025.04)

  • Missing _TARGETNAME variable in stm32wlx target config causes flash failure (#21614)
  • sys/psa_crypto: one parenthesis too many in the documentation (#21563)
  • RIOT OS webpage do not generate automatically from git repository (#21562)

3 fixed issues since last release (2025.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

Discussions

  • Join the RIOT Matrix room at: #riot-os:matrix.org
  • Join the RIOT Forum at: forum.riot-os.org
  • Follow us on Mastodon: floss.social/@RIOT_OS

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.

- C
Published by Teufelchen1 7 months ago

riot - Release-2025.04

RIOT-2025.04 "MakeSpringClean" - 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 2025.04 release includes some spring cleaning activity in the build system and documentation, as well as the following highlights:

RIOT provides native as a board that can be used for fast development cycles on the development machine without the need for external microcontroller hardware. Starting with this release, native will default to a 64-bit executable on 64-bit hosts (#21242). If you prefer to cross-compile 32-bit executables, please now use native32 instead.

This new board alias mechanism also paves the way towards more consistent board names in RIOT. As a first step, the two Adafruit Feather nRF52840 boards have been renamed, while maintaining the old board names as aliases (#21349).

The examples contained in the RIOT source repository have been restructured as a first step towards easing the experience for RIOT newcomers (#21135, #21221). Stay tuned for more!

This release includes support for three new boards from the Seeed Studio XIAO family, notably the nRF52840 (#20980), nRF52840 Sense (#21332), and the ESP32C3 variant (#21267). RIOT now also boots on SAM4S Xplained Pro evaluation kits (#21201).

The default terminal program for RIOT (pyterm) now requires the psutil Python module. On Ubuntu/Debian, it can be installed with python3-psutil (#21399). RIOT started the transition from header guards to #pragma once in its source code. New code contributions should follow this style from now on (#21367, #21369).

175 pull requests, composed of 357 commits, have been merged since the last release, and 12 issues have been solved. 35 people contributed with code in 82 days. 1963 files have been touched with 49418 (+) insertions and 37661 deletions (-).

Notations used below

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

New features and changes

Core

  • core/cib: Add a prominent warning about thread safety (#21401)
  • core/debug: extend doc about DEBUG() / LOG_DEBUG() (#21276)
  • core/thread: error in thread.c corrected (#21253)

System Libraries

  • sys/bcd: add bcdbuffrom_u32() (#21308)
  • sys/event: add event_deferred_callback_post() helper (#21219)
  • sys/event: add event_loop_debug pseudo-module (#20849)
  • sys/fmt: add {fmt,scn}timetm_iso8601 (#21391)
  • sys/psacrypto: Adding hmac hashing on psaimport_key and fix max hmac key size (#21297)
  • sys/ztimer: add hint for setting static sleep adjustment (#21376)
  • drivers/mtddefault: remove deprecated `mtddefaultgetdev()` (#21386)
  • sys/fido2: update tests (#20876)
  • psa_crypto: fold some long lines (#21303)
  • rust: Simplify Makefiles (#21239)
  • sys/chunkedringbuffer: let `crbend_chunk()` return size of the chunk (#20942)
  • sys/isrpipe: unit tests, doc, and fix init (#21344)
  • sys/malloc_tracing: remove deprecated module (#21384)
  • sys/psa_crypto: drop no-op Doxygen statements (#21393)
  • sys/psacrypto: usa autoinit module for initialization (#21322)
  • sys/vfs: remove deprecated vfs_iterate_mounts() (#21387)
  • sys/ztimer: fix small typo in doc (#21208)
  • treewide: update riot-wrappers and riot-sys (#21383)

Networking

  • sys/net/nanocoap: Implement Observe (Server-Side) (#21147)
  • drivers/include: fixing order of doxygen tags and header guards (#21325)
  • ieee802154/submac: calculate symbol time on demand (#19668)
  • lwip: bump to v2.2.1 (#21196)
  • nanocoap: avoid non static buffers of configurable size (#21270)
  • nanocoap_sock: implement observe (Client-Side) (#21160)
  • netsockasyncevent: cancel async event on sock*_close() (#21180)
  • sys/net/gcoap: remove deprecated gcoapreqsend_tl() (#21385)
  • sys/net/ipv6: use markdown links in doc (#21356)

Packages

  • Pkg/ccn-lite: use latest ccn-lite commit (#21279)
  • pkg/drivercryptocell310: allow data to be in ROM on hash update (#21214)
  • pkg/drivercryptocell310: check for input data to be in RAM (#21138)
  • pkg/esp32sdk: Fix broken `rtcio.hdeclaration and prevent sys/uio.h` inclusion outside RIOT (#21408)

Boards

  • boards/seeedstudio-xiao-esp32c3: Add support for Seeed Studio ESP32C3 Xiao (#21267)
  • boards/feather-nrf52840*: add external flash configuration (#21324)
  • boards/nucleo-f722ze: add ADC support (#21233)
  • boards/nucleo-wl55jc: add ADC configuration (#21235)
  • boards/nucleo64: Add Compile Warning about LED0 when using SPI (#21338)
  • boards/seeedstudio-xiao-nrf52840-sense: Add Initial Support (#21332)
  • boards: introduce stdio_default (#21294)
  • boards: introduce board alias and make native default to host target (#21242)
  • Buildsystem: Introduce Global Makefiles for boards Directory (#21327)
  • cpu/sam4s: add initial support with SAM4S-XPRO board (#21201)
  • boards/common: Make Adafruit nRF52 Bootloader shared (#21281)
  • boards/feather-nrf52840: rename to adafruit-feather-nrf52840- (#21349)
  • boards/nrf6310: Remove nRF6310 board from RIOT (#20966)
  • boards/seeedstudio-xiao-nrf52840: initial board support (#20980)

CPU

  • core: add stdio.h to replace stdout functions with stdio_null (#20872)
  • cpu/native: Gardening/QoL (#21283)
  • cpu/nrf5*: mark and resolve radio conflict (#21250)
  • cpu/nrf52/radio/nrf802154: fix beacon acceptance (#20982)
  • cpu/sam0_common/flashpage: disable interrupts while writing (#21326)
  • cpu/sam0_eth: fix hang with broken PHY (#21172)
  • cpu/sam3: fix hwrng peripheral register access (#21177)
  • cpu/sam3: optimize gpio ISR processing (#21179)
  • cpu/samd5x: improve can-initialization (#21173)
  • cpu/stm32{f0,g0,c0}: fix ADC initialization sequence (#21230)
  • dist/tools/esptools: Upgrade the ESP32 toolchain to GCC v14.2, GDB v14.2 and OpenOCD v0.12 (#21144)
  • {cpu/sam0common/sam0sdhc,drivers/mtd}: do not allocate work_area twice (#21169)

Device Drivers

  • drivers/periphtimer: add `timergetclosestfreq()` (#20581)
  • drivers/sen5x: Add device driver for SEN5x (#19955)
  • drivers/tm1637: add driver and tests for tm1637 7-segment display (#21112)
  • driver/sen5x: Small Fixups (#21392)
  • drivers/at: atreadlinestopatstr fix remaining buffer length (#21195)
  • drivers/sdmmc/sdmmc_sdhc: remove DMA check (#21260)
  • drivers/{mtd_sdmmc,sdmmc}: reinit card (#21305)

Documentation

  • add *.doc.md to doxygen sources (#21319)
  • boards/nrf52840{dk,dongle}: add MCU table, move to doc.md (#21271)
  • boards/nucleo-f413zh: add MCU table, move to doc.md (#21264)
  • dist/tools: Add Doxygen as a Tool for CI (#21300)
  • doc, buildsystem: Add a Version Check for Doxygen, Fix doc* Target Execution (#21277)
  • doc/managing-a-release: add looking out for release tests to preps (#21368)
  • doc: add psutil requirement to Getting Started (#21399)
  • boards/arduino-due: update doc.txt (#21207)
  • boards/nucleo-144: rename doc.txt to doc.md (#21318)
  • boards/nucleo-f746zg: board doc update (#21310)
  • boards/rpi-pico*: Update and fix documentation and image (#21218)
  • build-system: Drop -Wno-error=documentation (#21377)
  • doc/porting-boards: Change example doc.txt to doc.md (#21257)
  • doc: doc.txt -> doc.md (#21255)
  • doc: hack to hide doc.md files until doxygen gets fixed (#21273)
  • doc: remove and replace deprecated mailing lists (#21285)
  • doc: Use the correct Doxygen Logo File Type in the Footer (#21274)
  • docs/rust: Install c2rust with --locked (#21236)
  • docs: Switch out pkg reference link (#21229)
  • sys/cord/doc.txt: Update additional references to RFC 9176 (#21159)
  • sys/malloc_monitor: Fix documentation (#21225)
  • sys/psa_crypto/doc: correctly end code block (#21380)
  • treewide: fix double the in doc and comments (#21224)
  • treewide: fix example references in docs (#21212)
  • CODING_CONVENTION.md: migrate to #pragma once (#21369)

Build System / Tooling

  • buildsystem: Enable -Wdocumentation for LLVM (#21358)
  • dist/tools: add #pragma once to headerguard check (#21367)
  • buildsystem: Remove buildtest Goal & Fix info-buildsizes-diff (#21359)
  • dist/tools/bmp: additional improvements to auto-detection (#21128)
  • dist: tools: avoid hanging tapsetup in the absence of a DHCP server (#20411)
  • Makefile.include: perform checks for all relevant targets (#21199)
  • makefiles: bump riotdocker (#21258)
  • makefiles: colorize board alias warning (#21352)
  • makefiles: fix output of info-applications (#21213)
  • tools: Use RIOT maintained cosy (#21070)

Examples

  • examples: restructure examples folder (#21135)
  • examples: shorten subfolders' names (#21221)
  • Configure default DNS resolver in 6lbr example (#21117)
  • examples/nanocoap_server: enable LWIP IPv4 (#21333)
  • examples: migrate to XFA SHELL_COMMAND (#21171)
  • examples: update dtls-echo source (#21247)
  • examples/gnrcborderrouter: Request temporary address (IA_NA) for the 6lbr example (#21118)

Testing

  • tests/bench/runtimecoreapis: add clistsort() benchmark (#21403)
  • tests/pkg/relic: add Paillier encryption tests (#21301)
  • .github/labeler: recognize boards/common/native as native (#21351)
  • test/pkg/relic: increase stacksize for paillier encryption (#21306)
  • tests/adc: always test all resolutions (#21223)
  • tests/drivers/candev: minor cleanup (#21175)
  • tests/nanocoap_cli: allow to build with lwIP (#21314)
  • tests/sys/suit_manifest: remove unnecessary custom native board (#21248)
  • tests/test-rtc: test retrieval of unix-time (#20031)
  • tests/unittests: test parsing of out-of-bounds CoAP opt (#21167)

API Changes

  • can: add CAN FD support to STM32G4 and native architecture (#20428)
  • cpu/samd5x: add enable pin to CAN configuration (#21287)
  • drivers/periph_uart: document acquire/release semantic (#20624)

And 22 minor changes.

Deprecations

Deprecations (1)

  • gnrc/ipv6/nib: make CONFIG_GNRC_IPV6_STATIC_LLADDR_IS_FIXED the default & deprecate it (#21157)

Bug fixes (28)

  • LOSTANDFOUND.md: add missing URL, fix Markdown typo (#21154)
  • boards/feather-m0*: Update Default Bootloader to UF2 (#21280)
  • buildsystem: Fix boards/Makefile.features Inclusion (#21334)
  • buildsystem: Fix Supported Board List in info-build (#21361)
  • buildsystem: Set term Goal to NOTPARALLEL (#21354)
  • cpu/esp32: fix buswidth in periphsdmmc (#21259)
  • cpu/esp32: Fixes of compile problems with GCC 14.2 (#21245)
  • cpu/esp_common: create partitions.csv more robustly (#21185)
  • cpu/native: use async read for stdio_read() (#19002)
  • cpu/sam3: fix PMC enable/disable peripheral clock access (#21168)
  • cpu/samd5x/periph_can: fix RX (#21181)
  • cpu/stm32: Make ADC Resolution Definition uniform (#20971)
  • cpu/stm32{f3,l4,wb,wl}: Replace ztimer with busy_wait, fix VBat sampling time and {wl only} fix initialization sequence (#21238)
  • doc: fix image references for ESP32x boards (#21204)
  • drivers/periph_{i2c,spi}: fix doc on initialization (#21188)
  • examples/default: fix dependency modeling (#21191)
  • examples/suit_update: fix compilation for native backport 2025.04
  • gnrc_sock/udp: zero-init sock struct on create (#21363)
  • pkg/nimble: Fix compilation with USEMODULE += nimble_svc_bas (#21200)
  • pyterm: send SIGINT to the subprocess' child (#21309)
  • socket_zep: properly implement the radio HAL (#19213)
  • sys/can: fix compilation issues under native (#21388)
  • sys/net/nanocoap: align request handling with spec (#21163)
  • sys/net/nanocoap: drop typedef hack v2
  • sys/net/nanocoap: fix API inconsistency (#21241)
  • sys/net/nanocoap: fix dereferencing a null pointer (#21227)
  • tree wide: various doc fixes (#21357)
  • tree-wide: mixed back of documentation fixes (#21371)

Known issues

Network related issues (55)

  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • Address registration handling inappropriate (#15867)
  • app/netdev: application stops working after receiving frames with assertion or completely without error (#8271)
  • at86rf2xx: Dead lock when sending while receiving (#8242)
  • cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
  • DHCPv6 client: Handling of NotOnLink incorrect (#20349)
  • dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC (#14689)
  • driver/mrf24j40: blocks shell input with autoinitgnrc_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/gnrcborderrouter cannot answer after some time (#19578)
  • examples/cord_ep: Dead lock when (re-)registering in callback function (#12884)
  • examples/gnrcborderrouter: 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/ipv6: "invalid payload length" - corrupted IPv6 header when ENABLE_DEBUG=1 in mbox.c (#20390)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcborderrouter: Kconfig and C disagree about number of addresses per interface (#19947)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#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)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)
  • Removing a TNT global address then adding a new one does not work (#20318)
  • 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)

Timer related issues (6)

  • misc issues with tests/trickle (#9052)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periphtimer: systematic proportional error in timerset (#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)

Drivers related issues (11)

  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • mdterase success, but vfsformat 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)

Native related issues (4)

  • examples/micropython: floating point exception while testing on native (#15870)
  • native not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • ztimer doesn't wake up on native if the pm_layered module is used (#21083)

Other platforms related issues (13)

  • 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)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • examples/gnrcborderrouter: espwifiinit 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)

Build system related issues (5)

  • Build dependencies - processing order issues (#9913)
  • dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89 (#12771)
  • EXTERNALMODULEDIRS 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)

Other issues (70)

  • 2023.04 release bug tracking (#19469)
  • [tracking] Bugs found by the peripheral selftest (#20071)
  • [Tracking] Fix failures of test-on-iotlab (#20791)
  • [TRACKING] sys/shell refactoring. (#12105)
  • [tracking] unnecessary use of floating point arithmetic (#19614)
  • NVICSystemReset 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)
  • doxygen: CSS hack to hide doc breaks on older browsers (#21312)
  • 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)
  • flashing issue on frdm-k64f (#15903)
  • frdm-k22f failing tests/periph_flashpage (#17057)
  • frdm-k22f fails tests/periph_timer (#19543)
  • Freeze into semtechloramacsend call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoapreqsend and related should return negative for errors (#19393)
  • gnrcipv6nib: Neighbor Solicitation ping-pong (#18164)
  • I2C Crashes Kernel on Raspberry Pi Pico (#21187)
  • 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)
  • periphrtt: rttset_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compileandtestforboard.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • 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)
  • stdiotinyusbcdc_acm hangs with picolibc (#19277)
  • STM32 Nucleo boards improperly clocked (#19778)
  • STM32F4-discovery + mrf24j40 not working (#19711)
  • sys/riotboot: documentation issues (#11243)
  • sys/usb/usbus/cdc/ecm: interface thread blocked when connected host interface is down (#21098)
  • tests/lwip target board for python test is hardcoded to native (#6533)
  • tests/periph_flashpage: failing on stm32l475ve (#17280)
  • tests/pkg/lvgl: compilation error for BOARD=samr21-xpro (#21446)
  • 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/pkglibschc: Failing testreassemblesuccessack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdiortt if autoinit 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 164 known issues in this release

Fixed Issues since the last release (2025.01)

  • buildsystem: make distclean does not clean dist/... (#21409)
  • native: Exiting pyterm does not terminate the native process any more (#21307)
  • Buildsystem: Makefile of Common Board Directories never called without adding DIRS (#21298)
  • Build System: make -C path/path doc fails in Base Folder (#21278)
  • dist/tools/uf2: Flashing a board with RIOT seems to prevent flashing other UF2 files afterwards (#21205)
  • build system: race condition when building and running an app for native (#20948)
  • feather-m0: make flash reports "device unsupported" (#17722)
  • doc/LOSTANDFOUND: not rendered as expected (#17063)
  • native getchar is blocking RIOT (#16834)
  • border_router: significant packet loss when sending out packets using USB cdc-ecm on nrf52 (#16411)
  • buildtest uses wrong build directory (#9742)
  • MSP430: periph_timer clock config wrong (#8251)

12 fixed issues since last release (2025.01)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT. 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.

- C
Published by mguetschow 10 months ago

riot - Release-2025.01

RIOT-2025.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 2025.01 release includes:

More work done to update the legacy netdev API to its new version new_netdev_api (#20978, #21012, #21015, #21016, #21020, #21028, #21091, #20991). This means that if you are still using the legacy netdev API, start thinking about updating!

We documented the community processes in a GOVERNANCE.md file. This new file now clearly states all previously undocumented community procedures and governance, and defines community roles, to further our goals of openness and transparency within the community.

We also added the same51-curiosity-nano board along with some configuration improvements "across the board" :wink:.

144 pull requests, composed of 280 commits, have been merged since the last release, and 0 issues have been solved. 32 people contributed with code in 65 days. 665 files have been touched with 75661 (+) insertions and 6329 deletions (-).

Notations used below

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

New features and changes

Core

  • core/cib: add const to cib_peek() (#21130)
  • core/mutex: add mutex_init_locked() (#20954)

System Libraries

  • sys/posix/pthread: Add pthreadattrgetstack and pthreadattrsetstack (#20934)
  • sys/stdio_nimble: add version note to README (#21085)
  • sys/stdiouart: add stdioclear_stdin (#19837)
  • suit: move CoAP endpoints to the example (#21045)
  • sys/chunked_ringbuffer: discard stale chunk when starting a new one (#21073)
  • sys/psa_crypto: split algorithm definitions (#20906)
  • sys/psa_crypto: Update key headers (#21046)
  • sys/psa_crypto: one-shot Chacha20 support (#20720)
  • sys/shell: cmds_json builtin command (#20964)
  • sys/shell: reduce overhead of XFA shell commands (#20958)
  • sys/stdio: stdio_available is always false with missing stdin module (#21040)
  • sys/usb: Use luid_base for stable USB serials (#20944)
  • sys/usbcdcacm_stdio: only submit and flush for non-empty buffer (#20986)
  • treewide: Update Rust dependencies, adding SPI and UART support (#21133)
  • usbus/cdcecm: port to netdevnew_api (#21028)

Networking

  • gnrc/ipv6autosubnets: add option to derive subnet prefix from EUI (#21080)
  • sys/event: add assertion that event has a handler (#20847)
  • sys/net/gnrcpktbufstatic: add double free detection (#20974)
  • gnrcnetif: netdevnew_api implies TX end irq, no need to check it (#20993)
  • nanocoap/sock: re-try if wrong block was received (#20952)
  • sys/net/gcoap: get rid of API abuse (#21125)
  • sys/net/gcoap: reduce insanity of hack (#20945)
  • sys/net/gnrc_pktbuf: detect use after free if canary is in metadata (#21000)
  • sys/net/nanocoap: flush stale responses before sending request (#21122)
  • sys: net: dns: use Quad9 resolver (#21120)

Packages

  • Feature/wakaama update on new version (#20930)
  • pkg/relic: bump version to 0.7.0 (#21134)

Boards

  • boards/same51-curiosity-nano: add support for the board (#21111)
  • cpu/saml21: add compatibility headers for vendor files migration (#20850)
  • feather-nrf52840: add config for NeoPixel LED (#21017)
  • saul: initial import of saulbatvoltage module (#21018)
  • Arduino support layer: several fixes (#21039)
  • boards/adafruit-metro-m4-express: Minor improvements (#21041)
  • boards/nrf52*dk: Enable Pinreset after Flashing (#20965)
  • cpu/nRF52: Always recover Device before Flashing (#20970)
  • makefiles/serial: better MOSTRECENTPORT=1 for CDC ACM (#20951)

CPU

  • dist/tools/esptools: add support for installing esp8266 toolchain (#21094)
  • sys/stringutils: add stringwriter helper (#20843)
  • cpu/cc2538: use RX FIFO count to determine CRC OK location (#20956)
  • cpu/cortexm_common: Make cpu.h IWYU clean (#21050)
  • cpu/esp32/stdiousbserial_jtag: Fix to ESP32 stdio usb serial hanging if it receives data too quickly (#20972)
  • cpu/sam0_common: flashpage: disable cache while writing (#21043)
  • netdevtap: port to `netdevnew_api` (#21015)

Device Drivers

  • drivers/atwinc15x0: port to netdev_new_api (#21020)
  • drivers/dose: fix poweroff (#21074)
  • drivers/dose: port to netdevnewapi (#20991)
  • drivers/ethos: port to netdevnewapi (#21016)
  • drivers/periph_init: initialize watchdog first (#21025)
  • drivers/slipdev: implement NETDEVEVENTTX_COMPLETE event (#20975)
  • drivers/slipdev: port to netdevnewapi (#20978)
  • drivers/ws281x: esp32 neopixel driver to set the rmt symbol high/low lengths at init instead of every write (#21068)

Documentation

  • boards/nucleo-l073rz: add MCU table to doc page (#21102)
  • boards/nucleo-l433rc: add pinout to documentation page (#20947)
  • examples: add TCP echo server & client from documentation (#16739)
  • pkg/u8g2: add to the displays doc group (#20953)
  • README.md: add references to related projects (#21052)
  • README.md: add Section Collaboration (#21078)
  • doc: Improvements around Code of Conduct (#21071)
  • doc: move "managing a release" from wiki (#21065)
  • MAINTAINING.md/doc: move links from wiki to doc (#21066)
  • sys/net/app/cord: update doc (#20921)
  • GOVERNANCE.md: remove “Community Processes” in favor of “GOVERNANCE.md” (#21067)
  • CODING_CONVENTIONS.md: bump minimum Python version (#21124)
  • MAINTAINING.md: point to new auto-generated maintainer list (#21069)
  • README: Rephrase forum into more generic help (#20413)

Build System / Tooling

  • Examples: Add proper Table of Contents (#20957)
  • Build system: support for application subfolders (#20024)
  • checkinreadme.sh: tell dev which README.md (#21044)
  • dist/tools/bmp: improve compatibility (#21107)
  • makefiles: select default prng after recursive dependency resolution (#21060)

Testing

  • sys/ztimer: mention ztimerautoadjust in relevant places (#21003)
  • tests/build_system/xfa: improve test coverage (#20959)
  • tests/core/cond_order/: calling cond signal and broadcast without waiting threads (#21030)
  • tests/core/thread_msg: lower thread priority for consistent output order (#20989)
  • tests/cpu/mpu*: exclude boards using highlevel_stdio (#20990)
  • tests/net/nanocoap_cli: make use of XFA for shell commands (#20961)
  • tests/periph/uart: minor improvements (#21009)
  • tests/sys/events: test if eventtimeoutis_pending returns false (#21032)
  • tests/sys/shell: skip reboot for boards using highlevel_stdio (#20988)
  • tests/sys/shell: use default terminal instead of socat (#21058)

API Changes

  • CODING_CONVENTIONS.md: Add IWYU policy (#20570)
  • sys/net/nanocoap: add and use coapgetresponsehdrlen() (#20950)
  • drivers/netdev: revise return values of .confirm_send() (#20995)
  • drivers/periphgpio: let gpioread() return bool (#20936)
  • netdevnewapi: allow .send() to return > 0 to signal synchronos send (#21012)
  • sys/fido2: follow up continued (#18663)
  • sys/luid: luid_custom() use fixed width int (#20943)

Uncategorized

  • .clang-format: Set ColumnLimit to 0 (#20963)

And 20 minor changes.

Bug fixes (33)

  • core/msg: re-enable IRQs before printing for highlevel_stdio (#21047)
  • cpu/samd5x/periph_can: fix RX (#21184)
  • cpu/sam0common/periphadc: add work around for errata 2.1.6 (#20994)
  • boards/stm32f429i-disc1: fix touch screen axis (#21007)
  • boards/wemos-zero: fix Arduio I/O Map (#21004)
  • build system: error on conflicting features (#21013)
  • build_system/xfa: change API to fix alignment (#20960)
  • core/sched.c: fix runqueuepop() removing wrong thread (#20938)
  • cpu/cc2538: mask length byte before checking CRC (#20998)
  • cpu/sam0common/periphgpioll: fix gpiogetport() and gpiollqueryconf() (#20999)
  • cpu/stm32/eth: fix and improve ETH defines (#21072)
  • cpu/stm32/periph/timer: prevent spurious IRQs (#20926)
  • cpu/stm32l0,l1: Fix ADC initialization order (#21011)
  • dist/tools/esptool: fix the all target (#21129)
  • doxygen/Makefile: fix make latex and make clean (#21090)
  • drivers/at86rf215: return ENETDOWN when interface is down (#21031)
  • gcoap/forward_proxy: handle timeout case (#20915)
  • gnrcnetif: fix double free with netdevnewapi & gnrcnetif_pktq (#20976)
  • gnrcnetif: fix packet leak with gnrcnetifpktq & netdevnew_api (#20983)
  • gnrcnetif: fix timeout in `gnrcnetifipv6waitforglobal_address()` (#21137)
  • pkg/lwip: fix adaption to API change of netdevnewapi (#21091)
  • pkg/wakaama/client_connection: destroy unused DTLS sessions (#21035)
  • pkg/wakaama: Fix usages of lwm2m_uri_t and ISPO sensor (#21034)
  • sys/event: fix race in eventwaitmulti() (#21092)
  • sys/net/gnrc/tcp: fix gnrctcpopen() netif handling (#20977)
  • sys/net/nanocoap: fix coap_build_reply_header() (#20949)
  • sys/net/nanocoap: fix buffer overflow in separate response handling (#21075)
  • sys/net/nanocoap: fix coapgettotalhdrlen() (#20946)
  • sys/net/nanocoap: Fix sending bogus separate responses (#21076)
  • sys/ztimer: implement ztimermboxgettimeout() and use it to fix race in gnrcsock_recv() (#21113)
  • tests/periph/selftestshield: fix invalid calls to timerinit() + GPIO IRQ tests (#21006)
  • tests/periph/selftest_shield: Fix UART test (#21042)
  • tests/sys/shell: improve test automation (#21114)
  • tests/sys/shell: make test script more robust (#21036)
  • tests/sys/ztimermboxget_timeout: Fix flakiness (#21127)

Known issues

Network related issues (55)

  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • Address registration handling inappropriate (#15867)
  • app/netdev: application stops working after receiving frames with assertion or completely without error (#8271)
  • at86rf2xx: Dead lock when sending while receiving (#8242)
  • cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
  • DHCPv6 client: Handling of NotOnLink incorrect (#20349)
  • dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC (#14689)
  • driver/mrf24j40: blocks shell input with autoinitgnrc_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/gnrcborderrouter cannot answer after some time (#19578)
  • examples/cord_ep: Dead lock when (re-)registering in callback function (#12884)
  • examples/gnrcborderrouter: 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/ipv6: "invalid payload length" - corrupted IPv6 header when ENABLE_DEBUG=1 in mbox.c (#20390)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcborderrouter: Kconfig and C disagree about number of addresses per interface (#19947)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#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)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)
  • Removing a TNT global address then adding a new one does not work (#20318)
  • 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)

Timer related issues (7)

  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periphtimer: systematic proportional error in timerset (#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)

Drivers related issues (11)

  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • mdterase success, but vfsformat 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)

Native related issues (5)

  • 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)
  • ztimer doesn't wake up on native if the pm_layered module is used (#21083)

Other platforms related issues (13)

  • 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)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • examples/gnrcborderrouter: espwifiinit 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)

Build system related issues (6)

  • 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)
  • EXTERNALMODULEDIRS 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)

Other issues (70)

  • 2023.04 release bug tracking (#19469)
  • [tracking] Bugs found by the peripheral selftest (#20071)
  • [Tracking] Fix failures of test-on-iotlab (#20791)
  • [TRACKING] sys/shell refactoring. (#12105)
  • [tracking] unnecessary use of floating point arithmetic (#19614)
  • NVICSystemReset 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)
  • build system: race condition when building and running an app for native (#20948)
  • 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 semtechloramacsend call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoapreqsend and related should return negative for errors (#19393)
  • gnrcipv6nib: 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)
  • periphrtt: rttset_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compileandtestforboard.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • 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)
  • stdiotinyusbcdc_acm hangs with picolibc (#19277)
  • STM32 Nucleo boards improperly clocked (#19778)
  • STM32F4-discovery + mrf24j40 not working (#19711)
  • sys/riotboot: documentation issues (#11243)
  • sys/usb/usbus/cdc/ecm: interface thread blocked when connected host interface is down (#21098)
  • 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/pkglibschc: Failing testreassemblesuccessack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdiortt if autoinit 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 167 known issues in this release

Fixed Issues since the last release (2024.10)

  • cpu/nrf52: Add Make Option to Enable Pinreset (#20775)

1 fixed issues since last release (2024.10)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT. 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.

- C
Published by MrKevinWeiss about 1 year ago

riot - Release-2024.10

RIOT-2024.10 "FlexTape" - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

Highlights of the 2024.10 release:

This release fixes some long-standing packet buffer leaks that occurred when using gnrc_netif_pktq and 6LoWPAN or netdev_new_api (#20983, #20834).

A long standing-bug in the CC2538 radio driver has been fixed when processing corrupted frames, that before could render the device unresponsive. This can be triggered due to radio interference, but we also believe that an attacker within range of the radio could send crafted frames to reliably trigger the issue. We therefore consider this a denial of service vulnerability and advise all users of the CC2538 to upgrade to 2024.10 or cherry-pick 1b61216da734fcd40ae0d832b800e4e67975bdc8. More details are published in the security advisory.

With SUIT it is now easier to accept firmwares signed with different keys, e.g., a node build and signed with a development key can be configured to accept images signed with either the development key or the production key (#21019). The public keys are now also stored on the developer's machine, so if a encrypted private key is used, you don't need the decryption password to build a firmware, only for signing it (#20862).

THREAD_CREATE_STACKTEST is now the default when DEVELHELP is used.

This release saw the addition of the adafruit-metro-m4-express board.

129 pull requests, composed of 255 commits, have been merged since the last release, and 5 issues have been solved. 29 people contributed with code in 119 days. 502 files have been touched with 142126 (+) insertions and 1896 deletions (-).

Notations used below

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

New features and changes

System Libraries

  • Rust: Add make cargo-command and refactoring around it (#20828)
  • static_tests: Add test for Rust code formatting rules (#20887)
  • sys/event: add API to start periodic event without initial delay (#20911)
  • sys/event: add event_sync() (#20916)
  • event/timeout: eventtimeoutset() enqueues immediately if timeout is zero (#20870)
  • examples/rust: Update CoAP example modules (#20821)
  • Rust: Update to riot-wrappers 0.9 (#20829)

Networking

  • drivers: Add shield_llcc68 module (#20885)
  • nib.c: add interface selection rules for static link local address assignment (#20784)
  • sys/event: add assertion that event has a handler (#20847)
  • sys/net/applicationlayer/nanocoap: add `nanocoapsockgetnon()` (#20852)
  • tests/net: add stub test for gcoapforwardproxy (#20909)
  • gcoap: Avoid reading beyond defined input buffer (#20549)
  • gnrc/ipv6/nib: don't queue packets on 6lo neighbors and drop/flush if… (#20834)
  • gnrcipv6nib: Force unspecified next hop addresses (#20371)
  • gnrcsixlowpanfrag: enable gnrc_netif_pktq if netdev_new_api is used (#20879)
  • net/dhcpv6: Improve option handling in dhcpv6 advertise (#20801)

Packages

  • pkg/emlearn: bump version to 0.17.1 (#20347)
  • pkg/littlefs: make use of RIOT's log module instead of pkg provided macros (#20894)
  • pkg/lvgl: Increase default LVMEMSIZE for 64 bit and enable tests for native64 (#20846)
  • pkg/nanocbor - upgrade to last version (#20813)
  • pkg/wamr : updated wamr version to v2.1.1 (#20795)

Boards

  • boards/adafruit-grand-central-m4-express: provide arduino features (#20904)
  • boards/adafruit-metro-m4-express: initial port (#20912)
  • boards/nucleo-f439zi: add ADC support (#20814)
  • boards/nucleo-g474re: add MCU table (#20851)
  • boards/nucleo64: add pinout source (#20931)
  • boards/stm32l476g-disco: add ADC support (#20793)
  • boards/stm32l476g-disco: add PWM support (#20807)
  • boards/ek-lm4f120x: Change internal LED macro for C2Rust compatibility (#20831)
  • boards/nucleo-l432kc: enable CAN support (#20845)

CPU

  • core/thread: always use THREADCREATESTACKTEST when DEVELHELP is enabled (#20450)
  • cpu/cc2538: mask length byte before checking CRC (#21038)
  • cpu/esp32: Improve error descriptions (#20914)
  • cpu/msp430: Implement periphgpioll & periphgpioll_irq (#20679)
  • cpu/nrf52: fix RSSI calculation in nrf802154_radio (#20839)
  • cpu/sam0_common/periph: fix rtt reset after hibernation (#20842)
  • drivers/periph/gpio: make gpio_write() take a bool (#20935)

Device Drivers

  • drivers/dht: fix null deref with saul (#20927)
  • drivers/led: Allow LEDn_ON to be disabled by other modules (#20833)

Documentation

  • CODING_CONVENTIONS.md: Add preprocessor directive formatting (#20866)
  • boards/nucleo-g070rb & g071rb: add pinouts to documentation (#20822)
  • boards/nucleo-g070rb: add MCU table to doc page (#20825)
  • boards/nucleo-g071rb: add MCU table to doc page (#20827)
  • boards/nucleo-g431rb & g474re: add pinouts to boards doc page (#20832)
  • boards/nucleo-g431rb: add MCU table to documentation (#20848)
  • boards/stm32l476g-disco: add pinout to documentation page (#20808)
  • riot.doxyfile: Update and remove deprecated options (#20897)
  • boards/nucleo-l053r8: MCU table addition to doc page (#20804)
  • boards/stm32l0538-disco: addition of pinout to documentation page (#20810)
  • build system: document riotbuild.h and deprecated RIOT_MCU (#20566)
  • doc/doxygen: print link to generated documentation (#20896)
  • doc: Point out common problem installing c2rust (#20844)
  • sys/net/app/cord: update doc (#20921)

Build System / Tooling

  • Makefile: add .DEFAULT target to further guide new users (#20895)
  • .clang-format: Add default clang-format configuration (#20865)
  • CI: fix true and false positives by newer codespell version (#20899)
  • dist/tools/bootterm: bump to 0.5 (#20871)
  • dist/tools/cosy: take BUILD_DIR into account (#20789)
  • make: export DEVELHELP (#20889)
  • makefiles/arch/native: don't be pedantic (#20873)
  • makefiles/suit: make use of SUIT_SEC_PASSWORD optional (#20862)
  • makefiles/suit: store public keys, make it easier to work with multiple keys (#20858)
  • makefiles/docker.inc.mk: bump riotbuild docker image to last available (#20840)
  • gh-actions: bump deprecated packages (#20892)

Examples

  • examples: Add asynchronous Rust example (#20830)
  • examples/leds_shell: add example for interactive LEDs/GPIO control (#20782)
  • examples/gcoap-rust: Expose more functionality (#20838)
  • examples/ledsshell: use periphgpio_mock on native (#20796)

Testing

  • tests/pkg/emlearn: add model.h to repo (#20841)
  • tests/gnrcipv6nib: rtr_ltime test (#20372)

API Changes

  • cpu/stm32: implement periph_gpio_ll_switch_dir (#20805)
  • drivers/periphgpio: let gpioread() return bool (#20936)
  • drivers/periphgpioll: change API to access GPIO ports (#20639)

And 26 minor changes.

Deprecations

Removals (1)

  • sys/ztimer: Remove the deprecated ztimer_now64 (#20826)

Bug fixes (27)

  • boards/common/arduino-zero: Add Arudino SPI mapping (#20884)
  • cpu/native/periph_timer: add missing -lrt to linker flags (#20816)
  • cpu/sam0common/periphadc: add work around for errata 2.1.6 (#21001)
  • bluetil: Ensure advertisement length does not exceed pkt len (#20881)
  • boards/samd5x: GCLK source for ADC must not exceed 100 MHz (#20932)
  • boards/stm32f429i-disc1: fix touch screen axis (#21014)
  • build system: simplify docker image pinning (#20877)
  • core/mutex: use threadyieldhigher() in mutex_unlock() (#20890)
  • core/panic: don't use LOG_ functions in panic handler (#20790)
  • cpu/sam0common/periphgpioll: fix gpiogetport() and gpiollqueryconf() (#21008)
  • dnsmsg: skip RDLENGTHLENGTH field when skipping record (#20857)
  • drivers/at86rf215: return ENETDOWN when interface is down (#21037)
  • examples/lorawan: drop crazy STM32 hack (#20883)
  • gcoap/forward_proxy: handle timeout case (#20915)
  • gh-actions: bump upload-artifact to v4 (#20875)
  • gnrc/ipv6: nib route: hide off-link PLEs (#20835)
  • gnrc/ipv6: Store all SLAAC prefixes (#20757)
  • gnrc_lorawan: Ensure minimal packet length (#20880)
  • gnrcnetif: fix double free with netdevnewapi & gnrcnetif_pktq (#20979)
  • gnrcnetif: fix packet leak with gnrcnetifpktq & netdevnew_api (#20997)
  • nanocoap: always write at least 1 byte in coapblock2finish() (#20855)
  • net/dhcpv6: Improve option parsing in dhcpv6 advertise (#20882)
  • sys/net/application_layer/gcoap: fix Observe notifications correlation (#20684)
  • sys/net/nanocoap: fix UB when building hdr (#20917)
  • sys/usbcdcacm_stdio: only submit and flush for non-empty buffer (#20987)
  • sys/ztimer: fix re-scheduling of timers (#20924)
  • Various PSA Crypto fixes (#20854)

Known issues

Network related issues (55)

  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • Address registration handling inappropriate (#15867)
  • app/netdev: application stops working after receiving frames with assertion or completely without error (#8271)
  • at86rf2xx: Dead lock when sending while receiving (#8242)
  • cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
  • DHCPv6 client: Handling of NotOnLink incorrect (#20349)
  • dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC (#14689)
  • driver/mrf24j40: blocks shell input with autoinitgnrc_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/gnrcborderrouter cannot answer after some time (#19578)
  • examples/cord_ep: Dead lock when (re-)registering in callback function (#12884)
  • examples/gnrcborderrouter: 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/ipv6: "invalid payload length" - corrupted IPv6 header when ENABLE_DEBUG=1 in mbox.c (#20390)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcborderrouter: Kconfig and C disagree about number of addresses per interface (#19947)
  • gnrcicmpv6echo: 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)
  • gnrcrpl: missing bounds checks in _parseoptions (#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)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)
  • Removing a TNT global address then adding a new one does not work (#20318)
  • 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)

Timer related issues (7)

  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periphtimer: systematic proportional error in timerset (#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)

Drivers related issues (11)

  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • mdterase success, but vfsformat 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)

Native related issues (4)

  • 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)

Other platforms related issues (13)

  • 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)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • examples/gnrcborderrouter: espwifiinit 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)

Build system related issues (6)

  • 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)
  • EXTERNALMODULEDIRS 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)

Other issues (69)

  • 2023.04 release bug tracking (#19469)
  • [tracking] Bugs found by the peripheral selftest (#20071)
  • [Tracking] Fix failures of test-on-iotlab (#20791)
  • [TRACKING] sys/shell refactoring. (#12105)
  • [tracking] unnecessary use of floating point arithmetic (#19614)
  • NVICSystemReset 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)
  • build system: race condition when building and running an app for native (#20948)
  • 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 semtechloramacsend call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoapreqsend and related should return negative for errors (#19393)
  • gnrcipv6nib: 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)
  • periphrtt: rttset_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compileandtestforboard.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • 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)
  • stdiotinyusbcdc_acm hangs with picolibc (#19277)
  • STM32 Nucleo boards improperly clocked (#19778)
  • STM32F4-discovery + mrf24j40 not working (#19711)
  • 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/pkglibschc: Failing testreassemblesuccessack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdiortt if autoinit 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 165 known issues in this release

Fixed Issues since the last release (2024.07)

  • #20472 probably broke macOS docker build (#20853)
  • (cortex-m) unexpected kernel panic after thread exit (#20812)
  • gcoap_fileserver: can't deal with 16 byte block size (#20686)
  • dnsmsgparse_reply() fails for response from DNS64 service (#20355)
  • drivers/srf04: incorrect values on ATmega based platforms (#13079)
  • gnrcnetifpktq leaks memory (#17924)

5 fixed issues since last release (2024.07)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT. 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.

- C
Published by benpicco about 1 year ago

riot - Release-2024.07

RIOT-2024.07 "StrikinglyCrowded" - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

The 2024.07 release, nicknamed "StrikinglyCrowded", includes many features and bug fixes. Here are some of the highlights:

  • RIOT now boots on the Arduino Nano 33 BLE Sense (#20668)
  • To support boards with Ethernet plugs such as the Adafruit Ethernet FeatherWing, RIOT now ships a driver for the W5500 ethernet chip (#20301)
  • RIOT now leverages the ARMv8-M hardware support to enforce the stack size (#20633)
  • The PSA Crypto API implementation in RIOT now supports persistent key storage and additional hashing algorithms (#20099, #20598, #20698)
  • This release features several useful additions to the RIOT CoAP stacks: a coaps forward proxy for gcoap, delayed responses for nanocoap_sock, and the ability to mount a remote filesystem over CoAP (#20454, #20266, #20687)
  • Support of the 16-bit MSP430 MCU has been improving over the last few releases, with the addition of power management in this release as an example (#20613)
  • First steps towards enabling RIOT support of new Microchip SAM MCUs (#20708, #20710, #20713, #20714)
  • Compiling with BUILD_IN_DOCKER=1 will now by default use the exact container version the code was tested in the CI, fetching it from upstream if not locally present. (#20472)

175 pull requests, composed of 358 commits, have been merged since the last release, and 5 issues have been solved. 36 people contributed with code in 80 days. 650 files have been touched with 88156 (+) insertions and 3949 deletions (-).

Notations used below

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

New features and changes

Core

  • core/assert: halt running thread instead of panic (#20627)
  • core/lib/assert: consistify output and cleanup documentation (#20701)
  • core/panic: make reboot on panic configurable (#20630)
  • core/thread: "fix" valgrind errors in threadmeasurestack_free() (#20726)

System Libraries

  • sys/event.h: Fixed documentation error by adding a type cast. (#20704)
  • sys/shell: add support for running a batch of commands from a file (#20651)
  • rust: bump rust-riot-{sys,wrappers} version (#20786)
  • shell/vfs: Handle print failure in genfile cmd gracefully (#20595)
  • sys/hashes: change SHA2 PAD type to const (#20729)
  • sys/psa_crypto: ed25519 private key {ex,im}port (#20334)
  • sys/psa_crypto: Implement persistent key storage (#20099)
  • sys/psa_crypto: remove keysize determination from Kconfig files (#20674)
  • sys/psa_crypto: SHA-{384,512/{224,256}} (#20598)
  • sys/psa_crypto: sha3 support (#20698)
  • sys/shell: Update cryptoauthlib shell commands (#20673)
  • sys/vfs: use atomic_utils rather C11 atomics (#20513)

Networking

  • gcoap: add coaps forward proxy (#20454)
  • gnrc, nanocoap: add optional work-arounds for buggy CoAP servers (#20564)
  • nanocoap_fs: add nanoCoAP as VFS backend (remote CoAP fs) (#20687)
  • nanocoapsock: add nanocoapgetblockwiseto_buf() (#20690)
  • nanocoap_sock: implement separate response (#20266)
  • driver/w5500: driver for the W5500 ethernet chip (#20301)
  • examples/gcoap: take full URI as input (#20554)
  • gnrc/ipv6: Check for overflow (#20771)
  • l2filter: mark module and related netopt options as experimental (#20634)
  • pkg/lwip: use sys/event for handling ISR and bhp (#18359)

Packages

  • pkg/tflite-micro: add proper options to flatc (#20703)
  • pkg/wakaama: implement IPSO sensor objects in LwM2M (#20652)
  • pkg/wamr: Added support for THUMB_VFP in wamr Makefile (#20628)
  • Makefile.include: creation of CACHEDIR.TAG as a dependency of pkg- prepare (#20689)
  • pkg/littlefs2: bump to v2.9.2 (#20591)
  • pkg/tflite-micro: Update tflite-micro to latest version. requires update of pkg/flatbuffers as well. (#20683)
  • pkg/wamr: updated package to WAMR 1.3.3 (#20691)

Boards

  • boards/arduino-nano-33-ble-sense: add support for arduino- nano-33-ble-sense (#20668)
  • boards/b-l072z-lrwan1: add missing adc feature (#20733)
  • boards/nucleo-f303ze: add pinout (#20717)
  • boards/nucleo-l452re: add ADC (#20778)
  • boards/sodaq-sara-sff: add status pin for SARA (#20279)
  • cpu/stm32: add ADC support for WB55 (#20773)
  • drivers/led: add LED_NUMOF and convenience inline functions (#20783)
  • drivers/ws281x: Add saul support (#20562)
  • boards/common/stm32: simplify ifdef logic (#20617)
  • boards/nRF52xx: correctly set JLINK_DEVICE (#20599)
  • boards/nucleo-l476rg & stm32l476g-disco: fix MCU table (#20751)
  • boards/stm32l0538-disco: enable cpy2remed (#20766)
  • boards/stm32l476g-disco: enable cpy2remed (#20734)
  • build system: clean up netif features (#20700)
  • cpu/{gd32v,stm32}/periph/adc: make ADC clock setable (#19630)

CPU

  • cpu/cortexm: add stack limit support for Cortex-M33 (#20633)
  • cpu/cortexm: rework bkpt instruction call on panic (#20616)
  • cpu/cortexm_common: print last active thread on stack corruption (#20709)
  • cpu/esp: Handle format print errors (#20596)
  • cpu/msp430: implement power management (#20613)
  • cpu/nrf5x: implement pm_off() for nRF53/9160 (#20590)
  • cpu/nrf5x_common: fix ztimer issue on warm-boot (#20665)
  • cpu/nrf5x_common: properly calibrate RC-based low-frequency clock (#20669)
  • cpu/sam0: Remove deprecated muxpos (#20525)
  • cpu/sam0_common: avoid bitfield usage (#20747)
  • cpu/samd21: avoid the use of bitfield (#20713)
  • cpu/samd5x: avoid the use of bitfields (#20714)
  • cpu/samd5x: handle CAN errors (#20667)
  • cpu/saml1x: avoid the use of bitfield in register calls (#20710)
  • cpu/saml21: avoid the use of bitfield in register call (#20708)
  • cpu/stm32/periph/stm32eth: provide confirmsend (#18428)
  • cpu/stm32: de-duplicate ifdefs (#20609)
  • periph/flashpage: remove deprecated flashpage*free functions (#18093)
  • pkg/lwip: make use of confirm send (#18427)
  • Remove extraneous bitwise assignment operation on NRF5X_common gpio.c (#20737)
  • sam0eth: implement .confirmsend() to fix fragmented sending (#20666)
  • tree wide: compilation fixes for native64 on musl systems (#20730)

Device Drivers

  • drivers/at24cxxx: Add M24C01 device and enhance documentation (#20588)
  • drivers/led: add LEDXISPRESENT defines (#20637)
  • drivers/mtd: Add check for integer overflow (#20587)
  • Drivers: add MAX31855 thermocouple-to-digital converter (#20741)
  • drivers/at86rf215: port to new netdev API (#20672)
  • drivers/at: expose some internal API (#20702)

Documentation

  • boards/nucleo-c031c6: add pinout to doc (#20657)
  • boards/nucleo-l452re: add pinout to doc page (#20678)
  • boards/nucleo-l4r5zi and l496zg: add pinout to documentation page (#20707)
  • boards/nucleo144: add pinout diagrams to boards documentation (#20614)
  • doc/getting-started: add hint for correct access rights on serial device (#20600)
  • doc/terminals: add putty and sort terminals (#20611)
  • /README.md: match doc (#20740)
  • boards/doc: Adafruit Feather nRF52840 Sense is popular (#20597)
  • boards/nucleo-f429zi & f439zi: documentation improvements (#20594)
  • boards/nucleo-f722ze: doc update (#20671)
  • boards/stm32l0538-disco: doc improvements (#20767)
  • boards: Update SAM0-based documentation (#20621)
  • doc: fix links to GNRC master thesis (#20785)
  • doc/doxygen: remove default value for search form (#20681)

Build System / Tooling

  • .editorconfig: add EditorConfig (#20746)
  • pkg: Add script to check third party package version (#20662)
  • tools/dhcpv6-pd_ia: fix: Add explicit subnet id (#20776)
  • dist/tools/buildsystemsanitycheck: make shellcheck happy (#20721)
  • dist/tools/tapsetup: make compatible with doas (#20712)
  • Makefile.include: place compile_commands.json by rule target (#20716)
  • makefiles/docker.inc.mk: Pin riotbuild version with BUILDINDOCKER=1 (#20472)
  • makefiles/docker: prevent recursive docker invocation (#20638)
  • makefiles/tools/serial.inc.mk: make use of pyterm session names (#20121)
  • makesfiles/jlink: fix exports for flashing (#20779)
  • tree-wide: Introduce netif feature and use it (#20682)

Examples

  • examples/psa_crypto: pass environment variable down to docker (#20663)

Testing

  • tests/drivers/at: add check if device is initialized before sending command (#20140)
  • check-labels.yml: bump to v1.1.2 (#20727)
  • ci: disable esp32-wroom-32 tests (#20715)
  • release-tests.yaml: remove (always failing) matrix notification (#20742)
  • test/sys/progress_bar: temporary printout to debug flaky test (#20763)
  • tests/drivers/pn532: fix init error handling and increase verbosity (#20750)
  • tests/sys/progress_bar: move configuration to app.config (#20764)
  • tests/sys/progress_bar: remove debug print (#20768)
  • tests/sys/psa_crypto*: remove test symlinks (#20545)
  • tests/sys/psa_crypto: increase timeout (#20612)
  • tests/sys/psa_crypto: test interleaved hash operations (#20606)
  • tests/sys/psacryptoecdsa: fix stacksize determination (#20760)

API Changes

  • build system: rename ethernet feature into netif_ethernet (#20694)
  • cpu/native: fix build with musl (#18942)
  • pkg/monocypher: bump to 4.0.2 (#20670)

And 32 minor changes.

Deprecations (1)

  • boards/waspmote-pro: deprecate board (#20649)

Bug fixes (22)

  • build system: add netif_openwsn feature (#20695)
  • makefiles: add OPENOCDDEBUGADAPTER and SLOTAUXLEN to riotboot build environment (#20752)
  • cpu/esp*: fix compilation with GCC 14.1.0 (#20719)
  • cpu/esp32/gpio_ll: fix & cleanup (#20635)
  • cpu/samd5x/can: fix flag handling on receive (#20644)
  • cpu/stm32-L4: fix ADC initialization (#20756)
  • dist/tools/bmp: fix target parsing (#20661)
  • drivers/periph_wdt: fix auto starting of watchdog timer (#20755)
  • drivers/w5500: fix W5500 link up/down events in interrupt mode (#20728)
  • gcoap: propagate local tx aux to gcoapreqsend() and in handlerreq() (#20711)
  • measurestackfree_internal(): don't try to align end of stack (#20723)
  • nanocoap sock: stop retransmissions after empty ACK (#20697)
  • nanocoap/sock: fix state handling for mismatching message ID in nanocoap_sock_request_cb() (#20725)
  • nanocoaplinkformat: don't drop characters in fragmented entries (#20655)
  • nib: some fixes when a router or a prefix is deleted (#20329)
  • pkg/lwext4: Minor string fixes (#20586)
  • pkg/micro-ecc/psa_uecc: convert between SEC 1 and micro-ecc public key formats (#20676)
  • sys/crypto: fix OCB mode (#20745)
  • sys/net/grnc: fix NULL ptr dereferencing (#20660)
  • sys/psacrypto: correct use of (ECDSA) keybits (#20607)
  • sys/random: fix SHAxPRNG initbyarray (#20718)
  • sys/ztimer64: fix build when PRIu64 is not defined (#20693)

Known issues

Network related issues (57)

  • 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)
  • DHCPv6 client: Handling of NotOnLink incorrect (#20349)
  • dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC (#14689)
  • dnsmsgparse_reply() fails for response from DNS64 service (#20355)
  • driver/mrf24j40: blocks shell input with autoinitgnrc_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/gnrcborderrouter cannot answer after some time (#19578)
  • examples/cord_ep: Dead lock when (re-)registering in callback function (#12884)
  • examples/gnrcborderrouter: 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)
  • gcoap_fileserver: can't deal with 16 byte block size (#20686)
  • Global IPv6 addresses remain deprecated after receiving RA (#19846)
  • gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
  • gnrc/ipv6: "invalid payload length" - corrupted IPv6 header when ENABLE_DEBUG=1 in mbox.c (#20390)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcborderrouter: Kconfig and C disagree about number of addresses per interface (#19947)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#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)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)
  • Removing a TNT global address then adding a new one does not work (#20318)
  • 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)

Timer related issues (7)

  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periphtimer: systematic proportional error in timerset (#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)

Drivers related issues (11)

  • at86rf2xx: Simultaneous use of different transceiver types is not supported (#4876)
  • cpu/msp430: GPIO driver doesn't work properly (#9419)
  • examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
  • fail to send data to can bus (#12371)
  • mdterase success, but vfsformat 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)

Native related issues (4)

  • 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)

Other platforms related issues (13)

  • 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)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • examples/gnrcborderrouter: espwifiinit 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)

Build system related issues (6)

  • 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)
  • EXTERNALMODULEDIRS 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)

Other issues (68)

  • 2023.04 release bug tracking (#19469)
  • [tracking] Bugs found by the peripheral selftest (#20071)
  • [Tracking] Fix failures of test-on-iotlab (#20791)
  • [TRACKING] sys/shell refactoring. (#12105)
  • [tracking] unnecessary use of floating point arithmetic (#19614)
  • NVICSystemReset 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 semtechloramacsend call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoapreqsend and related should return negative for errors (#19393)
  • gnrcipv6nib: 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)
  • periphrtt: rttset_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compileandtestforboard.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • 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)
  • stdiotinyusbcdc_acm hangs with picolibc (#19277)
  • STM32 Nucleo boards improperly clocked (#19778)
  • STM32F4-discovery + mrf24j40 not working (#19711)
  • 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/pkglibschc: Failing testreassemblesuccessack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdiortt if autoinit 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 166 known issues in this release

Fixed Issues since the last release (2024.04)

  • BlackMagicProbe does not recognize nRF52 device (#20604)
  • missing build dependencies in the rust build (#19714)
  • sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC on stm32wb (#15917)
  • driver/hts221: Temperature and Humidity readings incorrect (#12445)
  • NATIVEINCLUDES Does not include USEMODULEINCLUDES from logprintfnoformat (#11603)

5 fixed issues since last release (2024.04)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT. 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.

- C
Published by mguetschow over 1 year ago

riot - Release-2024.04

RIOT-2024.04 "UwUtastic" - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

The 2024.04 release, nicknamed "UwUtastic", includes many features and bug fixes. Here are some of the highlights:

  • RIOT boots on two newly added boards:
    • The Nintendo Game Boy Advance (#19519)
    • Native on 64-bit Linux / x86_64 (#20315, #20335, #20339)
  • The documentation features a new guide to help you set up a RIOT develpoment environment on Windows (#20426)
  • To accommodate the ever growing RAM sizes in the IoT, RIOT can now monitor your malloc usage (#20363)
  • Dependency modelling via Kconfig is no longer part of RIOT. A big step forward towards having only one source of truth for configurations (#20438)

210 pull requests, composed of 446 commits, have been merged since the last release, and 4 issues have been solved. 42 people contributed with code in 82 days. 2409 files have been touched with 26218 (+) insertions and 29933 deletions (-).

Notations used below

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

New features and changes

Core

  • core/lib/cib: add new functionality (#20464)
  • macros/utils: add LIMIT() and ABS() macros (#20352)
  • mbox: provide function to unset initialized mbox (#15485)

System Libraries

  • add error check of aes_encrypt() (#15576)
  • eventperiodiccallback: add eventperiodiccallback_create() (#20459)
  • shell/cmds: add udptty command (#19742)
  • sys/libc: add endian.h (#20310)
  • sys/shell/lwip: add IPv4 configuration to lwip ifconfig command (#19849)
  • tests: Add NULL pointer argument test for fmtlpad/tolower/str (#20344)
  • makefiles/cargo: Remove CARGO_CHANNEL, add make info-rust and simplify Cargo invocations (#20319)
  • Monitoring malloc usage (#20363)
  • rust: Increase Cargo.lock stability and usefulness (#18684)
  • sys/checksum: Remove deprecated crc16_ccitt functions (#20527)
  • sys/hashes: support for SHA-{384,512/{224,256}} (#20484)
  • sys/isrpipe/read_timeout: don't set up timer if data is available (#20558)
  • sys/newlibsyscallsdefault: fix race condition in __sinit() (#20392)
  • sys/psa_crypto: use SHA256 CSPRNG as default (#20460)
  • sys/shell: Document that shell access means root access (#20546)
  • sys/suit: Remove deprecated suitcoaprun function (#20528)
  • sys/suit: return error when URL buffer is too small (#20559)
  • sys/tiny_strerror: fix compilation on LLVM (#20483)

Networking

  • gcoap: add some client-side observe handling (#20073)
  • nanocoap: add coapbuildreply_header() (#20284)
  • nanocoap: introduce coapgetmethod() (#20191)
  • nanocoap_sock: add support for IPv4 (#20476)
  • net/sock_dtls: add public key verification (#20048)
  • pkg/wakaama: Notify resource updates when writing to resources (#20326)
  • sys/net/ipv4: add IPV4ADDRINIT() macro (#20354)
  • always use nanocoapresources instead of manually assembling coapresources
  • cord_lc: Process truncated reads (#20547)
  • gnrcipv6nib: Ignore PIO with on-link flag (#20418)
  • nanocoap/cache: Extend with option-only cache keygen (#20043)
  • pkg/tinydtls: enforce the default dtls user params to be configurable (#20478)
  • routing/rpl: Fixing styling & format (#20294)
  • sys/net/gnrc: Remove code duplication (#16502)

Packages

  • pkg/wakaama: add Light Control object implementation (#16204)
  • ci: support git-cache-rs (#20311)
  • Makefile.{include,base},pkg/nanopb: fix target deps & code generation (#20400)
  • pkg/flashdb: enhance FAL config (#20221)
  • pkg/uzlib: warn about memory leak during compression (#20293)

Boards

  • boards/cpu: Add GBA boot support to RIOT (#19519)
  • boards/nucleo-c031c6: add PWM configuration (#20520)
  • boards/nucleo-u575zi-q: Add support (#20444)
  • boards/weact-g030f6: add support for minimal break-out board (#20337)
  • cpu/rpx0xx: add initial pwm support (#20473)
  • cpu/stm32: add support for STM32C0 and NUCLEO-C031C6 (#20300)
  • boards/feather-nrf52840-sense: declare lsm6ds33 accelerometer (#20436)
  • boards/feather-nrf52840-sense: use generic lsm6dsxx (#20526)
  • cpu/msp430/f2xx: clean up periphuart,periphspi (#20357)
  • cpu/nrf9160: fix GPIOTE ISR (#20560)
  • cpu/samd5x write can driver (#19736)
  • cpu/stm32u5: Enable rtc support (#20521)
  • native64: New board for 64-bit native Linux / x86_64 (#20315, #20335, #20339)

CPU

  • cpu/native: add gpio-mock (#20431)
  • cpu/native: Add support for periphtimerquery_freqs (#20306)
  • drivers/periphgpioll: Implement API to switch direction (#20292)
  • stdio_dispatch: allow to select multiple stdio methods at the same time (#19738)
  • cpu/esp8266: allow arbitrary SPI clocks (#20410)
  • cpu/native/periph/uart: uart_poweroff() closes the file descriptor + extended baud-rate support on Linux (#20365)
  • cpu/native: Fix executable stack warning (#20307)
  • cpu/native: return error code on failed assertion (#20419)
  • cpu/stm32/periph/gpio: simplify condition code (#20479)
  • cpu/stm32/periph/usbdev_fs: avoid using ztimer when not needed (#20467)
  • cpu/stm32: Fix ifdefs in periphgpioll (#20530)
  • cpu/stm32: remove redundant conditional compile block (#20495)
  • drivers/mtd_flashpage: allow to define AUX slot on flash (#18608)
  • sys/byteorder: clean up implementation (#20313)
  • sys/cppnewdelete: always enable the module when C++ is used (#20348)
  • tests: exit native with error value on failure (#20445)
  • treewide: Rust updates (#20303)

Device Drivers

  • drivers/lsm6dsxx: Allow generic LSM6DSXX driver (#20504)
  • drivers/lsm6dsxx: refactoring Lsm6dsl into common driver Lsm6dsxx (#20170)
  • drivers/w5100: make use of netdeveui48get() (#20304)

Documentation

  • build system: add list of features for documentation and sanity checking (#20366)
  • doc: Add guide for dev setup on Windows (#20426)
  • doc: add terminal program configuration (#20493)
  • doc: doxygen: add "Topics" to menus (#20443)
  • doc: Move community processes and vision (import from Wiki) (#20496, #20491, #20498)
  • RDM: Naming boards (#18589, #20469)
  • boards/feather-nrf52840*: doc cleanup (#20422)
  • boards/nucleo-c031c6: fix ADC and enhance doc (#20502)
  • doc/roadmap: Make working 6LBR a goal (#20351)
  • doc: Allow resizing of doxygen side-nav (#20511)
  • README: Change Section titles from all caps to regular (#20405)

Build System / Tooling

  • build system: add --no-warn-rwx-segments to linker (#20381)
  • dist/tools/mspdebug: build from source (#20345)
  • Avoid using egrep (#20522)
  • build system: Improve failure mode for FEAUTRESREQUIREDANY (#20408)
  • dist/tools/dhcpv6-pd_ia: recognize Debian correctly (#20487)
  • Enable compileandtestforboard to skip if nothing changed (#19546)
  • tools/openocd: define SWD_EN signal for tigard (#20507)
  • tree wide: accommodate RISC-V toolchain update (#20380)

Kconfig

  • Remove Kconfig dependency modelling (#20438)

Examples

  • examples/rust-gcoap: Add SAUL (#17554)
  • examples/filesystem: Update README and increase default stack size (#20439)
  • examples/psa_crypto: Fix modules to run ECDSA on SEs (#20461)
  • examples/wakaama: rename to lwm2m (#20327)

Testing

  • tests/shell: add test for preemption (#19005)
  • tests: Add cases to the scnu32hex unittest (#20463)
  • ci: disable some more flakey native tests (#20358)
  • examples, tests: disable native and native64 for more flaky tests (#20401)
  • make use of nanocoapserverauto_init (#20378)
  • Refactor tests periph uart (#20281)
  • release-test.yml: return of the Matrix notification (#20424)
  • tests/pkg/lwip: include default-radio-settings.inc.mk (#20325)
  • tests/sys/shell: increase the stack size of periodic thread (#20548)
  • tests/sys/timer_overhead: disable test on native in CI (#20324)
  • tests/unittests/README: link to Supported Boards updated (wiki -> site) (#20500)
  • tests: 64-bit support preparations (#20276)
  • tests: Cover API of scnu32hex in the unittest (#20458)
  • tests: disable flaky tests on native in the CI (#20382)
  • unittests: Move at test to driver tests (#20540)

API Changes

  • drivers/at: fix URC handling and add better testing (#20423)
  • drivers/at: parse +CME/+CMS responses and save error value (#20289)
  • gcoap: make gcoapreqsendtl() an alias of gcoapreq_send() (#20514)
  • gcoapfileserver: rename to nanocoapfileserver (#20030)
  • makefiles, treewide: Remove MCU variable (#20397)

Uncategorized

  • release-notes.txt: add 2024.01 release notes (#20350)
  • Roadmap: Add Home-Assistant integration on the roadmap (#20403)
  • vscode: Add hard-coded path to compile_commands.json (#20417)

And 59 minor changes.

Deprecations

Deprecations (3)

  • gnrcmac / gnrclwmac / gnrc_gomach: Deprecate modules (#20512)
  • Deprecate MCU preprocessor defines (#20397)

Removals (4)

  • drivers/rgbled: Remove driver (#20407)
  • periph_usbdev: remove deprecated event flag (#20488)
  • treewide: remove deprecated modules (#20471)
  • treewide: remove deprecated shell_commands module (#20485)
  • gnrcnetif: remove deprecated CONFIGGNRCNETIFLORAWANNETIFHDR (#20515)
  • sys/phydat: Remove deprecated print function (#20529)

Bug fixes (18)

  • drivers/periphgpioll: Fix GPIO_DISCONNECT handling and add compile time feature checks (#20290)
  • drivers/periphspi: Add `spitransferu16be()` (#20312)
  • coap: ensure DTLS buffer is at least 200 bytes (#20434)
  • core|sys: Guard periph_pm calls (#20523)
  • cpu/msp430/periphuart: Fix uartwrite() for USCI peripheral backport 2024.04
  • cpu/nrf52 i2c: Always buffer writes (#20298)
  • cpu/nrf52 i2c: Wait for complete transmission when writing NOSTOP (#20299)
  • cpu/sam0_common: flashpage: disable interrupts while writing (#15965)
  • cpu/sam0_common: RTC: avoid negative month after POR (#20448)
  • cpu/stm32/periph_adc: fix register access (#20360)
  • drivers/pcf857x: stop (ab)using gpio_t (#20435)
  • Fix for periph_timer on native (#20317)
  • gnrc_ipv6: fix double-free when pinging TNT loopback address (#20309)
  • ipv6/nib: cancel timers when NIB entry gets deleted (#20343)
  • ipv6/nib: fix router lifetime handling in RIO and fix gnrcipv6nibftadd() api (#20342)
  • nanocoapsock: always use coapoptputuri_pathquery() (#20245)
  • sys/usbus: answer get_status if request is standard type (#20475)
  • tests/drivers/at_unit: fix unit tests on native (#20551)

Known issues

Network related issues (56)

  • 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)
  • DHCPv6 client: Handling of NotOnLink incorrect (#20349)
  • dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC (#14689)
  • dnsmsgparse_reply() fails for response from DNS64 service (#20355)
  • driver/mrf24j40: blocks shell input with autoinitgnrc_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/gnrcborderrouter cannot answer after some time (#19578)
  • examples/cord_ep: Dead lock when (re-)registering in callback function (#12884)
  • examples/gnrcborderrouter: 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/ipv6: "invalid payload length" - corrupted IPv6 header when ENABLE_DEBUG=1 in mbox.c (#20390)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcborderrouter: Kconfig and C disagree about number of addresses per interface (#19947)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#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)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)
  • Removing a TNT global address then adding a new one does not work (#20318)
  • 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)

Timer related issues (7)

  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periphtimer: systematic proportional error in timerset (#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)

Drivers related issues (12)

  • 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)
  • mdterase success, but vfsformat 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)

Native related issues (4)

  • 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)

Other platforms related issues (14)

  • 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)
  • esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
  • examples/gnrcborderrouter: espwifiinit 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)

Build system related issues (7)

  • 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)
  • EXTERNALMODULEDIRS 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 (68)

  • 2023.04 release bug tracking (#19469)
  • [tracking] Bugs found by the peripheral selftest (#20071)
  • [TRACKING] sys/shell refactoring. (#12105)
  • [tracking] unnecessary use of floating point arithmetic (#19614)
  • NVICSystemReset 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)
  • BlackMagicProbe does not recognize nRF52 device (#20604)
  • 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 semtechloramacsend call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoapreqsend and related should return negative for errors (#19393)
  • gnrcipv6nib: 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)
  • periphrtt: rttset_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compileandtestforboard.py (#12621)
  • RIOT is saw-toothing in energy consumption (even when idling) (#5009)
  • 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)
  • stdiotinyusbcdc_acm hangs with picolibc (#19277)
  • STM32 Nucleo boards improperly clocked (#19778)
  • STM32F4-discovery + mrf24j40 not working (#19711)
  • 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/pkglibschc: Failing testreassemblesuccessack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdiortt if autoinit 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 168 known issues in this release

Fixed Issues since the last release (2024.01)

  • usbus/dfu: cannot detach device to reboot into bootloader (#20474)
  • 6ln RA PIO with L flag set is not ignored (#20377)
  • riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
  • sock_dns: Security issues (including remote code execution) (#10739)

4 fixed issues since last release (2024.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.

- C
Published by Teufelchen1 almost 2 years ago

riot - Release-2024.01

RIOT-2024.01 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

The 2024.01 release includes:

  • Breaking change for board definition due to XFA for pointers to defined MTD. This means users will need to:
    • remove the MTD_NUMOF definition 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 threadstatust cast (#19976)

System Libraries

  • Fletcher32: Add incremental API (#19981)
  • sys/event/timeout: add eventtimeoutis_pending() (#19963)
  • sys/hashes: add SHA-512 support (#19969)
  • sys/suit: introduce suitworkerdone_cb() (#20237)
  • riotboot: fix build errors (#20210)
  • sys/benchmark: fix integer overflow in benchmarkprinttime() (#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 coapfinduri_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 coapgetcode() (#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 periphtimerquery_freqs (#20142) (#20143) (#20144) (#20145) (#20146) (#20147) (#20148)
  • cpu/stm32: add ADCAL operation (#20044)
  • drivers/periph/uart: add periphuarttx_ondemand feature (#20108)
  • cpu/avr8common: allow to build with !periphpm (#20247)
  • cpu/avr8common: fix build with !corethread (#20240)
  • cpu/nrf5x_common: clean up UART implementation (#20111)
  • cpu/sam0/uart: implement uartpincts()/uartpinrts() (#20171)
  • cpu/sam0common: implement periphgpioll and periphgpiollirq (#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/periphtimer: add timerquery_freqs() (#16349)
  • drivers/mtdflashpage: improve _writepage (#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/riotbootgenhdr/genhdr: add update command (#20239)
  • Bump version of UF2 package (#20035)
  • examples/gnrcborderrouter: 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/uartlocatepins: 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/gnrcsixlowpanfragsfrcongure_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/psacryptose_cipher: disable test on esp32-wroom-32 (#20152)
  • tests/sys/psacrytpose: 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/gpioll: shrink gpioconf_t (#20236)
  • hashes/sha2{24,56}: Remove static variables from sha256 (#20116)
  • nanocoap: defuse footgun in coapgeturi_query() (#20195)
  • nanocoap: rename coapgetcode() -> coapgetcode_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 ipv6addrallnodeslink_local on interface up (#20259)
  • gnrcipv6nib: fix config for mixed 6lo/classic setup (#20167)
  • nanocoap: prevent integer underflow in coapoptputuripathquery() (#19994)
  • net/gnrc/netif: set 6LN flag for ethernet if gnrc_sixloenc is used (#20139)
  • pkg/nanocbor: Update for fixed nanocborskipsimple() (#19983)
  • sock/udp: work around gnrcsockrecv() 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

Network related issues (52)

  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • Address registration handling inappropriate (#15867)
  • app/netdev: application stops working after receiving frames with assertion or completely without error (#8271)
  • at86rf2xx: Dead lock when sending while receiving (#8242)
  • cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
  • dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC (#14689)
  • driver/mrf24j40: blocks shell input with autoinitgnrc_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/gnrcborderrouter cannot answer after some time (#19578)
  • examples/cord_ep: Dead lock when (re-)registering in callback function (#12884)
  • examples/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcborderrouter: Kconfig and C disagree about number of addresses per interface (#19947)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#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)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)

Timer related issues (7)

  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periphtimer: systematic proportional error in timerset (#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)

Drivers related issues (12)

  • 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)
  • mdterase success, but vfsformat 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)

Native related issues (4)

  • 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)

Other platforms related issues (13)

  • 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/gnrcborderrouter: espwifiinit 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)

Build system related issues (7)

  • 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)
  • EXTERNALMODULEDIRS 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)

  • NVICSystemReset 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 semtechloramacsend call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoapreqsend and related should return negative for errors (#19393)
  • gnrcipv6nib: 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)
  • periphrtt: rttset_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compileandtestforboard.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)
  • stdiotinyusbcdc_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/pkglibschc: Failing testreassemblesuccessack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdiortt if autoinit 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 DBGMCUCRDBG* 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.

- C
Published by MrKevinWeiss about 2 years ago

riot - Release-2023.10

RIOT-2023.10 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

The 2023.10 release includes:

  • PSA Crypto API implementation, one step closer to a secure IoT!
  • A bunch of default drivers for boards
  • Improved clang support

116 pull requests, composed of 318 commits, have been merged since the last release, and 2 issues have been solved. 23 people contributed with code in 95 days. 1109 files have been touched with 437877 (+) insertions and 3189 deletions (-).

Notations used below

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

New features and changes

System Libraries

  • drivers/periph_sdmmc: define a High-level SDIO/SD/MMC API and low- level SDMMC peripheral driver interface (#19539)
  • sys/event: add eventisqueued() (#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 sockauxttl (#19836)
  • cmdsgnrcnetif: Support enabling/disabling lwIP netifs from gnrc_netif shell (#19972)

Packages

  • mcufont: Initial addition of MCUFont package (#19726)
  • pkg/drivercryptocell310: 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/sipeedlongannano: 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/touchdevgestures: 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

  • compileandtestforboards: Add no-compile flag (#19817)
  • dist/testbed-support: Add openmote board backport 2023.10
  • dist/tools/jlink: fix DBG_PID assignment (#19960)
  • dist/tools/usb-serial: call ttys.py with its path (#19823)
  • make: COMPILECOMMANDSPATH 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
  • tests/gcoapfileserver: add zepdispatcher 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/mtddefault: fix for boards that define MTDNUMOF (#19907)
  • drivers/mtdspinor: 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
  • gnrcipv6nib: disable router advertisements on interface startup (#19920)
  • gnrcipv6nib: fix for border router with non-6lo interfaces (#19900)
  • nanocoap: prevent integer underflow in coapoptputuripathquery() backport 2023.10
  • netdev/ieee802154_submac: support setting promiscuous mode option (#19906)
  • nib/_nib-6ln: bail out early if address is no longer assigned backport 2023.10
  • pkg/nanocbor: Update for fixed nanocborskipsimple() backport 2023.10
  • 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
  • sys/shell/ping: fix ping packet size overflow (#19927)
  • tests/drivers/disp_dev: fix off by one in display area (#19844)
  • tests/pkg/lvgl*: fix the main thread stack size for ESPs (#19865)
  • ztimer/periodic: reinit remove from right clock and handle acquired ztimer (#19826)

Known issues

Network related issues (52)

  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • Address registration handling inappropriate (#15867)
  • app/netdev: application stops working after receiving frames with assertion or completely without error (#8271)
  • at86rf2xx: Dead lock when sending while receiving (#8242)
  • cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
  • dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC (#14689)
  • driver/mrf24j40: blocks shell input with autoinitgnrc_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/gnrcborderrouter cannot answer after some time (#19578)
  • examples/cord_ep: Dead lock when (re-)registering in callback function (#12884)
  • examples/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcborderrouter: Kconfig and C disagree about number of addresses per interface (#19947)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#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)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)

Timer related issues (7)

  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periphtimer: systematic proportional error in timerset (#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)

Drivers related issues (12)

  • 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)
  • mdterase success, but vfsformat 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)

Native related issues (4)

  • 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)

Other platforms related issues (16)

  • 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/gnrcborderrouter: espwifiinit 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 DBGMCUCRDBG* 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 (7)

  • 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)
  • EXTERNALMODULEDIRS 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)

  • NVICSystemReset 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 semtechloramacsend call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoapreqsend and related should return negative for errors (#19393)
  • gnrcipv6nib: 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)
  • periphrtt: rttset_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compileandtestforboard.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)
  • stdiotinyusbcdc_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/pkglibschc: Failing testreassemblesuccessack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdiortt if autoinit 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.

- C
Published by MrKevinWeiss over 2 years ago

riot - Release-2023.07

RIOT-2023.07 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

This release sees the addition of the openDSME IEEE 802.15.4 MAC. So far it is limited to 2.4 GHz O-QPSK and drivers that have been converted to the new sub-MAC architecture yet.

We also have two new supported MCUs: nRF53 and ATmega8. They share common peripherals with their siblings, for nRF53 only the application core is supported so far.

Finally, all tests live in subdirectories now, so the tests/ directory is much more orderly.

288 pull requests, composed of 661 commits, have been merged since the last release, and 35 issues have been solved. 26 people contributed with code in 96 days. 6844 files have been touched with 251875 (+) insertions and 224148 deletions (-).

Notations used below

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

New features and changes

Core

  • core/compiler_hints: add assume() hint (#19354)
  • core: add coremutexdebug to aid debugging deadlocks (#18620)
  • core/lib: make the use of DEBUG_BREAKPOINT on assert optional (#19766)
  • gnrc/ipv6autosubnets: allow to configure minimal prefix length (#19656)

System Libraries

  • shell/cmds: add genfile command (#19401)
  • sys: add common imath module mv isin() form test/driverdacdds (#19378)
  • usbus: Add support for endpoint halt condition (#17090)
  • buildsystem: Always expose CPURAMBASE & 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 sin6scopeid in epto_sockaddr() (#19658)
  • sys: partly refactor make dependency resolution (#19492)
  • usbus: Implement USBFEATUREDEVICEREMOTEWAKEUP 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/gnrcnetifhdr_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)
  • gnrcipv6nib: include RIO with all subnets in downstream RA (#19644)
  • nanocoap: allow to define CoAP resources as XFA (#19296)
  • nanocoap: clean up coapiterateoption(), make it public (#19713)
  • nanocoap: implement extended tokens (RFC 8974) (#19487)
  • nanocoapsock: defuse nanocoapsock_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/bu585i 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/usbdevsynopsysdwc2: add GD32V support (#19389)
  • boards/adafruit-clue: use shared usbboardreset.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 rtcsetalarm (#19610)
  • Fix periph clk (#19628)
  • makefiles/arch/msp430.inc.mk: Fix compilation issues with GCC 12 (#19484)
  • native/syscalls: rename realclockgettime 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 PCF857xBASEADDR 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)
  • gnrcsixlowpanfrag_sfr: mark as experimental + doc fixes (#19682)

Build System / Tooling

  • buildsystem: add target debug-client (#19725)
  • dist/tools/openocd: add OPENOCDSERVERADDRESS variable (#19724)
  • dist/tools/openocd: add RTT port variable (#19723)
  • tools/buildsystemsanity_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
  • dist/tools: Use /usr/bin/env to lookup Python. (#19448)
  • make/usbboardreset: 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/gnrcmactimeout: 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/lualoader: move to tests/pkg/lualoader (#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 eventthreadlowest module (#19627)
  • nanocoapsock: remove nanocoapget() (#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 USBUSHANDLERFLAGTRFAIL 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/cc26x0cc13x0: Drop feature cortexmmpu (#19507)
  • cpu/esp32: define RAMSTARTADDR 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/usbdevfs: fix ep registration and EPREG assignments (#19460)
  • cpu/stm32: Fix periphgpioll_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/usbussynopsysdwc2: fix interrupt handling in DMA mode (#19459)
  • gnrc/ipv6/nib: reset rs_sent counter also for not-6LN interfaces (#19747)
  • gnrcsixlowpanfragrb: fix OOB write in _rbufadd (#19680)
  • gnrcsixlowpanfrag_sfr: fix ARQ scheduler race-condition (#19679)
  • gnrcsixlowpaniphc: fix NULL pointer dereference (#19678)
  • gnrcsixlowpaniphc: 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/buildsystem/externalboard_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 OPENOCDCMDRESET_HALT (#19506)
  • usbus/msc: fixes for synopsys dwc2 driver (#19455)
  • usbus: don't trigger assertion in usbusurbsubmit() (#19664)

Known issues

Network related issues (51)

  • 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 autoinitgnrc_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/gnrcborderrouter cannot answer after some time (#19578)
  • examples/cord_ep: Dead lock when (re-)registering in callback function (#12884)
  • examples/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#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)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)

Timer related issues (7)

  • misc issues with tests/trickle (#9052)
  • MSP430: periph_timer clock config wrong (#8251)
  • periph/timer: timer_set() underflow safety check (tracking issue) (#13072)
  • periphtimer: systematic proportional error in timerset (#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)

Drivers related issues (13)

  • 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)
  • mdterase success, but vfsformat 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)

Native related issues (4)

  • 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)

Other platforms related issues (15)

  • 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/gnrcborderrouter: espwifiinit 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 DBGMCUCRDBG* 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 (7)

  • 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)
  • EXTERNALMODULEDIRS 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)
  • NVICSystemReset 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 semtechloramacsend call (pkg/semtech-loramac) (#18790)
  • gcoap: gcoapreqsend and related should return negative for errors (#19393)
  • gnrcipv6nib: 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)
  • periphrtt: rttset_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
  • pkg/tinydtls: Multiple issues (#16108)
  • Potential race condition in compileandtestforboard.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)
  • stdiotinyusbcdc_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/pkglibschc: Failing testreassemblesuccessack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdiortt if autoinit 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)
  • usbuscdcecm: failed assertion when host reboots (#19663)
  • Bug: eptosockaddr() does not update in6addr->sin6scopeid (#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: BUILDINDOCKER=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)
  • BUILDINDOCKER 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: RIOTFILERELATIVE 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.

- C
Published by benpicco over 2 years ago

riot - Release-2023.04

RIOT-2023.04 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

The 2023.04 release includes:

  • Mass Storage Class Support in USBUS
  • Initial support for libSCHC
  • FlashDB support
  • BLE downlink in GNRC Border Router
  • DTLS support for nanoCoAP in client mode
  • Congestion control for 6LoWPAN Selective Fragment Recovery
  • avr/flash_utils: strings (and other const data) no longer needs to be copied to RAM
  • New boards:
    • esp32c3-wemos-mini
    • esp32s2-lilygo-ttgo-t8
    • esp32s2-wemos-mini
    • esp32s3-pros3
    • rpi-pico-w
    • sipeed-longan-nano
  • New device drivers:
    • Black/white e-Paper/e-Ink display
    • RFID reader (MFRC522)
    • ST VL53L1X Time-of-Flight sensor

280 pull requests, composed of 595 commits, have been merged since the last release, and 3 issues have been solved. 27 people contributed with code in 83 days. 1246 files have been touched with 177090 (+) insertions and 36429 deletions (-).

Notations used below

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

New features and changes

Core

  • core/compiler_hints: add likely() / unlikely() hints (#19156)
  • core/xfa: disable asan on llvm (#19271)
  • pkg/libfixmath: bump version (#19182)

System Libraries

  • drivers/wdt: add periphwdtauto_start for early watchdog (#18257)
  • fuzzing: Add uri_parser setup (#19057)
  • Revert "sys/pmlayered: 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 CONFIGUSBUSMSCAUTOMTD 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 scnu32dec scnu32hex (#19027)
  • sys/fmt: use fflush(); stdio_write() instead of fwrite() (#19250)
  • sys/shell_lock: do not call strlen, less jumpy (#19157)
  • sys/tinystrerror: make use of flashutils.h (#19332)
  • testutils/printstack_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)
  • gnrcsixlowpanfragsfrcongure: optional congestion control support (#16171, #16159, #16170, #16158)
  • gnrc_static: add static network configuration (#18477)
  • nanocoaplinkformat: 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)
  • gnrcipv6nib: clean up resolveaddr() (#18939)
  • nanocoap_sock: ensure response address is the same as request address (#19361)
  • nanocoap_sock: implement DTLS socket (#18724)
  • nanocoapsock: implement nanocoapsock_delete() (#18738)
  • nanocoapsock: store message ID in nanocoapsock_t (#19178)
  • pkg/tinydtls: Reduce default verbosity, increase default sizes when CoAP is used (#19331)
  • shell/cmds: GNRC: replace puts() with printf() (#19327)
  • shell/gnrcicmpv6echo: separate ICMPv6 echo sending / parsing from shell command (#18934)
  • sockdtls: move common code into sockdtlsestablishsession() (#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/arduinoadafruitsensor: 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 mtdsdcarddefault (#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 periphrtcms (#19340)
  • drivers/mrf24j40: add support for IEEE 802.15.4 Radio HAL (#18472)
  • drivers/mtdsdcard: add mtdsdcard_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: stdiocdcacm: 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 periphgpioirq support (#19185)
  • cpu/gd32v: add periphgpioll and periphgpioll_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 periphrtcmem support (#19254)
  • cpu/gd32v: add periph_rtt support (#19202)
  • cpu/gd32v: add periph_spi support (#19214)
  • cpu/gd32v: add pmlayered support in periphpm (#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/espcommon: use generic WIFISSID/WIFI_PASS defines (#19286)
  • cpu/gd32v/periph_i2c: interrupt based driver (#19269)
  • cpu/native: Switch to ztimer for gettimeofday (#19349)
  • cpu/riscvcommon: convert to uwordt usage (#19345)
  • cpu/sam0_common: adc: implement 16 bit mode by oversampling (#19165)
  • cpu/stm32/periph/i2c: export PERIPHI2CMAXBYTESPER_FRAME (#19279)
  • cpu/stm32/periph/timer: don't stop counter (#19263)
  • cpu/stm32/periph/timer: fix clobered IRQ flag (#19385)
  • cpu/stm32/usbdevfs: fix ep registration and EPREG assignments backport 2023.04
  • drivers/at24cxxx: implement mtdat24cxxxreadpage (#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/usbdevsynopsysdwc2: 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/compilelikemurdock: 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 MODULESX126XRF_SWITCH hidden in kconfig (#19194)
  • Fix SX126X-STM32WL module in Kconfig (#19191)

Examples

  • examples/gnrcborderrouter: 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/periphflashpageunittest: 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 gcoapgetresourcelisttl -> gcoapgetresource_list renaming (#19295)
  • drivers/servo: reimplement with high level interface (#18392)
  • cpu/espcommon: use generic WIFISSID/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 gcoapreqsend returning 0 in error (#19383)
  • cpu/esp32: fix and improve UART initialization (#19146)
  • cpu/esp32: fix stdiousbserial_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 gpioread in periphgpio (#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 IDFTOOLSPATH default setting (#19125)
  • dist/tools/openocd: fix problems with riotboot caused by flashaddr function for OpenOCD v0.12 (#19409)
  • driver/usbdevsynopsysdwc2: use correct number of EPs (#19380)
  • drivers/at86rf2xx: fix default page being ignored backport 2023.04
  • drivers/usbdevsynopsysdwc2: disable DMA mode (#19388)
  • drivers/usbdevsynopsysdwc2: fix and re-enable DMA mode (#19397)
  • drivers/usbussynopsysdwc2: fix interrupt handling in DMA mode backport 2023.04
  • 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)
  • gnrcnetif: set lower bound for IEEE802154STACKSIZE_DEFAULT (#19339)
  • gnrc_static: don't parse address as prefix (#19313)
  • makefiles/boards/stm32: fix DFUUSBID handling (#19374)
  • makefiles/tools/serial.inc.mk: Handle new miniterm versions backport 2023.04
  • 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
  • shell/gnrcicmpv6echo: 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: ztimermock: guard ztimerondemand static functions (#19118)
  • tests/driverdacdds: fix output of sine and saw functions (#19251)
  • tests/{sysfido2ctap/usbusboardreset}: fix stdiousbserial_jtag dependency (#19261)
  • usbus/msc: fixes for synopsys dwc2 backport 2023.04

Known issues

Network related issues (52)

  • 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 autoinitgnrc_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/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_rpl: takes unusually long time to start routing packets (#19147)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)

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)
  • periphtimer: systematic proportional error in timerset (#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)
  • mdterase success, but vfsformat 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 (4)

  • 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)

Other platforms related issues (16)

  • 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/gnrcborderrouter: espwifiinit 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 DBGMCUCRDBG* 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 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)
  • BUILDINDOCKER 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: RIOTFILERELATIVE 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)
  • NVICSystemReset 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 compileandtestforboard.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)
  • stdiotinyusbcdc_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/pkglibschc: Failing testreassemblesuccessack_always (#19445)
  • tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
  • tests: broken with stdiortt if autoinit 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: BTNBOOTLOADERINVERTED doesn't work as expected. (#19364)
  • Race condition in SUIT around threads terminating (#19195)
  • socketzep: fragmentation broken if destination is multicast / ACKREQ 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.

- C
Published by MrKevinWeiss almost 3 years ago

riot - Release-2023.01

RIOT-2023.01 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

We are proud to announce the release of RIOT 2023.01, marking the tenth anniversary of the project. Over the past decade, RIOT has become a thriving open-source community, delivering cutting-edge technology for Internet of Things (IoT) devices. This release builds on top of the hard work and dedication of our developers, users, and contributors, and we would like to extend a heartfelt thank you to everyone who has been a part of our journey. Here's to another decade of innovation and growth!

Noteworthy changes the 2023.01 release includes, among many fixes and little things:

  • ztimer_ondemand: The next step towards seamless and automatic power management.
  • The Rust examples now default to stable Rust.

187 pull requests, composed of 570 commits, have been merged since the last release, and 13 issues have been solved. 37 people contributed with code in 58 days. 1248 files have been touched with 516544 (+) insertions and 12047 deletions (-).

Notations used below

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

New features and changes

Core

  • 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 bffindfirst_{set, unset}() (#18833)
  • sys/bitfield: add bf_popcnt() (#18879)
  • sys/malloc_tracing: add module to trace dyn memory management (#18912)
  • sys/stdiouart: add stdiouart_onlcr (pseudo-) module (#18731)
  • sys/tinystrerror: add tinystrerror_minimal (#18768)
  • ztimer: add ztimer_ondemand module for implicit power management (#17607)
  • rust: Use stable Rust (#18839)
  • suit: start worker thread on demand, make suithandleurl() public (#18551)
  • sys/pmlayered: align pmblocker_t for speed (#18846)
  • sys/printstackusage: 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/ipv6autosubnets: add CONFIGGNRCIPV6AUTOSUBNETS_STATIC option (#17429)
  • gnrcsixlowpanfrag_sfr: add support for queue-based ECN (#16175)
  • gnrcsixlowpanfrag_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)
  • gnrcsockudp: 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/arduinosdi12: 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 periphuartmodecfg support for Gecko Series 2 (#18946)
  • drivers/usbdevsynopsysdwc2: 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)
  • debugirqdisable: 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)
  • socketzep: make use of crc16ccittfalseupdate() (#18779)
  • treewide: replace RIOTFILERELATIVE 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/sdcardspi: make use of crc16ccittfalseupdate() (#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 tusbappconfig.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/gnrcborderrouter: 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: canfastci_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 stdiotinyusbcdc_acm (#19007)

Examples

  • examples/gcoap: replace parseendpoint by sockudpname2ep (#17870)
  • examples/timerperiodicwakeup: 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 coaphandlereq() (#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 usbboardreset support (#19006)
  • boards/common/blxxxpill: Fix pin conflicts in periph_conf (#18785)
  • boards/common/nrf52: fix timer config (#18948)
  • boards/dwm1001: use lis2dh12i2c instead of lis2dh12spi (#18857)
  • bootloaders/riotboot_dfu: fixes including sys/usb/usbus/dfu (#18964)
  • core/mbox: fix race condition (#18955)
  • cpu/atmegacommon/periphtimer: fix spurious IRQs (#18978)
  • cpu/efm32/pm: fix blocking EM1 (#18775)
  • cpu/efm32/timerseries2: fix interaction with pmlayered (#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/nrf5xcommon/periphtimer: fix spurious IRQs (#18970)
  • cpu/qn908x: use bitarithmtestand_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/usbdevsynopsysdwc2: 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)
  • nanocoapsock: don't store entire sock in coapblockrequestt (#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)
  • sam0common: use sizet len for I2C transfers (fixes #19008) (#19009)
  • sys/clif: Fixing out of bounds read under certain conditions (#18744)
  • sys/net/gnrc/pkt: fix gnrcpktdelete() (#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 ztimerperiphlptimer 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

Network related issues (52)

  • 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 autoinitgnrc_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/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrc_rpl: takes unusually long time to start routing packets (#19147)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)

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)
  • periphtimer: systematic proportional error in timerset (#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)
  • mdterase success, but vfsformat 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 (4)

  • 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)

Other platforms related issues (15)

  • 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 DBGMCUCRDBG* 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 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)
  • BUILDINDOCKER 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: RIOTFILERELATIVE 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)
  • NVICSystemReset 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 compileandtestforboard.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 stdiortt if autoinit 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)
  • socketzep: fragmentation broken if destination is multicast / ACKREQ not set (#19117)
  • sam0_sdhc: SDXC cards are not detected / handled properly (#18458)
  • semtechloramacinit 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 stdiocdcacm 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.

- C
Published by kaspar030 about 3 years ago

riot - Release-2022.10

RIOT-2022.10 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

The 2022.10 release includes, among many many bug fixes and improvements, the following prominent contributions:

Security Fixes

The GNRC network stack has received a number of security fixes. All users of GNRC are advised to update to the new release. Given that no user facing breaking API changes are included, we are hopeful that the update is painless and quickly possible.

ESP32 family

RIOT has been ported to the ESP32-C3, ESP32-S2, and the ESP32-S3 MCUs. In addition driver support for the integrated BLE transceiver of the ESP32 MCUs has been added.

Major CI Upgrade

While the CI is developed in an independent repository, it is still a noteworthy change that our CI software, Murdock, was updated since the last release. In addition to changes under the hood the web front end got a major revamp. You will directly notice the improvements in page load time and clarity/structure of the interface. If you haven't already, please check out https://ci.riot-os.org to take a look.

Support for Priority Inheritance in core_mutex

If a shared resource guarded by a mutex is used by a high priority and a low priority thread, the high priority thread may end up waiting on the low priority thread to return the resource. If medium priority threads now interrupt the low priority thread while working with the shared resource, the high priority thread ends up waiting on both medium and low priority threads. This effect is called priority inversion.

Priority inversion can in most cases be solved by carefully assigning priorities and resources. In some cases however, this cannot be avoided: Let's consider a scenario in which an I2C temperature sensor and an I2C IMU are used. Since temperature changes are slow in frequency, the temperature readings are assigned the lowest priority, while the IMU readings are assigned the highest priority. The sensible approach here is to have both sensors on distinct I2C buses. However, if e.g. only a single I2C bus is available by the hardware priority inversion cannot be prevented by careful resource and priority assignment alone. In these cases the module core_mutex_priority_inheritance can be used to lend the low priority thread the priority of the high priority thread while the high priority thread is waiting for the mutex hold by the low priority thread.

After RIOT has already been launched into space it is now ready to for Mars.

USB Support for STM32F1 MCUs

While RIOT has longstanding USB support for many STM32 MCU families, the F1 family was not supported due to some peculiarities in the memory layout. The driver has now been extended to handle them correctly. With this, the popular STM32F103 bluepill board now supports stdio via USB, which however still has to be manually enabled e.g. by:

sh 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 coremutexpriority_inheritance (#17040)
  • core: Treat stack overflows as an unrecoverable error (#18448)

System Libraries

  • doc: add deprecation notice on deprecated pseudo-modules (#18698)
  • eventperiodiccallback: 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 vfsformatby_path() (#18447)
  • doccheck: make the file pattern more match riot.doxyfile (#18431)
  • eventperiodiccallback: 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 sockudpept to coaprequestctxt (#18519)
  • gcoap_dns: Add DNS cache support (#18329)
  • gnrc/lorawan: add basic LoRaWAN 1.1 features (#17884)
  • gnrcnetiflorawan: add support for LINKUP/DOWN events (#18699)
  • nanocoapsock: add nanocoapsock_put() (#18514)
  • net/gnrc_netif: add support for priority queues (#18496)
  • net/sock/dtls: introduce sockdtlssendv_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/networklayer/ipv4/addr: add ipv4addr_print function (#18694)
  • sys/shell: ncput: add option to read from stdin (#18639)
  • sys/uriparser: Adding the port as uint16t (#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 tltype to coaprequestctxt (#18313)
  • gcoap_dns: implement Max-Age-based TTL calculation (#18443)
  • gcoapforwardproxy: send empty ACK when response takes too long (#18386)
  • gnrcipv6nib: handle ifaceup/ifacedown 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)
  • sockdnscache: move to dns_cache (#18318)
  • sys/net: include misplacement inside linkage-specification (#18587)
  • treewide: s/gnrcpktbufcmd/shellcmdgnrc_pktbuf/ (#18640)

Packages

  • Add package tiny-vcdiff (#17797)
  • pkg/cryptoauthlib: Pass ATCANOHEAP 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/usbdevsynopsysdwc2: 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 CPUFAM and CPUARCH 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/gpioll and periph/gpioll_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/peripheth: Add stm32eth_tracing (#18418)
  • pkg/nimble: add feature bleadvext 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 esplogwrite (#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 periphspireconfigure (#18710)
  • cpu/esp32: make esphwcounter 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/espcommon: MODULEXTENSA has to depend on HASARCHESP_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: cpuprintlastinstruction() -> cpugetcallerpc() (#18226)
  • cpu: make use of cortexm.ld (#18636)
  • gnrcnetif: handle NETDEVEVENTLINKUP/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)
  • usbdevsynopsysdwc2: 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/ipv6autosubnets: 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/zepdispatch: add Wireshark capture support (via mac802154hwsim) (#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 gnrcnetifcmd_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)
  • riotctrlshell.cordep: remove regif parameter (#18716)
  • tests/ieee802154*: fix txdone handler on ACK_TIMEOUT and improve tests (#18382)
  • tests/periphgpioll: drop core dump merged by accident (#18541)
  • tests/periphtimershortrelativeset: clarify outcome (#18513)
  • tests/pkglvgltouch: randomize button position on click (#18481)
  • tests/pkgtinyvcdiff: Initialize mtd->writesize (#18529)
  • tests/threadpriorityinversion: blacklist esp32 (#18535)
  • tests/ztimer_periodic: improve output and relax on native (#18491)
  • tests/{periphgpioll,pkgfff}: change CPUFAM 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/sam0common: adc: drop pin from adcconfchant (#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
  • hashescmac: rename to hashesaes128_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/riotbootdfu: move ztimerinit() 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 lenget (#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/atmegacommon/periphtimer: fix spurious IRQs (#18981)
  • cpu/esp32/periph_timer: allow changing callback or freq (#18973)
  • cpu/esp32: fix dependency for periph/rtt and module esprtctimer_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/espcommon/periphuart: fix call to uartset_mode (#18720)
  • cpu/nrf5xcommon/periphtimer: fix spurious IRQs (#18974)
  • cpu/qn908x: use bitarithmtestand_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 / usbdevsynopsysdwc2 (#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 m2mwifihandle_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)
  • gcoapforwardproxy: copy Max-Age from forwarded Valid if it exists (#18471)
  • gnrcipv6nib: make configurable via Kconfig again (#18360)
  • gnrc_netif: don't allocate message queue on the stack (#17905)
  • gnrcnetifconf: fix auto-6ctx switch (#18370)
  • gnrcnetifieee802154: Ignore packets without source address (#18820)
  • gnrcsixlowpanfragrb: fix integer underflow in _6lofrag_size() (#18820)
  • gnrcsixlowpanfragvrb: Assert no usage of a vrb with srclen == 0 (#18820)
  • gnrcsixlowpaniphc.c: dereference ipv6_hdr in DEBUG() after assignment (#18820)
  • gnrcsixlowpaniphc: fix buffer overflow in gnrcsixlowpaniphc_recv() (#18820)
  • gnrcsixlowpaniphc: fix integer underflow in gnrcsixlowpaniphc_recv() (#18820)
  • gnrcsixlowpaniphc: fix null pointer dereference in iphcencode() (#18820)
  • gnrcsixlowpaniphc: fix packet type confusion in iphcencode() (#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 BUILDINDOCKER (#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/arduinosdi12: 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 nimbleadvext (#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 logcolor and log_printfnoformat (#18425)
  • sys/net/gnrc/pkt: fix gnrcpktdelete() (#18880)
  • sys/net/sockutil: fix _findhoststart() (#18723)
  • sys/printstackusage: update MIN_SIZE (#18924)
  • sys/shell/cmds: fix shellcmdnetif 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/cc2538rf: set eventcallback 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/mpustackguard: Fix compilation on modern GCC (>= 12.x) (#18872)
  • tests/nrf802154: set event_callback before init (#18751)
  • tests/pbkdf2: de-flaky-fy test (#18941)
  • tests/periphgpioll: fix the output for GPIOOUTPUTOPEN_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/socketzep: set eventcallback before init (#18751)
  • tests/sx12xx: set event_callback before init (#18751)
  • tests/unittests: Correct typo in documentation (#18438)
  • tests/unittests: fix getframehdr_len tests for hardened parsing (#18820)
  • tests: call gnrcipv6nibifaceup() after gnrcipv6nibinitiface() (#18635)
  • tests: set netdev event_callback before calling init (#18751)
  • treewide: fix conditionals on deprecated module (#18616)
  • unittest/main: do not initialize xtimer if ztimerxtimercompat (#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 autoinitgnrc_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/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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)
  • periphtimer: systematic proportional error in timerset (#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)
  • mdterase success, but vfsformat 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 DBGMCUCRDBG* 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 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)
  • BUILDINDOCKER 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: RIOTFILERELATIVE 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)

  • semtechloramacinit blocking (#17907)
  • [TRACKING] sys/shell refactoring. (#12105)
  • NVICSystemReset 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 compileandtestforboard.py (#12621)
  • pyterm on stdiocdcacm 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 stdiortt if autoinit 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/threadpriorityinversion: 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: netdevdrivert::send() doc unclear (#10969)
  • openthread: does not build on current Arch (#10809)
  • Possible memset optimized out in crypto code (#10751)
  • xtimersetmsg: 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/cortexmcommon: irqenable returns the current state of interrupts (not previous) (#10076)
  • xtimer_usleep wrong delay time (#10073)
  • assert: c99 staticassert macro doesn't function for multiple staticasserts 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 fmtfloat, fmtlpad (#7220)
  • xtimer: add's items to the wrong list if the timer overflows between xtimernow() 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.

- C
Published by maribu about 3 years ago

riot - Release-2022.07

RIOT-2022.07 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

The 2022.07 release includes many changes, some highlights of which are:

GPIO Low-level drivers

A new API, gpio_ll, has been introduced for highly efficient access to GPIO pins grouped in ports.

The API is limited to internal use for the time being, but still paves the way towards using port multipliers like local GPIO pins, and for improved bit-banging implementations (e.g. around WS281x-style LEDs).

Improved serial port selection

When using multiple boards simultaneously, a new serial port selection algorithm can be activated by setting MOST_RECENT_PORT=1. Of all serial ports whose metadata matches the board's known properties, it selects the most recently connected one.

ESP support

The ESP IDF (IoT Development Framework; the vendor's provided tools) has been upgraded to version 4.4, and many peripheral drivers are now implemented using those.

343 pull requests, composed of 767 commits, have been merged since the last release, and 5 issues have been solved. 38 people contributed with code in 107 days. 1684 files have been touched with 43451 (+) insertions and 82174 deletions (-).

Notations used below

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

New features and changes

Core

  • provide dummy implementation of thread and mutex for riotboot (#17959)
  • kernel_defines: drop CONST definition (#18212)

System Libraries

  • sys/event: Add documentation and enforce waiter on wait (#17952) sha256sum shell commands (#18040)
  • sys/shell: new module shell_lock (#13082)
  • Fido2: Enhance flash persistence (#17096)
  • pkg/fatfs, shell: enable RTC support if rtt_rtc is used (#17912)
  • pm: don't (un)block IDLE mode (#17974)
  • sys/posix/include/arpa: use __restrict instead of restrict (#18034)
  • sys/quad_math: remove unused module for quad arithmetic (#18032)
  • sys/shell: drop _builtin_cmds define (#18075)
  • sys/shellcommands: convert to SHELLCOMMAND() (#18152)
  • sys/ztimer: no log for stdio_rtt/semihosting (#18176)

SUIT

  • suit/transport/vfs: add VFS as source for firmware updates (#18045)
  • sys/scsuit: add seqno command (#17941)
  • examples/suitupdate/test: use 'suit seqno' 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 vfsunmountby_path() (#18109)
  • sys/vfs_util: add VFS helper functions (#18038)
  • sys/vfsutil: add vfsfile_() 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/ipv6autosubnets: init RPL root when adding a prefix (#17350)
  • ieee802154: add default max frame retransmissions config (#18264)
  • pkg/lwip: Add basic version of netifget/setopt (#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 gnrctxsync for gnrcsixlowpanfrag_sfr (#16090)
  • sys/net/gnrcpktbufstatic: add use-after-free detection (#18227)
  • sys/net/netif: add convenience functions for getting/printing IPv6 addresses (#18161)
  • gnrc/ipv6autosubnets: allow to join multiple subnets (#17547)
  • gnrcipv6nib: 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)
  • gnrcsock: warn about non-zero receive timeouts with sockasync (#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)
  • sockdnscache: move to dns_cache (#18318)
  • sockdnscache: move to dns_cache backport 2022.07
  • sys/include/net/af: fix doc comment (#17946)
  • sys/net/gnrcpktbufstatic: 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 coapgettoken() (#17976)
  • Add handler for resource-based subtrees (#13698)
  • cache for CoAP responses (#13889)
  • add nanocoapsockblock_request() (#17958)
  • add nanocoapsockurl_connect() (#17960)
  • add nanocoapvfsget() (#17937)
  • add nanocoapvfsput() (#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 boardinitcommon (#18238)
  • boards/esp32: cleanup CI compilation for espwifienterprise (#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

  • atmegacommon: implement periph/gpioll{,_irq} (#17982)

Cortex-M

  • cortexmcommon: allow to overwrite nmihandler (#18232)
  • cortexm_common: enable FPU on cortexm33 (#18064)
  • cortexmcommon: remove breakpoint from hardfault_handler (#17781)

  • efm32: Minimal support for gpio_ll (#18023)

  • nrf5xcommon: implement periph/gpioll{,_irq} (#17980)

  • stm32: Implement periph/gpioll{,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 espefusemac 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)
    • spliflash* 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/scardspi: _dynspirxtxbyte 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/gnrcborderrouter: allow to use gnrcipv6auto_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/compileandtestforboard: 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/{cppext, cppexclude}: model in kconfig (#17994)

Examples

  • examples/telnet_server: add support for LWIP (#17899)
  • example/twr_aloha: fixes (#17988)
  • examples/lorawan/main: use autoinitloramac (#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/{cppext, cppexclude}: cleanup HAS_* (#18082)
  • tests: move riot_logo.h to tests base directory (#17917)
  • unittest/sockutil: move teststrings to their tests (#18067)

API Changes

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

And countless minor changes.

Deprecations

Deprecations (1)

  • ztimer: deprecate ztimernow64 and ztimernow_t (#18054, #18105)

Removals (2)

  • net/netopt: drop NETOPTRXEND_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 TIMFLAGSET_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 lenget (#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: LEDXON LEDXOFF 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 threadflagswake() in queue_msg() (#16899)
  • cpu/atmegacommon: Fix atmegaport_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/sam0common: mtdsdhc: ensure source address alignment (#18222)
  • cpu/samd21: handle NVM block errata (#18188)
  • cpu/stm32/periph_eth: fix typo in initialization code backport 2022.07
  • cpu/{atmega_common,atxmega}: increase idle thread stack size (#18263)
  • dirvers/mtd: fix documentation of mtdwritepageraw() and mtdread_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
  • docker: don't export KCONFIGADDCONFIG 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/rttrtc: normalize tm struct in rtcset_alarm (#18197)
  • examples/dtls-echo: set address family for sessions backport 2022.07
  • examples/lorawan: disable loramac state persistence on EEPROM (#17969)
  • gcoap: fixes around empty ACKs backport 2022.07
  • gcoap_dns: various fixes backport 2022.07
  • gnrc/ipv6autosubnets: always send RIO to upstream network (#18187)
  • gnrc/nib: only enable RTRADV on RA if MULTIHOPP6C is enabled (#17600)
  • gnrcdhcpv6client: Fix out-of-bounds access during option parsing (#18307)
  • gnrcipv6nib: make configurable via Kconfig again backport 2022.07
  • gnrcnetifconf: fix auto-6ctx switch backport 2022.07
  • gnrcnetifpktq: 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
  • 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/rtcutils: small doc fix of rtcmktime (#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
  • unittests: fix assertion for nanocoapcachekey_compare() (#18125)
  • vfs: fix dir detection in vfssysopstatfromfstat() (#18050)

Known issues

Network related issues (58)

  • 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 autoinitgnrc_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/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::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: netdevdrivert::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)

Timer related issues (16)

  • 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)
  • periphtimer: systematic proportional error in timerset (#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/periphtimershortrelativeset 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 xtimernow() and irq_disable() (#7114)
  • xtimersetmsg: crash when using same message for 2 timers (#10510)
  • xtimer_usleep stuck for small values (#7347)
  • xtimer_usleep wrong delay time (#10073)

Drivers related issues (18)

  • (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)
  • mdterase success, but vfsformat 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 (21)

  • 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/cortexmcommon: irqenable 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 DBGMCUCRDBG* 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 (13)

  • 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)
  • BUILDINDOCKER 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: RIOTFILERELATIVE 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)

  • semtechloramacinit blocking (#17907)
  • [TRACKING] sys/shell refactoring. (#12105)
  • NVICSystemReset 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 staticassert macro doesn't function for multiple staticasserts 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 compileandtestforboard.py (#12621)
  • pyterm on stdiocdcacm 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 fmtfloat, fmtlpad (#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 stdiortt if autoinit 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.

- C
Published by chrysn over 3 years ago

riot - Release-2022.04

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 mountbypath. 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 schedchangepriority() (#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/mtdflashpage: add mtdflashpage_t type (#17627)
  • sys/bitfield: add support for bit-wise bitfield operations (#17710)
  • sys/senml: add SenML modules (#16384)
  • sys/vfs: add vfsmountby_path() (#17661)
  • sys/xtimer: introduce xtimer_is_set() (#17630)
  • sys/ztimer: add ztimer64xtimercompat 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 evtimernowmin (#17655)
  • sys/fido2: use ztimer instead of xtimer (#17753)
  • sys/posix/pthread: newlib compatibility (#17734)
  • sys/testutils/printstack_usage: work with small stacks (#17891)
  • sys/vfs: add file-system auto-mount (#17341)
  • sys/vfs: provide vfs_fsync() (#17621)
  • sys/xtimer: make xtimerztimercompat default backend (#17721)
  • sys/ztimer doc: List prerequisites for successful use of ztimer_now (#17614)
  • sys/ztimer64/util.c: fix ztimer64settimeout_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 ztimerxtimercompat over xtimeronztimer (#17811)
  • sys/syscalls: make gettimeofday() implementation optional (#17733)
  • sys/ztimer: auto-select ztimernoperiph_rtt only for samd21 (#17786)
  • sys: sort out ztimerxtimercompat and ztimer64xtimercompat 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)
  • gnrcpktbufcmd: add od dependency with gnrcpktbufstatic (#17228)
  • nanocoap: add nanocoapgetblockwiseurlto_buf() function (#17833)
  • nanocoap: introduce coapoptremove() (#17881)
  • nimble/netif: add support for BT5 PHY modes (#16860)
  • sys,examples,tests,fuzzing: add missing includes (#17714)
  • sys/net/applicationlayer/sockdns: add pseudomodule autoinitsock_dns (#17493)
  • sys/net/applicationlayer/sockdnsmock: add module for mocking sockdns (#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 netutilsgetipv4() (#17764)
  • sys/net/sock: add sockudpsendv() API (#17485)
  • sys/net/sockutil: add socktl_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 handlertr_timeout() (#17741)
  • lwip: enable LWIPSORCVTIMEO 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: ztimernoperiph_rtt if gomach (#17729)
  • sys/net/gnrcsixlowpanfragsfr: use xtimerset (#17668)
  • sys/net/linklayer/csmasender: use public xtimer_now() (#17731)
  • sys/net/sock_util: fix compilation for IPv4-only mode (#17766)

Packages

  • buildsystem: add EXTERNALPKGDIRS 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 LVMEMSIZE (#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/sockdtls: use ztimerusec (#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/autoinit: add autoinit_leds, drop LED init code from boards (#17584)
  • sys/boardcommon: add generic boardinit() 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 mpustackguard 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/netdevtap: Add to netdevregister (#17635)
  • cpu/nrf52-9160: add periphspiinit_gpio (#17617)
  • cpu/riscv_common: Enable Rust applications (#17520)
  • cpu/sam0common: add periphspiinitgpio (#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 rttsetcounter (#17535)
  • cpu/efm32: bump Gecko SDK version (#17672)
  • cpu/esp*: nvs-flash / cpp dependencies cleanup (#17548)
  • cpu/esp32/esp-eth: move GNRC autoinit to initdevs (#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/riscvcommon: enable pufsram 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 PMBLOCKERINITIAL (#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/periphspi: spiinitwithgpio_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/mtdspinor: 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/mtdspinor: 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/rttrtc: select rtcutils (#17530)
  • drivers/sht3x: ztimer_msec port (#17783)

Documentation

  • boards/cc1352-launchpad doc: adding information concerning shell access (#17522)
  • doc/doxygen: add BUILDINDOCKER 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/dependencyresolution: add outer loop for DEFAULTMODULE deps (#17632)
  • makefiles/docker.inc.mk: add DOCKERENVVARS_ALWAYS (#17396)
  • testbed/iotlab: add mapping for samr34-xpro and nucleo-wl55jc (#17578)
  • tests/gnrcrpl: add automated test for gnrcrpl (#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 MODULEAUTOINIT_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/gcoapblockserver: 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/driverdfplayer: use eventthread instead of eventthreadlowest (#17750)
  • tests/periphuartnonblocking: 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/sysatomicutils: use ztimer_usec (#17851)
  • tests/sys_crypto: fix potentially uninitialized error (#17718)
  • tests/threadfloat: use ztimerusec (#17835)
  • tests: multiple fixes (#17840)
  • workflow/tool-test: update prior install (#17738)

API Changes

  • drivers/periphcommon: add periphinit_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)
  • ztimerperiodic: make callback function return bool (#17351), i.e., the logic of the return value is inverted now (ZTIMERPERIODICKEEPGOING 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 ATSENDECHO define (#17500)
  • sys/lora: remove deprecated LORAPAYLOADCRCONDEFAULT define (#17517)
  • sys/loramac: remove deprecated LORAMACDEFAULTPUBLIC_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/mtdmapper: fix readpage 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 EXTERNALMODULEDIRS 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/sockdtls: fix epto_session (#17849)
  • pkg/tinydtls: crypto: remove unnecessary usage of malloc() (#17878)
  • pkg: fix documentation on includes (#17538)
  • shell/scgnrcudp: 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/cpuavr8xmega_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

Network related issues (56)

  • 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 autoinitgnrc_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/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcicmpv6echo: 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)
  • gnrcnetifpktq leaks memory (#17924)
  • gnrcrpl: missing bounds checks in _parseoptions (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gnrctcp: gnrctcp_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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::recv (#10410)
  • Neighbor Discovery not working after router reboot when using SLAAC (#11038)
  • net: netdevdrivert::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)

Timer related issues (15)

  • 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)
  • periphtimer: systematic proportional error in timerset (#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 xtimernow() and irq_disable() (#7114)
  • xtimersetmsg: crash when using same message for 2 timers (#10510)
  • xtimer_usleep stuck for small values (#7347)
  • xtimer_usleep wrong delay time (#10073)

Drivers related issues (18)

  • (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)
  • mdterase success, but vfsformat 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 (21)

  • 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/cortexmcommon: irqenable 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 DBGMCUCRDBG* 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 (13)

  • 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)
  • BUILDINDOCKER 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: RIOTFILERELATIVE 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)

  • semtechloramacinit blocking (#17907)
  • [TRACKING] sys/shell refactoring. (#12105)
  • NVICSystemReset 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 staticassert macro doesn't function for multiple staticasserts 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 compileandtestforboard.py (#12621)
  • pyterm on stdiocdcacm 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 fmtfloat, fmtlpad (#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 stdiortt if autoinit 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.

- C
Published by OlegHahm almost 4 years ago

riot - Release-2022.01

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/kerneldefines.h: add indexof() macro (#17142)
  • core: Add ISCTCONSTANT() (#17273)
  • core: add WITHOUTPEDANTIC() and DECLARECONSTANT() (#17176)
  • core: Warn about using irq_enable (#17433)
  • core: make SCHEDTESTSTACK boolean and default to 1 with DEVELHELP (#17132)

System Libraries

  • sys/architecture: add HASALIGNMENTOF() helper (#17177)
  • sys/arduino: add assertion to gpio handling (#17443)
  • sys/atomicutils: 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/testutils/resultoutput: add sort to multiple output check (#17269)
  • sys/tsrb: add peek functions (#17266)
  • sys/tsrb: add tsrb_clear (#17337)
  • sys/ztimer: add 'ztimernoperiph_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/cppnewdelete (#17475)
  • sys/evtimer: use now returned by set (#17394)
  • sys/fmt: make fmts32dfp() string based (#17106)
  • sys/Makefile.dep: fix event periodic dependency (#17318)
  • sys/picolibcsyscallsdefault: 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/testutils/resultoutput/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 delentryfromlist() 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

  • gnrcpktbufcmd: add od dependency with gnrcpktbufstatic (#17228)
  • sys/net/dhcpv6: Add stateless DHCPv6 (#16731)
  • sys/net: Add ipv4/ipv6 pseudomodules (#16966)
  • sys/shell/scnimblenetif: add ping subcommand (#16539)
  • dsm: rename DTLSPEERMAX and make it dependent on CONFIGDTLSPEER_MAX (#16967)
  • gcoapdtls: destroy session in _tlsend only on connection errors (#16963)
  • gnrcdhcpv6client / 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/arduinosdi12: 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/arduinosdi12: 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 GPIOUNDEF by SPICS_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)
  • cc2538rf: remove RX Busy detection in requestsettrxstate (#16821)
  • cpu/arm7_common: suppress false positives of cppcheck (#17218)
  • cpu/atmega_common: make cppcheck happy (#17219)
  • cpu/atmegacommon: Remember CTC mode with timerperiodic (#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/cpuconfstm32_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 ztimerperiphrtt for sam0, fe310 (#17395)
  • drivers/periph: use uintfast8t 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 netdevregistersignal (#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/sdcardspi: convert to ztimerusec (#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 canfastci_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 SUBMODULESNOSRC to excluded a selected SUBMODULE *.c (#17222)
  • tools/compileandtestforboard: apply black automatic code formatter + add format checker in tox (#16905)
  • tools/insufficientmemory: add createmakefile.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 EXTERNALMODULEDIRS 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 canfastci_run.py (#17325)
  • static-tests: disable cppcheck (#17282)
  • tools/backport_pr: check code format with black (#16907)
  • tools: canfastci_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/gnrcnetworkingsubnets: 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/benchztimer: add port of benchxtimer (#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/periphtimerperiodic: 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/pkgfatfs{vfs}: drop whitelist (#17478)
  • Fix some cppcheck errors (#17271)

API Changes

  • core/kerneldefines.h: drop ALIGNOF() (#17267)
  • core/kerneldefines: drop BUILDBUG_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/periphi2c: let i2cacquire 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 evtimernowmin (#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 USEETHOSFOR_STDIO define (#17499)
  • make: remove deprecation warnings raised with flasher tools old vars (#17490)
  • pkg/libcoap: remove (#17163)
  • sys/asymcute: remove deprecated CONFIGASYMCUTEBUFSIZE_EXP (#17481)
  • sys/crypto: remove deprecated CIPHERAES128 (#17480)
  • sys/saulreg: remove deprecated saulreg_rm function (#17489)
  • sys/shell: remove deprecated SHELLNO{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
  • boards/stm32f723e-disco: use connectassertsrst with openocd (#17462)
  • boards/stm32f746g-disco: use connectassertsrst 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 espwifienterprise 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 ESPWIFIPASS (#17420)
  • cpu/espcommon: fix unaligned access in periphflashpage (#17150)
  • cpu/native: align stack in threadstackinit() (#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)
  • gnrcipv6nib: 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 canfastcirun if `FULLBUILD==1` (#17495)
  • nimble: fix nimble_scanner regression bugs (#17334)
  • pkg/arduinosdi12: 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/gnrcicmpv6echo: Fix hang with no msg queue (#17261)
  • sys/fido2: fix CBOR parsing (#17192)
  • sys/fido2: fix CBOR parsing backport 2021.10
  • sys/net/dns: mark dnshdrt 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/testutils/resultoutput: 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 OPENOCDVERIFY after IMAGEOFFSET 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

Network related issues (53)

  • 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 autoinitgnrc_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/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcicmpv6echo: 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)
  • gnrcrpl: missing bounds checks in _parseoptions (#16085)
  • gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
  • gnrcsockudp: 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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::recv (#10410)
  • net: netdevdrivert::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)

Timer related issues (15)

  • 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)
  • periphtimer: systematic proportional error in timerset (#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 xtimernow() and irq_disable() (#7114)
  • xtimersetmsg: crash when using same message for 2 timers (#10510)
  • xtimer_usleep stuck for small values (#7347)
  • xtimer_usleep wrong delay time (#10073)

Drivers related issues (17)

  • (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)
  • mdterase success, but vfsformat 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)

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 (21)

  • 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/cortexmcommon: irqenable 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 DBGMCUCRDBG* 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 (14)

  • 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)
  • BUILDINDOCKER 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: RIOTFILERELATIVE 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)
  • NVICSystemReset 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 staticassert macro doesn't function for multiple staticasserts 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 compileandtestforboard.py (#12621)
  • pyterm on stdiocdcacm 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 fmtfloat, fmtlpad (#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 stdiortt if autoinit 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 espi2csw (#17311)
  • cpu/esp32: espwifienterprise compilation error (#17305)
  • ethos: race condition seems to cause packet loss (#17254)
  • tests/lwipsockip: 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/mpunoexecram: 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.

- C
Published by emmanuelsearch about 4 years ago

riot - Release-2021.10

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.

gnrcipv6auto_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).

RIOTVERSIONCODE 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.

gnrcicmpv6echo 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 irqisenabled() 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/picolibcsyscallsdefault: support new picolibc stdio globals backport 2021.10
  • sys/random/fortuna: change interval ressed to ms (#16594)
  • sys/shell/commands/gnrcicmpv6echo: test for ICMPv6 reply corruption (#15622)
  • sys/shell/commands: gnrcicmpv6echo: 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 gnrcnetifipv6waitforglobaladdress() (#16824)
  • gnrcipv6nib: handle route information option and add config to add to final RAs (#16568)
  • gnrcipv6simple_subnets: auto-configuration for nested subnets on a simple tree topology (#16536)
  • gnrcnetif: add gnrcnetifipv6add_prefix() & helper functions (#16672)
  • gnrcsocktcp: add gnrc sock tcp (#16494)
  • gnrctcp: Add GNRCTCPNOTIMEOUT (#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 netutilsgetipv6() (#16634)
  • sys/net/dhcpv6: Add IA_NA support to the DHCPv6 client (#16228)
  • tests/gnrc_lorawan: add initial tests (#16654)
  • dhcpv6client: make IAPD an optional module (#16658)
  • dhcpv6_client: mrd calculation fixed (#16679)
  • dhcpv6client: refactor to use `eventtimeout` for non-sock timeouts (#16668)
  • drivers/sx126x : r/NETOPTRXTIMEOUT/NETOPTRXSYMBOL_TIMEOUT (#16599)
  • gnrc/ipv6autosubnets: relax topology requirements (#16750)
  • gnrc/nib: consolidate prefix removal code in nibofflremoveprefix() (#16729)
  • gnrcipv6nib: provide functions to get offset of public timestamps (#16706)
  • gnrcnetifpktq: 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 ipv6addrto_str documentation (#16828)
  • netdev/lora: fix size of NETOPTRXSYMBOL_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 NETOPTMAXPACKET_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
  • 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 BLELLINITSLOTSIZE 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 nimblenetifaccept_direct() (#16603)
  • pkg/nimble/scanner: add function to set scan duration (#16701)
  • pkg/lwip: Allow initializing different types of netifs (#16162)
  • pkg/lwip: implement netifgetname() (#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 gnrcnetdevdefault 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)
  • avrlibcextra: 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 threadyieldhigher() with IRQs disabled (#16754)
  • cpu/native: make use of stdioread() / stdiowrite() (#16822)
  • cpu/rpx0xx: fix minor gpio warnings (#16685)
  • cpu/sam0: improve ethernet driver resilience (#16683)
  • cpu/stm32/periph/rtcall.c for CPUFAM_STM32L5 support. (#16656)
  • riscv: Simplify reset trampoline (#16876)

Device Drivers (7)

  • drivers/cc2538rf: remove cc2538rfnetdevlegacy (#16628)
  • drivers/nrf802154: remove nrf802154rfnetdev_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 RXDONE and ACKTIMEOUT (#16964)
  • ieee802154/submac: fix leftovers of #16746 (#16823)
  • drivers/dose: make use of start condition received interrupt (#16506)
  • drivers/periph: define rtcmem and implement it for sam0common (#16758)
  • drivers/cc110x: add power off (sleep) functions (#16232)
  • drivers/lm75: add SAUL integration (#16763)
  • drivers/lpsxxx: add support for lps22hh (#16880)
  • rttrtc: add rttrtcsettimeofday() & rttrtc_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 ili9341paramst (#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 RIOTVERSIONCODE 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/compileandtestforboard: 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 RIOTCONFIG% environment variables (#16052)
  • drivers/lm75: fixed a typo in Kconfig (#16825)
  • drivers/mtd: fix Kconfig dependencies (#16836)
  • makefiles/kconfig.mk: force SHOULDUSEKCONFIG if config file is present (#16641)

Examples (3)

  • examples/lorawan: add LoRaWAN keys to DOCKERENVVARS (#17010)
  • examples/nimble*: use nimbleautoadv 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/gnrcdhcpv6client: 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
  • Small fatfs usability fixes (#16800)
  • tests/gnrcdhcpv6client: kill potential previous Kea session (#16820)
  • tests/ieee802154_hal: check error codes and improve error reporting (#16556)
  • tests/unittests/tests-ipv6hdr: fix too short ipv6hdr_t allocations (#16616)
  • tests/ieee802154_submac: remove netdev dependency (#16826)

API Changes (5)

  • drivers/ina3221: style fixes and improvements (#15915)
  • drivers/periphspi: let spiacquire 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 gnrcnetdevdefault, use netdev_default instead (#16744)

Bug fixes (32)

  • boards/nucleo-wl55jc: add SX126XPARAMTYPE to board.h (#16646)
  • build system: add fallback for RIOTVERSIONCODE (#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
  • 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: gnrcipv6nibgetnexthopl2addr(): only assume neighbor cache entries to always be on-link (#16671)
  • gnrc/sock: recv avoid spinning xtimer (#16831)
  • gnrcipv6nib: consider largest prefix match when deciding if host on-link (#16557)
  • gnrcipv6nib: queue packets that trigger probing on border router backport 2021.10
  • gnrclorawan: fix gnrcpktbufreleaseerror (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
  • mtd: fix mtdwritepage() across sector boundaries (#16848)
  • net/gnrc_lorawan: fix pick channel (#16664)
  • net/lorawan: Revert #16604 and fix NETOPTRXSYMBOL_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 NETIFABORTSLAVE (#16699)
  • pkg/wakaama: fix object common get functions (#16691)
  • Revert "Remove which from shell invocations" (#16803)
  • tests/gnrcdhcpv6client: Fix for newer Kea versions and remove sudo requirement (#16792)
  • tests/gnrcdhcpv6client: honor configured $IFACE in Kea config (#16796)
  • tinydtls: sock_dtls: only use ifindex with link-local addresses (#16910)

Known issues

Network related issues (52)

  • 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 autoinitgnrc_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/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcicmpv6echo: 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)
  • gnrcrpl: missing bounds checks in _parseoptions (#16085)
  • gnrcsockudp: 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)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::recv (#10410)
  • net: netdevdrivert::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)

Timer related issues (15)

  • 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)
  • periphtimer: systematic proportional error in timerset (#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 xtimernow() and irq_disable() (#7114)
  • xtimersetmsg: crash when using same message for 2 timers (#10510)
  • xtimer_usleep stuck for small values (#7347)
  • xtimer_usleep wrong delay time (#10073)

Drivers related issues (17)

  • (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)
  • mdterase success, but vfsformat 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)

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 (23)

  • 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/cortexmcommon: irqenable 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 DBGMCUCRDBG* 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/mpunoexecram: fails on i-nucleo-lrwan1 (#14572)

Build system related issues (15)

  • 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)
  • BUILDINDOCKER 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: RIOTFILERELATIVE 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)
  • NVICSystemReset 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 staticassert macro doesn't function for multiple staticasserts 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 compileandtestforboard.py (#12621)
  • pyterm on stdiocdcacm 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 fmtfloat, fmtlpad (#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 stdiortt if autoinit 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)
  • dhcpv6client: no prefix on downstream interface via IAPD (#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.

- C
Published by benpicco over 4 years ago

riot - Release-2021.07

RIOT-2021.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 2021.07 release includes:

  • Many improvements to ztimer usage
  • Added nucleo-wl55jc and Seeeduino XIAO boards
  • stm32f1 kconfig support
  • Fixed multiplication overflow in calloc, a.k.a. BadAlloc, for all supported platforms

169 pull requests, composed of 339 commits, have been merged since the last release, and 16 issues have been solved. 37 people contributed with code in 69 days. 685 files have been touched with 23625 (+) insertions and 7000 deletions (-).

Notations used below

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

New features and changes

System Libraries (21)

  • congure_mock: add capability to provide actual methods (#16133)
  • dhcpv6_client: add DNS recursive name server option handling (#16585)
  • drivers/ethos: enable multiple instances (#16544)
  • drivers/slipdev: report NETOPT_ADDRESS to simulate l2 address (#16531)
  • gnrc_lorawan: add support for RTT (ztimer) (#14558)
  • sys/byteorder: add little endian to/from buf functions (#16363)
  • sys/crypto: Enable support for AES-192, AES-256 (#16183)
  • sys/event/timeout: add option to use ztimer as backend (#16505)
  • sys/event: add periodic timeout event (#16507)
  • sys/ps: enable runtime_usec output for the ps command (#16470)
  • gnrcdhcpv6client_6lbr: choose downstream if as !upstream (#16530)
  • net/emcute: Allow RETAIN flag to be set on incoming PUBLISHs (#16326)
  • net/gnrc/rpl: use ztimer_msec if available (#16339)
  • net/grnc/sixlowpan/ctx: use ztimer_msec if available (#16340)
  • sys/arduino: replace xtimer by ztimer as high-level background timer (#15317)
  • sys/autoinit: move sockdtls after network stack initialization (#16528)
  • sys/Makefile.dep: Some cleanup (#16268)
  • sys/net/gnrc/netif: Make aac_mode a flag field (#16596)
  • sys/trickle: migrate from xtimer to ZTIMER_MSEC (#16322)
  • sys/ztimer: use highest frequency for nrf51 as well (#16572)
  • ztimer: pull ztimerperiphrtt for ZTIMER_MSEC if available (#16553)
  • sys/shell/scgnrcrpl: Err out early if RPL not even started (#16358)

Networking (4)

  • drivers/nrf24l01png: add hook nrf24l01pngeuiget() (#16296)
  • pkg/nimble/netif: allow to apply and enforce random and unique connection intervals (#16372)
  • pkg/semtech-loramac: don't force ztimer rtt backend (#16566)

Packages (8)

  • pkg/nanopb: add dependency for C++ source files (#16504)
  • pkg/edhoc-c: initial commit (#16295)
  • pkg: add QR Code generator package (#16462)
  • pkg/libcose: Update to latest master (#16464)
  • pkg/lvgl: remove internal thread (#16486)
  • pkg/nanocbor: bump version (#16362)
  • pkg/pkg.mk: avoid git fetch if commit is already there (#16514)
  • pkg/wakaama: remove gnrc dependency (#16563)

Boards (10)

  • board/feather-nrf52840: add uf2 boot loader (#16276)
  • boards/atmega: add USEC_ADJUST values (#16554)
  • boards/esp32-wrover-kit: add dependency to ILI9341 (#16488)
  • boards/nucleo-wl55jc: Initial support (#16255)
  • boards/z1: add CONFIGZTIMERUSECADJUST% values (#16555)
  • boards: Adding board support for the Seeeduino XIAO (#16469)
  • board/nrf52840dongle: fix and enhance pin mapping for I2C and SPI (#16401)
  • Configuration extension for arduino-nano-33-iot (#16301)
  • cpu/kinetis: use LPTMR as rtt backend (#16546)
  • makefiles/stdio.inc.mk: stdio_uart require uart or lpuart (#16331)

CPU (12)

  • cpu/atxmega/periph: Add spi driver (#16290)
  • cpu/efm32: add RTT_FREQUENCY support to efm32 (#16344)
  • cpu/esp*: add CLOCK_CORECLOCK (#16361)
  • cpu/lpc23xx: implement periph/flashpage (#16409)
  • SAML21 CPU: support 4MHz, 8MHz, 12MHz CORE_CORECLOCK choices (#16433)
  • CPU SAML21: fix timers frequency when using slow clocks (#16446)
  • cpu/avr8_common: fix errno (#16565)
  • cpu/native: make thread stacksize defines overridable (#16457)
  • cpu/sam0_common: UART: Revert "implement inverted RX & TX" (#15205)
  • cpu/stm32/periph/rttall: RTT peripheral support for CPUFAM_STM32L5 (#16545)
  • cpu/stm32: Generate the irqs in a reproducible manner (#16511)
  • ieee802154/hal: adapt frame filter and source address matching changes (#15468)

Device Drivers (13)

  • cpu/atxmega/periph: Add i2c driver (#16306)
  • cpu/esp_common: Support disabling I2C clock stretching in ESP8266 (#16386)
  • cpu: add periphrttoverflow feature (#16420)
  • drivers/at86rf215: add RX timestamps (#16365)
  • drivers/periph: flashpage: add common helper functions (#15908)
  • drivers/rttrtc: implement rtcgettimems() (#16347)
  • drivers/si70xx: Add support for Si705x sensors (#15684)
  • drivers/{dispdev,touchdev}: add autoinitscreen as default module when used (#16485)
  • esp8266: Support UART1 and other UART0 pins. (#16387)
  • cpu/sam0_common: only include RTC/RTT symbols if module is used (#16421)
  • driver/bmx280: remove unused xtimer dependency (#16400)
  • drivers/cc2420: register with netdev (#15012)
  • drivers/ccs811: fix default config for ccs811_full (#16454)

Documentation (5)

  • doc: README: Add documentation on downloads and release cycle (#16345)
  • doc/pkg: provide a longer short description (#16352)
  • docs: Remove references to Freenode from the documentation (#16571)
  • Documentation: Remove mentions of the users@ and devel@ mailing lists. (#16428)
  • README: Update url of documentation (#16436)

Build System / Tooling (11)

  • make: introduce QUIETER (#16513)
  • riotctrl_ctrl: A reset helper class for native (#15978)
  • TAKEOVER: makefiles/color: Add color functions, new attempt (#16434)
  • tools/dhcpv6-pd_ia: add Linux Mint to installer (#16410)
  • tools/iotlab-testbed: add support for remote debugger (#16510)
  • esptool: Allow to pass the partition table CSV (#16307)
  • makefiles/boot/riotboot.mk: pass IOTLAB_NODE (#16562)
  • makefiles/boot/riotboot: clean bootloader when cleaning application (#16197)
  • makefiles/info-global.inc.mk: fix DEFAULT_MODULE inclusion (#16435)
  • makefiles/vars.inc.mk: update USEPROGRAMMERWRAPPER_SCRIPT comment (#16404)
  • tools/iotlab-tested: several improvements in single board support (#16501)

Kconfig (3)

  • cpu/stm32f1: Add Kconfig dependency modeling (#16483)
  • Kconfig: expose IEEE 802.15.4 Security to Kconfig (#16515)
  • pkg/lvgl: bump to latest version + model configuration in Kconfig (#16346)

Examples (2)

  • examples/lorawan: add missing sx126x descriptor (#16592)
  • examples/gnrcnetworking: use ztimermsec if available (#16343)

Testing (15)

  • .github: add automatic PR labeler action (#16476)
  • gh-actions: release-tests: add filter input (#16432)
  • tests/pkg_qr-code-generator: add disp-dev for esp32-wrover-kit (#16492)
  • tests/riotboot/flashwrite: add automatic test (#15559)
  • gh-actions/release-tests: export QUIETER to docker (#16581)
  • Simplify kconfig murdock testing (#16487)
  • tests/congure-turo: reset before opening terminal (#16564)
  • tests/disp_dev: improve genericity of application + optimize screen refresh (#16479)
  • tests/gnrcdhcpv6client_6lbr: Update test for DHCPv6 MUD option (#16593)
  • tests/malloc: refactor test (#16427)
  • tests/periphrttmin: adapt for slower RTTs (#16329)
  • tests/pkg_qr-code-generator: improve display speed in test application (#16466)
  • tests/pkg_tensorflow-lite/Makefile.ci: explicit list (#16354)
  • tests/touchdev: improve genericity by using autoinit_screen module (#16480)
  • tests/ztimer_periodic: iterate over clocks (#16254)

API Changes (3)

  • build system: Rework EXTERNALMODULEDIRS (#16104)
  • ieee802154: migrate netdev_ieee802154_dst_filter to a common ieee802154 (#16576)
  • net/gcoap: change return type from gcoapreqsend() to ssize_t (#16526)

And 22 minor changes.

Deprecations

Deprecations (3)

  • gnrc_lorawan: encode LoRaWAN port in netif header (#16080)
  • tools/testbed: use IOTLAB_NODE=auto instead of auto-ssh (#16491)
  • pkg/openthread: deprecate ot_command related functions (#15664)

Removals (1)

Bug fixes (34)

  • .github/labeler: quote rules (#16519)
  • core/msg.c: fixed msgqueueprint() (#15168)
  • cpu/atmegacommon: RTC: fix off-by-one second normalization & simplify rtcget_time() (#16442)
  • cpu/esp8266: Fix typo in esp_gdbstub config. (#16304)
  • cpu/sam0/i2c: Handle read with I2C_NOSTOP flag (#16605)
  • cpu/sam0_common: ethernet: fix RX detection (#16383)
  • cpu/stm32/gpio_all: fix IRQ handler for G0/L5/MP1 families (#16319)
  • cpu/stm32/gpio_f1: fix IRQ handler (#16478)
  • cpu/stm32/periph/spi: fix wrong parameter order (#16418)
  • dist/Kconfiglib: fix autoconf header (#16561)
  • doc: fix URLs to the new website (#16445)
  • drivers/lis2dh12: clean up API (#16328)
  • drivers/sx126x: fix netdev send and recv function (#16570)
  • Fix Cortex-M hard faults when building with -O3 or -Ofast (#16414)
  • gnrcipv6nib: consider all local interfaces when looking for address (#16569)
  • gnrcipv6nib: consider all prefixes when deciding on-link next hop (#16532)
  • gnrcipv6nib: get node from proper interface (#16548)
  • gnrc_lorawan: fix undefined state when PSDU is NULL (#16586)
  • gnrc_netif/lorawan: drop netif header on send (#16584)
  • gnrc_sock: imply end-point netif only if unset (#16643)
  • NanoCBOR: Bump version (#16580)
  • net/ieee802154_security: small bugfix and stricter names (#16106)
  • pkg/nanocbor: bump version (#16538)
  • pkg/nimble/netif: fix and optimize NimBLE buffer sizes (#16503)
  • pkg/nimble/netif: fix randomized conn intervals (#16601)
  • pkg/nimble: temporary fix to NimBLE PRNG seed issue (#16338)
  • pkg/qdsa: force qdsa to lowercase (#16552)
  • release-test: fetch host key for lille site (#16575)
  • shell/scnimblenetif: fix connectname scan dur (#16337)
  • sys/mallocthreadsafety: fix potential overflow in multiplication (#16443)
  • sys/net/gnrc/netif: make gnrcnetifcreate() blocking to avoid race condition (#16527)
  • sys/ztimer: convert clock do not require pm (#16573)
  • tests/msgqueueprint: fix test on hw (#16525)
  • tests: small fixes (#16426)

Known issues

Network related issues (51)

  • 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)
  • border_router: significant packet loss when sending out packets using USB cdc-ecm on nrf52 (#16411)
  • 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 autoinitgnrc_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/gnrcborderrouter: 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)
  • gnrcborderrouter stops routing after a while (#16398)
  • gnrcicmpv6echo: 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)
  • gnrcrpl: missing bounds checks in _parseoptions (#16085)
  • gnrcsockudp: Possible Race condition on copy in application buffer (#10389)
  • gomach: Resetting netif with cli doesn't return (#10370)
  • LoRaWan node ISR stack overflowed (#14962)
  • lwipsocktcp / sockasync: received events before calling sockaccept() are lost due to race condition. (#16303)
  • Missing drop implementations in netdevdrivert::recv (#10410)
  • net: netdevdrivert::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)
  • Unclear how Router Solicitations are (or should be) handled (#15926)
  • xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (15)

  • 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)
  • periphtimer: systematic proportional error in timerset (#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 xtimernow() and irq_disable() (#7114)
  • xtimersetmsg: crash when using same message for 2 timers (#10510)
  • xtimer_usleep stuck for small values (#7347)
  • xtimer_usleep wrong delay time (#10073)

Drivers related issues (19)

  • (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)
  • mdterase success, but vfsformat 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)
  • sam0_eth: extremely long time to RX (frames stuck in buffer?) (#16451)
  • 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)
  • w5100 driver's improvement (#16417)

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 not float safe (#495)
  • native: tlsf: early malloc will lead to a crash (#5796)
  • SDL2 does not work due to missing getpid (#13501)
  • SIGFPE on native architecture when printing double floats on Ubuntu 21.04 (#16282)

Other platforms related issues (24)

  • Failing tests on FE310 (Hifive1b) (#13086)
  • arm7: printf() with float/double not working (#11885)
  • boards/hifive1: flashing issue (#13104)
  • Cannot use LLVM with Cortex-M boards (#13390)
  • cpu/cortexmcommon: irqenable 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 DBGMCUCRDBG* 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/mpunoexecram: fails on i-nucleo-lrwan1 (#14572)
  • XFA support on AVR and MSP430 broken with binutils 2.36.1 (#16251)

Build system related issues (15)

  • 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)
  • BUILDINDOCKER 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: RIOTFILERELATIVE 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 (41)

  • [TRACKING] sys/shell refactoring. (#12105)
  • NVICSystemReset 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 staticassert macro doesn't function for multiple staticasserts 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)
  • I2C not working under RIOT with U8G2 pkg (#16381)
  • 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 compileandtestforboard.py (#12621)
  • pyterm on stdiocdcacm 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 fmtfloat, fmtlpad (#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: broken with stdiortt if autoinit 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 171 known issues in this release

Fixed Issues since the last release (2021.04)

  • All but first ping to downstream interface fails (#16547)
  • pkg/lvgl: LoadProhibitedCause exception on BOARD=esp32-wrover-kit (#16471)
  • SX127x Join procedure failed (The Things Network) (#16419)
  • riotctrl: shell interaction seems timing sensitive (#16415)
  • at86rf231 initialization loses race against autoinitgnrc_rpl (#16359)
  • cpu/sam0_common: Ethernet driver stops working after a while (#16298)
  • Conflict between nimble and uwb-core packages (#15528)
  • pkg/ccn-lite: unable to make -j -C examples/ccn-lite-relay (#14288)
  • make -j flash broken on esp* (will always flash the previous binary) (#13492)
  • sys/xtimer: segmentation fault: in function xtimermsgreceived_timeout (#13345)
  • drivers/srf04: incorrect values on ATmega based platforms (#13079)
  • Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice (#10122)
  • mrf24j40: does not link for examples/default (#8752)
  • nRF52: gnrc6lowpanble: memory leak with nordicsoftdeviceble (#6018)
  • OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars (#5863)

16 fixed issues since last release (2021.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

Note: IRC was removed

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.

- C
Published by MrKevinWeiss over 4 years ago

riot - Release-2021.04

RIOT-2021.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 2021.04 release includes:

  • netstats can now collect L1/L2 per neighbor statistics
  • sock DTLS now allows using multiple credentials
  • congure - a framework for implementing congestion control algorithms
  • xfa (cross file arrays) - a mechanism to more easily define stuff across files (e.g., shell commands)
  • nimble is now using low-power ztimer
  • nrf5x now properly configures external HF clock, power use down 411µA -> 3.6µA for examples/minimal on nrf52dk
  • many more modules and drivers have Kconfig support
  • the semtech-loramac package now supports sx126x/llcc68 radios
  • 8 new boards, 6 new drivers, 8 packages upgraded

We've also mostly finished our migration from mailing lists to forum.riot-os.org.

375 pull requests, composed of 992 commits, have been merged since the last release, and 16 issues have been solved. 56 people contributed with code in 103 days. 2564 files have been touched with 191220 (+) insertions and 91400 deletions (-).

Notations used below:

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

New features and changes

Core

  • clist: added clistisempty()
  • xfa: initial support for XFA's (cross file arrays)

System Libraries

  • shell: allow defining shell commands using XFA
  • dbgpin: module for debugging and profiling
  • ztimer: add ztimerisset()
  • ztimer: add ZTIMER_SEC
  • ztimer: add periph_ptp backend

Networking

  • cord: Discovery patch altered to reflect changes in the underlying Resource Directory draft
  • lwip: hook up sam0_eth support
  • congure: framework to implement congestion control and use it in a reusable manner with a number of protocols
  • netstats: L1/L2 per neighbor statistics
  • sock DTLS: allow using multiple credentials

Packages

  • emlearn: bump version to 0.11.6
  • libfixmath: bump version to latest master
  • nanocbor: bump version
  • nanopb: bump version to 0.4.5
  • fatfs: bump version to r0.14a
  • littlefs2: Bump to v2.4
  • monocypher: bump to version 3.1.2
  • nimble: migrate to ztimer, allowing low power operation
  • openthread: bump version to 20191113
  • wakaama: add patch to cast macro to time_t
  • pkg/semtech-loramac: switch to RIOT AES
  • pkg/semtech-loramac: refactor to use netdev API only
  • pkg/lwip: Start DHCP early for all Ethernet interfaces

Boards

  • particle-mesh boards: Use USB serial as stdio by default
  • nucleo-f303re: I2C pins remapped to match the data sheet
  • nucleo-f722ze: Add periph_can support
  • native: compile with -Og (was -O0)
  • boards/nucleo-f767zi: Add periph_can support
  • New boards:
    • atmega328p-xplained-mini
    • atxmega-a1u-xpro
    • atxmega-a3bu-xplained
    • BastWAN
    • Microbit v2
    • samd20-xpro
    • TI CC1350 LAUNCHXL
    • Zigduino

CPU

  • Initial support for ATxmega family of 8-bit AVR CPUs
  • kinetis: enable floating point support
  • nrf5x: enhance enabling of internal DC/DC converter
  • nrf52: add VDDHDIV5 as ADC input
  • nrf52: add periphuartnon_blocking support
  • native: add periph/flashpage implementation
  • qn908x: Implement blocking SPI support
  • qn908x: add ADC support
  • sam0common: add rtcgettamperevent()
  • stm32f{2,4,7}: Initial flashpage support
  • stm32f7: added ADC support
  • stm32/can: add option to enable deep-sleep per device

Device Drivers

  • new drivers:
    • sensirion SGP30 gas sensor
    • Amphenol sm-pwm-01c dust sensor
    • Si705x sensors
    • TI BQ2429x charger and power management ICs
    • Netdev driver for nrf24l01p
    • sx126x/llcc68 LoRa radios
  • touchdev & displaydev auto-initialization
  • bmx280: increase accuracy of SAUL pressure readings
  • lis2dh12: functionality extension
  • cc110x: add hook cc1xxxeuiget()
  • ds3231: add alarm support
  • at86rf2xx: add missing handler for TRX24RXSTART interrupt
  • periphrtt: add periphrttsetcounter feature

Documentation

  • riotboot and its USB DFU version were added to the documentation
  • cpu/cc26xx_cc13xx: add CPU documentation
  • doc/SAUL: State expectations on blocking and interrupts
  • sys/phydat: clarify use of phydat::scale in phydat_fit
  • sys/ztimer: clarify doc on clock ops
  • doc/Coding_Convention: clarify: void return is allowed
  • sys/event: add missing precondition to doc

Build System / Tooling

  • RIOT now defaults to C11
  • RIOT now compiles with -fwrapv
  • compile_commands.json files can be produced, easing IDE integration
  • riotboot USB DFU: Enter bootloader when board's bootloader button is pressed on power-up
  • Make: enable SECONDEXPANSION globally

Testing

  • Test utilities result output (turo) module for testing logic abstraction
  • Github integration of static tests using annotations completed

Kconfig

  • Modules with dependency model added:

    • drivers/{l, m, n, o, p, q, r, s, t, u, v, w}*
    • pkg/c25519
    • pkg/cayenne-lpp
    • pkg/cifra
    • pkg/cn-cbor
    • pkg/driver_atwinc15x0
    • pkg/driver_bme680
    • pkg/emlearn
    • pkg/gemmlowp
    • pkg/hacl
    • pkg/heatshrink
    • pkg/jsmn
    • pkg/libb2
    • pkg/libcose
    • pkg/libfixmath
    • pkg/libhydrogen
    • pkg/lora-serialization
    • pkg/micro-ecc
    • pkg/microcoap
    • pkg/minmea
    • pkg/monocypher
    • pkg/nanocbor
    • pkg/nanopb
    • pkg/qDSA
    • pkg/qcbor
    • pkg/relic
    • pkg/talking_leds
    • pkg/tiny-asn1
    • pkg/tinycbor
    • pkg/tinycrypt
    • pkg/tlsf
    • pkg/tweetnacl
    • pkg/u8g2
    • pkg/ubasic
    • pkg/ucglib
    • pkg/umorse
    • pkg/utensor
    • pkg/yxml
    • sys/{crypto, hashes, random}
    • sys/analog_util
    • sys/app_metadata
    • sys/base64
    • sys/bitfield
    • sys/bloom
    • sys/cb_mux
    • sys/eepreg
    • sys/matstat
    • sys/memarray
    • sys/mineplex
    • sys/oneway
    • sys/posix_{sleep, inet}
    • sys/sema
    • sys/seq
    • sys/uri_parser
    • sys/timex
    • sys/ztimer
  • Modules with configurations exposed:

    • cpu/stm32f2f4f7: clock configuration
    • net/lorawan
    • sys/shell
  • Source EXTERNAL_MODULES configurations

Examples

  • examples/suit_update: update to aiocoap 0.4.1
  • examples/dtls-sock: add multiple credentials
  • examples/gnrcborderrouter: enable ethernet uplink

API Changes

  • mtd: rename mtdwritepage() -> mtdwritepageraw(), add high-level mtdwrite_page()
  • sys/ztimer: rename requiredpmmode to blockpmmode
  • sock/async: add function to retrieve session object of current DTLS event
  • sys/net/netopt: make NETOPTTXEND_IRQ and friends read-only

Deprecations

Deprecations

  • core/lifo: will be removed in 2021.07

Removals

  • Remove deprecated features:
    • flashrom API (was deprecated since 2017, use periph/flashpage)
    • boards: remove AVRDUDEPORT and PORTBSL

Known issues

Networking related issues (48)

16411: border_router: significant packet loss when sending out packets using

    USB cdc-ecm on nrf52

16398: gnrcborderrouter stops routing after a while

16359: at86rf231 initialization loses race against autoinitgnrc_rpl

16085: gnrcrpl: missing bounds checks in _parseoptions

16054: pkg/tinydtls: auxiliary data API does not work for async sockets

15926: Unclear how Router Solicitations are (or should be) handled

15867: Address registration handling inappropriate

14962: LoRaWan node ISR stack overflowed

14689: dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC

13997: ping6 is failing when testing with cc2538dk

13745: ethos: Unable to choose global source address.

13493: ethernet: Missing multicast addr assignment

13280: nrf52: Not able to add global or ULA address to interface

13088: Riot-os freezes with lwip + enc28j60 + stm32L4

12943: driver/mrf24j40: blocks shell input with autoinitgnrc_netif

12884: examples/cord_ep: Dead lock when (re-)registering in callback function

12761: samr30 xpro doesn't seem to use its radio ok

12642: Emcute cannot create a double-byte name

12565: gnrcicmpv6echo: flood-pinging another node leads to leaks in own

    packet buffer

12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel

12210: stale border router does not get replaced

11988: ethos: fails to respond to first message.

11860: send data with UDP at 10HZ, the program die

11852: scan-build errors found during 2019.07 testing

11405: nrfmin: communication not possible after multicast ping with no interval

11033: 6lo: RIOT does not receive packets from Linux when short_addr is set

10969: net: netdevdrivert::send() doc unclear

10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver

10809: openthread: does not build on current Arch

10410: Missing drop implementations in netdevdrivert::recv

10389: gnrcsockudp: Possible Race condition on copy in application buffer

10380: netdev_ieee802154: Mismatch between radio ll address and in memory

    address

10370: gomach: Resetting netif with cli doesn't return

10338: xbee: setting PAN ID sometimes fails

8779: CC2538 RF overlapping PIN usage

8752: mrf24j40: does not link for examples/default

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

8242: at86rf2xx: Dead lock when sending while receiving

8199: gcoap example request on tap I/F fails with NIB issue

7737: pkg: libcoap is partially broken and outdated

7474: 6lo gnrc fragmentation expects driver to block on TX

7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs

6018: nRF52: gnrc6lowpanble: memory leak with nordicsoftdeviceble

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64

   chars

5486: at86rf2xx: lost interrupts

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5051: Forwarding a packet back to its link layer source should not be allowed

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

Timer related issues (15)

13321: Sleep mode for Arduino

13072: periph/timer: timer_set() underflow safety check (tracking issue)

10545: periphtimer: systematic proportional error in timerset

10523: saml21 system time vs rtc

10510: xtimersetmsg: crash when using same message for 2 timers

10073: xtimer_usleep wrong delay time

9187: sys/newlib: gettimeofday() returns time since boot, not current wall

   time.

9052: misc issues with tests/trickle

9049: xtimer mis-scaling with long sleep times

8746: stm32_common/periph/rtc: current implementation broken/poor accuracy

8251: MSP430: periph_timer clock config wrong

7347: xtimer_usleep stuck for small values

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now()  and irq_disable()

6442: cpu/native: timer interrupt issue

6052: tests: xtimer_drift gets stuck on native

Drivers related issues (15)

16417: w5100 driver's improvement

15121: PWM: Single-phase initialization creates flicker

14506: mdterase success, but vfsformat resets board (esp32-heltec-lora32-v2)

14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until

    timeout

14424: adc is not a ADC-Driver but a analog pin abstraction

13527: examples/dtls-wolfssl not working on pba-d-01-kw2x

13444: Potential security and safety race conditions on attached devices

13079: drivers/srf04: incorrect values on ATmega based platforms

12445: driver/hts221: Temperature and Humidity readings incorrect

12371: fail to send data to can bus

12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.

12045: floats and doubles being used all over the place.

11104: STM32: SPI clock not returning to idle state and generating additional

    clock cycles

9419: cpu/msp430: GPIO driver doesn't work properly

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

Native related issues (5)

15878: examples/ccn-lite: floating point exception while testing on native

15870: examples/micropython: floating point exception while testing on native

13501: SDL2 does not work due to missing getpid

5796: native: tlsf: early malloc will lead to a crash

495: native not float safe

Other platforms related issues (18)

16251: XFA support on AVR and MSP430 broken with binutils 2.36.1

14822: MPU doesn't work on cortex-m0+

14728: stm32f7: Large performance difference between stm32f746 and stm32f767

14679: examples/gnrcborderrouter: esp_wifi crashes on disconnect

14572: tests/mpunoexecram: fails on i-nucleo-lrwan1

14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated

14237: esp32-wroom-32: tests/netstats_l2 failing sometimes

14015: stm32152re: hardfault when DBGMCUCRDBG* bits are set and branch after

    __WFI()

13606: gcoap/esp8266: Stack overflow with gcoap example

13390: Cannot use LLVM with Cortex-M boards

13104: boards/hifive1: flashing issue

13086: Failing tests on FE310 (Hifive1b)

12763: [TRACKING] Fixes for automatic tests of ESP32 boards.

11885: arm7: printf() with float/double not working

10258: Incorrect default $PORT building for esp32-wroom-32 on macOS

10122: Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice

10076: cpu/cortexmcommon: irqenable returns the current state of interrupts

    (not previous)

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software

   CS

Build system related issues (14)

16202: LTO broken (binaries too large)

15185: build: info-build doesn't work with boards without port set

14504: BUILDINDOCKER ignores USEMODULE

14288: pkg/ccn-lite: unable to make -j -C examples/ccn-lite-relay

14264: make: ccache leads to differing binaries

12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89

10850: Tracking: remove harmful use of export in make and immediate

    evaluation

9913: Build dependencies - processing order issues

9742: buildtest uses wrong build directory

9645: Different build behavior between murdock and riot/riotbuild:latest

   image

8913: make: use of immediate value of variables before they have their final

   value

8122: doxygen: riot.css modified by 'make doc'

6120: Windows AVR Mega development makefile Error

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

Other issues (57)

16419: SX127x Join procedure failed (The Things Network)

16415: riotctrl: shell interaction seems timing sensitive

16402: esp8266 precompiled bootloaders don't support partitions past 1MB

16395: riscv: ISR stack is too small for ENABLE_DEBUG in core files

16381: I2C not working under RIOT with U8G2 pkg

16281: esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi

16242: I found stm32 DMA periph driver bugs! when I tested stm32l431rc board.

16130: boards/esp32-wroom-32: tests/mtd_raw flakey

16108: pkg/tinydtls: Multiple issues

16077: pyterm on stdiocdcacm stops working after a few seconds

16022: make term no longer works with JLinkExe v6.94

15940: Basic test for periph/rtt introduced in #15431 is incorrect

15917: sys/riotboot/flashwrite: unaligned write when skipping RIOTBOOT_MAGIC

    on stm32wb

15903: flashing issue on frdm-k64f

15888: tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3

15814: usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial

    ports

15685: esp32: can't use newer C++ standard than c++11

15638: Possible memory leak in RIOT/build/pkg/ndn-riot/app.c

15528: Conflict between nimble and uwb-core packages

15072: periph_timer: Test coverage & broken on STM32F767ZI

15066: tests/pkg_libhydrogen: test fails on master for the samr21-xpro with

    LLVM

15006: Two bugs may lead to NULL dereference.

14929: cpu/sam0: flashpage write / read cycle produces different results

    depending on code layout in flash

14635: File systems report names with leading slashes

14578: tests/cpp11_*: failing on i-nucleo-lrwan1

14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails

14548: edbg: long lines flooded over serial become garbled

14520: examples / tests: LoRa tests fail on platforms that don't support LoRa

14390: gcoap: Suspected crosstalk between requests (possible NULL call)

14315: DTLS examples cannot send message to localhost

14167: Gcoap drops long packages instead of gracefully erring out

13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode

13541: Order of auto_init functions

13285: Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto

13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and

    esp32-wroom-32

13120: tests: broken with stdiortt if autoinit is disabled

13044: NVICSystemReset stuck in infinite loop when calling pm_reboot through

    shell after flashing with J-Link

12897: Can't build relic with benchmarks or tests

12889: CC2538DK board docs: broken links

12732: tests: some tests don't work with newlib lock functions.

12621: Potential race condition in compileandtestforboard.py

12108: make term output is inconsistent between boards, ethos and native

12105: [TRACKING] sys/shell refactoring.

11243: sys/riotboot: documentation issues

10751: Possible memset optimized out in crypto code

10731: nanocoap: incomplete response to /.well-known/core request

10639: sys/stdio_uart: dropped data when received at once

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode

    10

9371: assert: c99 static_assert macro doesn't function for multiple

   static_asserts in the same scope

7365: scheduler: priority inversion problem

7220: sys/fmt: Missing tests for fmtfloat, fmtlpad

6533: tests/lwip target board for python test is hardcoded to native

5009: RIOT is saw-toothing in energy consumption (even when idling)

4866: periph: GPIO drivers are not thread safe

4488: Making the newlib thread-safe

3256: make: Setting constants on compile time doesn't really set them

   everywhere

2346: Tracker: Reduce scope on unintended COMMON variables

There are 172 known issues in this release

Fixed Issues since the last release (2021.01)

16308: RIOT-OS has great design, But there are too many bugs.

16298: cpu/sam0_common: Ethernet driver stops working after a while

16293: Conflict between semtech-loramac and hashes modules

16191: make: make list-ttys broken for iotlab-m3

16184: unittests/tests-rtc: fail on native

16124: lwipsocktcp.c: incorrect socket buffer last_offset computation

16062: gnrcrpl: missing bounds checks in gnrcrplvalidationoptions

16018: gnrc_rpl: Lack of bounds check for packed structs

15927: uri_parser: out-of-bounds read

15447: w5100 driver's bug

13492: make -j flash broken on esp* (will always flash the previous binary)

13459: cpu/cortex-m23: gcc 9 bug when compiling c11 atomics

13345: sys/xtimer: segmentation fault: in function xtimermsgreceived_timeout

12857: examples/gnrcnetworkingmac broken on ATmega

12651: Failing tests on AVR (tested with atmega256rfr2-xpro)

12168: pkg/libb2: blake2s doesn't work on AVR

16 fixed issues since last release (2021.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

IRC, Matrix and Forum

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os
  • 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.

- C
Published by kaspar030 almost 5 years ago

riot - Release-2021.01

RIOT-2021.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 2021.01 release includes: - Device Firmware Upgrade support for USBUS - USB HID minimal implementation - IEEE 802.15.4 security initial implementation - 6LowPAN Minimal Forwarding and Selective Fragment Recovery initial implementation - Initial support for QN808x, SAMD10 STM32MP1 and STM32L5 CPUs - Initial support for Cortex-M33 - A module for selecting entropy sources - Initial support for the Decawave Impulse Radio-Ultra Wideband (UWB Core) - Capability to join or leave link layer multicast groups (GNRC) - Support for IN865 region in GNRC LoRaWAN - 83 additional modules supported by Kconfig - 14 new boards, 6 new device drivers, 8 packages updated

In order to improve community interaction, during this release cycle we started to migrate from a mailing-list-based communication to forum-based communication. We are proud to present the RIOT-OS forum available at forum.riot-os.org

533 pull requests, composed of 1440 commits, have been merged since the last release, and 65 issues have been solved. 58 people contributed with code in 119 days. 3852 files have been touched with 348619 (+) insertions and 52516 deletions (-).

Notations used below:

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

New features and changes

Core

  • msg_bus: allow to differ between messages form bus and from thread
  • mutex: Add mutex_cancel
  • mbox: add mboxsize(), mboxavail()
  • refactor thread info
  • remove kernel_types.h

System Libraries

  • Add thread-safe Malloc
  • sys/tsrb: Make thread-safe
  • mtd_mapper: implement pagewise functions
  • xtimer: introduce xtimer_msleep()
  • usbus: Add USB peripheral serial string support
  • hashes: Add PBKDF2-sha256 implementation
  • usbus/dfu: add Device Firmware Upgrade support for USBUS
  • USB HID minimal implementation
  • Add helpers for pointer tagging
  • atomic_utils: Functions for atomic access
  • entropy_source: add new module for entropy sources
  • nimble_autoadv: add new module
  • ztimer:
    • add ztimermutexlock_timeout()
    • fix xtimer_compat
    • increase xtimer_compat coverage
  • oneway-malloc: check calloc args
  • event: Allow single event_thread handling all queues
  • irq_handler: Drop module

Networking

  • gnrc_netif: add capability to join or leave link layer multicast groups
  • gnrcsixlowpanfrag:
    • initial import of Minimal Forwarding according to RFC 8930
    • initial import of Selective Fragment Recovery (RFC 8931)
  • gnrcnetifethernet: Support RX timestamp
  • Initial implementation of IEEE 802.15.4 security
  • sock: add access to auxiliary data
  • gnrc_pkt: refactor to not use utlist.h
  • sys/net/gnrc: fix in-band signaling of no RSSI
  • gnrcnetifpktq: fix pktbuf leak
  • Fixed a critical bug, allowing to crash the whole system with a specially crafted LoRa frame
  • GNRC LoRaWAN:
    • Support for IN865 region, Improve debugging
    • GNRC LoRaWAN: Bug fix for zero CFList
  • IEEE 802154 Radio HAL:
    • add read function
    • add IEEE802154RADIOINDICATIONCRCERROR
    • add IEEE802154RADIOINDICATIONTXSTART
    • add helpers for RSSI and dBm conversion
    • fix wrong rssi conversions treewide
  • IEEE 802.15.4 SubMAC:
    • add retransmission reporting
    • enable ACK_REQ by default
    • unify legacy and radio HAL bootstrap
  • gcoap:
    • Process CON responses
    • make blocksize configurable
  • Remove deprecated features
    • gcoap: remove deprecated gcoapaddqstring
    • gnrcnettype: remove GNRCNETTYPE_IOVEC
    • gnrcpktbuf: drop gnrcpktbufreplacesnip()
    • gnrcsixlowpanrb: remove GNRCSIXLOWPANFRAGRBUFAGGRESSIVE_OVERRIDE
    • sock/dtls: remove sockdtlssession_create due to deprecation

Packages

  • openthread: add support for radios compatible with SubMAC
  • uwb_core: initial support
  • Updates:
    • littlefs2: Bump to v2.3
    • jsmn: bump version
    • libb2: update to latest release
    • libhydrogen: bump version
    • micro-ecc: bump version
    • tinycrypt: bump version
    • fatfs: bump version to r0.14
    • gecko_sdk: update to v2.7.7
    • hacl: switch upstream to backup copy
    • lvgl: bump to v7.7.1
  • openwsn:
    • add ieee802154_hal based radio
    • openwsn: add sock_udp
  • nordic-softdevice: remove deprecated package

Boards

  • Renode:
    • stm32f4discovery: Add initial renode support
    • firefly: add renode configuration
    • hifive*: add renode support
  • Arduino feature:
    • waspmote-pro: add arduino feature
    • remote-revb: add arduino feature
  • New boards:
    • ESP32-Ethernet-Kit
    • arduino-nano-33-iot
    • weact-f401cc / weact-f401ce / weact-f411ce
    • e104-bt5011a-tb
    • e180-zg120b-tb
    • feather-m0-lora
    • nrf52840-mdk-dongle
    • nucleo-l011k4
    • nucleo-l552ze-q
    • frdm-kl43z
    • slstk3400a
    • stk3200
    • SAM D10 Xplained Mini
  • Particle boards: Support monofirmware builds and uploads
  • saul_pwm: auto-init'able RGB LEDs and dimmers for:
    • particle-argon / particle-boron / particle-xenon
    • nrf52840-mdk-dongle
    • nrf52840dongle
  • native: allow to use ZEP instead of tap
  • ikea-tradfri: add SPI NOR Flash configuration

CPU

  • Cortex-M33: add initial support
  • nrf5x: implement periphtimerperiodic
  • nrf52: Add i2c reconfigure feature
  • SAMD10: Add support
  • stm32l5: add initial support
  • stm32mp1: Add initial support
  • QN908x: Add initial support
  • atmegacommon: Split into atmegacommon and avr8_common
  • Improve clock configuration
  • stm32:
    • rtc: add unlock/lock to rtcclearalarm
    • uart: set flow control bits before enabling uart
    • cpu/stm32: enable overdrive mode on f4 and f7 for high clock speeds
    • cpu/stm32: Fix & cleanup periph_eth
  • esp:
    • implement ESP WiFi SoftAP mode
    • Fix cast alignment issues
  • sam3/periph_timer: fix trigger of cleared timer
  • native:
    • rtc: add rtcsettime implementation
    • fix memory leak
    • remove unused can_linux module
  • cc2538:
    • add riotboot feature
    • add flashpage & flashpage_raw
    • add periphuartnonblocking
  • efm32:
    • add coretemp driver
    • add watchdog peripheral
  • sam0_common:
    • cpu/sam0: add initial ethernet support
    • flashpage: add functions to write to user config area / AUX page
    • flashpage: rename to sam0flashpageaux_write()
    • SPI: add support for QSPI in SPI mode

Device Drivers

  • Add utilities for Ethernet Media-Independent Interface (MII) and use them in STM32 periph_eth
  • cst816s: Initial include of cst816s touch screen driver
  • gp2y10xx dust sensor
  • DS3231 RTC
  • periphcommon: dac: add dacplay()
  • scd30: Add reset function to Sensirion scd30 sensor
  • si1133: New SI1133 UV/IR/Ambient light driver
  • sc: Add driver for Honeywell HSC series pressure and temperature sensor
  • ndev: add mcp2515 + driver/mcp2515: add driver
  • net: Add netdevdrivert::confirm_send
  • PTP Clock
  • cpu/stm32:
    • periph_eth: Use auto-negotiation
    • Fix periph_eth link status
    • Fix reception bug in periph_eth
  • nrf802154:
    • change internal state to idle after rx
    • fix setccathreshold range
    • fix unwanted emissions at the end of ACK frame
    • fix state transition and off function
    • nrf802154: default to netdevieee802154submac
  • cc2538_rf:
    • fix transmit function
    • default to netdevieee802154submac
  • at86rf2xx: fix null pointer check
  • at86rf215:
    • add functions to configure trim & clock output at run-time
    • implement battery monitor, add power bus
    • implement MR-FSK
    • make use of packet queue if available
    • fix dependency resolution for 2.4 GHz
  • w5100.c: correct the pointer position when w5100's buf is full
  • srf04: fix overflow on AVR
  • periph/rtt: fix overflow in tick conversion macros
  • mtd_flashpage: fix erasure of multiple sectors
  • mtdspinor: cleanup & bug fixes

Documentation

  • README: Add merge-chance badge
  • riotboot: add basic porting guide
  • emulators: add emulators documentation in Doxygen
  • SECURITY.md: Add initial security policy
  • generate-changelog: add support for point releases
  • add Docker info to doxygen
  • drivers/netdev: Clarify documentation
  • README.md: move tapsetup section to documentation
  • native: Improve Documentation
  • CONTRIBUTING: cleanup and reorganize
  • core/msg_bus: enhance documentation
  • cpu/stm32: rewrite clock configuration documentation
  • doc: advertise forum.riot-os.org
  • doc: Give examples of what DEVELHELP does
  • gnrc/rpl: document implementation status
  • ieee802154/radio: indicate that FCS is ignored when reading buffer
  • uhcp: improve documentation
  • update board porting documentation page

Build System / Tooling

  • testbed-support: add iotlab mapping for dwm1001
  • info.inc.mk: Add info-build-json as JSON-formatted build info
  • makefiles/utils: add util to compare to software versions
  • emulator: add debug feature with qemu emulator
  • Makefile.include: avoid recursive expansion of USEMODULE
  • makefiles/pseudomodules.inc.mk: netdevieee802154legacy is a pseudomodule
  • dist/tools/bmp: Fix flashing with pygdbmi 0.10.0
  • drivers/at86rf215: fix dependency resolution for single radio
  • cpu/esp*: fix linker scripts
  • info-objsize: Restore info-objsize target
  • make: run static_tests.sh directly with static-tests target
  • picolibc: model as a feature
  • tools/esptool: add common makefile to define esptool variables
  • dist/tools: Use bash instead of sh where needed
  • tools/emulator: allow use with *term targets + introduce EMULATE=1 instead of emulate target
  • mips: adapt for toolchain update (2020.06-01)
  • remove the bootloader% pseudo-feature, replace it with highlevelstdio

Continuous Integration

  • use Github actions for static tests instead of Travis
    • Add support for Github annotations.
  • gh-actions/release-test: bump ssh-agent to v0.4.1

Testing

  • tests/mpustackguard: add automatic test script
  • tests/mtd_raw: add simple test for MTD
  • treewide: cleanup ENABLE_DEBUG
  • release-tests: fix artifact naming and steps cleanup for matrix build
  • tests/sysatomicutils_unittests: spice up test
  • tests/unittests: split out atomic_utils unittests
  • sys/shell: terminate shell on Ctrl-D

Kconfig

  • Modules with support added:
    • drivers/{a, b, c, d, e, f, g, h, i, j}*
    • drivers/ili9341
    • test/periph_*
  • cpu/stm32: add script to generate Kconfig.models and Kconfig.lines files
  • add modules to test on native
  • Clock configuration for:
    • stm32l4
    • stm32l5
    • stm32wb
    • stm32f0
    • stm32g0g4
    • stm32l0l1
    • stm32f1f3
  • drivers/rn2xx3 : Kconfig updates.
  • MQTT-SN Clients: Kconfig Updates

Examples

  • gnrc_networking: add option to enable DNS
  • gnrcborderroute: simplify ZEP setup on native
  • suit_update: use interactive sync in test
  • gcoap: Allow PUT/POST with empty payload
  • suit_update: update IETF draft reference in the README

API Changes

  • periph_flashpage: Make pagewise API optional
  • net/eui_provider: API cleanup
  • sock/dtls: add getter/setter for the remote UDP endpoint of sockdtlssession_t
  • drivers/pn532: use pseudomodules to select i2c or spi
  • GNRC: fix in-band signaling of no RSSI

Deprecations

Removals

  • Remove deprecated features:
    • gnrcnettype: remove GNRCNETTYPE_IOVEC
    • gnrcsixlowpanrb: remove GNRCSIXLOWPANFRAGRBUFAGGRESSIVE_OVERRIDE
    • pkg/nordic-softdevice: remove deprecated package
    • boards/native: remove all-debug deprecated target
    • gnrcpktbuf: drop gnrcpktbufreplacesnip()
    • sys/irq_handler: Drop module
    • sock/dtls: remove sockdtlssession_create due to deprecation
    • gcoap: remove deprecated gcoapaddqstring
    • pkg/tinydtls: remove deprecation message about some CFLAGS

Known issues

Networking related issues (43)

15867: Address registration handling inappropriate

14962: LoRaWan node ISR stack overflowed

14689: dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC

13997: ping6 is failing when testing with cc2538dk

13745: ethos: Unable to choose global source address.

13493: ethernet: Missing multicast addr assignment

13280: nrf52: Not able to add global or ULA address to interface

13088: Riot-os freezes with lwip + enc28j60 + stm32L4

12943: driver/mrf24j40: blocks shell input with autoinitgnrc_netif

12884: examples/cord_ep: Dead lock when (re-)registering in callback function

12857: examples/gnrcnetworkingmac broken on ATmega

12761: samr30 xpro doesn't seem to use its radio ok

12642: Emcute cannot create a double-byte name

12565: gnrcicmpv6echo: flood-pinging another node leads to leaks in own

    packet buffer

12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel

12210: stale border router does not get replaced

11988: ethos: fails to respond to first message.

11860: send data with UDP at 10HZ, the program die

11852: scan-build errors found during 2019.07 testing

11405: nrfmin: communication not possible after multicast ping with no interval

11033: 6lo: RIOT does not receive packets from Linux when short_addr is set

10969: net: netdevdrivert::send() doc unclear

10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver

10809: openthread: does not build on current Arch

10410: Missing drop implementations in netdevdrivert::recv

10389: gnrcsockudp: Possible Race condition on copy in application buffer

10380: netdev_ieee802154: Mismatch between radio ll address and in memory

    address

10370: gomach: Resetting netif with cli doesn't return

10338: xbee: setting PAN ID sometimes fails

8779: CC2538 RF overlapping PIN usage

8752: mrf24j40: does not link for examples/default

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

8242: at86rf2xx: Dead lock when sending while receiving

8199: gcoap example request on tap I/F fails with NIB issue

7737: pkg: libcoap is partially broken and outdated

7474: 6lo gnrc fragmentation expects driver to block on TX

7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs

6018: nRF52: gnrc6lowpanble: memory leak with nordicsoftdeviceble

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64

   chars

5486: at86rf2xx: lost interrupts

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5051: Forwarding a packet back to its link layer source should not be allowed

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

Timer related issues (16)

13345: sys/xtimer: segmentation fault: in function xtimermsgreceived_timeout

13321: Sleep mode for Arduino

13072: periph/timer: timer_set() underflow safety check (tracking issue)

10545: periphtimer: systematic proportional error in timerset

10523: saml21 system time vs rtc

10510: xtimersetmsg: crash when using same message for 2 timers

10073: xtimer_usleep wrong delay time

9187: sys/newlib: gettimeofday() returns time since boot, not current wall

   time.

9052: misc issues with tests/trickle

9049: xtimer mis-scaling with long sleep times

8746: stm32_common/periph/rtc: current implementation broken/poor accuracy

8251: MSP430: periph_timer clock config wrong

7347: xtimer_usleep stuck for small values

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now()  and irq_disable()

6442: cpu/native: timer interrupt issue

6052: tests: xtimer_drift gets stuck on native

Drivers related issues (14)

15121: PWM: Single-phase initialization creates flicker

14506: mdterase success, but vfsformat resets board (esp32-heltec-lora32-v2)

14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until

    timeout

14424: adc is not a ADC-Driver but a analog pin abstraction

13527: examples/dtls-wolfssl not working on pba-d-01-kw2x

13444: Potential security and safety race conditions on attached devices

13079: drivers/srf04: incorrect values on ATmega based platforms

12445: driver/hts221: Temperature and Humidity readings incorrect

12371: fail to send data to can bus

12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.

12045: floats and doubles being used all over the place.

11104: STM32: SPI clock not returning to idle state and generating additional

    clock cycles

9419: cpu/msp430: GPIO driver doesn't work properly

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

Native related issues (5)

15878: examples/ccn-lite: floating point exception while testing on native

15888: tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3

13501: SDL2 does not work due to missing getpid

5796: native: tlsf: early malloc will lead to a crash

495: native not float safe

Other platforms related issues (19)

14822: MPU doesn't work on cortex-m0+

14728: stm32f7: Large performance difference between stm32f746 and stm32f767

14679: examples/gnrcborderrouter: esp_wifi crashes on disconnect

14572: tests/mpunoexecram: fails on i-nucleo-lrwan1

14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated

14237: esp32-wroom-32: tests/netstats_l2 failing sometimes

14015: stm32152re: hardfault when DBGMCUCRDBG* bits are set and branch after

    __WFI()

13606: gcoap/esp8266: Stack overflow with gcoap example

13390: Cannot use LLVM with Cortex-M boards

13104: boards/hifive1: flashing issue

13086: Failing tests on FE310 (Hifive1b)

12763: [TRACKING] Fixes for automatic tests of ESP32 boards.

12651: Failing tests on AVR (tested with atmega256rfr2-xpro)

12168: pkg/libb2: blake2s doesn't work on AVR

11885: arm7: printf() with float/double not working

10258: Incorrect default $PORT building for esp32-wroom-32 on macOS

10122: Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice

10076: cpu/cortexmcommon: irqenable returns the current state of interrupts

    (not previous)

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software

   CS

Build system related issues (14)

15185: build: info-build doesn't work with boards without port set

14504: BUILDINDOCKER ignores USEMODULE

14288: pkg/ccn-lite: unable to make -j -C examples/ccn-lite-relay

14264: make: ccache leads to differing binaries

13492: make -j flash broken on esp* (will always flash the previous binary)

12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89

10850: Tracking: remove harmful use of export in make and immediate

    evaluation

9913: Build dependencies - processing order issues

9742: buildtest uses wrong build directory

9645: Different build behavior between murdock and riot/riotbuild:latest

   image

8913: make: use of immediate value of variables before they have their final

   value

8122: doxygen: riot.css modified by 'make doc'

6120: Windows AVR Mega development makefile Error

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

Other issues (41)

15870: examples/micropython: floating point exception while testing on native

15814: usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial

    ports

15528: Conflict between nimble and uwb-core packages

15072: periph_timer: Test coverage & broken on STM32F767ZI

15066: tests/pkg_libhydrogen: test fails on master for the samr21-xpro with

    LLVM

15006: Two bugs may lead to NULL dereference.

14929: cpu/sam0: flashpage write / read cycle produces different results

    depending on code layout in flash

14635: File systems report names with leading slashes

14578: tests/cpp11_*: failing on i-nucleo-lrwan1

14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails

14548: edbg: long lines flooded over serial become garbled

14520: examples / tests: LoRa tests fail on platforms that don't support LoRa

14390: gcoap: Suspected crosstalk between requests (possible NULL call)

14315: DTLS examples cannot send message to localhost

14167: Gcoap drops long packages instead of gracefully erring out

13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode

13541: Order of auto_init functions

13285: Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto

13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and

    esp32-wroom-32

13120: tests: broken with stdiortt if autoinit is disabled

13044: NVICSystemReset stuck in infinite loop when calling pm_reboot through

    shell after flashing with J-Link

12897: Can't build relic with benchmarks or tests

12889: CC2538DK board docs: broken links

12732: tests: some tests don't work with newlib lock functions.

12621: Potential race condition in compileandtestforboard.py

12108: make term output is inconsistent between boards, ethos and native

12105: [TRACKING] sys/shell refactoring.

11243: sys/riotboot: documentation issues

10751: Possible memset optimized out in crypto code

10731: nanocoap: incomplete response to /.well-known/core request

10639: sys/stdio_uart: dropped data when received at once

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode

    10

9371: assert: c99 static_assert macro doesn't function for multiple

   static_asserts in the same scope

7365: scheduler: priority inversion problem

7220: sys/fmt: Missing tests for fmtfloat, fmtlpad

6533: tests/lwip target board for python test is hardcoded to native

5009: RIOT is saw-toothing in energy consumption (even when idling)

4866: periph: GPIO drivers are not thread safe

4488: Making the newlib thread-safe

3256: make: Setting constants on compile time doesn't really set them

   everywhere

2346: Tracker: Reduce scope on unintended COMMON variables

There are 152 known issues in this release

Fixed Issues since the last release (2020.10)

15765: GitHub: Typo in WIP label

15691: examples/posix_socket: doesn't work between 2 iotlab-m3

15649: Posix Sockets - UDP not going out while using GNRC

15626: vera++: reports "warning: keyword 'new' not followed by a single space"

15574: Fix for #15353 is incomplete

15538: Crash on context switch on Cortex-M

15521: Missing error check of clistforeach(), mboxtry_put() and

    msg_try_send()

15517: pkg/tinydtls: async event SOCKASYNCCONN_FIN does not indicate which

    session has been finished

15495: C++ compile error with gnrc_lorawan

15457: RIOT OS and Relic Segmentation fault

15447: w5100 driver's bug

15434: stm32: cmsis: spurious build issues

15406: There are unsatisfied feature requirements: periph_adc

15357: Link failures since 81cb769

15353: uhcp: Incorrect handling of uhcppusht prefix

15311: Arduino's Serial.print(float) doesn't work

15102: Add whole linked list of gcoaplistenert to coap listener

15028: Suspicious code in emCute

14568: tests/pkglibfixmathunittests: failing on multiple platforms

13277: Y2038 tracking issue / strategy

20 fixed issues since last release (2020.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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC, Matrix and Forum

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os
  • 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.

- C
Published by jia200x about 5 years ago

riot - Release-2020.10

RIOT-2020.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 2020.10 release includes:

  • Support for PicoLIBC as standard C library implementation
  • A new radio abstraction layer for ieee802.15.4 radios
  • Improvement to the linking of modules
  • An improved algorithm for generating local unique identifiers
  • Pagewise addressing support for MTD devices
  • 23 additional modules supported by Kconfig
  • Initial rework of the clock modelling on stm32 devices
  • 5 new boards, 2 new device drivers, 7 packages updated

482 pull requests, composed of 1355 commits, have been merged since the last release, and 84 issues have been solved. 64 people contributed with code in 94 days. 2426 files have been touched with 133358 (+) insertions and 756906 deletions (-).

Notations used below:

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

New features and changes

Core

  • init: make boot message configurable
  • panic: callback app during panic
  • bitarithm: add bitarithmtestand_clear()
  • thread: Add THREAD_NAMES make flag
  • kerneldefines.h: Fix containerof()
  • core: Add and use helper functions for internal data
  • treewide: Fix direct access to scheduler internals
  • core/bitarithm: use _builtinclz() for bitarithm_msb()

System Libraries

  • architecture: New module to access architecture internals
  • Add support for PicoLIBC
  • ztimer: add ztimer_spin()
  • ztimer: add periodic timers API
  • byteorder:
    • Moved to sys
    • Add byteorder_bebuftohll() and inverse
    • add uint32 from/to buffer funcs
  • event: implement waiting on multiple queues
  • evtimer: add mbox support
  • random: add SHA256 mode to SHA1PRNG & tests
  • sys/luid: improve luid_base() algorithm
  • tsrb: Make thread-safe
  • pipe_dynamic: fix possible null pointer dereference

Networking

  • ieee802154_submac: add initial support for common MAC sub layer
  • ieee802154/radio_hal: introduce Radio HAL for IEEE802.15.4 compatible radios
  • EUI:
    • luid: add luidnetdevgeteui48() & luidnetdevgeteui64()
    • eui64: add eui64toeui48()
  • link_layer: implement EUI provider
  • luid: shuffle bytes
  • uhcp: use LOG_xxx functions
  • gcoap: Insert registrations at the front
  • gnrcipv6nib: only multicast probe UNREACHABLE neighbor if 6LR
  • gnrcipv6nib: set NCE stale on incoming ARO
  • gnrcipv6nib: don't add non-link-local to NC without ARSM
  • gnrcnetifpktq: add packets to optional send queue when device is busy
  • emcute: fix buffer overflow in willupdmsg()
  • SUIT:
    • Introduction of a payload storage API for SUIT manifest payloads
    • Upgrade to draft-ietf-suit-manifest-09
    • fail fetch if the image size doesn't match expected
  • gnrc:
    • Remove cyclic dependencies
    • Remove deprecated module gnrc_nettest
  • netopt: remove deprecated alias NETOPTLINKCONNECTED

Packages

  • openwsn: add riot based openwsn scheduler
  • openwsn: add shell commands
  • openthread: migrate to event loop
  • nimble/netif: fix deadlock on connection loss
  • wolfssl: bump version to 4.5.0
  • nanopb: bump version to 0.4.3
  • ccn-lite: bump version
  • cn-cbor bump to 1.0.0
  • tinycbor: bump to v0.5.3
  • tinydtls: enforce the selection of a crypto secure PRNG
  • jerryscript: bump to version 2.3.0
  • semtech-loramac: replace xtimer by ztimer
  • lvgl:
    • add logic for managing touch devices
    • introduce screen_dev wrapper
    • bump to v7
  • emb6: remove deprecated package

Boards

  • nrf52: Enable PWM on the LED pins
  • nucleo-g071rb: add initial support
  • nucleo-g070rb: add board
  • nucleo-g431rb: add initial support
  • Support for YARM board
  • add Adafruit Itsy Bitsy
  • samr21-xpro: fix reading EUI-64 from EDBG on cold boot
  • nucleo-l452re: add i2c config
  • hifive1b: add support for openocd programmer
  • remove support for wsn430-13b and wsn430-14

CPU

  • cortexm:
    • Make nothreadidle compatible with cortex-m0
    • Add thread info to hard fault handler
    • advertise puf_sram feature
    • Skip context save/restore on scheduling the previous thread
    • use mpu stack guard if DEVELHELP is enabled
    • fix check for bitbanding
    • Flush pipeline after triggering PendSV
  • cc2538: add Watchdog implementation
  • cc26xx_cc13xx:
    • add & link CCFG configuration
    • enable periph clocks on sleep
  • fe310:
    • Add custom PLIC driver as peripheral
    • Merge and optimize trapentry with irqarch
    • Unify linker scripts
  • msp430: Update to inline-able IRQ API Area
  • nrf5x_common: UART: add support for 1 MBaud
  • stm32:
    • generate vectors C files and IRQ defines from CMSIS headers
    • stm32cmsis: retrieve STM32 CMSIS header from a package
    • g0: add basic support
    • implement periphtimerperiodic
    • Add support for arbitrary SPI clock rate
    • f0/f1/f3/l0/l1/l4/wb: rework clock initialization and configuration
    • disable MPU for cortex-m0+
  • sam0:
    • GPIO: use tamper detection to wake from Deep Sleep
    • add support to run PWM off TC timers
    • ADC: add support for samd5x/same5x
    • Add support for Single-cycle I/O Port for GPIO
    • UART: implement arithmetic BAUD mode
    • merge RTC & RTT implementation
    • flashpage: clean up implementation
  • saml1x: Remove MPU feature

Device Drivers

  • at86rf2xx: spi security module
  • at86rf2xx: support frame retry reporting on AT86RFR2
  • soft_uart: add software based UART implementation
  • scd30 : Add driver for scd30 sensor
  • stm32eth: add 'NETDEVEVENTLINKUP' event
  • Add support for Adafruit Seesaw Soil moisture sensor
  • radio_hal:
    • introduce Radio HAL for IEEE802.15.4 compatible radios
    • cc2538_rf: implement Radio HAL
    • nrf52840: implement Radio HAL
  • mtd: add page addressed operation
  • stmpe811: fix interrupt polarity & interrupt generation
  • sps30: Update units of measurement
  • sps30: Add sleep mode
  • sdcard_spi: remove auto-init

Build System / Tooling

  • Add libstdcpp feature
  • gnrcborderrouter: Add USB Ethernet support
  • buspirate: add Bus Pirate as Debug Adapter
  • README: Add more badges
  • Convert remaining Python2 users to Python3
  • openocd-adapters: select transport based on adapter
  • Makefile.{base,include}: Fix linking for C++ code in external modules
  • link object files instead of archives
  • tapsetup:
    • Add support for listing bridges
    • Add support to configure addresses for bridge
    • Add support for configuring routes and forwarding capabilities for bridge
    • Add TUN support

Testing

  • vagrant: add Vagrantfile to test native in FreeBSD
  • compileandtestforboard.py: add optional JUnit XML support
  • bench_*: Add ticks per iteration results

Kconfig

  • Finished modelling provided features
  • Modules with support added:
    • credman
    • cord
    • nrf-based
    • ek-lm4f120xl
    • lpc1768-based
    • lpc2387-based
    • native
    • mips32r2-based
    • sam3-based
    • sam0_common
    • same54-xpro
    • saml1x-based
    • saml21-based
    • stm32
    • l2filter
    • dhcpv6
    • hifive1(b) clock area
    • stm32gx clock configuration
    • periph/timer
    • netif
    • skald
    • sock_dtls
    • lora
  • add genconfig script
  • enable incremental compilation on config changes
  • include KCONFIGOUTCONFIG unconditionally

API Changes

  • gcoap: remove gcoap_finish
  • gpio: IRQs triggered after gpioirqdisable() are discarded
  • sched: Refactor to return the next scheduled thread
  • sock: Application should pull in the pseudomodules
  • driver-guide.md: Drivers are expected to return negative errno values
  • nrf52xxxdk: configure LEDs as PWM

Known issues

Networking related issues (42)

14962: LoRaWan node ISR stack overflowed

14689: dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC

13997: ping6 is failing when testing with cc2538dk

13745: ethos: Unable to choose global source address.

13493: ethernet: Missing multicast addr assignment

13280: nrf52: Not able to add global or ULA address to interface

13088: Riot-os freezes with lwip + enc28j60 + stm32L4

12943: driver/mrf24j40: blocks shell input with autoinitgnrc_netif

12884: examples/cord_ep: Dead lock when (re-)registering in callback function

12857: examples/gnrcnetworkingmac broken on ATmega

12761: samr30 xpro doesn't seem to use its radio ok

12642: Emcute cannot create a double-byte name

12565: gnrcicmpv6echo: flood-pinging another node leads to leaks in own

    packet buffer

12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel

12210: stale border router does not get replaced

11988: ethos: fails to respond to first message.

11860: send data with UDP at 10HZ, the program die

11852: scan-build errors found during 2019.07 testing

11405: nrfmin: communication not possible after multicast ping with no interval

11033: 6lo: RIOT does not receive packets from Linux when short_addr is set

10969: net: netdevdrivert::send() doc unclear

10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver

10809: openthread: does not build on current Arch

10410: Missing drop implementations in netdevdrivert::recv

10389: gnrcsockudp: Possible Race condition on copy in application buffer

10380: netdev_ieee802154: Mismatch between radio ll address and in memory

    address

10370: gomach: Resetting netif with cli doesn't return

10338: xbee: setting PAN ID sometimes fails

8779: CC2538 RF overlapping PIN usage

8752: mrf24j40: does not link for examples/default

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

8242: at86rf2xx: Dead lock when sending while receiving

8199: gcoap example request on tap I/F fails with NIB issue

7737: pkg: libcoap is partially broken and outdated

7474: 6lo gnrc fragmentation expects driver to block on TX

7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs

6018: nRF52: gnrc6lowpanble: memory leak with nordicsoftdeviceble

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64

   chars

5486: at86rf2xx: lost interrupts

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5051: Forwarding a packet back to its link layer source should not be allowed

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

Timer related issues (15)

13321: Sleep mode for Arduino

13072: periph/timer: timer_set() underflow safety check (tracking issue)

10545: periphtimer: systematic proportional error in timerset

10523: saml21 system time vs rtc

10510: xtimersetmsg: crash when using same message for 2 timers

10073: xtimer_usleep wrong delay time

9187: sys/newlib: gettimeofday() returns time since boot, not current wall

   time.

9052: misc issues with tests/trickle

9049: xtimer mis-scaling with long sleep times

8746: stm32_common/periph/rtc: current implementation broken/poor accuracy

8251: MSP430: periph_timer clock config wrong

7347: xtimer_usleep stuck for small values

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now()  and irq_disable()

6442: cpu/native: timer interrupt issue

6052: tests: xtimer_drift gets stuck on native

Drivers related issues (14)

15121: PWM: Single-phase initialization creates flicker

14506: mdterase success, but vfsformat resets board (esp32-heltec-lora32-v2)

14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until

    timeout

14424: adc is not a ADC-Driver but a analog pin abstraction

13527: examples/dtls-wolfssl not working on pba-d-01-kw2x

13444: Potential security and safety race conditions on attached devices

13079: drivers/srf04: incorrect values on ATmega based platforms

12445: driver/hts221: Temperature and Humidity readings incorrect

12371: fail to send data to can bus

12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.

12045: floats and doubles being used all over the place.

11104: STM32: SPI clock not returning to idle state and generating additional

    clock cycles

9419: cpu/msp430: GPIO driver doesn't work properly

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

Native related issues (3)

13501: SDL2 does not work due to missing getpid

5796: native: tlsf: early malloc will lead to a crash

495: native not float safe

Other platforms related issues (19)

14822: MPU doesn't work on cortex-m0+

14728: stm32f7: Large performance difference between stm32f746 and stm32f767

14679: examples/gnrcborderrouter: esp_wifi crashes on disconnect

14572: tests/mpunoexecram: fails on i-nucleo-lrwan1

14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated

14237: esp32-wroom-32: tests/netstats_l2 failing sometimes

14015: stm32152re: hardfault when DBGMCUCRDBG* bits are set and branch after

    __WFI()

13606: gcoap/esp8266: Stack overflow with gcoap example

13390: Cannot use LLVM with Cortex-M boards

13104: boards/hifive1: flashing issue

13086: Failing tests on FE310 (Hifive1b)

12763: [TRACKING] Fixes for automatic tests of ESP32 boards.

12651: Failing tests on AVR (tested with atmega256rfr2-xpro)

12168: pkg/libb2: blake2s doesn't work on AVR

11885: arm7: printf() with float/double not working

10258: Incorrect defaultPORT building for esp32-wroom-32 on macOS

10122: Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice

10076: cpu/cortexmcommon: irqenable returns the current state of interrupts

    (not previous)

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software

   CS

Build system related issues (14)

15185: build: info-build doesn't work with boards without port set

14504: BUILDINDOCKER ignores USEMODULE

14288: pkg/ccn-lite: unable to make -j -C examples/ccn-lite-relay

14264: make: ccache leads to differing binaries

13492: make -j flash broken on esp* (will always flash the previous binary)

12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89

10850: Tracking: remove harmful use of export in make and immediate

    evaluation

9913: Build dependencies - processing order issues

9742: buildtest uses wrong build directory

9645: Different build behavior between murdock and riot/riotbuild:latest

   image

8913: make: use of immediate value of variables before they have their final

   value

8122: doxygen: riot.css modified by 'make doc'

6120: Windows AVR Mega development makefile Error

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

Other issues (41)

15072: periph_timer: Test coverage & broken on STM32F767ZI

15066: tests/pkg_libhydrogen: test fails on master for the samr21-xpro with

    LLVM

15006: Two bugs may lead to NULL dereference.

14929: cpu/sam0: flashpage write / read cycle produces different results

    depending on code layout in flash

14635: File systems report names with leading slashes

14578: tests/cpp11_*: failing on i-nucleo-lrwan1

14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails

14568: tests/pkglibfixmathunittests: failing on multiple platforms

14548: edbg: long lines flooded over serial become garbled

14520: examples / tests: LoRa tests fail on platforms that don't support LoRa

14390: gcoap: Suspected crosstalk between requests (possible NULL call)

14315: DTLS examples cannot send message to localhost

14167: Gcoap drops long packages instead of gracefully erring out

13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode

13541: Order of auto_init functions

13345: sys/xtimer: segmentation fault: in function xtimermsgreceived_timeout

13285: Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto

13277: Y2038 tracking issue / strategy

13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and

    esp32-wroom-32

13120: tests: broken with stdiortt if autoinit is disabled

13044: NVICSystemReset stuck in infinite loop when calling pm_reboot through

    shell after flashing with J-Link

12897: Can't build relic with benchmarks or tests

12889: CC2538DK board docs: broken links

12732: tests: some tests don't work with newlib lock functions.

12621: Potential race condition in compileandtestforboard.py

12108: make term output is inconsistent between boards, ethos and native

12105: [TRACKING] sys/shell refactoring.

11243: sys/riotboot: documentation issues

10751: Possible memset optimized out in crypto code

10731: nanocoap: incomplete response to /.well-known/core request

10639: sys/stdio_uart: dropped data when received at once

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode

    10

9371: assert: c99 static_assert macro doesn't function for multiple

   static_asserts in the same scope

7365: scheduler: priority inversion problem

7220: sys/fmt: Missing tests for fmtfloat, fmtlpad

6533: tests/lwip target board for python test is hardcoded to native

5009: RIOT is saw-toothing in energy consumption (even when idling)

4866: periph: GPIO drivers are not thread safe

4488: Making the newlib thread-safe

3256: make: Setting constants on compile time doesn't really set them

   everywhere

2346: Tracker: Reduce scope on unintended COMMON variables

There are 148 known issues in this release

Fixed Issues since the last release (2020.07)

15256: Kconfig file/folder name collision on case-insensitive filesystem

15255: Repository 'broken' on macOS due to case-insensitive names

15171: Failed assertion when using gnrc_minimal with SLIP

15137: ESP8266 does not respond

15130: cpu/cc26xxcc13xx: CPU gets stuck on schedarch_idle

15123: esp32: mtd tests failing on CI

15118: make: target info-objsize broken

15085: failing assert in core/msg.c:386 when ping6 on Nucleo-F767ZI

15065: pkg_utensor: Hard fault with LLVM

15060: ztimer tests fail on efm32

15045: Some I2C devices are not working on iotlab-m3

15041: 2020.07-branch bug:RIOT/cpu/stm32/include/vendor/stm32f103xe.h

15023: gnrc: all iotlab-m3 nodes have identical short HW addresses

15016: Possible memory leak in cpu/native/syscalls.c

15015: Is there a buffer overflow bug in drivers/at86rf2xx/at86rf2xx_getset.c?

14988: tests/mtd_flashpage is broken on iotlab-m3 and b-l072z-lrwan1

14980: hifive1b: sys/ztimer/core.c:159 => *** RIOT kernel panic: FAILED

    ASSERTION.

14958: nucleo-f303k8 no longer work since PR #14892

14957: Return value of gnrc* calls not checked for -1

14939: puf_sram not used when included as a feature

14773: Can't read SD cards filled with more then 4 GiB data

14752: Return value of gnrcnetifipv6addridx is not checked for negative

14735: Global Address remains in state TNT[3] forever

14667: Undefined behavior in pkg/semtech-loramac/contrib/

14636: native: reboot exits instance with TAP interface

14514: Uncrustify enforces deviation of coding convention

14466: Linking C++

14217: tests/periphtimerperiodic is failing

14169: Gcoap does not handle separate responses

13838: Global Address remains in state TNT[3] forever

13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)

    after debug break

13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails

    sometimes

13267: Failing tests on MSP430 (z1)

13204: xtimer problem with nucleo32 boards

11390: gnrc networking crashes on nRF51dk

9882: sys/tsrb is not thread safe

9709: examples: failed assertion in dtls-echo example

9656: gnrc/netif: various problems after resetting interface a second time

9518: periph/i2c: tracking bugs and untested acks

8408: pkg/fatfs: linker error when build tests/pkgfatfsvfs for msb430 based

   boards

6650: GPIO Port shift in cc2538 is inconsistent

4954: chronos: compiling with -O0 breaks

42 fixed issues since last release (2020.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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC & Matrix

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os
  • Join the RIOT Matrix room at: #riot-os:matrix.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.

- C
Published by bergzand over 5 years ago

riot - Release-2020.07.1

RIOT-2020.07.1 - Release Notes

This is a bug fixing release for the RIOT 2020.07 release. The following bugs were fixed:

14670: tests/lwipsocktcp: fix -EADDRINUSE test

14671: pkg/lwip: Use IS_ACTIVE() and bugfix

- pkg/lwip: Compatibility with IS_USED()
- pkg/lwip: Use IS_ACTIVE() & NETCONNTYPE_ISIPV6()

14686: gnrcsixlowpanfrag_vrb: fix cppcheck warning

14693: cpu/msp430common: fix threadyield_higher() when called in isr

14685: gnrc/nib: fix idxdsts() calculation

14817: gnrcsixlowpanfrag_rb: Check possibly uninitialized pointers

- C
Published by miri64 over 5 years ago

riot - Release-2020.07

RIOT-2020.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 2020.07 release puts a focus on the improvement of automated testing. In that vein, various new CI integrations such as CircleCI for documentation building and online presentation, and Github Actions to check the tooling of RIOT when merged. The riotctrl_shell python module allows to abstract shell commands as python methods for testing using the newly created riotctrl python package 1. Kconfig migration reached phase 2 with various board features being exposed to Kconfig. New network protocols were ported for RIOT such as MQTT (in form of the paho-mqtt package) and the lookup client component for CoRE RD cord_lc. The OpenWSN network stack with 6TiSCH support was reintegrated into RIOT. Support for several new boards and new sensors was added. Additionally, this release contains a number of bug fixes and test improvements.

546 pull requests, composed of 10452 commits, have been merged since the last release, and 84 issues have been solved. 64 people contributed with code in 106 days. 2371 files have been touched with 822149 (+) insertions and 700313 deletions (-).

Notations used below:

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

New features and changes

Core

  • core: make idle thread optional
  • macros/units: add unit conversion helper macros
  • msg: add message bus
  • panic: launch USB bootloader on crash for easy recovery

System libraries

  • autoinit: automatically determine autoinit_*.c
  • base64: Clean up / improve implementation
  • hashes: add sha224 and reuse sha256 code
  • luid: provide luidgetlb()
  • phydat: added phydat to JSON converter
  • posix: initial import of select() function (only support sockets for now)
  • ps: show free stack space in addition to used and total
  • shell:
    • add optional hooks for shell commands
    • native: stop RIOT when the shell reads EOF
    • refactor readline function
    • refactor tokenizer code
  • shell_commands:
    • alias ping=ping6
    • provide command to reboot to bootloader
  • stdio_semihosting: Initial include of Semihosting-based STDIO
  • touch_dev: add generic API for touch device
  • trace: add trace module
  • pm: Add pmgetblocker()
  • random:
    • add option to use HWRNG as source of randomness
    • optimize sha1prng
  • usb:
    • allow for boards to define default custom VID/PID
    • warn on test-ID usage in a unified location
  • xtimer: xtimerrmutexlock_timeout
  • ztimer:
    • add power management for ztimer clocks
    • expose ZTIMERMSEC/USECBASE

Networking

  • cord: add CoRE RD lookup client implementation
  • gcoap: add CoAP ping request
  • gnrc:
    • gnrcipv6ext_opt: initial import of hop-by-hop and destination option handling
    • gnrc_netif:
    • add IPv6 event bus
    • add option for non-std 6lo MTU
    • add support for internal event loop
    • use gnrc_netif-submodules to pull in upper-layer struct members
    • gnrc_nettype: indirect NETTYPE definition via pseudo-modules
    • gnrc_pktdump: fix dependencies
    • gnrc_tcp:
    • add retransmission timer
    • rewrite API internal messaging
    • rewrite recv buffer allocation/returning
    • use exponent to configure message queue sizes
  • nanocoap: allow coapoptadd_string() for non-zero-terminated strings
  • netif: add functions to get and get by identifier
  • sock_dtls: provide getter function for UDP sock
  • sock_util: add interface descriptor parsing to str2ep

Packages

  • pkg: rework checkout process
    • avoid copying Makefiles in package source when possible
    • store packages sources in a global package directory
  • pkg: cleanup build system integration for
    • cryptoauthlib, openthread, semtech-loramac, tinydtls, wakaama, u8g2, ucglib, wolfssl
  • pkg: tools: ensure cmake based packages/tools are built out-of-source
  • cryptoauthlib: wake pulse implementation for CPUs supporting periph_i2c_reconfigure
  • emlearn: add support to RIOT
  • gecko_sdk: update to v2.7.6
  • lwip:
    • add IPv4 support for netdev_tap
    • add support for nrf802154
    • enable IPv4/IPv6 dual stack mode
    • lwipsock: provide implementation for `sock*recvbuf()`
  • lua: remove unnecessary patch
  • paho-mqtt: add package and example
  • nimble:
    • add static connection manager statconn
    • netif:
    • set host thread prio to 1
    • simplify mbuf pool initialization
    • update NimBLE ver (cd7d7aa286) + timing param cleanup
  • openwsn: re-integrate the network stack as a package
  • tinydtls:
    • add sock_async support for sock_dtls
    • use latest development version (eda63f000c)
  • ucglib: refactoring and fixes

Boards

  • cc1352p-launchpad: add support
  • common/blxxxpill:
    • provide periph_rtt
    • improve adc
  • dwm1001: add support to Decawave DWM1001 dev board
  • mcb2388: misc enhancements
  • nrf52840-dongle: add support
  • nrf52840dk: Add MTD configuration
  • nucleo-g474re: add support
  • pic32-clicker: rename to 6lowpan-clicker
  • samr30-xpro: add SPI dev for ext pin header
  • samr3x-xpro: add riotboot feature
  • serpente: add support
  • sltb001a: enable CCS811 sensor
  • sodaq-sff: add support for SODAQ SFF
  • stm32f429i-disco: add support
  • weact-f411ce: add support
  • wemos-zero: add support

CPU

  • arm7_common: Update to inlineable IRQ API
  • atmega_common: Update to inlineable IRQ API
  • cortexm:
    • allow to define reserved fields in CortexM vector table
    • "free" SVC
  • cc26x2_cc13x2:
    • add oscillator switching functions
    • add periph_i2c implementation
    • trim device registers on cpu_init
  • esp32:
    • support of multiple heaps for newlib malloc
    • replace RTC implementation by RTT implementation
  • fe310: migrate to inlined IRQ API
  • kinetis: implement power modes for pm_layered
  • lpc2387:
    • pm: enable SLEEP & POWERDOWN mode
    • timer: use lpc2387pclkscale()
  • mipspic32common: Implement GPIO IRQ
  • native:
    • add periph_eeprom driver implementation
    • rename trace -> backtrace
  • nrf52:
    • add black magic probe config
    • add missing vendor files
    • implement EasyDMA-based SPI peripheral implementation
  • nrf52811: initial support
  • nrf5x_common:
    • add configurable RTT_FREQUENCY
    • enable bias correction in hwrng
  • sam0_common:
    • add DMA peripheral driver
    • add PWM support for saml21, samd5x
    • implement periph/dac
    • make SPI peripheral DMA compatible
    • move PWM to common code
    • spi: move clk pin muxing into spiacquire / spirelease
    • UART: implement inverted RX & TX
  • samd21: PWM don't hard-code number of channels to 3
  • samd5x: allow to use XOSC as clock source
  • saml1x: pm: set deep flag
  • stm32:
    • add QDEC support for CPUFAMSTM32F1
    • add non-blocking UART
    • decrease latency in SPI DMA path
    • implement reset to bootloader
    • filter availability of RNG by CPU not by board
    • stm32common: make RTTFREQUENCY configurable
    • stm32f4: Add DMA config for SPI
    • stm32g4: add support

Device Drivers

  • atwinc15x0: add WiFi netdev driver
  • at: Add aturcisr module to process URCs upon arrival
  • at24cxxx: MTD wrapper for at24cxxx
  • at86rf215:
    • implement MR-O-QPSK
    • implement MR-OFDM
  • at86rf2xx: add support for high data rates
  • dfplayer: New driver for the DFPlayer Mini MP3 player
  • ethos: use luidgeteui48()
  • edbg_eui: add driver to get MAC address from Atmel EDBG
  • mhz19: initial support
  • mrf24j40: add Turbo Mode
  • mtdspieeprom: add MTD wrapper for AT25XXX EEPROMs
  • pca9633: add new driver
  • periph/timer: add timersetperiodic()
  • periph/i2c: add periphi2creconfigure feature & implementation for sam0
  • periph/rtt: introduce RTTMINOFFSET
  • periph/spi: add periphspireconfigure feature & implementation for sam0
  • pulse_counter: Use C11 atomics & bugfix
  • sdp3x : Add driver for sdp3x sensor

Build System / Tooling

  • make:
    • add code generator targets
    • add JLink support for stm32
    • docker.inc.mk: add and use generic dockerrunmake
    • allow multiple external board dirs
    • info-global.inc.mk: add info-boards-features-blacklisted
    • resolve dependencies before Makefile.include
  • riotctrl_shell:
    • initial import of shell interaction spawn
    • provide ipv6_nib interactions and parsers
    • provide netif interactions and parsers
  • tools:
    • add script to run radvd on a tun interface
    • provide tool to parse pktbuf output
    • kconfiglib:
    • add riot_kconfig to override default behaviours
    • kconfiglib: bump to v14.1.0

Testing

  • fuzzing framework:
    • add AFL-based fuzzing setup for network modules
    • add fuzzing application for gcoap
  • ci: setup github actions
  • sys/testutils/dummythread: initial commit
  • tests/irqdisablerestore: Add test for irqdisable() / irqrestore()
  • tests/periph_spi: add benchmark for acquire / release
  • tests/periphspidma: Add test for SPI with DMA
  • uncrustify: add auto uncrustify with blacklist

Kconfig migration

  • armv7m/cortexm: declare CPUARCH and CPU_CORE
  • boards: Model features in Kconfig
    • arduino-leonardo, arduino-mega2560, atmega128x-based, atmega256rfr2-based, atmega328p-based, cc2538-based, cc26xx_cc13xx-based, efm32-based, esp-based, fe310-based, kinetis-based, msp430-based, samr21-xpro, slwstk6220a
  • kconfig: Declare common feature symbols
  • drivers: Expose Configurations to Kconfig
    • ads101x, at, at86rf215, bmx055, cc110x, dose.h, fxos8700, hdc1000, isl29020, l3g4200d, lpsxxx, mag3110, mma8x5x, motordriver, mtdsdcard, opt3001, pn532, rn2xx3, slipdev, sps30, tcs37727, tmp00x
  • networking: Expose configurations to Kconfig
    • asymcute, coap, csma
    • gnrc:
    • gomach, lwmac, mac, pktdump, pktbuf, rpl, tcp
  • usbus/cdc/ecm: Expose configurations to Kconfig

API Changes

  • cpu/sam0_common: drop prescaler from timer config
  • cpu/sam0_common: PWM config now requires GCLK source
  • drivers/mtd: Change API to return 0 on success
  • drivers/mtd_mapper: count offset in sectors
  • net/sock_dtls: provide getter function for UDP sock
  • net/sockdtls: add timeout to sockdtlssend and add sockdtlssessioninit ```diff diff --git a/sys/include/net/sock/dtls.h b/sys/include/net/sock/dtls.h index 96569723fc..6e66048bd4 100644 --- a/sys/include/net/sock/dtls.h +++ b/sys/include/net/sock/dtls.h @@ -476,6 +485,13 @@ extern "C" { #endif

    +#ifndef DTLSHANDSHAKEBUFSIZE +#define DTLSHANDSHAKEBUFSIZE (256) /**< Size buffer used in handshake to

    • hold credentials / +#endif + +#define SOCKDTLSHANDSHAKE (EXDEV) /*< Return value for a successful
    • handshake / + /*
      • @brief DTLS version number @@ -546,26 +564,26 @@ void sockdtlsinit(void); int sockdtlscreate(sockdtlst *sock, sockudpt *udpsock, credmantag_t tag, unsigned version, unsigned role);

    + /** - * @brief Creates a new DTLS session + * @brief Initialize session handshake. * - * Initializes handshake process with a DTLS server at @p ep. - * - * @param[in] sock DLTS sock to use - * @param[in] ep Remote endpoint of the session - * @param[out] remote The created session, cannot be NULL + * Sends a ClientHello message to initialize the handshake. Call + * @ref sockdtlsrecv() to finish the handshake. * - * @return 0 on success - * @return -EAGAIN, if DTLSHANDSHAKETIMEOUT is 0 and no data is available. - * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set. - * @return -EINVAL, if @p remote is invalid or @p sock is not properly - * initialized (or closed while sockudprecv() blocks). - * @return -ENOBUFS, if buffer space is not large enough to store received - * credentials. - * @return -ETIMEDOUT, if timed out when trying to create session. + * @param[in] sock DTLS sock to use + * @param[in] ep Remote endpoint to start a handshake with + * @param[out] remote Resulting session + * + * @return 1, if new handshake is started + * @return 0, if there is an existing session + * @return -ENOMEM, not enough memory to allocate for new peer + * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set. + * @return -EINVAL, if @p remote is invalid or @p sock is not properly + * initialized (or closed while sockudprecv() blocks). */ -int sockdtlssessioncreate(sockdtlst *sock, const sockudpept *ep, - sockdtlssessiont *remote); +int sockdtlssessioninit(sockdtlst *sock, const sockudpept *ep, + sockdtlssessiont *remote);

    /** * @brief Destroys an existing DTLS session @@ -578,7 +596,7 @@ int sockdtlssessioncreate(sockdtlst *sock, const sockudpept *ep, void sockdtlssessiondestroy(sockdtlst *sock, sockdtlssessiont *remote);

    /** - * @brief Decrypts and reads a message from a remote peer. + * @brief Receive handshake messages and application data from remote peer. * * @param[in] sock DTLS sock to use. * @param[out] remote Remote DTLS session of the received data. @@ -593,7 +611,8 @@ void sockdtlssessiondestroy(sockdtlst *sock, sockdtlssessiont *remote); * * @note Function may block if data is not available and @p timeout != 0 * - * @return The number of bytes received on success + * @return The number of bytes received on success + * @return -SOCKDTLSHANDSHAKE when new handshake is completed * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set. * @return -EAGAIN, if @p timeout is 0 and no data is available. * @return -EINVAL, if @p remote is invalid or @p sock is not properly @@ -657,28 +676,32 @@ ssizet sockdtlsrecvbuf(sockdtlst *sock, sockdtlssessiont *remote, * if no session exist between client and server. * @param[in] data Pointer where the data to be send are stored * @param[in] len Length of @p data to be send + * @param[in] timeout Handshake timeout in microseconds. + * If timeout > 0, will start a new handshake if no + * session exists yet. The function will block until + * handshake completed or timed out. + * May be SOCKNOTIMEOUT to block indefinitely until + * handshake complete. * - * @note Function may block until a session is created if there is no - * existing session with @p remote. - * - * @note Initiating a session through this function will require - * @ref sockdtlsrecv() called from another thread to receive the handshake - * messages. + * @note When blocking, we will need an extra thread to call + * @ref sockdtlsrecv() function to handle the incoming handshake + * messages. * * @return The number of bytes sent on success + * @return -ENOTCONN, if timeout == 0 and no existing session exists with + * @p remote * @return -EADDRINUSE, if sockdtlst::udpsock has no local end-point. * @return -EAFNOSUPPORT, if remote->ep != NULL and * sockdtlssessiont::ep::family of @p remote is != AFUNSPEC and * not supported. - * @return -EHOSTUNREACH, if sockdtlssessiont::ep of @p remote is not - * reachable. * @return -EINVAL, if sockudpept::addr of @p remote->ep is an * invalid address. * @return -EINVAL, if sockudpept::port of @p remote->ep is 0. * @return -ENOMEM, if no memory was available to send @p data. + * @return -ETIMEDOUT, `0 < timeout < SOCKNOTIMEOUT` and timed out. */ ssizet sockdtlssend(sockdtlst *sock, sockdtlssessiont *remote, - const void *data, sizet len); + const void *data, sizet len, uint32t timeout);

    /** * @brief Closes a DTLS sock @@ -694,6 +717,47 @@ ssizet sockdtlssend(sockdtlst *sock, sockdtlssessiont *remote, */ void sockdtlsclose(sockdtlst *sock);

    +/** + * @brief Creates a new DTLS session + * + * Initiates a handshake with a DTLS server at @p ep and wait until it + * completes or timed out. + * + * @deprecated Will not be available after the 2020.10 release. + * Please use @ref sockdtlssessioninit() and + * @ref sockdtlsrecv() instead. + * + * @param[in] sock DLTS sock to use + * @param[in] ep Remote endpoint of the session + * @param[out] remote The created session, cannot be NULL + * @param[in] timeout Timeout to wait for handshake to finish. + * Returns immediately if 0. + * May be SOCKNOTIMEOUT to wait indefinitely until + * handshake complete. + * + * @return 0 on success + * @return -ENOMEM, if no memory to allocate for new peer + * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set. + * @return -EINVAL, if @p remote is invalid or @p sock is not properly + * initialized (or closed while sockudprecv() blocks). + */ +static inline int sockdtlssessioncreate(sockdtlst *sock, const sockudpept *ep, + sockdtlssessiont *remote, unsigned timeout) +{ + int res; + uint8t buf[DTLSHANDSHAKEBUFSIZE]; + + assert(sock); + assert(remote); + + res = sockdtlssessioninit(sock, ep, remote); + if (res <= 0) { + return res; + } + + return sockdtlsrecv(sock, remote, buf, sizeof(buf), timeout); +} + #include "sockdtlstypes.h"

    #ifdef __cplusplus ```

Deprecations

Warnings

  • GNRCMACENABLEDUTYCYCLERECORD: Will be removed after 2021.01 release. Use inverse CONFIGGNRCMACDISABLEDUTYCYCLE_RECORD instead.
  • saulregrm(): will be removed at a future date
  • sockdtlssessioncreate(): will be removed after 2020.10 release. Please use sockdtlssessioninit() and sockdtlsrecv() instead
  • pkg/nordicsoftdeviceble: will be removed after the 2020.10 release

Removals

  • netdev: remove NETOPTIPV6IID support for network devices

Known issues

Networking related issues (44)

13997: ping6 is failing when testing with cc2538dk

13745: ethos: Unable to choose global source address.

13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)

    after debug break

13493: ethernet: Missing multicast addr assignment

13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails

    sometimes

13280: nrf52: Not able to add global or ULA address to interface

13088: Riot-os freezes with lwip + enc28j60 + stm32L4

12943: driver/mrf24j40: blocks shell input with autoinitgnrc_netif

12884: examples/cord_ep: Dead lock when (re-)registering in callback function

12857: examples/gnrcnetworkingmac broken on ATmega

12761: samr30 xpro doesn't seem to use its radio ok

12642: Emcute cannot create a double-byte name

12565: gnrcicmpv6echo: flood-pinging another node leads to leaks in own

    packet buffer

12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel

12210: stale border router does not get replaced

11988: ethos: fails to respond to first message.

11860: send data with UDP at 10HZ, the program die

11852: scan-build errors found during 2019.07 testing

11405: nrfmin: communication not possible after multicast ping with no interval

11033: 6lo: RIOT does not receive packets from Linux when short_addr is set

10969: net: netdevdrivert::send() doc unclear

10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver

10809: openthread: does not build on current Arch

10410: Missing drop implementations in netdevdrivert::recv

10389: gnrcsockudp: Possible Race condition on copy in application buffer

10380: netdev_ieee802154: Mismatch between radio ll address and in memory

    address

10370: gomach: Resetting netif with cli doesn't return

10338: xbee: setting PAN ID sometimes fails

9709: examples: failed assertion in dtls-echo example

9656: gnrc/netif: various problems after resetting interface a second time

8779: CC2538 RF overlapping PIN usage

8752: mrf24j40: does not link for examples/default

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

8242: at86rf2xx: Dead lock when sending while receiving

8199: gcoap example request on tap I/F fails with NIB issue

7737: pkg: libcoap is partially broken and outdated

7474: 6lo gnrc fragmentation expects driver to block on TX

7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs

6018: nRF52: gnrc6lowpanble: memory leak with nordicsoftdeviceble

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64

   chars

5486: at86rf2xx: lost interrupts

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5051: Forwarding a packet back to its link layer source should not be allowed

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

Timer related issues (17)

14217: tests/periphtimerperiodic is failing

13321: Sleep mode for Arduino

13204: xtimer problem with nucleo32 boards

13072: periph/timer: timer_set() underflow safety check (tracking issue)

10545: periphtimer: systematic proportional error in timerset

10523: saml21 system time vs rtc

10510: xtimersetmsg: crash when using same message for 2 timers

10073: xtimer_usleep wrong delay time

9187: sys/newlib: gettimeofday() returns time since boot, not current wall

   time.

9052: misc issues with tests/trickle

9049: xtimer mis-scaling with long sleep times

8746: stm32_common/periph/rtc: current implementation broken/poor accuracy

8251: MSP430: periph_timer clock config wrong

7347: xtimer_usleep stuck for small values

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now()  and irq_disable()

6442: cpu/native: timer interrupt issue

6052: tests: xtimer_drift gets stuck on native

Drivers related issues (13)

14506: mdterase success, but vfsformat resets board (esp32-heltec-lora32-v2)

14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until

    timeout

14424: adc is not a ADC-Driver but a analog pin abstraction

13527: examples/dtls-wolfssl not working on pba-d-01-kw2x

13444: Potential security and safety race conditions on attached devices

13079: drivers/srf04: incorrect values on ATmega based platforms

12445: driver/hts221: Temperature and Humidity readings incorrect

12371: fail to send data to can bus

12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.

12045: floats and doubles being used all over the place.

11104: STM32: SPI clock not returning to idle state and generating additional

    clock cycles

9419: cpu/msp430: GPIO driver doesn't work properly

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

Native related issues (3)

13501: SDL2 does not work due to missing getpid

5796: native: tlsf: early malloc will lead to a crash

495: native not float safe

Other platforms related issues (19)

14572: tests/mpunoexecram: fails on i-nucleo-lrwan1

14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated

14237: esp32-wroom-32: tests/netstats_l2 failing sometimes

14015: stm32152re: hardfault when DBGMCUCRDBG* bits are set and branch after

    __WFI()

13606: gcoap/esp8266: Stack overflow with gcoap example

13390: Cannot use LLVM with Cortex-M boards

13267: Failing tests on MSP430 (z1)

13104: boards/hifive1: flashing issue

13086: Failing tests on FE310 (Hifive1b)

12763: [TRACKING] Fixes for automatic tests of ESP32 boards.

12651: Failing tests on AVR (tested with atmega256rfr2-xpro)

12168: pkg/libb2: blake2s doesn't work on AVR

11885: arm7: printf() with float/double not working

10258: Incorrect default $PORT building for esp32-wroom-32 on macOS

10122: Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice

10076: cpu/cortexmcommon: irqenable returns the current state of interrupts

    (not previous)

8408: pkg/fatfs: linker error when build tests/pkgfatfsvfs for msb430 based

   boards

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software

   CS

4954: chronos: compiling with -O0 breaks

Build system related issues (13)

14504: BUILDINDOCKER ignores USEMODULE

14288: pkg/ccn-lite: unable to make -j -C examples/ccn-lite-relay

14264: make: ccache leads to differing binaries

13492: make -j flash broken on esp* (will always flash the previous binary)

12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89

10850: Tracking: remove harmful use of export in make and immediate

    evaluation

9913: Build dependencies - processing order issues

9742: buildtest uses wrong build directory

9645: Different build behavior between murdock and riot/riotbuild:latest

   image

8913: make: use of immediate value of variables before they have their final

   value

8122: doxygen: riot.css modified by 'make doc'

6120: Windows AVR Mega development makefile Error

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

Other issues (41)

14578: tests/cpp11_%: failing on i-nucleo-lrwan1

14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails

14568: tests/pkglibfixmathunittests: failing on multiple platforms

14548: edbg: long lines flooded over serial become garbled

14520: examples / tests: LoRa tests fail on platforms that don't support LoRa

14514: Uncrustify enforces deviation of coding convention

14466: Linking C++

14390: gcoap: Suspected crosstalk between requests (possible NULL call)

14315: DTLS examples cannot send message to localhost

14169: Gcoap does not handle separate responses

14167: Gcoap drops long packages instead of gracefully erring out

13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode

13541: Order of auto_init functions

13345: sys/xtimer: segmentation fault: in function xtimermsgreceived_timeout

13285: Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto

13277: Y2038 tracking issue / strategy

13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and

    esp32-wroom-32

13120: tests: broken with stdiortt if autoinit is disabled

13044: NVICSystemReset stuck in infinite loop when calling pm_reboot through

    shell after flashing with J-Link

12897: Can't build relic with benchmarks or tests

12889: CC2538DK board docs: broken links

12732: tests: some tests don't work with newlib lock functions.

12621: Potential race condition in compileandtestforboard.py

12108: make term output is inconsistent between boards, ethos and native

12105: [TRACKING] sys/shell refactoring.

11243: sys/riotboot: documentation issues

10751: Possible memset optimized out in crypto code

10731: nanocoap: incomplete response to /.well-known/core request

10639: sys/stdio_uart: dropped data when received at once

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode

    10

9882: sys/tsrb is not thread safe

9518: periph/i2c: tracking bugs and untested acks

9371: assert: c99 static_assert macro doesn't function for multiple

   static_asserts in the same scope

7365: scheduler: priority inversion problem

7220: sys/fmt: Missing tests for fmtfloat, fmtlpad

6533: tests/lwip target board for python test is hardcoded to native

5009: RIOT is saw-toothing in energy consumption (even when idling)

4866: periph: GPIO drivers are not thread safe

4488: Making the newlib thread-safe

3256: make: Setting constants on compile time doesn't really set them

   everywhere

2346: Tracker: Reduce scope on unintended COMMON variables

There are 150 known issues in this release

Fixed Issues since the last release (2020.04)

14521: tests/test_tools: fails on iotlab-m3 due to core/cpu regression

14415: Flashing nrf52dk with bmp breaks board

14409: doc/search: hitting return while searching on api.riot-os.org reloads

    current page

14407: gnrc/RPL: instance ID not updated on reconnect

14399: cord_ep example timed out when registering to a resource directory

14380: dist/tools/flatc: cloning of the tool sporadically fails on the CI

14361: Bug : bad assertion in cpu/stm32/periph/pwm.c

14330: Improve driver implementation documentation

14328: sam0_common: make debug broken for boards using EDBG

14184: Part of puts/printf output is skipped

14164: Failed assertion when using netdevieee802154mr_fsk

14158: kconfig is broken on case-insensitive file systems

14074: Memory read beyond input buffer boundaries in nanocoap packet parser

14035: I can't use w5100 to work on Release-2020.04 by using

    RIOT/examples/emcute_mqttsn/.

14034: gcoap server breaks or becomes very unresponsive (sock_async related?)

13984: tests/pkg_ubasic: failing on esp32-wroom-32

13920: stm32: ztimer RTT backend overflow

13838: Global Address remains in state TNT[3] forever

13834: DHCPv6 client ends up in busy loop after a while

13419: Can't use nimble as prefix for modules

13209: examples/gnrcborderrouter is crashing after some time

12909: Bug: Unexpected behavior with xtimerperiodicwakeup() for large periods

    on Nucleo-f401re

12858: KW2XRF: Broken network communication without netstats-l2

12205: core: atomic: Unable to compile starting with gcc 9.1.0

11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled

11795: gnrc_tftp: string functions on non-null terminated input

11523: xtimerperiodicwakeup crashing at high frequencies on frdm-kw41z

11472: Warnings from objcopy and size (binutils 2.32)

11388: SD card initialization: timeouts effectively blocking

11212: POSIX sockets + lwIP: bad file descriptor

11149: xtimer: hang on xtimerspinuntil (corner case)

10367: sam0.inc.mk: Did not find a device with serial ATML21xxxxxxxx

8589: Why using -F in avrdude?

8436: Kinetis PhyNode: failed to flash binary > 256K

8172: gnrcnetif, gnrcuhcpc: Replacing prefix on border router results in no

   configured prefix

8086: gnrcrplp2p: port to nib and fix compile errors

8045: stm32/periph/uart: extra byte transmitted on first transmission

7753: pic32-wifire: race-condition when linking in concurrent build

5775: cpu: cortex-m: compiling vectors.c with LTO triggers compiler bug

5774: cpu: cortexm_common: context switching code breaks when compiling with

   LTO

5769: Possible problem in scheduler

5748: gnrc: nodes crashing with too small packet buffer

42 fixed issues since last release (2020.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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

- C
Published by miri64 over 5 years ago

riot - Release-2020.04

RIOT-2020.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 2020.04 release includes:

  • Add support for 6LoWPAN IPv6 extension header next header compression
  • Add support for DHCPv6 prefix delegation client
  • Add support for kw41zrf and at86rf215 IEEE 802.15.4 radios
  • Improvements on power management for ESP32
  • Improvements and extensions in support of fe310 and lpc2387
  • lwIP: provide support for asynchronous sock
  • Improvements on xtimer module and testing
  • Initial addition of the new timer subsystem: ztimer
  • Migration to Kconfig - phase I: add multiple GNRC and system modules
  • +10 new boards, +11 new drivers, +7 new packages

555 pull requests, composed of 1514 commits, have been merged since the last release, and 22 issues have been solved. 60 people contributed with code in 102 days. 3346 files have been touched with 358398 (+) insertions and 184720 deletions (-).

Notations used below:

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

New features and changes

System libraries

* core: + add optional support for executable space protections * sched: sched.h: remove not needed bitarithm include to avoid conflict + turn kernel_init.c and panic.c into submodules of core + sys/auto_init: allow delayed initialization of SAUL & gnrc_netif * sys/base64: implement Base 64 Encoding with URL and Filename Safe Alphabet * sys/crypto: define cipher using a module instead of CFLAGS * sys/crypto/modes/ccm: handle input_len = 0 * sys/ecc: fix assertion in golay2412 * sys/event: + add event_wait_timeout64() + add shared event threads * sys/newlib: + enable multiple heaps in _sbrk_r() * syscalls_default: update heap_stats for multiple heaps * sys/puf_sram: counter based seed after soft reset * sys/phydat: improvement of phydat_dump including test application * sys/shell: + add rtt command * correctly detect and handle long lines + sys/shell_commands: + provide command to print version * sys/spp: randomize canary value on each build * sys/suit: * cleanup of TinyCBOR to NanoCBOR refactor * coap: make use of exposed tree handler function * update to draft-ietf-v3 + sys/uri_parser: initial import of a minimal and non-destructive URI parsing * sys/usb: use default VID/PID for RIOT-included peripherals * sys/xtimer: * set now pointer correctly in _update_short_timers() loop + add xtimer_set_timeout_flag64() * xtimer_mutex_lock_timeout fix with short timeout + sys/ztimer: initial import

Networking

* net/coap: * deprecate gcoap_add_qstring() and update uses + Packet API function to add Uri-Query option + net/dhcpv6: initial implementation of a client (with IA_PD support) * net/dns: fix DNS resolution in ping6 * net/gcoap: + add canonical uri query function names + allow proxied client requests * use sock_async and events + net/gnrc_dhcpv6_client_6lbr: initial import of a 6LBR DHCPv6 client + net/gnrc_ipv6_ext_frag: initial import of statistics module * net/gnrc_ipv6_nib: * do not ignore prefix list for route resolution * fix border router with DNS & Context Compression * only route to prefix list entry if on-link * net/gnrc_lorawan: * fix the handling of downlink frames without payload * remove netdev layer from MAC * net/gnrc_netif: + add gnrc_netif_send and gnrc_netif_highlander functions * implementation of dynamic GNRC_NETIF_NUMOF approach * net/gnrc_nettype: deprecate IOVEC type * net/gnrc_pktbuf: deprecate gnrc_pktbuf_replace_snip() + net/gnrc_sixlowpan_iphc: add support for IPv6 extension header compression + net/gnrc_sock: provide implementation for `sock_*_recv_buf()` * net/gnrc_sock_udp: choose random ephemeral port - net/gnrc_tftp: remove module * net/gnrc_uhcpc: * ensure compression context is managed by the ABR * only configure 6Lo-ND features if wireless-interface is 6LN * update compression context with new prefix * net/nanocoap: + add coap_opt_add_uquery2() with parameter key value length + add convenience function for adding path elements * add uquery improvements * make separate tree handling function - remove obsolete functions for addition of Uri-Query option + net/netdev: add netdev_trigger_event_isr() function - net/nhdp: remove module + net/sock: * async: add optional callback argument + amend with zero-copy receive functions + amend API to iterate over stack-internal buffer chunks

Packages

+ pkg/cmsis-nn: add support + pkg/cryptoauthlib: add support + pkg/libbase58: add support - pkg/libcose: remove monocypher crypto mode + pkg/littlefs2: add support for LittleFS v2.x.y + pkg/lvgl: add initial support for LittlevGL * pkg/lwip: + add auto-init support for transceiver ENC28J60 + provide sock_async support * pkg/micropython: bump version for FreeBSD fix * pkg/monocypher: bump to version 3.0.0 * pkg/nanopb: bump version to 0.4.1 * pkg/nimble/autoconn: various improvements - pkg/oonf_api: remove support + pkg/qcbor: add support * pkg/tinydtls: remove receive buffer indirection via mbox * pkg/wolfssl: bump version to 4.3.0 + pkg/yxml: add support Yxml XML parser library package

Boards

* boards: include common dfu logic where applicable + boards/adafruit-clue: add initial support * boards/arduino-mkr: feather-m0: sodaq-*: provide stdio over USB and setup automatic flash with bossa + board/arduino-nano-33-ble: add initial support + boards/cc1312-launchpad: add support and documentation * boards/feather-nrf52840: * use CDC ACM as default STDIO * fix LED macros + boards/esp32-heltec-lora32-v2: add support + boards/im880b: add support + boards/kw41z-mini: add support * boards/mega-xplained: fix ADC line definitions * boards/nrf51: fix UART hardware flow-control configuration * boards/nucleo-l152re: fix uart1 pinout config + boards/nucleo-l412kb: add initial support * boards/sam[r/d]21-xpro: prefer XOSC32K for RTC/RTT (GCLK2) * boards/same54-xpro: * configure remaining EXT connectors * don't source peripheral clocks from main clock * boards/samr30: add helper for antenna switch * boards/stm32l4: add common clock configuration + boards/olimexino-stm32: add support + boards/openlabs-kw41z-mini-256kib: add support * boards/openmote-b: add SAUL configuration and note about flashing + boards/p-nucleo-wb55: add initial support + boards/pic32*: add GPIO SAUL configuration * boards/pinetime: * add defines for controlling the backlight pin * update mtd_spi_nor config * fix battery ADC line define * doc/doxygen: + add 'Creating boards' section * improvements on various board's documentation

CPU

* cpu: * add CPU feature for stack smash protections + add UART RX implementation on PIC32 devices * make default idle/main stacksizes configurable on all archs * move cpu level dependencies in dedicated Makefile.dep files * unify UART hardware flow control use to a generic module * cpu/atmega_common: fix reboot issues * cpu/cc13x2: rename cpu to cc26x2_cc13x2 * cpu/cc2538: * fix spi_transfer_bytes() + implement periph/pm * timer: handle power mode * cpu/cc26xx_cc13xx: add power common code * cpu/cortexm: + add support for Cortex-M interrupt sub-priorities * cleanup dependencies * move CPU_ARCH/FAM to Makefile.features * only enable MPU during low low level init * cpu/efm32: * cleanup of makefiles * fix incorrect ADC status register * cpu/esp_common: * allow WiFi modem sleep mode + esp-wifi: allow connecting to open networks * fixes in common CPU configurations * move dependency resolutions to Makefile.dep * cpu/esp32: * activate automatic XTAL detection + add support for light/deep sleep and pm_layered * allow external 32 kHz crystal for the RTC hardware time + esp_wifi: add WPA2 enterprise mode with IEEE 802.1x/EAP authentication * fix wake-up sources for sleep mode + cpu/esp8266: add RTT implementation * cpu/fe310: * fix power management configuration + implement driver for watchdog * cpu/lpc2387: * fix RTC leap year calculation + implement periph/adc + implement periph/i2c * make SPI configurable * cpu/native: fix c11_atomic sizes on FreeBSD * cpu/native/can/candev_linux: add check for real can + cpu/nrf52/nRF802154: implement CCA + cpu/nrf5x: add and enable configuration for the built-in DC/DC converter * cpu/sam0: + add gpio_disable_mux() function + add samd21j17d support * enhance power saving by switching EIC clock source during STANDBY mode * fix handling of PM_NUM_MODES + provide interface to query GCLK frequency * use generic exti_config * cpu/samd21: pwm: allow to use channels > 3 * cpu/samd5x: disable RTC on init to prevent undefined RTC state * cpu/[saml21/1x]: enable buck voltage regulator when possible * cpu/stm32_common: + add USB OTG FS/HS usbdev peripheral driver * enable EXTI interrupt for rtt * eth: fix address and multicast filtering * cpu/stm32f1: make RTC Y2038 safe + cpu/stm32wb: add initial support

Device Drivers

* doc: various fixes in driver documentation + drivers/apds99xx: add support for APDS99XX ambient light and proximity sensors + drivers/at24cxxx: add support for AT24Cxxx family of EEPROMs + drivers/at24mac: add support for unique ID chip + drivers/at25xx: add support for AT25xxx family of EEPROMs + drivers/at86rf215: add basic support for AT86RF215 dual-band radio * drivers/at86rf2xx: * fix receive before send detection + implement basic mode + drivers/bh1900nux: add support + drivers/bme680: add support + drivers/can: add CAN support for nucleo-l476rg + drivers/cc110x: add support for promiscuous mode + drivers/disp_dev: add generic interface for display drivers * drivers/ds18: fix temperature conversion + drivers/hmc5883l: add support for Honeywell HMC5883L magnetometer + drivers/kw41zrf: add support for radio + drivers/lis2dh12: add interrupt functionality * drivers/mtd_spi_nor: erase timings in struct + drivers/periph_common/rtc: add rtc_mktime() & rtc_localtime() helper functions + drivers/rtt_rtc: add RTT-based RTC implementation, enable it for cpu/cc2538, nrf5x_common * drivers/slipdev: provide stdio multiplexing over SLIP + drivers/sps30: add support for particulate matter sensor * drivers/srf08: cleanup driver configuration scheme + drivers/stmpe811: add support for touchscreen controller * drivers/ws281x: + add support for esp32 + add VT100 backend for native

Build System / Tooling

* build system: Restructure dependency resolution * dist: * cc2538-bsl: use upstream version + dhcpv6-pd_ia: initial import of a DHCPv6 server bootstrapper * edbg: update to latest upstream version * factor out static tests from build_and_test * packer: update vagrant image to Ubuntu 18.04 + refactoring + sliptty: introduce a new SLIP to TUN tool * sliptty/start_network.sh: configure global address for SLIP interface * testbed-support: * fix compatibility with cli-tools v3 * use BINFILE for flashing on iotlab + doc: add section on configuration to 'Getting started' * make: * disable implicit rules * remove support for make <4 * native: turn on creation of debug symbols (CFLAGS += -g) * Makefile: * arch: mips: Allow CFLAGS_DBG and CFLAGS_OPT to be overridden * boards: move remaining uses of USEMODULE from Makefile.include to Makefile.dep * disable stdio_% modules before they are included * fix duplicate modules from USEMODULE * fix sock_udp deps for stnp * include package deps earlier * info-global.inc.mk: reset BOARDSDIR * Makefile.dep: remove usage of DEFAULT_MODULE += stdio% * mips: cleanup include makefile * move cpu level dependencies in dedicated Makefile.dep files * periph_init based on USEMODULE * pkg/local.mk: add FORCE target to .PHONY + provide CPU as a feature * use simple expansion for widely used variables

Testing

* tests: + add check_unittests helper function + add interactive_sync adapted to shell * fix compilation problems with NDEBUG * fix for `GNRC_NETIF_SINGLE` * fixes for evtimer_msg and bench_runtime_coreapis + tests/bench_xtimer_load: initial commit * tests/buttons: fix build failure if BTN0_PIN is not declared + tests/candev: add initial version with native support + tests/driver_netdev_common: add compile-test for network drivers + tests/emcute: provide tests + tests/gnrc_ipv6_nib_dns: add test of RDNSS option handling * tests/gnrc_rpl_srh: use AsyncSniffer for sniffing * tests/periph_rtc: fix system locks in ISR + tests/xtimer_overhead: initial commit

Kconfig migration

Migration to Kconfig as configuration tool is currently on phase 1. Which means that we are moving configuration options from modules to Kconfig files, and leaving its use optional. + doc: add Kconfig section * Kconfig: * add CPU and Board common symbols * add Drivers menu * include application-specific symbols first * net/gnrc/ipv6: group IPv6 related Kconfig options + Expose configurations to Kconfig of: + drivers/periph/wdt + drivers/mrf24j40 + net/gcoap + net/gnrc/ipv6/ext/frag + net/gnrc/ipv6/nib + net/gnrc/sixlowpan + net/ieee802154 + net/nanocoap + pkg/tinydtls + pkg/wakaama + sys/usbus + usbus/cdc/acm

API Changes

  • SUIT: update to draft-ietf-v3
  • Makefile.include: remove support for make <4
  • net/gnrcnetif: implementation of dynamic GNRCNETIF_NUMOF approach

  • net/sock: amend with zero-copy receive functions: ```diff

  • /**

    • @brief Releases the stack-internal buffer space provided by the
    • sock_*_recv_buf() functions.
    • @param[in] buf_ctx Stack-internal buffer context to release.
  • */

  • void sockrecvbuffree(void *bufctx); diff

  • /**

    • @brief Decrypts and provides stack-internal buffer space containing a
    • message from a remote peer.
  • *

  • */

  • ssizet sockdtlsrecvbuf(sockdtlst *sock, sockdtlssession_t *remote,

  •                        void **data, void **buf_ctx, uint32_t timeout);
    

    diff

  • /**

    • @brief Provides stack-internal buffer space containing an IPv4/IPv6
    • message from remote end point
  • */

  • ssizet sockiprecvbuf(sockipt sock, void *data, void **buf_ctx,

  •                     uint32_t timeout, sock_ip_ep_t *remote);
    

    diff

  • /**

    • @brief Provides stack-internal buffer space containing a UDP message from
    • a remote end point
  • */

  • ssizet sockudprecvbuf(sockudpt sock, void *data, void **buf_ctx,

  •                       uint32_t timeout, sock_udp_ep_t *remote);
    

    ```

  • net/sock/async: add optional callback argument: ```diff

    • @param[in] arg Argument provided when setting the callback using
    • @ref sockdtlsset_cb(). May be NULL. */
  • typedef void (*sockdtlscbt)(sockdtlst *sock, sockasyncflagst flags);

  • typedef void (*sockdtlscbt)(sockdtlst *sock, sockasyncflagst flags,

  •                            void *arg);
    

    diff

    • @param[in] arg Argument provided when setting the callback using
    • @ref sockipset_cb(). May be NULL. */
  • typedef void (*sockipcbt)(sockipt *sock, sockasyncflagst flags);

  • typedef void (*sockipcbt)(sockipt *sock, sockasyncflagst flags,

  •                          void *arg);
    

    diff

    • @param[in] arg Argument provided when setting the callback using
    • @ref socktcpset_cb(). May be NULL. */
  • typedef void (*socktcpcbt)(socktcpt *sock, sockasyncflagst flags);

  • typedef void (*socktcpcbt)(socktcpt *sock, sockasyncflagst flags,

  •                           void *arg);
    

    diff

    • @param[in] arg Argument provided when setting the callback using
    • @ref socktcpqueuesetcb(). May be NULL. / typedef void (socktcpqueuecbt)(socktcpqueue_t *queue,
  •                                 sock_async_flags_t flags);
    
  •                                 sock_async_flags_t flags,
    
  •                                 void *arg);
    

    diff

    • @param[in] arg Argument provided when setting the callback using
    • @ref sockudpset_cb(). May be NULL. */
  • typedef void (*sockudpcbt)(sockudpt *sock, sockasyncflagst type);

  • typedef void (*sockudpcbt)(sockudpt *sock, sockasyncflagst type,

  •                           void *arg);
    

    ```

  • net/sock/dns: make sockdnsquery() return the length of the address: ```diff /**

    • @brief Get IP address for DNS name *
    • @return 0 on success
    • @return !=0 otherwise
    • @return the size of the resolved address on success
    • @return < 0 otherwise */ int sockdnsquery(const char *domainname, void *addrout, int family); ```
  • mtdspinor: move const params to separate struct: ```diff

  • /**

    • @brief Compile-time parameters for a serial flash device
  • */

  • typedef struct {

  • const mtd_spi_nor_opcode_t *opcode; /**< Opcode table for the device */
    
  • spi_clk_t clk;           /**< SPI clock */
    
  • uint16_t flag;           /**< Config flags */
    
  • spi_t spi;               /**< SPI bus the device is connected to */
    
  • spi_mode_t mode;         /**< SPI mode */
    
  • gpio_t cs;               /**< CS pin GPIO handle */
    
  • uint8_t addr_width;      /**< Number of bytes in addresses, usually 3 for small devices */
    
  • } mtdspinorparamst; +

typedef struct { mtddevt base; /< inherit from mtddevt object */ - const mtdspinoropcodet *opcode; /< Opcode table for the device / - spi_t spi; /< SPI bus the device is connected to */ - gpio_t cs; /< CS pin GPIO handle */ - spimodet mode; /< SPI mode */ - spiclkt clk; /< SPI clock */ - uint16_t flag; /< Config flags */ + const mtdspinorparamst *params; /< SPI NOR params */ mtdjedecidt jedecid; /< JEDEC ID of the chip */ uint32t pageaddrmask; uint32t secaddrmask; - uint8t addrwidth; /*< Number of bytes in addresses, usually 3 for small devices */ uint8t pageaddrshift; uint8t secaddrshift; } mtdspinor_t; ```

Deprecations

Warnings

  • make all-debug target will be removed for native after the 2020.10 release
  • net/gcoap: gcoap_add_qstring() will be removed after the 2020.10 release
  • net/gnrc/nettype: GNRC_NETTYPE_IOVEC type will be removed after 2020.10 release
  • net/gnrcpktbuf: `gnrcpktbufreplacesnip()` will be removed after 2020.10 release
  • net/gnrc/sixlowpan: Configuration macro GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE will be removed after 2020.10 release.

Removals

  • Makefile.include: remove support for GNU make <4
  • pkg/oonf_api: remove package
  • pkg/tinydtls: remove TINYDTLS_LOG configuration macro
  • sys/net/gnrc_tftp: remove module
  • sys/net/nhdp: remove module

Known issues (136)

Networking related issues (48)

13834: DHCPv6 client ends up in busy loop after a while

13745: ethos: Unable to choose global source address.

13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)

    after debug break

13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails

    sometimes

13209: examples/gnrcborderrouter is crashing after some time

13088: Riot-os freezes with lwip + enc28j60 + stm32L4

12943: driver/mrf24j40: blocks shell input with autoinitgnrc_netif

12884: examples/cord_ep: Dead lock when (re-)registering in callback function

12858: KW2XRF: Broken network communication without netstats-l2

12857: examples/gnrcnetworkingmac broken on ATmega

12565: gnrcicmpv6echo: flood-pinging another node leads to leaks in own

    packet buffer

12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel

12210: stale border router does not get replaced

11988: ethos: fails to respond to first message.

11860: send data with UDP at 10HZ, the program die

11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled

11852: scan-build errors found during 2019.07 testing

11795: gnrc_tftp: string functions on non-null terminated input

11405: nrfmin: communication not possible after multicast ping with no interval

11212: POSIX sockets + lwIP: bad file descriptor

11033: 6lo: RIOT does not receive packets from Linux when short_addr is set

10969: net: netdevdrivert::send() doc unclear

10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver

10809: openthread: does not build on current Arch

10410: Missing drop implementations in netdevdrivert::recv

10389: gnrcsockudp: Possible Race condition on copy in application buffer

10380: netdev_ieee802154: Mismatch between radio ll address and in memory

    address

10370: gomach: Resetting netif with cli doesn't return

10338: xbee: setting PAN ID sometimes fails

9709: examples: failed assertion in dtls-echo example

9656: gnrc/netif: various problems after resetting interface a second time

8779: CC2538 RF overlapping PIN usage

8752: mrf24j40: does not link for examples/default

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

8242: at86rf2xx: Dead lock when sending while receiving

8199: gcoap example request on tap I/F fails with NIB issue

8172: gnrcnetif, gnrcuhcpc: Replacing prefix on border router results in no

   configured prefix

8086: gnrcrplp2p: port to nib and fix compile errors

7737: pkg: libcoap is partially broken and outdated

7474: 6lo gnrc fragmentation expects driver to block on TX

7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs

6018: nRF52: gnrc6lowpanble: memory leak with nordicsoftdeviceble

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64

   chars

5748: gnrc: nodes crashing with too small packet buffer

5486: at86rf2xx: lost interrupts

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5051: Forwarding a packet back to its link layer source should not be allowed

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

Timer related issues (17)

13072: periph/timer: timer_set() underflow safety check (tracking issue)

12909: Bug: Unexpected behavior with xtimerperiodicwakeup() for large periods

    on Nucleo-f401re

11523: xtimerperiodicwakeup crashing at high frequencies on frdm-kw41z

11149: xtimer: hang on xtimerspinuntil (corner case)

10545: periphtimer: systematic proportional error in timerset

10523: saml21 system time vs rtc

10510: xtimersetmsg: crash when using same message for 2 timers

10073: xtimer_usleep wrong delay time

9187: sys/newlib: gettimeofday() returns time since boot, not current wall

   time.

9052: misc issues with tests/trickle

9049: xtimer mis-scaling with long sleep times

8746: stm32_common/periph/rtc: current implementation broken/poor accuracy

8251: MSP430: periph_timer clock config wrong

7347: xtimer_usleep stuck for small values

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now()  and irq_disable()

6442: cpu/native: timer interrupt issue

6052: tests: xtimer_drift gets stuck on native

Drivers related issues (9)

13444: Potential security and safety race conditions on attached devices

12445: driver/hts221: Temperature and Humidity readings incorrect

12371: fail to send data to can bus

12045: floats and doubles being used all over the place.

11388: SD card initialization: timeouts effectively blocking

11104: STM32: SPI clock not returning to idle state and generating additional

    clock cycles

9419: cpu/msp430: GPIO driver doesn't work properly

8045: stm32/periph/uart: extra byte transmitted on first transmission

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

Native related issues (3)

11472: Warnings from objcopy and size (binutils 2.32)

5796: native: tlsf: early malloc will lead to a crash

495: native not float safe

Other platforms related issues (18)

13606: gcoap/esp8266: Stack overflow with gcoap example

13408: Bug: PWM test crashes on Arduino Mega 2560

13390: Cannot use LLVM with Cortex-M boards

13267: Failing tests on MSP430 (z1)

13104: boards/hifive1: flashing issue

13086: Failing tests on FE310 (Hifive1b)

12763: [TRACKING] Fixes for automatic tests of ESP32 boards.

12651: Failing tests on AVR (tested with atmega256rfr2-xpro)

12168: pkg/libb2: blake2s doesn't work on AVR

12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.

10258: Incorrect default $PORT building for esp32-wroom-32 on macOS

10122: Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice

10076: cpu/cortexmcommon: irqenable returns the current state of interrupts

    (not previous)

8408: pkg/fatfs: linker error when build tests/pkgfatfsvfs for msb430 based

   boards

7753: pic32-wifire: race-condition when linking in concurrent build

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software

   CS

5774: cpu: cortexm_common: context switching code breaks when compiling with

   LTO

4954: chronos: compiling with -O0 breaks

Build system related issues (11)

13492: make -j flash broken on esp* (will always flash the previous binary)

13419: Can't use nimble as prefix for modules

12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89

10850: Tracking: remove harmful use of export in make and immediate

    evaluation

9913: Build dependencies - processing order issues

9742: buildtest uses wrong build directory

9645: Different build behavior between murdock and riot/riotbuild:latest

   image

8913: make: use of immediate value of variables before they have their final

   value

8122: doxygen: riot.css modified by 'make doc'

6120: Windows AVR Mega development makefile Error

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

Other issues (30)

13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode

13527: examples/dtls-wolfssl not working on pba-d-01-kw2x

13345: sys/xtimer: segmentation fault: in function xtimermsgreceived_timeout

13277: Y2038 tracking issue / strategy

13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and

    esp32-wroom-32

13120: tests: broken with stdiortt if autoinit is disabled

13044: NVICSystemReset stuck in infinite loop when calling pm_reboot through

    shell after flashing with J-Link

12732: tests: some tests don't work with newlib lock functions.

12205: core: atomic: Unable to compile starting with gcc 9.1.0

12108: make term output is inconsistent between boards, ethos and native

12105: [TRACKING] sys/shell refactoring.

11885: arm7: printf() with float/double not working

11243: sys/riotboot: documentation issues

10751: Possible memset optimized out in crypto code

10731: nanocoap: incomplete response to /.well-known/core request

10639: sys/stdio_uart: dropped data when received at once

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode

    10

9882: sys/tsrb is not thread safe on AVR

9518: periph/i2c: tracking bugs and untested acks

9371: assert: c99 static_assert macro doesn't function for multiple

   static_asserts in the same scope

8589: Why using -F in avrdude?

8436: Kinetis PhyNode: failed to flash binary > 256K

7220: sys/fmt: Missing tests for fmtfloat, fmtlpad

6533: tests/lwip target board for python test is hardcoded to native

5769: Possible problem in scheduler

5009: RIOT is saw-toothing in energy consumption (even when idling)

4866: periph: GPIO drivers are not thread safe

4488: Making the newlib thread-safe

3256: make: Setting constants on compile time doesn't really set them

   everywhere

2346: Tracker: Reduce scope on unintended COMMON variables

There are 137 known issues in this release

Fixed Issues since the last release (2020.01)

13920: stm32: ztimer RTT backend overflow

13680: suit-tool runs on every build - ModuleNotFoundError: No module named

    'cbor' when building anything

13587: drivers/cc110x: Lost IRQs can lead to driver deadlock

13471: 6ctx: incorrectly removes 6ctx context when the non-zero part of the

    address matches

13460: Makefile.dep: DEFAULTMODULE += stdiortt will always load dependencies

    - even if other stdio is selected

13459: cpu/cortex-m23: gcc 9 bug when compiling c11 atomics

13447: gnrcsockdns is not working

13442: gnrc_networking not sending packets when hardware has multiple

    interfaces

13369: native:in file gnrcrplp2p.c function trickle_start() has extra and

    some undeclared variables.

13358: iotlab-m3: long HW address is in reversed order

13353: tests/unittests/tests-ecc: segfault with golay, when enabling asserts

13309: cpu/native/can: Segmentation fault when manipulating vcan's through

    socketcan

13287: Driver for DS18B20 returns invalid values

13265: tests: compilation of some test applications fail with NDEBUG

13015: Quickest start does not build with vagrant

12854: pm_reboot() not working on AVR when compiled with LTO=1

12370: Undocumented uint8_t assumptions in nrf52840 peripherals

12037: cpu/sam0common: i2c baudrate calculation fails if CLOCKCORECLOCK > 51

    MHz

11026: Recent changes effectively killed modular board designs

8213: at86rf2xx: Basic mode and NETOPT_AUTOACK

8130: gcoap: can't build with network stacks other than GNRC

7020: isr_rfcoreerrors while pinging between CC2538DKs

22 fixed issues since last release (2020.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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

- C
Published by leandrolanzieri almost 6 years ago

riot - Release-2020.01

RIOT-2020.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 2020.01 release includes:

  • Initial support for MicroPython
  • Initial support for GNRC based LoRaWAN stack
  • Initial (experimental) asynchronous sock support
  • Extend support for lpc2387 and fe310 cpus
  • Xtimer concurrency/robustness improvement, fixing #8388, #5338 & #5103
  • Complete re-implementation of esp8266 based on ESP8266 RTOS SDK
  • Improvements in automatic tests
  • Introduce and start using Kconfig as a configuration tool
  • +12 new boards, +7 new drivers, +4 new packages

About 527 pull requests, composed of 1367 commits, have been merged since the last release, and about 29 issues have been solved. 61 people contributed with code in 111 days. Approximately 3053 files have been touched with 134416 (+) insertions and 31870 deletions (-).

Notations used below:

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

New features and changes

System libraries

+ core/kernel_defines: Introduce 'IS_ACTIVE' macro
* core/assert: allow multiple static_asserts within a function
* core/ringbuffer: compensate 'ringbuffer_remove' underflow error
+ core/thread: add zombie thread state
+ sys: basic C++ compatibility with C11 atomics
+ sys/arduino:
    + added Wire (I2C) interface
    + added SPI interface
    * allow use of arduino libraries without need for arduino sketch
    * add implementation for analogWrite
    * fixed frequency selection in SPI
* sys/bitfield: unify byte order and bit order to both be most significant
    bX first
* sys/checksum: move crc8 implementation from sht3x to common code
* sys/color: add color_rgb_set_brightness() and color_rgb_shift()
* sys/crypto/modes/ccm: support length of AAD > 24
* sys/crypto/modes/ccm: support plain text length < 2^32
+ sys/frac: add frac library for integer scaling by semi-constant fractions
+ sys/luid: add luid_get_eui48() / luid_get_eui64()
+ sys/progress_bar: add module for managing a progress bar in stdout
* sys/posix/pthread/pthread.c: fix pthread reaper
* sys/shell: make shell_run run shell forever
* sys/shell_commands: make 6Lo compression contexts configurable on non-6LBR
+ sys/stdio_null: add null driver
* sys/suit: use c25519 instead of hacl
- sys/suit: remove dependency on tinycbor
* sys/usbus:
    * add descriptor prefix support
    * unify terminology to use 'descriptor' everywhere
    * cdc_acm: add interface association descriptor, enable Windows
        enumeration and usage of RIOT CDC ACM
    * cdc_acm: fix to avoid lost characters on USBUS CDC ACM STDIO
* sys/xtimer:
    * concurrency/robustness improvements
    * fix xtimer_mutex_lock_timeout by having _mutex_timeout() check waiting
        list
    - remove dependency to core_msg

Networking

+ sys/gnrc_lorawan: add initial support for GNRC based LoRaWAN stack
* sys/gnrc_netif: make 6LoENC dynamically configurable
+ sys/gnrc_sock: provide asynchronous event implementation
* sys/gnrc_ipv6: fix source check for loopback address
* sys/gnrc_ipv6_ext_frag: remove fragment header when n-th fragment is first
* sys/gnrc_ipv6_nib: allow for configuration of static link-local addresses
* sys/gnrc_netif: highest source address scope wins selection
* sys/gnrc_netif: only use prefix matching as tie-breaker in source
    selection
* sys/gnrc_sixlowpan_frag_rb: split out classic frag specific code
* sys/gnrc_sixlowpan_frag_rb: fix memory-leak in _rm_by_datagram() and in
    interval marker inherited from base
* sys/gnrc_sixlowpan_frag: various optimizations on sending
* sys/gnrc_sixlowpan_iphc: add fragment forwarding stubs
* sys/gnrc_sixlowpan_iphc_nhc: determine UDP hdr length from reassembly
    buffer, fix fragmented data size allocation
* sys/gnrc_tcp: return immediately on gnrc_tcp_recv if connection is closing
+ sys/net/gcoap: add macro to delay initialization of gcoap
* sys/net/gcoap: do not allocate RX buf on stack
* sys/pthread: check malloc() return value, prevent NULL pointer deference
* sys/shell/gnrc_netif: use netif API for ifconfig
* sys/shell/sc_nimble`_netif: allow connecting by name
+ sys/sock: initial definitions for asynchronous event handling
+ sys/sock_async: initial import of event-based implementation

Packages

* pkg: cleanup management of dependencies
* pkg/pkg.mk: use intermediate state files
* pkg/ccn-lite: bump version
+ pkg/flatbuffers: add support for FlatBuffers serialization library
* pkg/gecko_sdk: update to version 2.7
* pkg/libfixmath: several improvements and fixes to support 8bit
* pkg/littlefs: bump littlefs version to 1.7.2
* pkg/lora-serialization: bump to latest version and update test for AVR
* pkg/lwip:
    * add support for esp32 Ethernet device
    * add IPv4 support for LWIP-stm32
    * start DHCP for a netif with lwip_dhcp
    * add stm32 ethernet support
    * enable lwIP for ESP8266
+ pkg/nanopb: add Nanopb protocol buffers library package
* pkg/nimble:
    * bump version
    + add simple BLE connection manager: autoconn
    + add user event callback to autconn
    + nimble_netif: catch L2CAP connection failures
    + nimble_netif: add additional events
* pkg/tinydtls: add DTLS sock API implementation
* pkg/tinydtls: bump version
+ pkg/tensorflow-lite: add support to RIOT
+ pkg/utensor: add support to RIOT
* pkg/u8g2: refactor the U8g2 package
* pkg/wakaama: add basic LWM2M client implementation

Boards

- boards: remove RTT_NUMOF/RTC_NUMOF
- boards: unexport PROGRAMMER
+ boards/adafruit-nrf52840: initial support
* boards/arduino-zero: configure ADC channels
+ boards/atmega328p: initial support for standalone version
* boards/atmega328p: support variable xtimer frequencies
+ boards/atmega1284P: initial support for standalone version
+ boards/atmega256rfr2: initial support
+ boards/avr-rss2: initial support
+ boards/cc1252: initial support
* boards/common: clean up msba2 common files
+ boards/derfmega*: initial support
+ boards/esp32-ttgo-t-beam: initial support
- boards/frdm: remove support for OpenOCD < v0.10.0
+ boards/mcb2288: initial support
+ boards/microduino-corerf: initial support
* boards/nucleo-f207zg: add ethernet configuration
* boards/native: allow for native to be reset via SIGUSR1
* boards/particle-*: configure PCB antenna for 2.4GHz radio
* boards/pic32-clicker: cleanup uart configuration and initialization
* boards/pic32-clicker: use pic32prog as default programmer
+ boards/pinetime: initial support for the PINE64 PineTime smartwatch
+ boards/sodaq-*: add arduino support
* boards/sodaq-*: refactor common code
+ boards/stm32f030f4-demo: initial support
* boards/stm32-common:
    * allow SPI signals routed on multiple alternate functions
    * add 54MHz and 108MHz SPI divtable entries
    * common programmer/debugger/serial config
* boards/thingy: add dependency for on-board hts221/lps22hb sensors

CPU

+ cpu/arm7_common: hook up puf_sram
+ cpu/atmega128rfa1: add initial support
+ cpu/atmega256rfr2: symbol counter based RTT support
+ cpu/atmega_common:
    * clean ups and fix code run at end of ISR to behave like
        `thread_yield_higher`
    * fixed atmega_exit_isr
    * uart: use TX_ISR to check uart transmission end
    + cpuid: provide for every device
    + rtt: initial peripheral driver support
    + wdt: initial peripheral driver support
* cpu/cortexm: fix -mfpu flag value for CortexM7
* cpu/fe310:
    * several cleanup in implementation and clock setup
    * change default optimization to "-Os"
    * uart: rework driver and fixes
    + i2c: initial peripheral driver support
    + spi: initial peripheral driver support
    + cpp: add feature
* cpu/esp*: esp_wifi used as default netdev for lwip
* cpu/esp32:
    * improvements and cleanup of log_module
    * fix lwip + esp_wfi, esp_wifi send buffer should not be on stack
    * use esptool.py from riot tools
    * rtc: fixes, improvements and cleanups
    * spi: fix CS handling in spi_transfer_bytes
    * uart: workaround uart sporadically set to wrong value when the CPU
        clock is changed
    * spi: enable use of SPI flash drive with pkg_littlefs
* cpu/esp8266:
    * complete re-implementation based on ESP8266 RTOS SDK
    * fix of esp_wifi_send function
    * fix bootloaders and log outputs in vendor code
* cpu/efm32: fix uart handling of RX when no RX callback is configured
* cpu/efm32: normalize time in rtc_series1
* cpu/lpc2387:
    * allow for more flexible clock selection
    + add support for backup RAM
    * uart: update the UART driver
    + pm: initial support
    + dac: initial support
    * rtc: enable RTC on rtc_init(), align with other RTC implementations
    * lpc2387.ld: cleanups and align with cortexm_base.ld
    * lpc2387.ld: provide thread_isr_stack_*() - MicroPython
+ cpu/kinetis: add flashpage for W & K series
* cpu/msp430_common: add flashpage_raw
* cpu/native:
    + initial import of stdio_native
    * allow Access to Hardware SPI Bus on Linux
    * fix all-asan Makefile target
* cpu/stm32:
    * i2c_2: fix read bytes flag
    - i2c_2: do not support repeated start reading
    * stmclk: fix M-factor shift for SAI PLL
    * stcmlk: add functions for low power mode clock config
    + stm32f0: add support for stm32f030cc CPU
    + stm32f1: add rtt peripheral driver
    + stm32l0: add stm32l010c6 support
* cpu/sam0_common:
    * uart: implement non-blocking uart write
    + uart: add hardware flow control support
    * rtt: enable COUNTSYNC in CTRLA, fixes `rtt_get_counter()` return value
    * spi: power off spi on release, avoid bus errors affecting application
        code
    * adc: fix API to return `-1` on unsupported resolution
* cpu/samd21: use dedicated 1kHz GCLK4 for RTC and WDT

Device Drivers

+ doc/doxygen: add device driver guide
+ drivers: add Differentially Operated Serial Ethernet (DOSE) driver
* drivers/at86rf2xx: add support for ATmegaRF MCUs
* drivers/at86rf2xx: enable Smart Reduced Power Consumption for AT86RFR2
* drivers/bmx280: added SPI models
+ drivers/dcf77: add driver for DCF77
* drivers/hd44780: move params header to the right place
+ drivers/ili9341: initial import of ili9341 LCD driver
* drivers/ina220: re-worked and added SAUL adaptation
+ drivers/ina3221: add driver for INA3221 current, power & voltage monitor
+ drivers/itg320x: add driver for InvenSense ITG-320X 3-axis gyroscope
* driver/mpu9x50: make mpu9150 more generic
* drivers/mrf24j40: allow for basic self-test on init
* drivers/mrf24j40: fix start up code
+ drivers/qmc588rl: add support for QMC5883L
+ drivers/shtc1: add driver for SHTC1 temperature and humidity sensor
+ drivers/ws281x: add driver for WS281x RGB LED driver for ATmega platform
* drivers/xbee: fix reference to device from netif in send function
* periph/adc: change return type of `adc_sample()` to `int32_t`

Build System / Tooling

+ dist/tools:
    + add Kconfiglib
    + add helper script for Black Magic Probe
    + add support for miniterm.py
    * fix 'make reset' with bootloader in avrdude
+ dist/testbed-support: add nrf52{840,832}mdk in IOTLAB_NODE targets
+ doc/advanced-build-system-tricks: handle multiple boards
+ doc/doxygen: add build system doc page for BOARD, CPU, FEATURE
+ doc/doxygen: add build-system-basics.md with general build system tips
+ Kconfig:
    + add build system integration and test application
    + makefiles: include configuration symbols to build system
    + makefiles: add symbols for used packages
    + expose gnrc/ipv6/whitelist configurations
    + expose gnrc/lorawan configurations
    + expose usb configurations
    + expose net/sock/util configurations
    + expose gnrc/netif configurations
    + expose gnrc/ipv6 configurations
+ make:
    + introduce 'BOARDSDIR' to support external boards using common code in
        'RIOTBOARD'
    * fail by default when errors are expected
    + add architectures features
    + add features blacklisting
    + add blob utility header
    * enable SECONDEXPANSION for module/application builds
    + add CXXEXT and CXXEXCLUDE variable for customizing C++ builds
- makefiles:
    - remove use of export with LINKFLAGS variable
    + add possibility to provide board specific application dependencies in
        a separate Makefile
    * generate proper dependency files when using ccache
    * fix LOG_LEVEL handling
    - disable `-Watomic-alignment` on LLVM
    + introduce 'PROG_DEV' to specify programmer device
    * assert CPU is defined by BOARD/Makefile.features
    + add TERMFLASHDEPS to TERMDEPS so it also applies to `test`
    * tools: allow make reset via avrdude
    * tools: set DEBUG_ADAPTER_ID as JLINK_SERIAL

Testing

- dist/tests/philip: Removed old code and tests
* dist/tools/testrunner:
    * make interactive test sync retries/delay configurable
    * reset before opening terminal
    - reset after opening terminal only if interactive test sync is not used
    * add variable for customizing a delay before reset
    * make interactive test sync retries/delay configurable
* dist/tools/compile_and_test_for_board.py: allow use of wildcards for
    applications selection
+ murdock: enable esp32-wroom-32 for CI testing
* tests:
    + use test_interactive_test_util
    + add automated tests guidelines in README
    - remove APPLICATION definition in tests/*
+ tests/gnrc_sock_neterr: proof of concept test for gnrc_sock + gnrc_neterr
+ tests/bench_xtimer: initial import
* tests/lwip: enable IPv4
* tests/malloc: improve application and add an automatic test script
* tests/memarray: add python script for automatic testing
* tests/nordic_softdevice: cleanup test script and fix test
+ tests/periph_timer_short_relative_set: initial import
* tests/periph_cpuid: add automatic test script
* tests/sys_arduino: fix test synchronization issues
* tests/unittests: fix `tests-pkt` for non-32bit platforms

API Changes

  • drivers/ina220: changes to comply with RIOT's design goals & SAUL adaption
  • usbus: unified terminology within USBUS to match the terminology from the specs. hdr, hdrs, headers, etc is replaced everywhere with descr descriptors and descriptors.
  • Makefile.include: fail by default when errors are expected

``diff /* change return type ofadcsample()toint32t` to allow support for ADCs with resolution of more than 16 bits on 8 bit and 16 bit platforms*/ - int adcsample(adct line, adcrest res) = int32t adcsample(adct line, adcres_t res)

/* pass memo to resphandler directly / - typedef void (gcoapresphandlert)(unsigned reqstate, coappktt* pdu, - sockudpept remote); + typedef void (gcoapresphandlert)(const gcoaprequestmemot memo, + coappktt pdu, + const sockudpep_t *remote);

/* allow to pass user context to requests */ sizet gcoapreqsend(const uint8t *buf, sizet len, const sockudpept *remote, - gcoapresphandlert resphandler); + gcoapresphandlert resphandler, void *context);

/* assume netif->ops->init() to be set to at least a default */ - initfromdevice(netif); - #ifdef DEVELHELP - _testoptions(netif); + netif->ops->init(netif); + #if DEVELHELP + assert(options_tested);

endif

  • netif->curhl = GNRCNETIFDEFAULTHL;
  • #ifdef MODULEGNRCIPV6_NIB
  • gnrcipv6nibinitiface(netif);
  • #endif
  • if (netif->ops->init) {
  • netif->ops->init(netif);
  • }

/* split the semantic of gnrcnetifis6ln() into two check functions / / is the interface performing 6Lo-ND as specified in RFC 6775. */ - bool gnrcnetifis6ln(const gnrcnetift *netif); + bool gnrcnetifis6lo(const gnrcnetift *netif); + static inline bool gnrcnetifis6ln(const gnrcnetift *netif

/* add function to start a shell and exit once EOF is reached. */ + void shellrunonce(const shellcommandt *commands, char *line_buf, int len);

/* return reassembly buffer entry created or updated */ - void gnrcsixlowpanfragrbadd(gnrcnetifhdrt *netifhdr, - gnrcpktsnipt *frag, sizet offset, - unsigned page); + gnrcsixlowpanfragrbt *gnrcsixlowpanfragrbadd(gnrcnetifhdrt *netifhdr, + gnrcpktsnipt *frag, + sizet offset, unsigned page);

/* move gnrcsixlowpanfragrbdispatchwhencomplete() out of gnrcsixlowpanfragrbadd(). The caller of the latter function is now responsible to call it. */ + int gnrcsixlowpanfragrbdispatchwhencomplete(gnrcsixlowpanfragrbt *rbuf, + gnrcnetifhdr_t *netif);

/* don't assume interface specifier is an int for splitting, add functions to split int and string */ - * @return interface number or -1 if none specified + * @return string containing the interface specifier. + * @return NULL if no interface was specified. + */ - static inline int ipv6addrsplitiface(char *addrstr) + static inline char *ipv6addrsplitiface(char *addrstr)

  • int ipv6addrsplit(char *addr_str, char seperator, int _default);
  • int ipv6addrsplitint(char *addrstr, char seperator, int _default);
  • char *ipv6addrsplitstr(char *addrstr, char separator);

/* change address getter and setter functions to avoid byte order confusion */ - uint16t at86rf2xxgetaddrshort(const at86rf2xxt *dev); + void at86rf2xxgetaddrshort(const at86rf2xxt *dev, networkuint16_t *addr);

  • void at86rf2xxsetaddrshort(at86rf2xxt *dev, uint16_t addr);
  • void at86rf2xxsetaddrshort(at86rf2xxt *dev, const networkuint16t *addr);

  • uint64t at86rf2xxgetaddrlong(const at86rf2xx_t *dev);

  • void at86rf2xxgetaddrlong(const at86rf2xxt *dev, eui64_t *addr);

  • void at86rf2xxsetaddrlong(at86rf2xxt *dev, uint64_t addr);

  • void at86rf2xxsetaddrlong(at86rf2xxt *dev, const eui64_t *addr); ```

Deprecations

Warnings

  • GNU make <4 will be removed after release 2020.01
  • net/gcoap: gcoap_finish() will be removed after release 2020.04
  • makefiles/vars.inc.mk: PORTBSL & AVRDUDEPORT will be removed after release 2020.04
  • gnrc_nettest: will be removed after release 2020.07

Removals

  • sys/ubjson: remove module
  • dist/tests/philip: removed unneeded and unused tests and code
  • net/gcoap: remove gcoapreqsend2()
  • cpu/efm32: remove EFM32UARTMODES
  • boards: remove RTTNUMOF/RTCNUMOF

Known issues (130)

Networking related issues (45)

13088: Riot-os freezes with lwip + enc28j60 + stm32L4

12964: esp32: network devices pull in GNRC dependencies statically

12943: driver/mrf24j40: blocks shell input with autoinitgnrc_netif

12884: examples/cord_ep: Dead lock when (re-)registering in callback function

12858: KW2XRF: Broken network communication without netstats-l2

12857: examples/gnrcnetworkingmac broken on ATmega

12565: gnrcicmpv6echo: flood-pinging another node leads to leaks in own

    packet buffer

12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel

12210: stale border router does not get replaced

11988: ethos: fails to respond to first message.

11860: send data with UDP at 10HZ, the program die

11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled

11852: scan-build errors found during 2019.07 testing

11795: gnrc_tftp: string functions on non-null terminated input

11405: nrfmin: communication not possible after multicast ping with no interval

11212: POSIX sockets + lwIP: bad file descriptor

11033: 6lo: RIOT does not receive packets from Linux when short_addr is set

10969: net: netdevdrivert::send() doc unclear

10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver

10809: openthread: does not build on current Arch

10410: Missing drop implementations in netdevdrivert::recv

10389: gnrcsockudp: Possible Race condition on copy in application buffer

10380: netdev_ieee802154: Mismatch between radio ll address and in memory

    address

10370: gomach: Resetting netif with cli doesn't return

10338: xbee: setting PAN ID sometimes fails

9709: examples: failed assertion in dtls-echo example

9656: gnrc/netif: various problems after resetting interface a second time

8779: CC2538 RF overlapping PIN usage

8752: mrf24j40: does not link for examples/default

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

8242: at86rf2xx: Dead lock when sending while receiving

8199: gcoap example request on tap I/F fails with NIB issue

8172: gnrcnetif, gnrcuhcpc: Replacing prefix on border router results in no

   configured prefix

8130: gcoap: can't build with network stacks other than GNRC

8086: gnrcrplp2p: port to nib and fix compile errors

7737: pkg: libcoap is partially broken and outdated

7474: 6lo gnrc fragmentation expects driver to block on TX

7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs

6018: nRF52: gnrc6lowpanble: memory leak with nordicsoftdeviceble

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64

   chars

5748: gnrc: nodes crashing with too small packet buffer

5486: at86rf2xx: lost interrupts

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5051: Forwarding a packet back to its link layer source should not be allowed

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

Timer related issues (17)

13072: periph/timer: timer_set() underflow safety check (tracking issue)

12909: Bug: Unexpected behavior with xtimerperiodicwakeup() for large periods

    on Nucleo-f401re

11523: xtimerperiodicwakeup crashing at high frequencies on frdm-kw41z

11149: xtimer: hang on xtimerspinuntil (corner case)

10545: periphtimer: systematic proportional error in timerset

10523: saml21 system time vs rtc

10510: xtimersetmsg: crash when using same message for 2 timers

10073: xtimer_usleep wrong delay time

9187: sys/newlib: gettimeofday() returns time since boot, not current wall

   time.

9052: misc issues with tests/trickle

9049: xtimer mis-scaling with long sleep times

8746: stm32_common/periph/rtc: current implementation broken/poor accuracy

8251: telosb: xtimer config wrong when running on a tmote sky

7347: xtimer_usleep stuck for small values

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now() and irq_disable()

6442: cpu/native: timer interrupt issue

6052: tests: xtimer_drift gets stuck on native

Drivers related issues (12)

12445: driver/hts221: Temperature and Humidity readings incorrect

12371: fail to send data to can bus

12370: Undocumented uint8_t assumptions in nrf52840 peripherals

12045: floats and doubles being used all over the place.

12037: cpu/sam0common: i2c baudrate calculation fails if CLOCKCORECLOCK > 51

    MHz

11388: SD card initialization: timeouts effectively blocking

11104: STM32: SPI clock not returning to idle state and generating additional

    clock cycles

11026: Recent changes effectively killed modular board designs

9419: cpu/msp430: GPIO driver doesn't work properly

8213: at86rf2xx: Basic mode and NETOPT_AUTOACK

8045: stm32/periph/uart: extra byte transmitted on first transmission

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

Native related issues (3)

11472: Warnings from objcopy and size (binutils 2.32)

5796: native: tlsf: early malloc will lead to a crash

495: native not float safe

Other platforms related issues (16)

13267: Failing tests on MSP430 (z1)

13104: boards/hifive1: flashing issue

13086: Failing tests on FE310 (Hifive1b)

12854: pm_reboot() not working on AVR when compiled with LTO=1

12763: [TRACKING] Fixes for automatic tests of ESP32 boards.

12651: Failing tests on AVR (tested with atmega256rfr2-xpro)

12168: pkg/libb2: blake2s doesn't work on AVR

12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.

10258: Incorrect default $PORT building for esp32-wroom-32 on macOS

10122: Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice

10076: cpu/cortexmcommon: irqenable returns the current state of interrupts

    (not previous)

8408: pkg/fatfs: linker error when build tests/pkgfatfsvfs for msb430 based

   boards

7753: pic32-wifire: race-condition when linking in concurrent build

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software

   CS

5774: cpu: cortexm_common: context switching code breaks when compiling with

   LTO

4954: chronos: compiling with -O0 breaks

Build system related issues (9)

12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89

10850: Tracking: remove harmful use of export in make and immediate

    evaluation

9913: Build dependencies - processing order issues

9742: buildtest uses wrong build directory

9645: Different build behavior between murdock and riot/riotbuild:latest

   image

8913: make: use of immediate value of variables before they have their final

   value

8122: doxygen: riot.css modified by 'make doc'

6120: Windows AVR Mega development makefile Error

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

Other issues (28)

13265: tests: compilation of some test applications fail with NDEBUG

13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and

    esp32-wroom-32

13120: tests: broken with stdiortt if autoinit is disabled

13044: NVICSystemReset stuck in infinite loop when calling pm_reboot through

    shell after flashing with J-Link

13015: Quickest start does not build with vagrant

12732: tests: some tests don't work with newlib lock functions.

12205: core: atomic: Unable to compile starting with gcc 9.1.0

12108: make term output is inconsistent between boards, ethos and native

12105: [TRACKING] sys/shell refactoring.

11885: arm7: printf() with float/double not working

11243: sys/riotboot: documentation issues

10751: Possible memset optimized out in crypto code

10731: nanocoap: incomplete response to /.well-known/core request

10639: sys/stdio_uart: dropped data when received at once

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode

    10

9882: sys/tsrb is not thread safe on AVR

9518: periph/i2c: tracking bugs and untested acks

9371: assert: c99 static_assert macro doesn't function for multiple

   static_asserts in the same scope

8589: Why using -F in avrdude?

8436: Kinetis PhyNode: failed to flash binary > 256K

7220: sys/fmt: Missing tests for fmtfloat, fmtlpad

6533: tests/lwip target board for python test is hardcoded to native

5769: Possible problem in scheduler

5009: RIOT is saw-toothing in energy consumption (even when idling)

4866: periph: GPIO drivers are not thread safe

4488: Making the newlib thread-safe

3256: make: Setting constants on compile time doesn't really set them

   everywhere

2346: Tracker: Reduce scope on unintended COMMON variables

Fixed Issues since the last release (2019.10) (29)

13121: tinydtls package has undeclared dependencies

13109: fe310: xtimer hardfault

13083: cpu/atmegaxxxx: i2c driver not fully implemented?

13069: BrokenPipeError when flashing bluepill with BMP

13055: PKGSOURCELOCAL override is broken

13030: pkg: always rebuilt when patches are applied

12920: kconfiglib: only pull when needed

12905: Potential buffer overflow in dtls-sock

12859: lwip: multiple sockudpsend() return ENOMEM. (possible memory leak?)

12853: sys\net\gnrc\link_layer\gomach: cast error with avg-gcc

12834: make: piping STDOUT updates riotbuild.h.in and leads to full rebuild

12807: make: rebuild doesn't apply to header files

12700: Cannot delete files in SD card. And I can't read more bytes than I ever

    wrote in tests/pkg_fatfs.

12652: samr21-xpro: Can't use make debug anymore

12578: ATmega256RFR2 / ATmega128RFA1: periph/cpu_id provided without HW

    support

12384: CDC-ACM (serial console) loses characters

12286: Some tests are failing on STM32F7

12243: ESP32 programming using BUILDINDOCKER still expects esp-idf toolchain

    on host

12003: bootloaders|tests/riotboot: broken with BUILDINDOCKER and wrong

    flashfile

11941: cpu/esp32: instabilities in multiheap memory management

11908: cpu/lpc2387: periph_rtc completely broken

11423: cpu/kinetis: features provided not properly defined according to series

8388: xtimerperiodicwakeup is not interrupt safe

8107: crypto/ccm: bugs in the implementation of CCM mode

8052: mips: several issues

5338: xtimer: xtimer_now() not ISR safe

5103: xtimer: weird behavior of tests/xtimer_drift, bug?

3366: periph/i2c: handle NACK

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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

- C
Published by fjmolinas about 6 years ago

riot - Release-2019.10

RIOT-2019.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 2019.10 release includes:

  • initial support for SUIT firmware updates
  • USB CDC-ACM serial communication
  • complete rewrite of TI CC110x radio driver
  • initial support for IPv6 fragmentation
  • DTLS support in the sock networking stack
  • complete blockwise messaging for gcoap and nanocoap
  • as always, bug fixes and documentation updates

About 460 pull requests, composed of 950 commits, have been merged since the last release, and about 60 issues have been solved. 57 people contributed with code in 105 days. Approximately 2000 files have been touched with 129000 insertions and 25000 deletions.

Notations used below:

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

New features and changes

System libraries

+ sys/arduino: Added millis()
* sys/arduino: make ADC feature optional
+ sys/fmt: Added submodule fmt_table for printing tables
+ sys/log: add module for colorized logging
+ sys/riotboot: add initial image digest verification
* riotboot: define if building the bootloader
+ sys/shell: add heap command
+ sys/shell: cancel current line on CTRL-C.
* shell/sc_gnrc_ipv6_nib: list and edit authoritative border router (ABR) list
+ sys/suit: initial support for SUIT firmware updates
* sys: add schedstatistics module to remove dependency on xtimer
* can: use memarray for pkt and router allocation
+ sys: single interrupt handler thread for interrupts in modules with blocking
  functions (but likely to be removed -- see Deprecations section below)

Networking

+ sys: Add (CoAP) Link Format module
+ sys: add credman (D)TLS credential management module
+ sys: new sock submodule for DTLS
+ gnrc_ipv6_ext_frag: Initial import of IPv6 fragmentation and reassembly
+ gnrc_netif: allow for wait of minimum time between sends
* gnrc_netif: add netif setter (part of refactoring to a pointer-based
  approach)
* gnrc_sixlowpan_frag_vrb: add gnrc_sixlowpan_frag_vrb_from_route()
+ gnrc_sixlowpan_frag_rb: move reassembly buffer functions to their own module
+ gcoap: add Blockwise support
* nanocoap: complete Blockwise support
+ nanocoap: add coap_opt_get_next() to iterate over options
+ nanocoap: add coap_opt_get_opaque() to retrieve option bytes
* gnrc_tcp: several small improvements

Packages

* ccn-lite: version bump
* pkg/libcose: bump version and update crypto support
* nimble: adapt to nrf51 family
+ nimble: add IP-over-BLE support via netif/GNRC
* nimble: bump version to 1.2.0
* nimble/netif: set max conn explicitly
* semtech-loramac: add uplink_counter get/set functions
+ Cifra: add AES crypto library
* cayenne-lpp: bump version to 0.1.1
+ wolfSSL pkg addition with examples

Boards

+ board: add support for SAMR34-XPRO
+ boards/arduino-mkrwan1300: add initial support (without LoRa)
* boards: Split off 128KiB version of bl*pill
+ boards/doc: Add a guide to find physical board pins
+ boards: Initial support for board HiFive1B
- boards/mips-malta: remove board.
+ boards/nrf52: introduce shared dependencies in common/nrf52 and update
  boards
* boards/nrf52832-mdk: enable I2C and use default configuration
* board/nucleo-l031k6: Add i2c to periph_conf
* board/nucleo-l432kc: Implementing I2C for board
* boards: move CPU/CPU_MODEL definition to Makefile.features
+ boards/p-l496g-cell02: add support
- boards: Remove support for the Jiminy-Mega256RFR2
* boards/sam0: refactor ADC_0 into plain ADC
* boards/slwstk6000b-*: split one board for each module
* boards/slwstk6000b: move CPU definition to Makefile.features
+ boards/stm32f723e-disco: add initial support
* boards/stm32: introduce common timer configurations and use them where
  possible
+ boards/stm32l0538-disco: add initial support
* pic32-wifire: add support for flashing with pic32prog

CPU

+ cpu/esp32: lwIP netdev
* cpu/esp*: various improvements
* cpu/kinetis: enable HWRNG for k64f
- cpu/mips32r2_generic: remove cpu.
* cpu: Moved stdio_init() prior to periph_init() for ARM targets
* cpu/nrf5x: declare radio_nrfble feat for all nrfs
+ cpu/nrf5x: implement wdt peripheral driver
+ cpu/sam0_common: add hwrng driver
* cpu/sam0_common/gpio: don't hard-code number of ports
* cpu/sam0: update doc.txt with new MCU families
* cpu/saml21: Make Low-Power SRAM available to programs
+ cpu/stm32_common: add watchdog for stm32
* stm32-common/spi: allow custom pin modes on spi to minimize power
  consumption
* cpu/stm32f(2|4|7): add riotboot requirements
* cpu/stm32l1: optimize power consumption
* stm32l1/vendor: update vendor files to v2.3.0
* sam0: allow flashing with JLinkExe
+ sam0: Implement watchdog driver
* cpu/samr30: update vendor files using ASF 3.35.1
+ cpu/efm32: provide periph_uart_mode

Device Drivers

+ drivers: add mtd wrapper for periph_flashpage
+ drivers/cc110x: Complete rewrite from scratch, and detailed documentation
* drivers/include/periph/eeprom: Changed uint8_t* to void* in API
* drivers/periph/i2c: Updated i2c_release() to return void
+ drivers/ph_oem: support for Atlas Scientific pH OEM sensor
+ drivers: support for NXP PCA9685 I2C 16-channel, 12-bit PWM controller
+ usbus: Add CDC-ACM (Serial console) function
* periph/timer: Fix return codes of timer API
+ can: add ncv7356 SW transceiver driver
+ drivers/lis2dh12: add I2C mode
+ drivers/periph: add doc on power management aspects
* drivers/mrf24j40: add pseudomodules for MRF24J40MA/B/C/D/E

Build System / Tooling

* dist/tools/pyterm: drop loglevel from output
* make: docker: delegate bind mounts to the containers
* Makefile.base: implement relative path linking without 'realpath'
* Makefile.base: use thin static archives.
* Makefile.include: add flash-only as dependency of term
* Makefile.include: do not build HEXFILE by default anymore
* Makefile.include: require make version 4.
* makefiles: add support for sysfs gpio debug adapter
* Makefiles: add support to generate both `.hex` and `.bin` file and add
  FLASHFILE variable
* makefiles/docker.inc.mk: various improvements
* makefiles/murdock.inc.mk: change policy to run tests by default
* make: introduce $(CLEAN)
+ murdock: introduce 'TEST_ON_CI_BLACKLIST'
* toolchain/cflags: enable dwarf compression (save 50% HDD)
* edbg: verify before flash
+ ci: add codespell check script for tracking typos
+ Makefile.include: add cleanterm target and use it for tests
* arduino/sketches: build sketches as a module
+ github: use stale-bot to mark and close PRs without activity

Testing

+ tests: add distinct test app for nrfmin driver
+ tests: add Nordic SoftDevice test app
* tests/gnrc_ndp: enhance coverage
* tests/lua_loader: run the test in CI
* tests/mcuboot: handle building in docker
* tests/pkg_u8g2: run the test in CI
* tests: provide test case for malformed IEEE 802.15.4 packets
* tests/pthread_rwlock: run the test in CI
* tests: re-enable utf-8 tests on native
+ tests/riotboot: add automatic test
+ tests/sys_crypto: add RFC3610 and NIST SP 800-38C tests
* tests/test_tools: add a test for the testing tools environment
* tools/compile_and_test_for_board: allow setting the flash targets
* tests/gnrc_tcp: provide regression tests for fixed issues

API Changes

``` /* no error handling possible, so no need to return a value */ - int i2crelease(i2ct dev) + void i2crelease(i2ct dev)

/* return 0 on success, rather than 1; so like timerinit() */ int timerset(timt dev, int channel, unsigned int timeout) int timersetabsolute(timt dev, int channel, unsigned int value) int timerclear(timt dev, int channel)

/* implementations already cast the argument to uint8t* internally, so not a significant semantic change */ - sizet eepromread(uint32t pos, uint8t *data, sizet len) + sizet eepromread(uint32t pos, void *data, sizet len)

  • sizet eepromwrite(uint32t pos, const uint8t *data, size_t len)
  • sizet eepromwrite(uint32t pos, const void *data, sizet len)

/* now returns CIPHERERRINVALIDKEYSIZE on invalid keySize */ int aesinit(ciphercontextt *context, const uint8t *key, uint8_t keySize)

/* add setter for netif of interface header */ + void gnrcnetifhdrsetnetif(gnrcnetifhdrt *hdr, const gnrcnetif_t *netif)

```

Deprecations

Warnings

net/emb6 net/nhdp pkg/oonf_api

As the release was finalized, rough consensus was reached on a system event thread handler (#12474) that likely will remove the interrupt handler thread (#10555) just introduced with this release.

Removals

net/coap: remove deprecated COAPCT... defines

Known issues

Networking related issues

12565: gnrcicmpv6echo: flood-pinging another node leads to leaks in own

    packet buffer

12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel

12210: stale border router does not get replaced

11988: ethos: fails to respond to first message.

11860: send data with UDP at 10HZ, the program die

11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled

11852: scan-build errors found during 2019.07 testing

11405: nrfmin: communication not possible after multicast ping with no interval

11212: POSIX sockets + lwIP: bad file descriptor

11033: 6lo: RIOT does not receive packets from Linux when short_addr is set

10969: net: netdevdrivert::send() doc unclear

10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver

10809: openthread: does not build on current Arch

10410: Missing drop implementations in netdevdrivert::recv

10389: gnrcsockudp: Possible Race condition on copy in application buffer

10380: netdev_ieee802154: Mismatch between radio ll address and in memory

    address

10370: gomach: Resetting netif with cli doesn't return

10338: xbee: setting PAN ID sometimes fails

9709: examples: failed assertion in dtls-echo example

9656: gnrc/netif: various problems after resetting interface a second time

8779: CC2538 RF overlapping PIN usage

8752: mrf24j40: does not link for examples/default

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

8242: at86rf2xx: Dead lock when sending while receiving

8199: gcoap example request on tap I/F fails with NIB issue

8172: gnrcnetif, gnrcuhcpc: Replacing prefix on border router results in no

   configured prefix

8130: gcoap: can't build with network stacks other than GNRC

8086: gnrcrplp2p: port to nib and fix compile errors

7737: pkg: libcoap is partially broken and outdated

7474: 6lo gnrc fragmentation expects driver to block on TX

7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs

6018: nRF52: gnrc6lowpanble: memory leak with nordicsoftdeviceble

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64

   chars

5748: gnrc: nodes crashing with too small packet buffer

5486: at86rf2xx: lost interrupts

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5051: Forwarding a packet back to its link layer source should not be allowed

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

Timer related issues

11523: xtimerperiodicwakeup crashing at high frequencies on frdm-kw41z

10545: periphtimer: systematic proportional error in timerset

10523: saml21 system time vs rtc

10510: xtimersetmsg: crash when using same message for 2 timers

10073: xtimer_usleep wrong delay time

9187: sys/newlib: gettimeofday() returns time since boot, not current wall

   time.

9052: misc issues with tests/trickle

9049: xtimer mis-scaling with long sleep times

8746: stm32_common/periph/rtc: current implementation broken/poor accuracy

8388: xtimerperiodicwakeup is not interrupt safe

8251: telosb: xtimer config wrong when running on a tmote sky

7347: xtimer_usleep stuck for small values

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now()  and irq_disable()

6442: cpu/native: timer interrupt issue

6052: tests: xtimer_drift gets stuck

5338: xtimer: xtimer_now() not ISR safe

5103: xtimer: weird behavior of tests/xtimer_drift, bug?

Drivers related issues

12445: driver/hts221: Temperature and Humidity readings incorrect

12371: fail to send data to can bus

12370: Undocumented uint8_t assumptions in nrf52840 peripherals

12045: floats and doubles being used all over the place.

12037: cpu/sam0common: i2c baudrate calculation fails if CLOCKCORECLOCK > 51

    MHz

11388: SD card initialization: timeouts effectively blocking

11104: STM32: SPI clock not returning to idle state and generating additional

    clock cycles

11026: Recent changes effectively killed modular board designs

9419: cpu/msp430: GPIO driver doesn't work properly

8213: at86rf2xx: Basic mode and NETOPT_AUTOACK

8045: stm32/periph/uart: extra byte transmitted on first transmission

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

3366: periph/i2c: handle NACK

Native related issues

11472: Warnings from objcopy and size (binutils 2.32)

5796: native: tlsf: early malloc will lead to a crash

495: native not float safe

Other platforms related issues

12286: Some tests are failing on STM32F7

12243: ESP32 programming using BUILDINDOCKER still expects esp-idf toolchain

    on host

12168: pkg/libb2: blake2s doesn't work on AVR

12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.

11941: cpu/esp32: instabilities in multiheap memory management

10258: Incorrect default $PORT building for esp32-wroom-32 on macOS

10122: Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice

10076: cpu/cortexmcommon: irqenable returns the current state of interrupts

    (not previous)

8408: pkg/fatfs: linker error when build tests/pkgfatfsvfs for msb430 based

   boards

8052: mips: several issues

7753: pic32-wifire: race-condition when linking in concurrent build

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software

   CS

5774: cpu: cortexm_common: context switching code breaks when compiling with

   LTO

4954: chronos: compiling with -O0 breaks

Build system related issues

12003: bootloaders|tests/riotboot: broken with BUILDINDOCKER and wrong

    flashfile

10850: Tracking: remove harmful use of export in make and immediate

    evaluation

9913: Build dependencies - processing order issues

9742: buildtest uses wrong build directory

9645: Different build behavior between murdock and riot/riotbuild:latest

   image

8913: make: use of immediate value of variables before they have their final

   value

8122: doxygen: riot.css modified by 'make doc'

6120: Windows AVR Mega development makefile Error

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

Other issues

-none- tests/pkgfatfs: volidx print overflow on large negative value

12384: CDC-ACM (serial console) loses characters

12205: core: atomic: Unable to compile starting with gcc 9.1.0

12108: make term output is inconsistent between boards, ethos and native

12105: [TRACKING] sys/shell refactoring.

11908: cpu/lpc2387: periph_rtc completely broken

11885: arm7: printf() with float/double not working

11423: cpu/kinetis: features provided not properly defined according to series

11243: sys/riotboot: documentation issues

10751: Possible memset optimized out in crypto code

10731: nanocoap: incomplete response to /.well-known/core request

10639: sys/stdio_uart: dropped data when received at once

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode

    10

9882: sys/tsrb is not thread safe on AVR

9518: periph/i2c: tracking bugs and untested acks

9371: assert: c99 static_assert macro doesn't function for multiple

   static_asserts in the same scope

8589: Why using -F in avrdude?

8436: Kinetis PhyNode: failed to flash binary > 256K

8107: crypto/ccm: bugs in the implementation of CCM mode

7220: sys/fmt: Missing tests for fmtfloat, fmtlpad

6533: tests/lwip target board for python test is hardcoded to native

5769: Possible problem in scheduler

5009: RIOT is saw-toothing in energy consumption (even when idling)

4866: periph: GPIO drivers are not thread safe

4488: Making the newlib thread-safe

3256: make: Setting constants on compile time doesn't really set them

   everywhere

2346: Tracker: Reduce scope on unintended COMMON variables

Fixed Issues from the last release (2019.07)

12373: Leds not working on some stm32 based boards

12311: riotboot: irq not enabled after jumping to slot

12258: Rebootloop when using esp_now on the ESP32

12247: esp8266: make flash fails

12244: Flashing on OSX uses /bin/sh instead of bash, resulting in problems with

    echo -n

12219: genconfigheader doesn't like defines with spaces

12213: sys/base64: cannot handle zero length buffers

12138: boards/common/nucleo32/include/arduino_pinmap.h not correct/complete

12125: i2c_scan not working on ESP32

12115: nrfmin: driver not included in buildtest (anymore)

12110: fe310: handle_trap only handles interrupts

12090: boards/lobaro-lorabox: blindly sets TERMFLAGS

12089: boards/msba2: blindly sets TERMFLAGS

12086: gnrc_tcp: option parsing doesn't terminate on all inputs, potential DOS

12081: gnrctcp leaks memory when gnrcnetapi_send fails

12058: travis: flake8 not running

12002: usb: fails to respond ro ping when used with 802.15.4

11980: Sending a packet to the Multicast Address with multiple interfaces

    causes Segmentation fault

11978: Loramac Example Kernel Panic

11948: examples: ccn-lite-relay example broken

11913: drivers/sx127x: Enforces reset pin to be defined

11910: TCP lwIP Error Connecting Sock Problem on ESP32

11842: buildtest with BUILDINDOCKER hides host toolchain errors

11820: stm32l152re: hard-fault unless power-cycled after flash, or depending on

    optimization

11763: spitransferreg behavior doesn't follow doc

11691: murdock and tests using utf-8 characters

11631: examples / tests: return value of gnrc_netif_hdr_build() not checked

    in udp.c

11603: NATIVEINCLUDES Does not include USEMODULE_INCLUDES from

    log_printfnoformat

11519: shell/ping6: Incorrect handling of unexpected pongs

11499: rn2xx3cmdappend - Not terminating strings

11447: frdm-k64f: hwrng support broken, applications using RNG crash

11390: gnrc networking crashes on nRF51dk

10878: nrfmin can get stuck and never reach RX (while TX works)

10842: Preemption of malloc on AVR

10459: make: make clean all does not make sense and should be removed

10351: sam0_common/periph/rtt: Interrupt flags are not correctly cleared

10345: frdm-k22f cannot flash after certain firmware flashed

10175: No error returned from aes_init when a key with a bad size is used

10047: Make warns to expect errors when disabling optional modules

9589: application/Makefile: environment settings after inclusion of

   Makefile.include

9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAM

   R21

8975: dist/tools/openocd: cannot debug some stlink based boards

8664: pkg: doxygen documentation is not fully processed

8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays

8028: diskio: failed assertion in send_cmd() on lpc2387

7918: Usage of GCC extension for binary constants

7875: "Minor" compiling issues found by clang

7206: native: race-condition in IPC

7020: isr_rfcoreerrors while pinging between CC2538DKs

5848: arduino: Race condition in sys/arduino/Makefile.include

5776: make: Predefining CFLAGS are parsed weirdly

5218: some use of asm keyword might be missing volatile

5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing

4512: pkg: tests: RELIC unittests fail on iotlab-m3

4490: pkg: tlsf: initialize memory pool early

4470: Hard fault triggered depending on power supply?

2175: ubjson: valgrind registers "Invalid write of size 4" in unittests

1891: newlib-nano: Printf formatting does not work properly for some numeric

   types

1263: sys: the TLSF implementation contains (a) read-before-write error(s)

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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

- C
Published by kb2ma over 6 years ago

riot - Release-2019.07

RIOT-2019.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 2019.07 release includes a number of new features including many new boards and cpu, riotboot added to many new and old boards, USB is now available, BLE improvements, Ethernet on stm32 platforms, as well as many bug fixes and documentation updates. Testing has also improved with both On-Target Testing increasing and now Hardware Assisted Automated Tests being run.

About 300 pull requests with about 659 commits have been merged since the last release and about 50 issues have been solved. 26 people contributed with code in 106 days. Approximately 1377 files have been touched with 181993 insertions and 19668 deletions.

Notations used below:

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

New features and changes

System libraries

+ Add OCB encryption mode
+ sys/shell: add loramac shell command
* Fletcher16: extend with multi-part functions
+ USBUS: Initial work towards an USB stack
+ usbus: Initial simple auto init structure
* sys: make uart_stdio RX optional
+ sys/event: add event_wait_until()
+ sys/bluetil: add bluetil_addr_from_str()
+ usbus: Add CDC-ECM (Ethernet Control Model) function
* usbus: simplify adding entry to list
* sys/stdio_ethos: replace USE_ETHOS_FOR_STDIO by stdio_ethos pseudomodule

Networking

* gnrc_ipv6_nib: add address from netif to address validation timer
+ netdev_ieee802154: add txpower and page
+ net/lorawan/hdr: add lorawan header helpers
+ ble/nimble: add support for build-in IPSS service
* pkg/semtech-loramac: rework interaction with the MAC
* pkg/semtech-loramac: provide basic persistence for MAC state
* RPL: API update suggestions
+ ipv6_ext: add fragmentation extension definitions
* net/sock_util: Accept NULL pointers in urlsplit
+ sys/net: add netopt options for lorawan
* gnrc_tftp: Fix out-of-bounds memory access when comparing modes
- gnrc_pktbuf: remove gnrc_pktbuf_duplicate_upto
- gnrc_ipv6: remove obsolete and harmful reception code
* gnrc_tftp: set port on server init
+ ble/softdevice: add ble_nordic_softdevice feature
* net/mqttsn: fix client ID length to comply to the standard
+ gnrc_tftp: Add minimum packet length check

Packages

* pkg/monocypher: bump version to 2.0.5
* ble/nimble: bump version to 9d4bda2
* openthread: update to release 20180926
* minmea: bump version to current master
+ nanocbor: Initial support for the nanocbor package
* pkg/lua: Make the module searchers conform to the API

Boards

+ boards/stm32l0538-disco: add initial support
+ boards/nucleo-l4r5zi: initial basic support
+ boards/particle-{xenon,argon,boron}: add initial support
* boards/kw41z: add common configuration and use it with existing
  kw41z boards
+ added SPI support for Nucleo-F767ZI
+ boards: Add support for the Arduino-Leonardo
* boards/nucleof7*: SPI and refactoring
+ boards/stm32: introduce and use new common rtt configuration header
+ boards/stm32l0/l4: add rtt feature
+ boards: add support for i-nucleo-lrwan1 (Arduino-like shield)
+ boards/nrf52840-mdk: added I2C config
+ boards/lsn50: add support for Dragino LSN50 LoRa Sensor Node
* boards/stm32l0: introduce common clock configuration and apply it to
  related boards
* boards/b-l072z-lrwan1: use STM32 common i2C configuration
+ Add usbdev feature to Sodaq boards
+ boards/pba-d-01-kw2x: add riotboot support
+ sensebox: add usbdev feature
+ boards/stm32f429i-disc1: add i2c configuration
+ boards/nucleo-l476rg: add riotboot
+ boards/same54-xpro: add riotboot support
+ boards: Add FLASHFILE support
+ boards/nucleo-l476rg: Add DMA support
+ nrf52: Add suspend/resume detection to usbdev
+ nrf5x: Add UART modecfg feature implementation
+ boards/stm32f3: add support for riotboot feature
+ boards/lobaro-lorabox: add sx1272 radio driver dependency
  to netdev_default
+ boards/stm32l4: add riotboot support
+ boards/microbit: add QEMU emulation
+ boards/frdm-kw41z-k64f: add riotboot
* boards/sltb001a: reset before flashing

CPU

* cpu/esp8266: added/changed helper functions
+ cpu/cc2538: Add periph_uart_mode implementation
* saml1x: enable pm_layered by default
+ cpu/cc26x0: implement uart_mode()
+ cpu/sam0: add support for SAMD5x/SAME5x
+ sam0_common: add uart modecfg support
+ cpu/stm32f3: add support for flashpage and flashpage_raw
* cpu/stm32l{1,4}: refactor flashpage numof macros
* cpu/stm32: optimize stop mode for stm32f*
* cpu/nrf5x_common: map hwrng to SoC library if SoftDevice is present

Device Drivers

+ devfs: add /dev/urandom and /dev/hwrng
* drivers/mrf24j40 : support of NETOPT_LAST_ED_LEVEL
+ drivers/mrf24j40: add external PA/LNA control on MC/MD/ME devices
* drivers/at86rf2xx: enable NETOPT_RX_END_IRQ and fix RSSI values
* drivers/adt7310: Replace binary literal with hex literal
+ drivers/ds75lx: add basic driver for temperature sensor
+ drivers/include: add header definition for wdt
+ drivers/at: Add 'at_recv_bytes_until_string' function
+ sx127x: add several NETOPT for GNRC LoRaWAN
* drivers/sx127x: fix device reset
+ drivers: stm32 eth peripheral driver
+ drivers/periph/gpio_util: add gpio_util_shiftin()

Build System / Tooling

* makefiles/docker: export BOARDS
+ makefiles: add bootloaders to the list of applications
* Makefile.include: allow overwriting flash-recipe
* dist/tools/buildsystem_sanity_check: add an export variable check
* sys/Makefile.include: include riotboot headers when
  FEATURES_REQUIRED=riotboot
+ make: add print-versions helper target
+ make: add LOG_LEVEL to overridable variables
* riotboot/Makefile.include: increase RIOTBOOT_HDR_LEN for ARMv7*-M
* dist/tools/build_system_sanity_check: BUG fix errors being ignored
* boards/common: use Makefile.features
+ make: add termdeps target
* periph_common: add as dependency to periph drivers
+ nrf52: Add USB peripheral driver
+ makefiles/boards.inc.mk: list boards variables
+ makefiles/app_dirs.inc.mk: target to list supported applications/boards
+ Makefile.features: add a common file for the features parsing
+ Makefile.features: add declarative FEATURES_ variables definition
+ makefiles/utils/variables: add functions to help managing variables
* Migrate all boards to define FLASHFILE
* tools/openocd.sh: try to probe the board for real flash address

Testing

* tests/periph_flashpage: add RWWEE automatic test if hw supports it
* tests/pthread_tls: allow negative key values
* tests/gnrc_udp: include `gnrc_pktbuf_cmd` per default
+ tests/periph_hwrng: add automated python test
* tests/periph_timer: include kw41z boards in low-power timer boards
* tests/pkg_c25519: increase timeout for arduino-mega2560
+ tests/xtimer_usleep: fail with negative offsets
+ unittests: add tsrb tests
+ tests/stdin: add non regression test for stdin module
+ tests/xtimer_mutex_lock_timeout: add simple case test
+ Add NimBLE heart rate sensor example (GATT notifications)
* tests/driver_rn2xx3: fix invalid element index for txmode
* tests/pkg_semtech-loramac: don't init the mac from main
* tests/devfs: move tests-devfs out of unittests
+ examples/lorawan: fix semtech_loramac_send TX ret code
* tests/unittests: split remaining packages tests to different test
                   directory

API Changes

  • uart_stdio RX is now optional
  • CPU_MODEL declared in boards/Makefile.features

```c - void isrpipeinit(isrpipet *isrpipe, char *buf, sizet bufsize); + void isrpipeinit(isrpipet *isrpipe, uint8t *buf, size_t bufsize);

  • int isrpipewriteone(isrpipe_t *isrpipe, char c);
  • int isrpipewriteone(isrpipet *isrpipe, uint8t c);

  • int isrpiperead(isrpipet *isrpipe, char *buf, size_t count);

  • int isrpiperead(isrpipet *isrpipe, uint8t *buf, sizet count);

  • int isrpipereadtimeout(isrpipet *isrpipe, char *buf, sizet count,\ int32_t timeout);

  • int isrpipereadtimeout(isrpipet *isrpipe, uint8t *buf, sizet count,\ uint32t timeout);

  • int isrpipereadalltimeout(isrpipet *isrpipe, char *buf, sizet count,\ uint32t timeout);

  • int isrpipereadalltimeout(isrpipet *isrpipe, uint8t *buf, sizet count,\ uint32_t timeout);

typedef struct tsrb { ... - char buf; /< Buffer to operate on. */ + uint8_t *buf; /*< Buffer to operate on. */ ... } tsrb_t

  • int tsrbget(tsrbt *rb, char *dst, size_t n);
  • int tsrbget(tsrbt *rb, uint8t *dst, sizet n);

  • int tsrbaddone(tsrb_t *rb, char c);

  • int tsrbaddone(tsrbt *rb, uint8t c);

  • int tsrbadd(tsrbt *rb, const char *src, size_t n);

  • int tsrbadd(tsrbt *rb, const uint8t *src, sizet n);

typedef struct { ... - uint16t (*calcrank)(gnrcrplparentt *parent, uint16t baserank); - gnrcrplparentt (whichparent)(gnrcrplparentt , gnrcrplparentt *); + uint16t (calcrank)(gnrcrpldodagt *dodag, uint16t baserank);

  • void (reset)(gnrcrpldodag_t *); /*< resets the OF */
  • void (*reset)(gnrcrpldodag_t *dodag); ...
  • void (init)(void); /*< OF specific init function */
  • void (*init)(gnrcrpldodagt *dodag); } gnrcrploft;

  • threadstatet

  • threadstatust

  • void schedsetstatus(threadt *process, threadstate_t status);

  • void schedsetstatus(threadt *process, threadstatus_t status);

struct thread { ... - threadstatet status; + threadstatus_t status; ... }

  • bool mrf24j40cca(mrf24j40t *dev);
  • bool mrf24j40cca(mrf24j40t *dev, int8_t *rssi); ```

Deprecations

Warnings

gnrc_tftp module ubjson module

Removals

gcoap_req_send() replaced with gcoap_req_send2()->gcoap_req_send2()

Known issues

Networking related issues

11860: send data with UDP at 10HZ, the program die

11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled

11519: shell/ping6: Incorrect handling of unexpected pongs

11405: nrfmin: communication not possible after multicast ping with no interval

11390: gnrc networking crashs on nRF51dk

11212: POSIX sockets + lwIP: bad file descriptor

11033: 6lo: RIOT does not receive packets from Linux when short_addr is set

10969: net: netdevdrivert::send() doc unclear

10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver

10809: openthread: does not build on current Arch

10410: Missing drop implementations in netdevdrivert::recv

10389: gnrcsockudp: Possible Race condition on copy in application buffer

10380: netdev_ieee802154: Mismatch between radio ll address and in memory

    address

10370: gomach: Resetting netif with cli doesn't return

10338: xbee: setting PAN ID sometimes fails

9709: examples: failed assertion in dtls-echo example

9656: gnrc/netif: various problems after resetting interface a second time

8779: CC2538 RF overlapping PIN usage

8752: mrf24j40: does not link for examples/default

8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

8242: at86rf2xx: Dead lock when sending while receiving

8199: gcoap example request on tap I/F fails with NIB issue

8172: gnrcnetif, gnrcuhcpc: Replacing prefix on border router results in no

   configured prefix

8130: gcoap: can't build with network stacks other than GNRC

8086: gnrcrplp2p: port to nib and fix compile errors

7737: pkg: libcoap is partially broken and outdated

7474: 6lo gnrc fragmentation expects driver to block on TX

6018: nRF52 gnrc 6lowpan ble memory leak

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64

   chars

5748: gnrc: nodes crashing with too small packet buffer

5486: at86rf2xx: lost interrupts

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5051: Forwarding a packet back to its link layer source should not be allowed

5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

Timer related issues

10545: periphtimer: systematic proportional error in timerset

10523: saml21 system time vs rtc

10351: samd21/periph/rtt: Interrupt flags are not correctly cleared

10073: xtimer_usleep wrong delay time

9187: sys/newlib: gettimeofday() returns time since boot, not current wall

   time.

9052: misc issues with tests/trickle

9049: xtimer mis-scaling with long sleep times

8746: stm32_common/periph/rtc: current implementation broken/poor accuracy

8388: xtimerperiodicwakeup is not interrupt safe

8251: telosb: xtimer config wrong when running on a tmote sky

7347: xtimer_usleep stuck for small values

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now()  and irq_disable()

6442: cpu/native: timer interrupt issue

6052: tests: xtimer_drift gets stuck

5338: xtimer: xtimer_now() not ISR safe

5103: xtimer: weird behavior of tests/xtimer_drift, bug?

Drivers related issues

11763: spitransferreg behavior doesn't follow doc

11104: STM32: SPI clock not returning to idle state and generating additional

    clock cycles

10620: rn2xx3: rn2xx3writecmdnowait can't be correct

9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAM

   R21

9419: cpu/msp430: GPIO driver doesn't work properly

8213: at86rf2xx: Basic mode and NETOPT_AUTOACK

8045: stm32/periph/uart: extra byte transmitted on first transmission

8028: diskio: failed assertion in send_cmd() on lpc2387

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

3366: periph/i2c: handle NACK

Native related issues

11603: NATIVEINCLUDES Does not include USEMODULE_INCLUDES from

    log_printfnoformat

7206: native: race-condition in IPC

5796: native: tlsf: early malloc will lead to a crash

495: native not float safe

Other platforms related issues

10842: Preemption of malloc on AVR

10258: Incorrect default $PORT building for esp32-wroom-32 on macOS

10122: Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice

10076: cpu/cortexmcommon: irqenable returns the current state of interrupts

    (not previous)

8408: pkg/fatfs: linker error when build tests/pkgfatfsvfs for msb430 based

   boards

8052: mips: several issues

7753: pic32-wifire: race-condition when linking in concurrent build

7020: isr_rfcoreerrors while pinging between CC2538DKs

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software

   CS

5774: cpu: cortexm_common: context switching code breaks when compiling with

   LTO

4954: chronos: compiling with -O0 breaks

1891: newlib-nano: Printf formatting does not work properly for some numeric

   types

Build system related issues

10857: frdm-kw41z: requires newer flasher than openocd 0.10 from `ubuntu-

    bionic`.

10850: Tracking: remove harmful use of export in make and immediate

    evaluation

10459: make: make clean all does not make sense and should be removed

10047: Make warns to expect errors when disabling optional modules

9913: Build dependencies - processing order issues

9742: buildtest uses wrong build directory

9645: Different build behavior between murdock and riot/riotbuild:latest

   image

9589: application/Makefile: environment settings after inclusion of

   Makefile.include

8913: make: use of immediate value of variables before they have their final

   value

8122: doxygen: riot.css modified by 'make doc'

7918: Usage of GCC extension for binary constants

6120: Windows AVR Mega development makefile Error

5848: arduino: Race condition in sys/arduino/Makefile.include

5776: make: Predefining CFLAGS are parsed weirdly

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

  • buildtest with BUILDINDOCKER hides host toolchain errors

Other issues

11861: msba2: floating point tests fail

11842: buildtest with BUILDINDOCKER hides host toolchain errors

11820: stm32l152re: hard-fault unless power-cycled after flash, or depending on

    optimization

11691: murdock and tests using utf-8 characters

11631: examples / tests: return value of gnrc_netif_hdr_build() not checked

    in udp.c

11447: frdm-k64f: hwrng support broken, applications using RNG crash

11423: cpu/kinetis: features provided not properly defined according to series

11243: sys/riotboot: documentation issues

10751: Possible memset optimized out in crypto code

10731: nanocoap: incomplete response to /.well-known/core request

10639: sys/stdio_uart: dropped data when received at once

10510: xtimersetmsg: crash when using same message for 2 timers

10175: No error returned from aes_init when a key with a bad size is used

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode

    10

9882: sys/tsrb is not thread safe on AVR

9518: periph/i2c: tracking bugs and untested acks

9371: assert: c99 static_assert macro doesn't function for multiple

   static_asserts in the same scope

8975: dist/tools/openocd: cannot debug some stlink based boards

8589: Why using -F in avrdude?

8436: Kinetis PhyNode: failed to flash binary > 256K

8107: crypto/ccm: bugs in the implementation of CCM mode

7220: sys/fmt: Missing tests for fmtfloat, fmtlpad

6533: tests/lwip target board for python test is hardcoded to native

5218: some use of asm keyword might be missing volatile

5009: RIOT is saw-toothing in energy consumption (even when idling)

4866: periph: GPIO drivers are not thread safe

4512: pkg: tests: RELIC unittests fail on iotlab-m3

4488: Making the newlib thread-safe

3256: make: Setting constants on compile time doesn't really set them

   everywhere

2346: Tracker: Reduce scope on unintended COMMON variables

1263: sys: the TLSF implementation contains (a) read-before-write error(s)

Fixed Issues from the last release (2019.04)

11626: tests/pkg_semtech-loramac: hardfault on lobaro-lorabox

11605: ruuvitag: Shell test fails without auto_init

11530: pkg/semtech_loramac: deadlock with UNCONFIRMED messages

11525: API change, uart input not working anymore on previously working setups

11508: core: threadstatet makes RIOT not compilable on MAC OSX

11498: Cannot compile OpenThread example without the CLI-APP.

11494: emcute_mqttsn example setup contains invalid steps

11344: RTT: make test not working

11274: riotboot_flashwrite: Failure on the nrf52

11091: gnrc_minimal on nRF52DK do not work anymore

11059: board/sltb001a: cannot flash with JLink when 'hello-world' is running

    and no error

11043: boards/z1: tests/rng resets board

10878: nrfmin can get stuck and never reach RX (while TX works)

10800: iotlab-m3: thread tests failing

10559: I2C API write_regs does not fit implementation

10468: Tinycryt upstream rewrote history in master branch

8653: msba2: default example fails on assert

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! A special thanks to @fjmolinas, @leandrolanzieri, @cladmi, @jia200x, @miri64 for helping run the release tests

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

- C
Published by MrKevinWeiss over 6 years ago

riot - Release-2019.04

RIOT-2019.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 2019.04 release includes a number of new features including porting of riotboot to a number of new platforms, 802.15.4 support on the nRF52, and the ability for firmware to flash images into a separate boot slot. Support for several new boards and new sensors was added. Additionally, this release contains a number of bug fixes and test improvements.

About 320 pull requests with about 569 commits have been merged since the last release and about 40 issues have been solved. 44 people contributed with code in 88 days. Approximately 825 files have been touched with 32716 insertions and 5149 deletions.

Notations used below:

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

New features and changes

System libraries

+ riotboot_flashwrite: added module to reliably write a firmware image to
  flash
+ crypto: added support for chacha20poly1305 AEAD symmetric key cypher
  algorithm
* threads: added usage of thread_state_t enum to define thread states,
  instead of an integer
* random: added usage of hwrng as seed if available
+ app_metadata: added module to print application metadata
+ unaligned.h: added functions to safely read values from potentially
  unaligned pointers
+ isrpipe: split isrpipe_read_timeout to isolate xtimer dependency

Networking

* gnrc_ipv6: adapted ping6 to original-ping-like implementation
* gnrc_ipv6: allowed sending empty IPv6 packets
+ gnrc_netif_ieee802154: optional support to drop duplicate broadcast
  packets
- gnrc_pktbuf: removed deprecated gnrc_pktbuf_get_iovec() function
+ l2util: initial import of a general IPv6 over X helper module
+ NimBLE: added Bluetooth device scanner
+ NimBLE: added helper functions for address printing
* NimBLE: updated package to the latest version

Packages

+ c25519: add support (embedded x25519 crypto library)

Boards

+ Arduino nano: added support
+ nrf52832-mdk: added support
+ PhyTec reel board: added support
+ MicroPython pyboard v1.1: added support
+ Hamilton: added support
+ saml10-xpro and saml11-xpro: added riotboot support
+ nrf52: added riotboot support
+ ESP32 and stm32: added command to allow runtime configuration of uart mode
+ ESP32 and ESP8266: add support for ESP-NOW network device driver
* ESP8266: freed up RAM by moving most .rodata sections from DRAM to IROM
+ Arduino: added test to verify pin mappings
+ b-l072z-lrwan1: enabled RTT feature
+ STM32l0: added support for dual bank flashing with OpenOCD
* Autonomo: changed flasher to BOSSA
* stm32: rework common clock configuration for stm32f4
* stm32f3discovery: Fix no external low speed crystal

CPU

+ stm32l0: added riotboot support
+ stm32f0: added support for periph_pm
+ stm32f3, f7, l1 and l4: added stop and standby low power modes. All
  STM32 families now provide periph_pm
+ samd21: enabled idle modes
+ sam0: added support for RWWEE on-chip memory
+ Kinetis: added support for EA series and S9KEAZ129 MCU
+ TI CC2650: added I2C periph implementation

Device Drivers

+ i2c: added slave scan shell command
+ USB: added device driver initialization function and API definition
+ USB: added peripheral driver for sam0_common
+ nrf5x temperature sensor: added driver
+ nrf52: added initial 802.15.4 support
+ add7746 capacitance sensor: added driver
+ ds323x extremely accurate RTC: added driver
+ ltc4150 coulomb counter: added driver
+ sht2x temperature and humidity sensor: added driver
+ sds011 dust sensor: added driver
+ added high level driver for H bridge ICs to drive DC motors
* lpsxxx pressure and temperature sensor: add support for lps22hb and
  lps25hb

Build System / Tooling

+ nrf52: added support for openocd
* improved avrdude integration
+ added support for socat as a RIOT terminal
+ added script for backporting PRs during release testing
* pyterm: specified use of python3 by default
* flasher: support for flashing images at offset addresses `pyocd`, `jlink`
* Texas Instruments UniFlash: put configuration in common
* makefiles: introduce FLASHFILE
  * Use FLASHFILE for `riotboot` and `mcuboot`
  * Update flashers `avrdude`, `edbg`, `jlink`, lpc2k_pgm`, `openocd`
* makefiles/docker.inc.mk: Use directories in RIOT when possible
* make: unexport `TERM*` variables
* msba2: compile 'lpc2k_pgm' when flashing

Testing

+ documentation: added initial guide to running tests
+ Makefile.include: add a 'test/available' target
* testrunner: Fix bug matching local echo
* tests/rng: replace printf_float with fmt/print_float
* tests/bloom_bytes: replace %f with fmt/print_float
* tests/posix_semaphore: sem_timedwait should not return before abstime

Known issues

Networking related issues

11295: RFC 3306 Unicast-Prefix-based-IPv6 Multicast with BorderRouter

11212: POSIX TCP API: bad file descriptor

11091: gnrc_minimal on nRF52DK do not work anymore

11033: 6lo: RIOT does not receive packets from Linux when short_addr is set

10969: net: netdevdrivert::send() doc unclear

10927: gnrc_tftp: Missing minimum length check

10878: nrfmin can get stuck and never reach RX (while TX works)

10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver

10809: openthread: does not build on current Arch

10410: Missing drop implementations in netdevdrivert::recv

10389: gnrcsockudp: Possible Race condition on copy in application buffer

10380: netdev_ieee802154: Mismatch between radio ll address and in memory

    address

10370: gomach: Resetting netif with cli doesn't return

10338: xbee: setting PAN ID sometimes fails

9709: examples: failed assertion in dtls-echo example

9656: gnrc/netif: various problems after resetting interface a second time

8779: CC2538 RF overlapping PIN usage

8752: mrf24j40: does not link for examples/default

8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

8242: at86rf2xx: Dead lock when sending while receiving

8199: gcoap example request on tap I/F fails with NIB issue

8172: gnrcnetif, gnrcuhcpc: Replacing prefix on border router results in no

   configured prefix

8130: gcoap: can't build with network stacks other than GNRC

8086: gnrcrplp2p: port to nib and fix compile errors

7737: pkg: libcoap is partially broken and outdated

7474: 6lo gnrc fragmentation expects driver to block on TX

6018: nRF52 gnrc 6lowpan ble memory leak

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars

5748: gnrc: nodes crashing with too small packet buffer

5486: at86rf2xx: lost interrupts

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5051: Forwarding a packet back to its link layer source should not be allowed

5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

Timer related issues

10545: periphtimer: systematic proportional error in timerset

10523: saml21 system time vs rtc

10351: samd21/periph/rtt: Interrupt flags are not correctly cleared

10073: xtimer_usleep wrong delay time

9187: sys/newlib: gettimeofday() returns time since boot, not current wall time

9052: misc issues with tests/trickle

9049: xtimer mis-scaling with long sleep times

8746: stm32_common/periph/rtc: current implementation broken/poor accuracy

8388: xtimerperiodicwakeup is not interrupt safe

8251: telosb: xtimer config wrong when running on a tmote sky

7347: xtimer_usleep stuck for small values

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now()  and irq_disable()

6442: cpu/native: timer interrupt issue

6052: tests: xtimer_drift gets stuck

5338: xtimer: xtimer_now() not ISR safe

5103: xtimer: weird behavior of tests/xtimer_drift, bug?

Drivers related issues

11405: nrfmin: communication not possible after multicast ping with no interval

10559: I2C API write_regs does not fit implementation

9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAMR21

9419: cpu/msp430: GPIO driver doesn't work properly

8213: at86rf2xx: Basic mode and NETOPT_AUTOACK

8045: stm32/periph/uart: extra byte transmitted on first transmission

8028: diskio: failed assertion in send_cmd() on lpc2387

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

3366: periph/i2c: handle NACK

Native related issues

7206: native: race-condition in IPC

5796: native: tlsf: early malloc will lead to a crash

495: native not float safe

Other platform related issues

11447: frdm-k64f: hwrng support broken, applications using RNG crash

11354: ESP32: write(STDIO_FILENO, ...) not working

11104: STM32: SPI clock not returning to idle state and generating additional

    clock cycles

11059: board/sltb001a: cannot flash with JLink when 'hello-world' is running

    and no error

11043: boards/z1: tests/rng resets board

10979: Missing SPI pre-scalars for STM32F7

10842: Preemption of malloc on AVR

10258: Incorrect default $PORT building for esp32-wroom-32 on macOS

10122: Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice

10076: cpu/cortexmcommon: irqenable returns the current state of interrupts

    (not previous)

8408: pkg/fatfs: linker error when build tests/pkgfatfsvfs for msb430 based

   boards

8052: mips: several issues

7753: pic32-wifire: race-condition when linking in concurrent build

7667: sam0 flashpage_write issue

7020: isr_rfcoreerrors while pinging between CC2538DKs

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS

5774: cpu: cortexm_common: context switching code breaks when compiling with LTO

4954: chronos: compiling with -O0 breaks

4612: pkg: TLSF does not build for 16 bit platforms

1891: newlib-nano: Printf formatting does not work properly for some numeric

   types

Build system related issues

11343: RTT: make term without make debug

11344: RTT: make test not working

11179: stm32l4: can't flash bin files

10857: frdm-kw41z: error with SLOT_LEN handling and flasher not working

10850: Tracking: remove harmfull use of export in make and immediate

    evaluation

10459: make: make clean all does not make sense and should be removed

10047: Make warns to expect errors when disabling optional modules

9913: Dependencies processing order issues

9742: buildtest uses wrong build directory

9645: Different build behavior between murdock and riot/riotbuild:latest

   image

9589: application/Makefile: environment settings after inclusion of

   Makefile.include

8913: make: use of immediate value of variables before they have their final

   value

8122: doxygen: riot.css modified by 'make doc'

7918: Usage of GCC extension for binary constants

6120: Windows AVR Mega development makefile Error

5848: arduino: Race condition in sys/arduino/Makefile.include

5776: make: Predefining CFLAGS are parsed weirdly

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

Other issues

11274: riotboot_flashwrite: Failure on the nrf52

11243: sys/riotboot: documentation issues

10800: iotlab-m3: thread tests failing

10751: Possible memset optimized out in crypto code

10731: nanocoap: incomplete response to /.well-known/core request

10639: sys/stdio_uart: dropped data when received at once

10510: xtimersetmsg: crash when using same message for 2 timers

10468: Tinycryt upstream rewrote history in master branch

10175: No error returned from aes_init when a key with a bad size is used

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10

9882: sys/tsrb is not thread safe on AVR

9518: periph/i2c: tracking bugs and untested acks

9371: assert: c99 static_assert macro doesn't function for multiple

   static_asserts in the same scope

8975: dist/tools/openocd: cannot debug some stlink based boards

8653: msba2: default example fails on assert

8589: Why using -F in avrdude?

8436: Kinetis PhyNode: failed to flash binary > 256K

8107: crypto/ccm: bugs in the implementation of CCM mode

7220: sys/fmt: Missing tests for fmtfloat, fmtlpad

6874: SAMD21: possible CMSIS bug ?

6533: tests/lwip target board for python test is hardcoded to native

5218: some use of asm keyword might be missing volatile

5009: RIOT is saw-toothing in energy consumption (even when idling)

4866: periph: GPIO drivers are not thread safe

4512: pkg: tests: RELIC unittests fail on iotlab-m3

4488: Making the newlib thread-safe

3256: make: Setting constants on compile time doesn't really set them

   everywhere

2346: Tracker: Reduce scope on unintended COMMON variables

1263: sys: the TLSF implementation contains (a) read-before-write error(s)

Fixed Issues from the last release (2019.01)

11163: netdev: iolist not checked for empty elements on send

11162: nrfmin is broken when DEVELHELP is activated

11151: drivers/l3g42000d: scale has wrong data type

11147: 6LoWPAN over BLE: Device not pingable

11113: RPL global DODAG repair

11101: nib route add for routing to Raspberry Pi gateway not working

11052: tests/bloom_bytes does not print float

11051: NimBLE port should be always building all NimBLE files

11029: Default example does not work on stm32f4discovery

11013: hts221: wrong bit for "one-shot enable" register

10956: tests/gnrctcp*: #2 not working on 6Lo-based boards

10972: examples/nanocoap_server hangs after > 256 bytes packet

10463: stm32f4discovery isn't visible as ttyUSB after flashing with tests/leds

10427: doxygen: *_params.h files are excluded

10341: driver_my9221 prevents further flashing of nucleo-l073rz

10294: tests/leds doesn't work on Nucleo-F401RE

10206: Lua_basic example doesn't flash in b-l072z-lrwan1

9387: shell ping6 doesn't display duplicate packages

8663: /sys/random/seed: why not use hwrng if available?

8523: tools: need backport script

6123: gnrc: crash with (excessive) traffic in native

You can get the complete detail in the git history and in the release milestone Release 2019.04.

Acknowledgements

We would like to thank all companies (vendors) that provided us with (their) 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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

- C
Published by danpetry almost 7 years ago

riot - Release-2019.01

RIOT-2019.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 2019.01 release includes a number of new features including DMA support on all STM32 boards, WiFi with IP connectivity on ESP32 and ESP8266, and riotboot, a simple bootloader supporting multiple firmware slots, compatible with most Arm Cortex-M boards supported by RIOT. Support for several new boards and new sensors was added, as well as for the new CPU architecture Armv8-M (Cortex-M23). Last but not least, this release contains a number of bug fixes and enhances test automation.

About 387 pull requests with about 912 commits have been merged since the last release and about 36 issues have been solved. 54 people contributed with code in 110 days. Approximately 1554 files have been touched with 176241 insertions and 50593 deletions.

Notations used below:

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

New features and changes

System libraries

+ riotboot: initial implementation of a bootloader with multi-slots
  and firmware header management
+ base64: add size estimation functions

Networking

* gnrc_ipv6: send IPv6 error messages on error
* gnrc_ipv6: refactor and improve IPv6 message reception
* gnrc_netif: refactor for easier device type integration
+ pkg_semtech-loramac: added timer calibation
* nanocoap: fix confirmable retry countdown

Packages

* gecko_sdk: bumped to version 2.5

Boards

+ added support for Kinetic USB-KW41Z
+ added support for Makerdiary nrf52840-mdk
+ added support for Microchip saml10-xpro and saml11-xpro
+ added support for Nordic nrf51-dk
+ added support for Phytec phynode-kw41z
+ added support for SODAQ SARA AFF
* b-l475e-iot01a: provide RTC and RTT features
* stm32: factorize common I2C configurations
* nucleo-l433rc/nucleo-f072rb/nucleo-f767zi: provide I2C configuration
* nucleo-l433rc: use LPUART (USB port) as stdio
* nucleo-l496zg: use LPUART (USB port) as stdio
* frdm-k64f: updated LPTMR configuration
* sensebox_samd21: add MTD configuration
* nrf51: factorize files and configurations of nrf51 based boards
* nrf52: better factorize files and configurations of nrf52 based boards

CPU

+ cortexm-common: add FPU support for cortex-m4f and cortex-m7
+ cortexm-common: added support for cortex-m23
+ added support for saml10 and saml11
+ efm32: added support for 32-bit timers
+ esp32: added esp_wifi netdev driver
+ esp8266: added esp_wifi netdev driver
+ stm32-common: add DMA support for all STM32
+ stm32-common: add LPUART driver
+ atmega-common: Add PUF SRAM feature
* nrf5x: added management of multiple exti pins in gpio driver
* nrf5x: rework UART driver to allow using multiple UARTs on nrf52840

Device Drivers

+ added support for CCS811 gas sensor
+ added support for SHT3x temperature and humidity sensor
+ added support for TPS6274x step-down dcdc converter
* periph_eeprom: added clear and erase functions

Build System / Tooling

+ added support for PyOCD programmer
+ added compile_and_test_for_board script + checks
* updated EDBG version
* testbed-support: added frdm-kw41z, pba-d-01-kw2x, samr30-xpro to
  supported archis
* pyterm: correctly catch exception when serial port is busy
* print_toolchain_version: added 'make' version

Testing

+ periph_dma: added automatic test script
+ periph_rtc: added automatic test script

Known issues

Networking related issues

10969: net: netdevdrivert::send() doc unclear

10956: tests/gnrctcp*: #2 not working on 6Lo-based boards

10927: gnrc_tftp: Missing minimum length check

10878: nrfmin can get stuck and never reach RX (while TX works)

10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver

10809: openthread: does not build on current Arch

10410: Missing drop implementations in netdevdrivert::recv

10389: gnrcsockudp: Possible Race condition on copy in application buffer

10380: netdev_ieee802154: Mismatch between radio ll address and in memory

    address

10370: gomach: Resetting netif with cli doesn't return

10338: xbee: setting PAN ID sometimes fails

9709: examples: failed assertion in dtls-echo example

9656: gnrc/netif: various problems after resetting interface a second time

8859: cc1101 work instability

8779: CC2538 RF overlapping PIN usage

8752: mrf24j40: does not link for examples/default

8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

8242: at86rf2xx: Dead lock when sending while receiving

8199: gcoap example request on tap I/F fails with NIB issue

8172: gnrcnetif, gnrcuhcpc: Replacing prefix on border router results in no

   configured prefix

8130: gcoap: can't build with network stacks other than GNRC

8086: gnrcrplp2p: port to nib and fix compile errors

7737: pkg: libcoap is partially broken and outdated

7474: 6lo gnrc fragmentation expects driver to block on TX

6018: nRF52 gnrc 6lowpan ble memory leak

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars

5849: pkg: ccn-lite: rework convenience functions

5748: gnrc: nodes crashing with too small packet buffer

5486: at86rf2xx: lost interrupts

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5051: Forwarding a packet back to its link layer source should not be allowed

5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

Timer related issues

10545: periphtimer: systematic proportional error in timerset

10523: saml21 system time vs rtc

10351: samd21/periph/rtt: Interrupt flags are not correctly cleared

10073: xtimer_usleep wrong delay time

9187: sys/newlib: gettimeofday() returns time since boot, not current wall time

9052: misc issues with tests/trickle

9049: xtimer mis-scaling with long sleep times

8746: stm32_common/periph/rtc: current implementation broken/poor accuracy

8388: xtimerperiodicwakeup is not interrupt safe

8251: telosb: xtimer config wrong when running on a tmote sky

7347: xtimer_usleep stuck for small values

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now()  and irq_disable()

6442: cpu/native: timer interrupt issue

6052: tests: xtimer_drift gets stuck

5338: xtimer: xtimer_now() not ISR safe

5103: xtimer: weird behavior of tests/xtimer_drift, bug?

Drivers related issues

10559: I2C API write_regs does not fit implementation

9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAMR21

9419: cpu/msp430: GPIO driver doesn't work properly

8213: at86rf2xx: Basic mode and NETOPT_AUTOACK

8045: stm32/periph/uart: extra byte transmitted on first transmission

8028: diskio: failed assertion in send_cmd() on lpc2387

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

3366: periph/i2c: handle NACK

Native related issues

10972: examples/nanocoap_server hangs after > 256 bytes packet

8444: release test 2018.01 RC1: tests/threadpriorityinversion, hangup

7206: native: race-condition in IPC

5796: native: tlsf: early malloc will lead to a crash

495: native not float safe

Other platforms related issues

10842: Preemption of malloc on AVR

10258: Incorrect default $PORT building for esp32-wroom-32 on macOS

10122: Indeterministic hard fault in mutexlock(), with nRF52 SoftDevice

10076: cpu/cortexmcommon: irqenable returns the current state of interrupts

    (not previous)

8408: pkg/fatfs: linker error when build tests/pkgfatfsvfs for msb430 based

   boards

8052: mips: several issues

7753: pic32-wifire: race-condition when linking in concurrent build

7667: sam0 flashpage_write issue

7020: isr_rfcoreerrors while pinging between CC2538DKs

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS

5774: cpu: cortexm_common: context switching code breaks when compiling with LTO

4954: chronos: compiling with -O0 breaks

4612: pkg: TLSF does not build for 16 bit platforms

1891: newlib-nano: Printf formatting does not work properly for some numeric

   types

Build system related issues

10857: frdm-kw41z: error with SLOT_LEN handling and flasher not working

10850: Tracking: remove harmfull use of export in make and immediate

    evaluation

10459: make: make clean all does not make sense and should be removed

10047: Make warns to expect errors when disabling optional modules

9913: Dependencies processing order issues

9742: buildtest uses wrong build directory

9645: Different build behavior between murdock and riot/riotbuild:latest

   image

9589: application/Makefile: environment settings after inclusion of

   Makefile.include

8913: make: use of immediate value of variables before they have their final

   value

8122: doxygen: riot.css modified by 'make doc'

7918: Usage of GCC extension for binary constants

6120: Windows AVR Mega development makefile Error

5848: arduino: Race condition in sys/arduino/Makefile.include

5776: make: Predefining CFLAGS are parsed weirdly

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

Other issues

10800: iotlab-m3: thread tests failing

10751: Possible memset optimized out in crypto code

10731: nanocoap: incomplete response to /.well-known/core request

10639: sys/stdio_uart: dropped data when received at once

10510: xtimersetmsg: crash when using same message for 2 timers

10468: Tinycryt upstream rewrote history in master branch

10463: stm32f4discovery isn't visible as ttyUSB after flashing with tests/leds

10341: driver_my9221 prevents further flashing of nucleo-l073rz

10206: Lua_basic example doesn't flash in b-l072z-lrwan1

10175: No error returned from aes_init when a key with a bad size is used

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10

9882: sys/tsrb is not thread safe on AVR

9518: periph/i2c: tracking bugs and untested acks

9371: assert: c99 static_assert macro doesn't function for multiple

   static_asserts in the same scope

8975: dist/tools/openocd: cannot debug some stlink based boards

8653: msba2: default example fails on assert

8589: Why using -F in avrdude?

8436: Kinetis PhyNode: failed to flash binary > 256K

8107: crypto/ccm: bugs in the implementation of CCM mode

7220: sys/fmt: Missing tests for fmtfloat, fmtlpad

6874: SAMD21: possible CMSIS bug ?

6533: tests/lwip target board for python test is hardcoded to native

5218: some use of asm keyword might be missing volatile

5009: RIOT is saw-toothing in energy consumption (even when idling)

4866: periph: GPIO drivers are not thread safe

4512: pkg: tests: RELIC unittests fail on iotlab-m3

4488: Making the newlib thread-safe

3256: make: Setting constants on compile time doesn't really set them

   everywhere

2346: Tracker: Reduce scope on unintended COMMON variables

1263: sys: the TLSF implementation contains (a) read-before-write error(s)

9: Manual calibration of the CC1100

Fixed Issues from the last release (2018.10)

10947: tests/gnrctcp*: not working on 6Lo-based boards

10945: net/gnrc_tcp: timeout of connection establishment

10881: core: msg_receive() on native sometimes returns without msg being

    re-set

10875: gnrc_ipv6: crash on heavy network load on native

10827: boards/nrf51dk: multiple external interrupts not working

10768: Build is failing with latest RIOT on windows

10761: iotlab-m3: poor ping6 performance and a possibly broken 6lo

    fragmentation?

10753: nanocoap: options buffer overflow

10739: sock_dns: Security issues (including remote code execution)

10723: gnrcipv6nib: 6Lo-ND EUI-64 checks not portable

10701: gnrc: packet space in gnrc packet buffer is not released on very heavy

    load

10672: gnrc: runs full on very heavy load

10634: pyterm: weird behaviour with long lines.

10628: Can't read data from BH1750 senseor using STM32F3Discovery

10614: DEBUG stops shell if used in i2c init

10611: Board z1: BTN0_IN is not defined

10598: edbg: not compiling on OS X

10594: cpu/esp32: esp_eth is not working correctly for packet size > 255 octets

10531: ESP-now: ESPNOWMAX_SIZE < IPv6 minimum MTU?

10517: Arduino UART cannot set 16 bit baudrate

10508: tracking issue: bionic compile errors

10432: ESP32 toolchain linked to in doc.txt is broken

10419: gnrcicmpv6error: Able to bounce up to 64 ICMPv6 error messages between

    2 instances

10395: stm32f103xx: I2C has no internal pullups and af config

10353: cpu/nrf5x_common: hwrng hangs

10352: lorawan-example not working

10287: docker: docker cannot access /etc/localtime on OS X

10091: Murdock fails on tests/xtimer_usleep on native

10079: Codacy: several problems (false positives)

10068: sam0_common flash write not working at least for SAML21J18B

9889: ethos: desync between ethos::last_framesize and tsrb content possible

9619: ATmega platform issues

9248: _libcinit_array() crash (newlib)

9191: Logic errors in nanocoap_get()

7877: SPI connection can't read 16 bit size register.

6123: gnrc: crash with (excessive) traffic in native

You can get the complete detail in the git history and in the release milestone Release 2019.01.

Acknowledgements

We would like to thank all companies (vendors) that provided us with (their) 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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

RIOT-2018.10.1 - Release Notes

This is a bug fixing release for the RIOT 2018.10 release. The following bugs were fixed:

10757: sock_dns: fix out-of-bound errors

- sock_dns: remove out-of-place puts() call
- sock_dns: remove some magic numbers
- sock_dns: fix out-of-bound errors

10759: 2018.10 compile fixes

- pkg/jerryscript: disable -Wconversion for llvm
- pkg/nimble: disable -Waddress-of-packed-member for llvm
- pkg/tinycrypt: update commit hash after upstream rewrote history

10285: at86rf2xx: release framebuffer on recv with (len > 0) && (buf == NULL)

- at86rf2xx: correct framebuffer release

- C
Published by aabadie about 7 years ago

riot - Release-2018.10.1

RIOT-2018.10.1 - Release Notes

This is a bug fixing release for the RIOT 2018.10 release. The following bugs were fixed:

10757: sock_dns: fix out-of-bound errors

- sock_dns: remove out-of-place puts() call
- sock_dns: remove some magic numbers
- sock_dns: fix out-of-bound errors

10759: 2018.10 compile fixes

- pkg/jerryscript: disable -Wconversion for llvm
- pkg/nimble: disable -Waddress-of-packed-member for llvm
- pkg/tinycrypt: update commit hash after upstream rewrote history

10285: at86rf2xx: release framebuffer on recv with (len > 0) && (buf == NULL)

- at86rf2xx: correct framebuffer release

- C
Published by jia200x about 7 years ago

riot - Release-2018.10

RIOT-2018.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 2018.10 release includes new features, like CoAP Resource Directory and Block2, ESP32 support, rework of I2C interface, EEPROM registry, Full and Minimal Thread Devices support in OpenThread and compliance of LoRaWAN 1.0.2 (ABP counters stored in EEPROM). Several boards were introduced.

During the last release the board documentation was migrated from the wiki to the RIOT API documentation to improve the maintenance of these entries and provide a better user experience when browsing the documentation. There were also some efforts in grouping some modules to make them easier to access in the documentation.

There were also some efforts on refactoring, test improvements and bug fixes.

About 392 pull requests with about 914 commits have been merged since the last release and about 20 issues have been solved. 57 people contributed with code in 100 days. Approximately 2184 files have been touched with 211964 insertions and 34806 deletions.

Notations used below:

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

New features and changes

Community

+ Initial RIOT developer memo + directory structure
+ GitHub feature request template
+ 'testing' in Github PR template
* Rework and documented labeling system
* Rework MAINTAINING.md document
* Rework CONTRIBUTING.md document

Documentation

+ Add boards `slstk3401a`, `slstk3402a` and `sltb001a`
+ Migrate boards documentation to Doxygen
+ New groups under `sys` (serialization, math, memory management, hashes)
+ `arduino` docs for analog map
+ nanocoap
+ tinycbor pkg
* Drivers with `saul` support are now also part of the `drivers_saul` group

Core

+ Architecture dependent thread information
* Fix `byteorder` bebuftohs() / htobebufs() on big endian
* Make `pthread` compilable with g++

System libraries

+ Add EEPROM registration support
+ Add `arduino` time functions micros() and delayMicroseconds()
+ Add `fmt` hex byte
+ ecc: add golay(24,12) half rate and repetition code
+ tsrb: add drop function
* Change `base64` api (const + void*)
* Configure Arduino serial port at compile time
* Move `hamming256` module to generic `ecc`
* sys/auto_init: Fixed initialization of `sht1x`
* crypto/ccm: fix auth_data_len check
- Remove `cbor` module

Networking

+ cord_ep: Full CoRE Resource Directory endpoint support
+ nanocoap: add server-side Block2 support
* emb6_sock_udp: copy receive remote correctly
* ethos: Add drop frame case to recv function
* examples/gcoap: fix post/put without port number
* gnrc/6lo: set more data flag on all but last fragment
* gnrc_ipv6_nib: always configure 802.15.4 long address with IPv6 included
* gnrc_ipv6_nib: fallback to SLAAC if ARO is ignored by upstream
* gnrc_ipv6_nib: make automatic NDP packet emission (NS/RS) configurable
* gnrc_netif: fix l2addr_len > 0, but no l2addr edge-case
* gnrc_netif: reapply event flags on device reset
* gnrc_netif_ieee802154: set FCF Frame Pending when more data is expected
* gnrc_sixlowpan_frag: add page context to reassembly buffer
* gnrc_sixlowpan: refactored for better interchangability of sub-components
* gnrc_sock_[udp|ip]: read return value for _recv after release
* nanocoap: allow empty uri/location path option

Packages

+ libb2: add support (BLAKE2)
+ libhydrogen: add support
+ lora_serialization: LoRa Serialization format support
+ openthread: FTD and MTD support
+ semtech-loramac: add support for RU864 ISM band
* ccn-lite: update and adapt shell commands
* jerryscript: bump version
* littlefs: bump version to v1.6.20
* lwip: bump to version 2.1.0
* semtech-loramac: bump to version 4.4.1
* semtech-loramac: fix uninitialized datarate
* semtech-loramac: lorawan support is not considered experimental anymore
* semtech-loramac: use periph_eeprom to store lorawan configuration
* tiny-asn1: bump version
* tinycbor: Version bump to 0.5.2

Boards

+ i2c configuration for `nucleo-f070`, `nucleo-f091rc`,
  `nucleo-f722ze`, `nucleo-l476rg`, `slstk3402a`.
+ second i2c configuration for `b-l475e-iot01a`
+ esp32-mh-et-live-minikit: add support
+ esp32-olimex-evb: add support
+ esp32-wemos-lolin-d32-pro: add support
+ esp32-wroom-32: add support
+ esp32-wrover-kit: add support
+ esp8266-esp-12x: add support
+ esp8266-olimex-mod: add support
+ esp8266-sparkfun-mod: add support
+ firefly: add support for Zolertia FireFly
+ lobaro_lorabox: add support
+ openmoteb-cc2538: add support
+ samr30-xpro: add support
+ sensebox: add support for `sensebox` and `sensebox_samd21`
+ sodaq_one: add support
+ ublox-c030-u201: add support
* frdm-k64f: update ADC and `saul` configuration
* nrf52xxxdk: make reset pin work
* stm32mindev: rename to `blackpill`

CPU

+ efm32: add support for enabling/disabling DC-DC converter
+ esp32: add initial support
+ esp8266: add initial support
+ i2c: introduce and adapt new I2C interface
+ kinetis: add ADC hardware averaging configuration
+ nrf52: add PWM support
+ samr30: add initial support
+ stm32l4: add support for periph_flashpage
* Add PUF SRAM feature in `nrf5x` and `stm32` families
* atmega_common: allow defining ROM and RAM length for link
* cortexm_common/ldscript: simplify generation of firmwares in section of
  the ROM
* nrf5x_common: fix `gpio` port 1 functionality
* stm32-common: unified support for periph_i2c. I2C is now supported by
  all stm32 families (F0/1/2/3/4/7, L0/1/4)
* stm32_common: fix source selection declared as module dependencies

Device Drivers

+ drivers/ds18: add limited support for Maxim Integrated 1-Wire temperature
  sensor
+ drivers/mma7660: initial support
+ drivers/srf04: add range finder sensor
+ drivers/sx127x: add initial support for multi interrupt pins
+ drivers/tsl4531x: add support for visible light intensity sensor
+ drivers/vcnl40x10: add initial support
* drivers/*: unify driver initialization parameters scheme
* drivers/adxl345: fix driver
* drivers/at86rf2xx: add smart idle listening feature
* drivers/kw2xrf: Fix ack flag handling
* drivers/mtd_spi_nor: add 4-byte address flash support
* drivers/periph_i2c: rework API
* drivers/sx127x: return correct state when device is receiving

Build System / Tooling

+ Makefile.include: Include VERSION file for release
+ dist/tools: add lazysponge tool
+ docker: Use system GIT_CACHE_DIR if available
+ docker: allow using sudo for docker
+ make: introduce periph_gpio_irq
+ make: process include and dep for external modules
+ makefile.iotlab.single.inc.mk: add new supported nodes
* cflags: use gnu99 only if nothing else is specified (mips, msp430, native)
* docker/Makefile.include: Fix BUILDRELPATH when RIOTPROJECT is CURDIR
* docker: export RIOT_CI_BUILD_to docker
* docker: handle building in git worktree
* edbg.inc.mk: allow flashing with an offset in rom without erasing all ROM
* make: add APPDIR to info-build target
* make: provide support for listing supported and blacklisting toolchains
* make: unify app folder search (examples/*, tests/*, ...)
* makefiles/buildtests.inc.mk: fix 'clean-intermediates' not cleaning
* makefiles/docker.inc.mk: handle building in git worktree
* openocd.sh: allow flashing binary files without configuration
* pkg.mk: do not use user identity when applying patches
* pyterm: handle ctrl+d shortcut nicely

Testing

+ automatic compile tests for LLVM for selected boards
+ shellcheck: add CI check script
+ tests/bench_runtime_coreapis: add benchmark for selected core functions
+ tests/bench_sizeof_coretypes: initial include
+ tests/periph_uart: add automated testing script
+ tests/periph_eeprom: add automated testing script
+ tests/periph_flashpage: add automated testing script
* murdock: also compile with LLVM/clang
* murdock: add hook support
+ tests/arduino: add automatic test for arduino module
+ tests/libc_newlib: add test for newlib-nano inclusion
+ tests/periph_uart: add automated testing script
+ tests/gnrc_netif: add test for ULA source selection
+ tests/periph_gpio: add interrupt enable disable command
+ sock_util: Add unittest and fix detected issues

Known Issues

Networking related issues

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up rooting

5051: Forwarding a packet back to its link layer source should not be allowed

5230: gnrc_ipv6: multicast packes are not dispatched to the upper layers

5748: gnrc: nodes crashing with too small packet buffer

6123: gnrc: crash with (excessive) traffic in native

7474: 6lo: gnrc fragmentation expects driver to block on TX

7737: pkg: libcoap is partially broken and outdated

8086: gnrcrplp2p: not compiling

8130: gcoap: can't build witth network stacks other than gnrc

8172: gnrcnetif, gnrcuhcpc: Replacing prefix on border router results in no

   configured prefix

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

9656: gnrc/netif: various problems after resetting interface a second time

9889: ethos: desync between ethos::last_framesize and tsrb content possible

10370: gomach: Resetting netif with cli doesn't return

Timer related issues

5103: xtimer: weird behavior of tests/xtimer_drift

5338: xtimer: xtimer_now() is not ISR safe

6052: tests: xtimerdriftgets_stuck

7114: xtimer: adds items to the wrong list if the timer overflows between

   _xtimer_now() and irq_disable()

7347: xtimer_usleep stuck for small values

8251: telosb: timer config wrong when running o a tmote sky

9052: misc issues with tests/trickle

10073: xtimer_usleep wrong delay time

Native related issues

495: native not float safe

5796 native: tlsf: early malloc will lead to a crash

6442: cpu/native: timer interrupt issue

7206: native: race-condition in IPC

Other platforms related issues

4512: pkg: tests: RELIC unittests fail on iotlab-m3

4612: pkg: TLSF does not build for 16 bit platforms

4872: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

4954: chronos: compiling with -O0 breaks

4866: periph: GPIO drivers are not thread tafe

5009: RIOT is saw-toothing in energy consumption (even when idling)

5218: some use of asm keyword might be missing volatile

5486: at86rf2xx: lost interrupts

5774: cpu: cortexm_common: context switching code breaks when compiling with

   LTO

5848: arduino: Race condition in sys/arduino/Makefile.include

6018: nRF52: gnrc 6lowpan ble memory leak

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software

   CS

6874: SAMD21: possible CMSIS bug

7020: isr_rfcoreerrors while pinging between CC2538DKs

7667: sam0 flashpage_write issues

8028: diskio: failed assertion in send_cmd() on lpc2387

8045: stm32/periph/uart: extra byte transmitted on first transmission

8436: Kinetis PhyNode: failed to flash binary > 256K

8444: tests/threadpriorityinversion hangup

9619: ATmega platform issues.

9882: sys/tsrb is not thread safe on AVR

10338: xbee: setting PAN ID sometimes fails

10341: driver_my9221 prevents further flashing of nucleo-l073rz

10345: frdm-k22f cannot flash after certain firmware flashed

10351: samd21/periph/rtt: Interrupt flags are not correctly cleared

10353: cpu/nrf5x_common: hwrng hangs

Other issues

1263: sys: the TLSF implementation contains (a) read-before-write error(s)

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

4488: making the newlib thread-safe

5561: C++11 extensions in header files

5776: make: Predefining CFLAGS are parsed weirdly

5863: OSX+SAMR21-xpro: shell cannot handle command inputs larger than 64 chars

6120: Windows AVR Mega development makefile Error

7220: sys/fmt: Missing tests for fmtfloat,fmtlpad

7877: SPI connection can't read 16bit size register

8107: crypto/ccm: bugs in the implementation of CCM mode

9548: Many i2c bugs found with the i2c api rework but did not reach the release

9709: examples: failed assertion in dtls-echo example

9742: buildtest uses wrong build directory

10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10

10175: No error returned from aes_init when a key with a bad size is used

10206: Lua_basic example doesn't flash in b-l072z-lrwan1

10258: Incorrect default $PORT building for esp32-wroom-32 on macOS

10287: docker: docker cannot access /etc/localtime on OS X

10367: sam0.inc.mk: Did not find a device with serial ATML21xxxxxxxx

Fixed Issues from the last release (2018.07)

9573: pkg/lwip: assert on samr21-xpro

9584: drivers/cc2420: add netopt NETOPTMAXPACKET_SIZE

6437: periph/spi: Leftovers from SPI rework in #4780

6650: GPIO Port shift in cc2538 is unconsistent

6836: Issuing a reboot on ATmega328p makes the board loop-reboot

7846: stm32f1: I2C read functions return bogus values with unconnected devices

9616: at86rf2xx: can not correctly set channel after NETOPT_STATE_RESET

You can get the complete detail in the git history and in the release milestone Release 2018.10.

Acknowledgements

We would like to thank all companies (vendors) that provided us with (their) 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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

- C
Published by jia200x over 7 years ago

riot - Release-2018.07

RIOT-2018.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 2018.07 release includes new features, like NimBLE (ble stack), a MQTT-SN client, SHA-1 based PRNG, an UUID implementation. The RISC-V CPU architecture support used by the hifive1 board. Effort was done on refactoring, documentation, test improvements and bug fixes.

During the last release, maintainers contributed by running the automated test suites on their boards. This gave valuable feedback on the board support state, test reliability and where to focus effort to make testing easier and more reliable.

About 380 pull requests with about 675 commits have been merged since the last release and about 27 issues have been solved. 45 people contributed with code in 93 days. Approximately 1678 files have been touched with 147122 insertions and 16060 deletions.

Notations used below:

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

New features and changes

Community

+ Maintainers guidelines have been written and added to the repository

Documentation

+ Fix undefined doxygen groups and add a dedicated static check
+ Extend `auto_init` documentation

Core

+ core: clist_foreach() now returns break-causing node

System libraries

+ puf_sram: SRAM PUF feature to seed PRNGs cortex-m platforms
+ random: SHA-1 based PRNG
+ matstat: Integer mathematical statistics library
+ UUID: [RFC4122](https://tools.ietf.org/html/rfc4122) Unique ID library
* analog_util: Refactor, add unit test
- cbor: Deprecation of this module, use cn-cbor or tinycbor package
  instead

Networking

+ asymcute: an asynchronous MQTT-SN client
+ gnrc_ipv6: full duplicate address detection support according to
  [RFC4862](https://tools.ietf.org/html/rfc4862)
+ gnrc_ipv6: support to handle RDNSS option in neighbor discovery
+ netif.h: a network-stack agnostic API to network interfaces
+ lorawan: add example application of autonomous class A device
* sock_udp: allocate ephemeral port on sock creation when port is 0
* gnrc_netif: Enable RX and TX complete events after netdev initialization
* net/gcoap: Refine Observe re-registration
* net/nanocoap: Build message with coap_pkt_t

Packages

+ NimBLE: Bluetooth Low Energy stack used in mynewt
+ TLSF: re-enable original API to have different pools
+ LUA: Add an example with the shell
+ semtech-loramac: add support for link_check MAC command
* libcose: Use RIOT random_bytes instead of randombytes
* tweetnacl: Use RIOT random_bytes instead of randombytes
* hacl: Use RIOT random_bytes instead of randombytes

Boards

+ Nucleo boards use their marketing names
+ HiFive1 (RISC-V)
+ slstk3402a
+ stm32f429i-disc1
+ stm32l476-disco
+ nucleo-l496zg
+ stm32mindev
+ frdm-k22f, frdm-k64f, frdm-kw41z: Add bus configuration for onboard FXOS8700CQ sensor
* mulle: Fix mixed up RX TX pins on UART0

CPU

+ E310 (RISC-V)
* kinetis: GPIO: Enable the correct IRQn on CM0+
* kinetis: Refactor PIT timer driver implementation
* kinetis: Refactor RTT driver
* kinetis: Refactor clock initialization code
* kinetis: Refactor LPTMR timer implementation
* kinetis: Clean up SPI module power handling
* kinetis: Conditionally enable MCG

Device Drivers

+ periph_eeprom API with support for STM32 L0/L1 and AVR
+ AT commands parser
+ Fix periph_flashpage for iotlab-a8-m3/iotlab-m3/fox boards
+ IO1 Xplained extension: add support for light sensor and SD card, fix
  GPIOs initialization and SAUL support
+ tests/bench_timers: A comprehensive benchmark for periph_timer

Build System / Tooling

+ Correctly set the RIOT_VERSION on release archives
+ iotlab-m3/iotlab-a8-m3: fix boards flashing
+ Fix use of non completely initialized BASELIBS variable
+ newlib.mk: extract gcc include search directories for newlib-nano support
+ llvm: many compatibilities issues have been resolved
* testbed-support: use new iot-lab command names

Testing

+ Address some of the failing tests
+ New tests enabled by default in CI
+ Improve testing automation for release testing

Known Issues

Networking related issues

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address

5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up rooting

5051: Forwarding a packet back to its link layer source should not be allowed

5230: gnrc_ipv6: multicast packes are not dispatched to the upper layers

5748: gnrc: nodes crashing with too small packet buffer

6123: gnrc: crash with (excessive) traffic in native

7474: 6lo: gnrc fragmentation expects driver to block on TX

7737: pkg: libcoap is partially broken and outdated

8086: gnrcrplp2p: not compiling

8130: gcoap: can't build witth network stacks other than gnrc

8172: gnrcnetif, gnrcuhcpc: Replacing prefix on border router results in no

   configured prefix

8271: app/netdev: application stops working after receiving frames with

   assertion or completely without error

9616: at86rf2xx: can not correctly set channel after NETOPT_STATE_RESET

9656: gnrc/netif: various problems after resetting interface a second time

9573: pkg/lwip: assert on samr21-xpro

9584: drivers/cc2420: add netopt NETOPTMAXPACKET_SIZE

Timer related issues

5103: xtimer: weird behavior of tests/xtimer_drift

5338: xtimer: xtimer_now() is not ISR safe

6052: tests: xtimerdriftgets_stuck

7114: xtimer: adds items to the wrong list if the timer overflows between

   _xtimer_now() and irq_disable()

7347: xtimer_usleep stuck for small values

8251: telosb: timer config wrong when running o a tmote sky

9052: misc issues with tests/trickle

Native related issues

495: native not float safe

5796 native: tlsf: early malloc will lead to a crash

6442: cpu/native: timer interrupt issue

7206: native: race-condition in IPC

Other platforms related issues

4512: pkg: tests: RELIC unittests fail on iotlab-m3

4612: pkg: TLSF does not build for 16 bit platforms

4872: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

4954: chronos: compiling with -O0 breaks

4866: periph: GPIO drivers are not thread tafe

5009: RIOT is saw-toothing in energy consumption (even when idling)

5128: some use of asm keyword might be missing volatile

5486: at86rf2xx: lost interrupts

5774: cpu: cortexm_common: context switching code breaks when compiling with

   LTO

5848: arduino: Race condition in sys/arduino/Makefile.include

6018: nRF52: gnrc 6lowpan ble memory leak

6437: periph/spi: Leftovers from SPI rework in #4780

6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software

   CS

6650: GPIO Port shift in cc2538 is unconsistent

6838: Issuing a reboot on ATmega328p makes the board loop-reboot

6874: SAMD21: possible CMSIS bug

7020: isr_rfcoreerrors while pinging between CC2538DKs

7667: sam0 flashpage_write issues

7846: stm32f1: I2C read functions return bogus values with unconnected devices

8028: diskio: failed assertion in send_cmd() on lpc2387

8045: stm32/periph/uart: extra byte transmitted on first transmission

8436: Kinetis PhyNode: failed to flash binary > 256K

8444: tests/threadpriorityinversion hangup

9616: ATmega platform issues.

Other issues

1263: sys: the TLSF implementation contains (a) read-before-write error(s)

4053: macros: RIOTFILERELATIVE printing wrong file name for headers

4488: making the newlib thread-safe

5561: C++11 extensions in header files

5776: make: Predefining CFLAGS are parsed weirdly

5863: OSX+SAMR21-xpro: shell cannot handle command inputs larger than 64 chars

6120: Windows AVR Mega development makefile Error

7220: sys/fmt: Missing tests for fmtfloat,fmtlpad

7877: SPI connection can't read 16bit size register

8107: crypto/ccm: bugs in the implementation of CCM mode

9548: Many i2c bugs found with the i2c api rework but did not reach the release

9709: examples: failed assertion in dtls-echo example

Fixed Issues from the last release (2018.04)

8112 crypto/ccm: fix inputlen checking with lengthencoding

8532 kinetis: timersetabsolute randomly misses its target

8778 sys/random: randomuint32range is only uniform if range is a power of 2

  bug quality defect

9065 flashpage_write broken on iotlab-m3

9154 cpu/lpc2387: Fixed broken SPI driver

9451 Makefile.include: fully define BASELIBS before using its value

9579 stm32_common: fix ram length for MCUs with non-contiguous ram regions

9675 tests: gnrc_netif: fix group join iteration macro

You can get the complete detail in the git history and in the release milestone Release 2018.07.

Acknowledgements

We would like to thank all companies (vendors) that provided us with (their) 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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

- C
Published by cladmi over 7 years ago

riot - Release-2018.04

RIOT-2018.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 2018.04 release includes major progress in support for current crypto libraries. A lot of work has gone into updating drivers to RIOT's unified configuration scheme. Support for ten new boards has been added. In our quest to improve and automate testing, many test scripts have been fixed and improved, and RIOT's CI now runs many tests on real hardware during its nightly build testing. And as usual, many tiny fixes and improvements have been merged.

About 390 pull requests with about 1073 commits have been merged since the last release and about 54 issues have been solved. 44 people contributed with code in 98 days. Approximately 1491 files have been touched with 208426 insertions.

Notations used below:

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

New features and changes

System libraries

- cbor: deprecated in favour of cn-cbor
+ hashes: add sha-3 implementation

Networking

* netdev: replaced "struct iovec" with iolist_t
+ nanocoap: added server-side block1 support
+ skald: a BLE advertising stack

Packages

+ cayenne-lpp: A Cayenne LPP library written in C
+ HACL*: a formally verified cryptographic library written in F*
+ qDSA: Small and Secure Digital Signatures with Curve-based
        Diffie--Hellman Key Pairs
+ libcose: Constrained node COSE library
+ cn-cbor: A constrained node implementation of CBOR in C
+ ucglib

Boards

+ arduino-mkrfox1200
+ frdm-kw41z
+ jiminy-mega256rfr2
+ mega-xplained
+ nucleo-l433rc
+ nucleo-l452re
+ slstk3401a
+ slwstk6000b
+ stk3600
+ stk3700

CPU

+ atmega1284p
+ NXP Kinetis KW41Z

Device Drivers

+ bmx055: Bosch bmx055 9-axis IMU
+ ata8520e: Microchip ATA8520E Sigfox(tm) transceiver

Build System / Tooling

+ ci: initial on-hardware test support

Known Issues

Please refer to the issue tracker at https://github.com/RIOT-OS/RIOT/issues.

Acknowledgements

We would like to thank all companies (vendors) that provided us with (their) 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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

- C
Published by kaspar030 almost 8 years ago

riot - Release-2018.01

RIOT-2018.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 2018.01 release includes major progress in RIOTs network communication capabilities, i.e., rewrite of GNRC's neighbour discovery, confirmable messages in (g)CoAP, LoRa, and GoMacH as well as updates on CCN-lite and LWIP. Furthermore, RIOT contributes to IKEA-Hacking by bringing support for the smart home lighting system TRADFRI (note: this will void the warranty). Needless to say that this release also adds and updates support for several platforms, drivers, and of course lots of enhancements to the documentation as well as numerous bug fixes. Last but not least, RIOT now has an official code of conduct (https://github.com/RIOT-OS/RIOT/blob/master/CODEOFCONDUCT.md)

More than 442 pull requests with about 865 commits have been merged since the last release and about 96 issues have been solved. 54 people contributed with code in 96 days. Approximately 2370 files have been touched with 223970 insertions and 181409 deletions.

Notations used below:

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

New features and changes

System libraries

+ event: event queue framework like libevent

Networking

+ gcoap: confirmable messages
+ nanocoap: no external package anymore
* GNRC: major rewrite of neighbour discovery
* GNRC: new API for network interface handling

Packages

+ gecko_sdk: library for EFM/EFR/EZR32 MCUs
* libcoap: git patching fixed
+ littlefs: filesystem for constraint devices
- nanocoap: now part of RIOT
* openthread: updated
+ semtech-loramac: LoRa MAC
+ umorse: morse encoder

Boards

+ acd52832
* common: restructured shared code for boards
+ b-l475e-iot01a
+ bluepill
+ ikea-tradfri
- pca10000
- pca10005
- qemu-i386
+ ruuvitag
+ sltb001a
+ teensy31
+ thingy52
- x86

CPU

+ efm32
* kinetis: unified all MCU variants
- x86

Device Drivers

+ socket_zep: emulated IEEE 802.15.4 device over a UDP for native
+ hts221
+ lc709203f
+ lis2dh12
+ rn2xx3
+ soft_spi
+ tja1042

Build System / Tooling

+ flake8: python code checker
* make: set `-Wall -Wextra` as default for all compilers and platforms
- sniffer: moved to applications repository
+ tests: add automated test scripts for many apps

Fixed Issues from the last release (2017.10)

2143: unittests: tests-core doesn't compile for all platforms

4499: handle of l2srclen in gnrcndprtrsol_handle

4822: kw2xrf: packet loss when packets get fragmented

5005: ndp: router advertisement sent with global address

5122: NDP: global unicast address on non-6LBR nodes disappears after a while

5656: Possible Weakness with locking in the GNRC network stack

5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR

5944: msp430: ipv6_hdr unittests fail

6451: Wrong value in SRF08 driver

6502: cpu/stm32l1: RTC broken

Known Issues

Networking related issues

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame

   gets lost the reassembly state machine might get out of sync

7035: lwIP: hangs due to sema change after a while

Timer related issues

5103: xtimer: weird behavior of tests/xtimerdrift: xtimerdrift randomly

   jumps a few seconds on nrf52

5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.

6052: tests: xtimer_drift gets stuck: application freezes after ~30-200 seconds

7114: xtimer: add's items to the wrong list if the timer overflows between

   _xtimer_now() and irq_disable()

native related issues

495: native not float safe: When FPU is used and an asynchronous context

   switch occurs, either the stack gets corrupted or a floating point
   exception occurs.

6442: cpu/native: timer interrupt does not yield thread

other platform related issues

1891: newlib-nano: Printf formatting does not work properly for some numeric

   types: PRI[uxdi]64, PRI[uxdi]8 and float are not parsed in newlib-nano

4866: not all GPIO driver implementations are thread safe: Due to non-atomic

   operations in the drivers some pin configurations might get lost.

5848: Arduino: Race condition in sys/arduino/Makefile.include

6018: nRF52 gnrc 6lowpan ble memory leak

6261: SAMD21: TC3 & TC4 issue when using TCC2

6379: nrf52dk/nordicsoftdevice: not working anymore

6437: periph/spi: Leftovers from SPI rework

6526: atmega based boards freeze when main thread is over

6836: Issuing a reboot on ATmega328p makes the board loop-reboot

7753: pic32-wifire: race-condition when linking in concurrent build

other issues

1263: TLSF implementation contains (a) read-before-write error(s).

3366: periph/i2c: handle NACK

4488: Making the newlib thread-safe: When calling puts/printf after

   thread_create(), the CPU hangs for DMA enabled UART drivers.

5776: make: Predefining CFLAGS are parsed weirdly

5863: OSX + SAMR21-xpro: shell cannot handle inputs of length >64 chars

5962: Makefile: UNDEF variable is not working as documented

Acknowledgements

We would like to thank all companies (vendors) that provided us with (their) 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

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.

- C
Published by smlng about 8 years ago

riot - Release-2017.10

RIOT-2017.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 microcontrollers, 16-bit microcontrollers and 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:

Most notable, this release is bringing RIOT a step closer to supporting over-the-air-updates by containing initial support for MCUBoot. Furthermore, it adds support for some new platforms (e.g. arduino-mkzero, nucleos, and frdm-k22f), drivers (e.g. my9221, apa102, ds1307), and of course a large number of bug fixes (e.g. make buildtest now working properly, various fixes to xtimer).

About 390 pull requests with about 500 commits have been merged since the last release and about 60 issues have been solved. 39 people contributed with code in 113 days. 1825 files have been touched with 223454 insertions and 66146 deletions.

Notations used below:

  • means new feature/item
  • means modified feature/item
  • means removed feature/item

New features and changes

Bootloader

  • MCUBoot: A secure bootloader for ARM MCUs is now supported. This initial support includes only the nrf52dk board. For more information about it refer to the mcuboot github page at https://github.com/runtimeco/mcuboot/blob/master/README-RIOT.rst

System libraries

  • bcd: binary coded decimal en/decoder

Networking

  • gcoap: Add URI-query strings for requests + various fixes

Packages

  • lwip: Updated to v2.0.3

Boards

  • NXP frdm-k22f
  • STM nucleo144-f722
  • Arduino arduino-mkzero
  • ti CC2650 LaunchPad
  • weio

CPU

  • NXP k22f
  • cc2538: ADC
  • stm32l4: RTC
  • samr21e18a
  • msp430: added flashpage driver
  • lpc11u34
  • stm32: unified stmclk implementations, reworked RTC
  • sam0: heavy unification and refactoring, updated vendor headers
  • sam_common: started unification of sam0 and sam3
  • cortexm: interrupt vector cleanup

Device Drivers

  • my9221 - LED controller + Seeed Studio Grove LED bar
  • apa102 - RGB LED
  • ds1307: RTC
  • SAUL support: lps331ap
  • SAUL gpio: allow configuration of initial state and low-active signals
  • sdcard_spi: added mtd interface
  • PM: fixed selection of default implementations for pm_off and pm_set_lowest

Build System / Tooling

  • make: added pkt-prepare target
  • gcc: enabled -fdiagnostics-color per default for arm and native targets
  • edbg: use as default flash tool for sam0-based boards
  • added LOSTANDFOUND.md for listing removed features

Fixed Issues from the last 3 releases (known issues missing in 2017.04 and 2017.07)

2006: cpu/nrf51822: timer callback may be fired too early

4841: xtimer: timer already in the list:

4590: pkg: building relic with clang fails.

4694: drivers/lm75a: does not build

4902: xtimer: xtimerset: xtimerset does not handle integer overflows well

5128: make: buildtest breaks when exporting FEATURES_PROVIDED var

5207: make: buildest fails with board dependent application Makefiles

5361: cpu/cc26x0: timer broken

5460: cpu/samd21: i2c timing with compiler optimization

5489: cpu/lpc11u34: ADC broken

5799: kw2x: 15.4 duplicate transmits

5928: xtimer: usage in boardinit() crashes: some boards use the xtimer in there boardinit()

   function. The xtimer is however first initialized in the auto_init module which is executed
   after board_init()

6022: pkg: build order issue

6331: RTC alarm triggered with 1s delay

6419: cpu/cc2538: timer broken

6427: xtimer: infinite loop with xtimermutexlock_timeout

6501: boards/nucleo: Pin usage collision (SPI clk vs. LED0)

6542: boards/nucle-f0xx: misconfigured timer configuration

6904: cpu/saml21: cannot use several EXTI

Known Issues

Networking related issues

3075: nhdp: unnecessary microsecond precision: NHDP works with timer values of microsecond precision

   which is not required. Changing to lower precision would save some memory.

4048: gnrc: potential racey memory leak

5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5656: Possible Weakness with locking in the GNRC network stack: For some operations mutexes to the

   network interfaces need to get unlocked in the current implementation to not get deadlocked.
   Recursive mutexes as provided in #5731 might help to solve this problem.

5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of size ~512 B might lead

   to crashes. The issue describes this for several hundret nodes, but agressive flooding with
   just two nodes was also shown to lead to this problem.

5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame gets lost the reassembly

   state machine might get out of sync

6123: gnrc: crash with (excessive) traffic

6519: driver/mrf24j40: broken on stm32f4discovery

7035: lwIP: hangs due to sema change after a while

7727: pkg: libcoap is partially broken and outdated

NDP is not working properly

4499: handle of l2srclen in gnrcndprtrsol_handle: Reception of a router solicitation might lead

   to invalid zero-length link-layer addresses in neighbor cache.

5005: ndp: router advertisement sent with global address: Under some circumstances a router might

   send RAs with GUAs. While they are ignored on receive (as RFC-4861 specifies), RAs should have
   link-local addresses and not even be send out this way.

5122: NDP: global unicast address on non-6LBR nodes disappears after a while: Several issues

   (also see #5760) lead to a global unicast address effectively being banned from the network
   (disappears from neighbor cache, is not added again)

5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by outdated ncache at router

5539: Border Router: packet not forwarded from ethos to interface 6

5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR

Timer related issues

5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.

6052: tests: xtimerdrift gets stuck: xtimerdrift application freezes after ~30-200 seconds

6502: cpu/stm32l1: RTC broken

7114: xtimer: add's items to the wrong list if the timer overflows between xtimernow() and irq_disable()

native related issues

495: native not float safe: When the FPU is used when an asynchronous context switch occurs, either

   the stack gets corrupted or a floating point exception occurs.

2175: ubjson: valgind registers "Invalid write of size 4" in unittests

5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be initialized (which is

   currently expected to be done in an application). If a malloc is needed before an application's
   main started (e.g. driver initialization) the node can crash, since no pool is allocated yet.

6145: native: system reboots on SIGTRAP

6442: cpu/native: timer interrupt does not yield thread

7206: native: race-condition in IPC

other platform related issues

1891: newlib-nano: Printf formatting does not work properly for some numeric types: PRI[uxdi]64,

   PRI[uxdi]8 and float are not parsed in newlib-nano

2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins were used in the

   unittests which are not available with msp430-gcc

2300: qemu unittest fails because of a page fault

4512: pkg: tests: RELIC unittests fail on iotlab-m3

4560: make: clang is more pedantic than gcc oonf_api is not building with clang (partly fixed by #4593)

4822: kw2xrf: packet loss when packets get fragmented

4876: at86rf2xx: Simultaneous use of different transceiver types is not supported

4954: chronos: compiling with -O0 breaks

4866: not all GPIO driver implementations are thread safe: Due to non-atomic operations in the drivers

   some pin configurations might get lost.

5009: RIOT is saw-toothing in energy consumption (even when idling)

5103: xtimer: weird behavior of tests/xtimerdrift: xtimerdrift randomly jumps a few seconds on nrf52

5405: Eratic timings on iotlab-m3 with compression context activated

5486: at86rf2xx: lost interrupts

5678: at86rf2xx: failed assertion in _isr

5944: msp430: ipv6_hdr unittests fail

5848: arduino: Race condition in sys/arduino/Makefile.include

6018: nRF52 gnrc 6lowpan ble memory leak

6261: SAMD21 TC3 & TC4 issue when using TCC2

6379: nrf52dk/nordicsoftdevice: not working anymore

6437: periph/spi: Leftovers from SPI rework

6526: atmega based boards freeze when main thread is over

6836: Issuing a reboot on ATmega328p makes the board loop-reboot

7347: xtimer_usleep stuck for small values on nucleo-l1

7753: pic32-wifire: race-condition when linking in concurrent build

7846: stm32f1: I2C read functions return bogus values with unconnected devices

other issues

1263: TLSF implementation contains (a) read-before-write error(s).

3256: make: Setting constants on compile time doesn't really set them everywhere

3366: periph/i2c: handle NACK

4488: Making the newlib thread-safe: When calling puts/printf after thread_create(), the CPU hangs

   for DMA enabled uart drivers.

4866: periph: GPIO drivers are not thread safe

5561: C++11 extensions in header files

5776: make: Predefining CFLAGS are parsed weirdly

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars

5962: Makefile: UNDEF variable is not working as documented

6451: Wrong value in SRF08 driver

7800: CBOR is broken

Special Thanks

We would like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly sponsored development time: Cisco Systems, Eïsox, Eistec, Ell-i, Engineering Spirit, Mesotic, Nordic, OTA keys and Phytec. We also would like to thank people from Inria Chile for their work on OpenThread integration and Semtech LoRa drivers.

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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 pkg are published under a separate license.

All code files contain licensing information.

- C
Published by haukepetersen over 8 years ago

riot - Release-2017.07

RIOT-2017.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 microcontrollers, 16-bit microcontrollers and 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 provides fixes, code cleanup and improved documentation, as well as enhancements. New features brought by this release include: * CAN support (Controller Area Network) * Support for CoAP OBSERVE requests * Basic Thread stack support (initial support for OpenThread) * radio duty cycling with LwMAC protocol * LoRa radio drivers supporting Semtech hardware

About 230 pull requests with about 442 commits have been merged since the last release and about 13 issues have been solved. 45 people contributed with code in 56 days. 1395 files have been touched with 211720 insertions and 65729 deletions.

Notations used below:

  • means new feature/item
  • means modified feature/item
  • means removed feature/item

New features and changes

API changes

  • removed conn API

System libraries

  • AES CMAC encryption
  • GCC's Stack Smashing Protector (SSP) support
  • Remove 3-DES crypto

Networking

  • CAN stack
  • CoAP OBSERVE request
  • LwMAC protocol
  • OpenThread
  • LwIP port to v2.0.2
  • NHDP port to sock API
  • removed conn API

Packages

  • OpenThread

Boards

  • Arduino MKR1000 (without WiFi)
  • Nucleo144-f412
  • Nucleo144-f746
  • Nucleo144-f767
  • NZ32-SC151 (STM32L1)
  • ST B-L072-LRWAN1 (with LoRa radio)
  • STM32F769 discovery
  • Full support for PhyNode

CPU

  • lm4120: SPI support
  • SAM3: ADC support
  • SAMD21: flashpage, ADC support
  • SAML21: ADC, I2C support
  • STM32F413vg support
  • STM32F7 family (ARM Cortex-M7)
  • STM32L0 family: I2C support
  • STM32: unified DAC support
  • STM32F1/F2/F4 clock initialization refactoring

Device Drivers

  • ADCXX1C I2C ADC support
  • BMP280 temperature/pressure sensor
  • DSP0401 4 digits 16 segment alphanumeric display
  • MMA8x5x motion detection sensor
  • Semtech SX1272 and SX1276 LoRa drivers

Build System

  • EDBG support
  • http download with caching (dlcache)
  • Use Coccinelle static code checker in CI

Special Thanks

We would like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly sponsored development time: Cisco Systems, Eïsox, Eistec, Ell-i, Engineering Spirit, Mesotic, Nordic, OTA keys and Phytec. We also would like to thank people from Inria Chile for their work on OpenThread integration and Semtech LoRa drivers.

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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 pkg are published under a separate license.

All code files contain licensing information.

- C
Published by aabadie over 8 years ago

riot - RIOT-2017.04

RIOT-2017.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 microcontrollers, 16-bit microcontrollers and 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 provides a lot of new features, fixes and enhancements. Among these has been a huge cleanup regarding cppcheck and documentation, and we're pleased to announce that all remaining doxygen and cppcheck warnings have been fixed. We're also proud to present a Virtual File System layer and integration of the SPIFFS file system. A lot of work has gone into support for STMicroelectronics's Nucleo family, with RIOT now supporting 28 (up from 13) Nucleo boards. And as always, there was a lot of under-the-hood cleanup, bug fixing and documentation work.

About 200 pull requests with about 562 commits have been merged since the last release and about 23 issues have been solved. 32 people contributed with code in 91 days. 2697 files have been touched with 716950 insertions and 492623 deletions.

Notations used below:

  • means new feature/item
  • means modified feature/item
  • means removed feature/item

New features and changes

Core

  • full C11 atomics support
  • rmutex, a recursive mutex implementation

API changes

  • renamed NTOH() -> ntoh(), HTON() -> hton()
  • removed gpioint API, which was unnused and obsoleted by periph/gpio
  • renamed uuid module to luid

System libraries

  • VFS: virtual file system layer
  • fmt: add printbytehex(), fmt_lpad()
  • 3DES: removed support as 3DES is considered legacy crypto

Networking

  • emCute - a small MQTT-SN implementation
  • sock_dns: a simple DNS resolver

Packages

  • SPIFFS, the first file system supported by RIOT's VFS layer
  • jerryscript, a Javascript interpreter

Drivers

  • added dynamixel server motor driver
  • removed ltc4150 driver
  • removed smb380 driver

Build System

  • Experimental distributed building using Murdock
  • most makfiles moved from root into makefiles/
  • added submodule support

Special Thanks

We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, OTAkeys and Phytec.

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

License

  • Most of 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 are published under a separate, LGPL compatible license (e.g. some files developedby SICS).

All code files contain licensing information.

- C
Published by kaspar030 almost 9 years ago

riot - RIOT-2017.01

RIOT-2017.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 microcontrollers, 16-bit microcontrollers and 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 provides a lot of new features, fixes and enhancements. Among others these features contain an initial - still experimental - TCP implementation based on the GNRC network stack, support for reading from and writing to SD cards, a new power management architecture as well additional third party packages such as TweetNaCl, a cryptographic library, and Heatshrink a data compression library optimized for embedded real-time systems. We added support for new platforms including the Calliope mini, Maple mini, and a couple of STMs Nucleo boards. Device support was extended by several new drivers, e.g., for NXP PN532 NFC, Microchip MRF24J40 802.15.4 radio (experimental), or Bosch BME280 pressure/humidity/temperature sensor. We completely refactored the SPI interface, allowing for internally handled hardware or software chip select lines and shared bus usage for multiple devices with different SPI configurations.

About 278 pull requests with about 606 commits have been merged since the last release and about 84 issues have been solved. 44 people contributed with code in 87 days. 2230 files have been touched with 220275 insertions and 159840 deletions.

Notations used below:

  • means new feature/item
  • means modified feature/item
  • means removed feature/item

New features and changes

General

  • New power management architecture

Core

  • Initial (experimental) OpenOCD/GDB thread support
  • Make Semaphore implementation IPC independent

API changes

  • SPI driver interface (rework)
  • Add Mutex lock with timeout parameter
  • Xtimer allow for arbitrary frequency & additional convenience functions
  • HDC1000 driver remodeling
  • MMA8652 driver remodeling (MMA8x5x now)

System libraries

  • Lightweight CRC16 implementation
  • Remove Twofish and RC5 implementation

Networking

  • Initial (experimental) GNRC TCP implementation
  • Provide sock-port for POSIX SOCKETS
  • Provide sock-port for GCOAP
  • Provide sock-port for UHCPC
  • Provide sock_ip wrapper for LWIP
  • Native: allow for multiple netdev2_tap devices

Packages

  • TweetNaCl: cryptographic library
  • Heatshrink: compression/decompression library
  • Removed: OpenWSN

Platforms

  • Support for Maple mini board
  • Support for ST Nucleo-32 F303 board
  • Support for ST Nucleo-32 F042 board
  • Support for Calliope mini board
  • Drop support for PTTU platform

Drivers

  • Rework SPI driver interface
  • Peripheral flashrom driver interface
  • SD Card driver (SPI)
  • NXP PN532 NFC driver
  • Initial (experimental) Microchip MRF24J40 radio driver
  • JEDEC JC42.4 temperatur sensors
  • Bosch BME280 pressure, humidity and temperature sensor
  • NXP MMA8x5x accelerometer (previously MMA8652)
  • Unified STM32 RTC driver
  • Unified STM32 UART driver
  • Unified STM32 PWM driver
  • Unified STM32 timer driver
  • Unified NRF5x low power modes
  • Low power modes for the STM32F1 family
  • Unified Kinetis low power modes
  • Xbee port to netdev2 API
  • W5100 port to netdev2 API
  • NRF5x/'nrfmin' port to netdev2 API (w/o 6LoWPAN support currently)
  • Refactor synchronous UART by new 'isrpipe' module

Build System

  • Experimental Jenkins CI
  • Python3 support for compile script (compile_test.py)

Other

  • UUID module for central ID/address generation

Fixed Issues from the last release

4388: POSIX sockets: open socket is bound to a specific thread

4737: cortex-m: Hard fault after a thread exits

4874: Using single RSSIBASEVALUE for all Atmel radios

5034: gnrc_networking: offers txtsnd, does not print received packets

5083: AVR8: Reboots after return 0;

5719: cc2538: rf driver doesn't handle large packets

5954: nRF52 uart_write gets stuck

6036: tinydtls: DTLS randomly missing functions

6037: pkg/nanocoap: native build fails on macOS

6358: arduino uno : xtimer accuracy problem

Known Issues

Networking related issues

3075: nhdp: unnecessary microsecond precision: NHDP works with timer values of microsecond precision

   which is not required. Changing to lower precision would save some memory.

4048: potential racey memory leak: According to the packet buffer stats, flood-pinging a multicast

   destination may lead to a memory leak due to a race condition. However, it seems to be a rare
   case and a completely filled up packet buffer was not observed.

5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing

5230: gnrc ipv6: multicast packets are not dispatched to the upper layers

5656: Possible Weakness with locking in the GNRC network stack: For some operations mutexes to the

   network interfaces need to get unlocked in the current implementation to not get deadlocked.
   Recursive mutexes as provided in #5731 might help to solve this problem.

5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of size ~512 B might lead

   to crashes. The issue describes this for several hundret nodes, but agressive flooding with
   just two nodes was also shown to lead to this problem.

5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame gets lost the reassembly

   state machine might get out of sync

6123: gnrc: crash with (excessive) traffic

NDP is not working properly

4499: handle of l2srclen in gnrcndprtrsol_handle: Reception of a router solicitation might lead

   to invalid zero-length link-layer addresses in neighbor cache.

5005: ndp: router advertisement sent with global address: Under some circumstances a router might

   send RAs with GUAs. While they are ignored on receive (as RFC-4861 specifies), RAs should have
   link-local addresses and not even be send out this way.

5122: NDP: global unicast address on non-6LBR nodes disappears after a while: Several issues

   (also see #5760) lead to a global unicast address effectively being banned from the network
   (disappears from neighbor cache, is not added again)

5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by outdated ncache at router

5539: Border Router: packet not forwarded from ethos to interface 6

5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR

Timer related issues

4841: xtimer: timer already in the list: Under some conditions an xtimer can end up twice in the

   internal list of the xtimer module

4902: xtimer: xtimerset: xtimerset does not handle integer overflows well

5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.

5928: xtimer: usage in boardinit() crashes: some boards use the xtimer in there boardinit()

   function. The xtimer is however first initialized in the auto_init module which is executed
   after board_init()

6052: tests: xtimerdrift gets stuck: xtimerdrift application freezes after ~30-200 seconds

6331: RTC alarm triggered with 1s delay

6419: cpu/cc2538: timer broken

6427: xtimer: infinite loop with xtimermutexlock_timeout

6502: cpu/stm32l1: RTC broken

6542: boards/nucle-f0xx: misconfigured timer configuration (fix in #6494)

native related issues

495: native not float safe: When the FPU is used when an asynchronous context switch occurs, either

   the stack gets corrupted or a floating point exception occurs.

2175: ubjson: valgind registers "Invalid write of size 4" in unittests

4590: pkg: building relic with clang fails.

5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be initialized (which is

   currently expected to be done in an application). If a malloc is needed before an application's
   main started (e.g. driver initialization) the node can crash, since no pool is allocated yet.

6145: native: system reboots on SIGTRAP

6442: cpu/native: timer interrupt does not yield thread

other platform related issues

1891: newlib-nano: Printf formatting does not work properly for some numeric types: PRI[uxdi]64,

   PRI[uxdi]8 and float are not parsed in newlib-nano

2006: cpu/nrf51822: timer callback may be fired too early

2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins were used in the

   unittests which are not available with msp430-gcc

2300: qemu unittest fails because of a page fault

4512: pkg: tests: RELIC unittests fail on iotlab-m3

4560: make: clang is more pedantic than gcc oonf_api is not building with clang (partly fixed by #4593)

4694: drivers/lm75a: does not build

4822: kw2xrf: packet loss when packets get fragmented

4876: at86rf2xx: Simultaneous use of different transceiver types is not supported

4954: chronos: compiling with -O0 breaks

4866: not all GPIO driver implementations are thread safe: Due to non-atomic operations in the drivers

   some pin configurations might get lost.

5009: RIOT is saw-toothing in energy consumption (even when idling)

5103: xtimer: weird behavior of tests/xtimerdrift: xtimerdrift randomly jumps a few seconds on nrf52

5361: cpu/cc26x0: timer broken

5405: Eratic timings on iotlab-m3 with compression context activated

5460: cpu/samd21: i2c timing with compiler optimization

5486: at86rf2xx: lost interrupts

5489: cpu/lpc11u34: ADC broken

5678: at86rf2xx: failed assertion in _isr

5799: kw2x: 15.4 duplicate transmits

5944: msp430: ipv6_hdr unittests fail

5848: arduino: Race condition in sys/arduino/Makefile.include

6018: nRF52 gnrc 6lowpan ble memory leak

6261: SAMD21 TC3 & TC4 issue when using TCC2

6379: nrf52dk/nordicsoftdevice: not working anymore

6437: periph/spi: Leftovers from SPI rework

6501: boards/nucleo: Pin usage collision (SPI clk vs. LED0)

6526: atmega based boards freeze when main thread is over

other issues

1263: TLSF implementation contains (a) read-before-write error(s).

3256: make: Setting constants on compile time doesn't really set them everywhere

3366: periph/i2c: handle NACK

4488: Making the newlib thread-safe: When calling puts/printf after thread_create(), the CPU hangs

   for DMA enabled uart drivers.

4866: periph: GPIO drivers are not thread safe

5128: make: buildtest breaks when exporting FEATURES_PROVIDED var

5207: make: buildest fails with board dependent application Makefiles

5561: C++11 extensions in header files

5776: make: Predefining CFLAGS are parsed weirdly

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars

5962: Makefile: UNDEF variable is not working as documented

6022: pkg: build order issue

6451: Wrong value in SRF08 driver

6519: driver/mrf24j40: broken on stm32f4discovery

Special Thanks

We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, OTAkeys and Phytec.

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

License

  • Most of 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 are published under a separate, LGPL compatible license (e.g. some files developedby SICS).

All code files contain licensing information.

- C
Published by PeterKietzmann about 9 years ago

riot - RIOT-2016.10

RIOT-2016.10 - Release Notes

RIOT is a real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things: 8-bit microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (this API offers 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 provides a lot of new features as well as it fixes several major bugs. Among these new features are the new simplified network socket API called sock, the GNRC specific CoAP implementation gcoap and several new packages: TinyDTLS, the Aversive++ microcontroller library for robotics, the u8g2 graphic library, and nanocoap. Using the new sock API an implementation of the Simple Time Network Protocol (SNTP) was also introduced, allowing for time synchronization between nodes. New platforms include the Arduino Uno, the Arduino Duemilanove, the Arduino Zero, SODAQ Autonomo, and the Zolertia remote (rev. B). The most significant bug fix was done in native which led to a significantly more robust handling of ISRs and now allows for at least 1,000 native instances running stably on one machine.

About 263 pull requests with about 398 commits have been merged since the last release and about 42 issues have been solved. 37 people contributed with code in 100 days. 1006 files have been touched with 166500 insertions and 26926 deletions.

Notations used below:

  • means new feature/item
  • means modified feature/item
  • means removed feature/item

New features and changes

General

  • Verbose behavior for assert() macro

Core

  • MPU support for Cortex-M

API changes

  • Socket-like sock API (replacing conn)
  • netdev2: Add Testmodes and CCA modes
  • IEEE 802.15.4: clean-up Intra-PAN behavior
  • IEEE 802.15.4: centralize default values
  • gnrc_pktbuf: allow for 0-sized snips
  • gnrc_netapi: mbox and arbitrary callback support

System libraries

No new features or changes

Networking

  • Provide sock-port for GNRC
  • gcoap: a GNRC-based CoAP implementation
  • Simple Network Time Protocol (RFC 5905, section 14)
  • Priority Queue for packet snips
  • IPv4 header definitions

Packages

  • nanocoap: CoAP header parser/builder
  • TinyDTLS: DTLS library
  • tiny-asn1: asn.1/der decoder
  • Aversive++ microcontroller programming library
  • u8g2 graphic library

Platforms

  • Support for stm32f2xx MCU family
  • Low power modes for samd21 CPUs
  • More Arduino-based platforms:
    • Arduino Uno
    • Arduino Duemilanove
    • Arduino Zero
  • More boards of ST's Nucleo platforms:
    • ST Nucleo F030 board support
    • ST Nucleo F070 board support
    • ST Nucleo F446 board support
  • SODAQ Automono
  • Zolertia remote rev. B

Drivers

  • W5100 Ethernet device
  • Atmel IO1 Xplained extension
  • LPD8808 LED strips
  • at86rf2xx: provide capability to access the RND_VALUE random value register

Build System

  • static-tests build target for easy local execution of CI's static tests

Other

  • Provide Arduino API to Nucleo boards
  • Packer configuration file to build vagrant boxes
  • CC2650STK Debugger Support
  • ethos: add Ethos over TCP support

Fixed Issues from the last release

534: native debugging on osx fails

2071: native: long overdue fixes

3341: netdev2_tap crashes when hammered

5007: gnrc icmpv6: Ping reply goes out the wrong interface

5432: native: valgrind fails

Known Issues

Networking related issues

3075: nhdp: unnecessary microsecond precision: NHDP works with timer values

   of microsecond precision which is not required. Changing to lower
   precision would save some memory.

4048: potential racey memory leak: According to the packet buffer stats,

   flood-pinging a multicast destination may lead to a memory leak due to
   a race condition. However, it seems to be a rare case and a completely
   filled up packet buffer was not observed.

4388: POSIX sockets: open socket is bound to a specific thread: This was an

   inherit problem of the conn API under GNRC. Since the POSIX sockets are
   still based on conn for this release, this issue persists

4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the

   address (might still be fixable for release, see #5729, #5230: gnrc
   ipv6: multicast packets are not dispatched to the upper layers)

5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing

5055: cpuid: multiple radios will get same EUI-64 Nodes with multiple

   interfaces might get the same EUI-64 for them since they are generated
   from the same CPU ID.

5656: Possible Weakness with locking in the GNRC network stack: For some

   operations mutexes to the network interfaces need to get unlocked in
   the current implementation to not get deadlocked. Recursive mutexes as
   provided in #5731 might help to solve this problem.

5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of

   size ~512 B might lead to crashes. The issue describes this for several
   hundret nodes, but agressive flooding with just two nodes was also
   shown to lead to this problem.

5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame

   gets lost the reassembly state machine might get out of sync

NDP is not working properly

4499: handle of l2srclen in gnrcndprtrsol_handle: Reception of a router

   solicitation might lead to invalid zero-length link-layer addresses in
   neighbor cache.

5005: ndp: router advertisement sent with global address: Under some

   circumstances a router might send RAs with GUAs. While they are ignored
   on receive (as RFC 4861 specifies), RAs should have link-local
   addresses and not even be send out this way.

5122: NDP: global unicast address on non-6LBR nodes disappears after a while:

   Several issues (also see #5760) lead to a global unicast address
   effectively being banned from the network (disappears from neighbor
   cache, is not added again)

5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by

   outdated ncache at router

5539: Border Router: packet not forwarded from ethos to interface 6

5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR

Timer related issues

4841: xtimer: timer already in the list: Under some conditions an xtimer can

   end up twice in the internal list of the xtimer module

4902: xtimer: xtimerset: xtimerset does not handle integer overflows well

5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.

5928: xtimer: usage in board_init() crashes: some boards use the xtimer in

   there board_init() function. The xtimer is however first initialized in
   the auto_init module which is executed after board_init()

6052: tests: xtimerdrift gets stuck: xtimerdrift application freezes after

   ~30-200 seconds

native related issues

495: native not float safe: When the FPU is used when an asynchronous context

   switch occurs, either the stack gets corrupted or a floating point
   exception occurs.

2175: ubjson: valgind registers "Invalid write of size 4" in unittests

4590: pkg: building relic with clang fails.

5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be

   initialized (which is currently expected to be done in an application).
   If a malloc is needed before an application's main started (e.g. driver
   initialization) the node can crash, since no pool is allocated yet.

other platform related issues

1891: newlib-nano: Printf formatting does not work properly for some numberic

   types: PRI[uxdi]64, PRI[uxdi]8 and float are not parsed in newlib-nano

2006: cpu/nrf51822: timer callback may be fired too early

2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins

   were used in the unittests which are not available with msp430-gcc

2300: qemu unittest fails because of a page fault

4512: pkg: tests: RELIC unittests fail on iotlab-m3

4522: avsextrem: linker sometimes doesn't find bl_init_clks()

4560: make: clang is more pedantic than gcc oonf_api is not building with

   clang. (Partly solved by #4593)

4694: drivers/lm75a: does not build

4737: cortex-m: Hard fault after a thread exits (under some circumstances)

4822: kw2xrf: packet loss when packets get fragmented

4876: at86rf2xx: Simultaneous use of different transceiver types is not

   supported

4954: chronos: compiling with -O0 breaks

4866: not all GPIO driver implementations are thread safe: Due to non-atomic

   operations in the drivers some pin configurations might get lost.

5009: RIOT is saw-toothing in energy consumption (even when idling)

5103: xtimer: weird behavior of tests/xtimerdrift: xtimerdrift randomly

   jumps a few seconds on nrf52

5361: cpu/cc26x0: timer broken

5405: Eratic timings on iotlab-m3 with compression context activated

5460: cpu/samd21: i2c timing with compiler optimization

5486: at86rf2xx: lost interrupts

5489: cpu/lpc11u34: ADC broken

5603: atmega boards second UART issue

5678: at86rf2xx: failed assertion in _isr

5719: cc2538: rf driver doesn't handle large packets

5799: kw2x: 15.4 duplicate transmits

5944: msp430: ipv6_hdr unittests fail

5848: arduino: Race condition in sys/arduino/Makefile.include

5954: nRF52 uart_write get stuck

6018: nRF52 gnrc 6lowpan ble memory leak

other issues

1263: TLSF implementation contains (a) read-before-write error(s).

3256: make: Setting constants on compile time doesn't really set them

   everywhere

3366: periph/i2c: handle NACK

4488: Making the newlib thread-safe: When calling puts/printf after

   thread_create(), the CPU hangs for DMA enabled uart drivers.

4866: periph: GPIO drivers are not thread safe

5128: make: buildtest breaks when exporting FEATURES_PROVIDED var

5207: make: buildest fails with board dependent application Makefiles

5390: pkg: OpenWSN does not compile: This package still uses deprecated

   modules and was not tested for a long time.

5520: tests/periph_uart not working

5561: C++11 extensions in header files

5776: make: Predefining CFLAGS are parsed weirdly

5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64

   chars

5962: Makefile: UNDEF variable is not working as documented

6022: pkg: build order issue

Special Thanks

We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination Technologies, Limifrog, Nordic, OpenMote, Phytec, SiLabs, UDOO,and Zolertia; and also companies that directly sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, FreshTemp LLC, OTAkeys and Phytec.

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

License

  • Most of 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 are published under a separate, LGPL compatible license (e.g. some files developed by SICS).

All code files contain licensing information.

- C
Published by miri64 over 9 years ago

riot - RIOT-2016.07

RIOT-2016.07 - Release Notes

RIOT is a real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things: 8-bit microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (this API offers 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 was focused primarily on fixing bugs, but also adds two new supported radio transceivers: CC2420 and CC2538. This new radio support allows to new interoperability tests with other OS, allowing code size comparison and overall network performance for platforms based on these radios.

About 198 pull requests with about 325 commits have been merged since the last release and about 65 issues have been solved. 46 people contributed with code in 112 days. 632 files have been touched with 19863 insertions and 3682 deletions.

Notations used below:

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

New features and changes

General

* No major changes or new features coming on this release.

Core

+ Introduced Mailbox IPC API (#4919) * Improved clist

Network Stack

+ Introduction of netstats in several platforms. * RPL optional auto initialisation

Packages

+ Added statistics for TLSF package (#5418) + Added U8g2 library for monochrome displays (#5549) * Added on-the-fly content creation for CCN-lite.

Platforms

+ nrf52dk: add support for building with Nordic SoftDevice (6lo over BLE) + Added support for Libellium's waspmote-pro board. + Added support for the iotlab A8/M3 node (https://www.iot-lab.info/hardware/a8/) + Added initial and rudimentary port for TI cc2650stk "SensorTag" (#4675) + Split Zolertia Remote support into Remote Prototype A (remote-pa) and Remote Revision A (remote-reva)

Drivers

+ Texas Instruments CC2538 RF driver (PR #5291) + Texas Instruments CC2420 RF driver (PR #5591) + Bosch BM180 sensor. + Added XBee optional AES encryption support

System libraries

* Several xtimer bug fixes

Build System

+ Ubuntu 16.04 packaged gcc-arm-none-eabi toolchain can now be used to compile RIOT for ARM boards

Other

* Reworked UART and code factorisation for ATmega CPUs.

API changes

* Unified interface of hashing functions

Fixed Issues from the last release

3824: native: gnrc: hardcore pinging crashes.

4583: cpp11: clang doesn't allow mutex_t to be used with constexpr All

cpp11-* tests fail with clang.

5388: gnrcsixlowpaniphc_nhc: receiving NHC compressed UDP

packets hits assert in IPv6 (Fixed by #5281).

Known Issues

3075: nhdp: unnecessary microsecond precision NHDP works with timer

values of microsecond precision which is not required. Changing to lower precision would save some memory.

3086: Max. packet length for AT86RF2XX

4048: potential racey memory leak According to the packet buffer stats,

flood-pinging a multicast destination may lead to a memory leak due to a race condition. However, it seems to be a rare case and a completely filled up packet buffer was not observed.

5005: ndp: router advertisement sent with global address Under some

circumstances a router might send RAs with GUAs. While they are ignored on receive (as RFC 4861 specifies), RAs should have link-local addresses and not even be send out this way.

5007: gnrc icmpv6: Ping reply goes out the wrong interface

5055: cpuid: multiple radios will get same EUI-64 Nodes with multiple

interfaces might get the same EUI-64 for them since they are generated from the same CPU ID. #5230: gnrc ipv6: multicast packets are not dispatched to the upper layers. (Fix exists, but was postponed)

5390: pkg: OpenWSN does not compile This package still uses deprecated

modules and was not tested for a long time.

native related issues

495: native not float safe When the FPU is used when an asynchronous

context switch occurs, either the stack gets corrupted or a floating point exception occurs.

534: native debugging on osx fails Using valgrind or gdb with a nativenet

target in OSX leads to "the network" being stuck (gdb) or the whole process being stuck (valgrind).

334: nativenet crashes when hammered Flood-pinging a native instance

from more than one host (either multiple threads on the host system or multiple other native instances), leads to a SEGFAULT.

2071; WIP: native: overdue fixes

4590: pkg: building relic with clang fails.

5432: native: valgrind fails

other platform related issues

4560: make: clang is more pedantic than gcc oonf_api is not building with

clang. (Partly solved by #4593)

4866: not all GPIO driver implementations are thread safe Due to non-atomic

operations in the drivers some pin configurations might get lost. #5486: at86rf2xx: lost interrupts

other issues

1263: TLSF implementation contains (a) read-before-write error(s).

2761: core: define default flags If a thread is created without the

corresponding flag (CREATE_STACKTEST), the ps command will yield wrong numbers for the stack usage.

2927: core: Automatically select the lowest possible LPM mode Not all

available low power modes (LPMs) are implemented for each platform and the concept of how the LPM is chosen needs some reconsideration.

2967: Makefile.features: location is not relevant for all features Provided

features for the build system should be split up into a board and cpu specific part

4488: Making the newlib thread-safe When calling puts/printf after

thread_create(), the CPU hangs for DMA enabled uart drivers.

4841: xtimer: timer already in the list Under some conditions an xtimer can end

up twice in the internal list of the xtimer module.

5338: xtimer: xtimer_now() not ISR safe For non-32-bit platforms.

Special Thanks

We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Limifrog, Nordic, OpenMote, Phytec, SiLabs, UDOO,and Zolertia; and also companies that directly sponsored development time:Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, FreshTemp LLC, and Phytec.

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list
    • devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list
    • users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
    • RIOT commits
    • commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications
    • notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

License

  • Most of 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 are published under a separate, LGPL compatible license (e.g. some files developed by SICS).

All code files contain licensing information.

- C
Published by miri64 over 9 years ago

riot - RIOT-2016.04

RIOT-2016.04 - Release Notes

RIOT is a real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things: 8-bit microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (this API offers 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 adds support for two additional network stacks: lwIP and emb6. A bunch of additional protocols are now available, P2P-RPL in the GNRC network stack, Ethernet-over-Serial (ethos). Murdock, the new, blazing fast RIOT CI is now available to significantly speed up code merging procedures.

This release also adds support for a number of new boards and sensors and a new tool for automated border router setup is now provided which greatly simplifies that setup for newbies as well as for old-timers. Last but not least: this release includes a number of bug fixes, mostly about stabilizing and enhancing the networking capabilities of RIOT.

About 470 pull requests with about 1196 commits have been merged since the last release and 127 additional issues have been solved. 55 people contributed code in 124 days. 1521 files have been touched with ~91700 insertions and ~42200 deletions.

Notations used below:

  • means new feature/item
  • means modified feature/item
  • means removed feature/item

New features and changes

General

  • added Makefile support for creating a "binary distribution", making it easier to create closed source applications while still complying to LGPL

Testing

  • Murdock, the new RIOT CI
  • unified pexpect code
  • added various new unittests and test applications

Core

  • added thread flags, a new method to signal events in an efficient and thread safe manner
  • messaging is now compile-time optional, shaving off some bytes off each thread's state struct for projects not requiring it
  • new, simpler list implementation increases mutex and msg performance

Network Stack

  • P2P-RPL (RFC6997)
  • netdev2_test: test framework for users of the netdev2 API

Packages

  • emb6 network stack
  • jsmn (minimal JSON parser)
  • lwIP network stack
  • unified and streamlined git package source handling
  • added support for caching git repositories

Platforms

  • reworked existing peripheral drivers and added SPI driver for arduino-mega2560
  • added support for nRF52dk
  • added support for nucleo-f072 and nucleo-f103
  • unified LED macros for all boards

Drivers

  • ethos "ethernet over serial" driver, enabling shared uart + network communication over one serial connection
  • RHOM BH1750FVI ambient light sensor
  • ST LIS3MDL three-axis magnetic sensor
  • Silicon Labs Si70xx low-power temperature + humidity sensor
  • simplified GPIO driver interface
  • AES encryption for xbee radio driver
  • added ADC mapping to SAUL

Sytem libraries

  • vtimer support was dropped completely and removed

Build System

  • made build system safe for concurrent building of multiple applications
  • desvirt integration into the RIOT build system

Other

  • simplified border router setup tool (single UART and automation script)

API changes

  • at86rf2xx was moved from gnrc_netdev to the netdev2 API
  • genrand* -> random*
  • xtimer_remove() no longer returns whether a timer was actually removed
  • disableIRQ(), enableIRQ(), restoreIRQ(), inISR() -> irqdisable(), irqenable(), irqrestore(), irqis_in()
  • renamed periph/random to periph/hwrng

Fixed Issues from the last release

  • #3109: periph/random: random_read should return unsigned int
  • #3970: RPL: Advertise DODAG only over the assigned interface
  • #4462: IPHC/NHC broken between Linux and a RIOT node with a RIOT-based border router in between.
  • #4608: tests/xtimerusleepuntil: unstable behaviour

Known Issues


  • #3075: nhdp: unnecessary microsecond precision NHDP works with timer values of microsecond precision which is not required. Changing to lower precision would save some memory.
  • #3086: Max. packet length for AT86RF2XX The size of the link-layer header is not dynamically calculated, but instead the maximum size is always assumed.
  • #4048: potential racey memory leak According to the packet buffer stats, flood-pinging a multicast destination may lead to a memory leak due to a race condition. However, it seems to be a rare case and a completely filled up packet buffer was not observed.
  • #5005: ndp: router advertisement sent with global address Under some circumstances a router might send RAs with GUAs. While they are ignored on receive (as RFC 4861 specifies), RAs should have link-local addresses and not even be send out this way.
  • #5007: gnrc icmpv6: Ping reply goes out the wrong interface
  • #5055: cpuid: multiple radios will get same EUI-64 Nodes with multiple interfaces might get the same EUI-64 for them since they are generated from the same CPU ID
  • #5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
  • #5388: gnrcsixlowpaniphc_nhc: receiving NHC compressed UDP packets hits assert in IPv6 Fix already provided in #5281, but did not made it into the release due to its complexity
  • #5390: pkg: OpenWSN does not compile This package still uses deprecated modules and was not tested for a long time

native related issues

  • #495: native not float safe When the FPU is used when an asynchronous context switch occurs, either the stack gets corrupted or a floating point exception occurs.
  • #534: native debugging on osx fails Using valgrind or gdb with a nativenet target in OSX leads to "the network" being stuck (gdb) or the whole process being stuck (valgrind).
  • #3341 and #3824: nativenet crashes when hammered Flood-pinging a native instance from more than one host (either multiple threads on the host system or multiple other native instances), leads to a SEGFAULT

other platform related issues

  • #4560: make: clang is more pedantic than gcc oonf_api is not building with clang.
  • #4583: cpp11: clang doesn't allow mutex_t to be used with constexpr All cpp11-* tests fail with clang.
  • #4866: not all GPIO driver implementations are thread safe Due to non-atomic operations in the drivers some pin configurations might get lost

other issues

  • #1263: TLSF implementation contains (a) read-before-write error(s)
  • #2761: core: define default flags If a thread is created without the corresponding flag (CREATE_STACKTEST), the ps command will yield wrong numbers for the stack usage
  • #2927: core: Automatically select the lowest possible LPM mode Not all available low power modes (LPMs) are implemented for each platform and the concept of how the LPM is chosen needs some reconsideration
  • #2967: Makefile.features: location is not relevant for all features Provided features for the build system should be split up into a board and cpu specific part
  • #4488: Making the newlib thread-safe When calling puts/printf after thread_create(), the CPU hangs for DMA enabled uart drivers.
  • #4841: xtimer: timer already in the list Under some conditions an xtimer can end up twice in the internal list of the xtimer module.
  • #5338: xtimer: xtimer_now() not ISR safe For non-32-bit platforms

Special Thanks

We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabetical order): Atmel, Freescale, Limifrog, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, FreshTemp LLC, and Phytec.

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list
    • devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list
    • users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
    • RIOT commits
    • commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications
    • notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

## IRC - Join the RIOT IRC channel at: irc.freenode.net, #riot-os

License

  • Most of 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 are published under a separate, LGPL compatible license (e.g. some files developed by SICS).

All code files contain licensing information.

- C
Published by haukepetersen almost 10 years ago

riot - 2016.04-RC3

- C
Published by haukepetersen almost 10 years ago

riot - 2016.04 RC2

- C
Published by haukepetersen almost 10 years ago

riot - 2016.04-RC1

- C
Published by haukepetersen almost 10 years ago

riot - RIOT-2015.12

RIOT-2015.12 - Release Notes

RIOT is a real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things: 8-bit microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (this API offers 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).

About this release:

This release is mostly a clean-up and bug-fixing release. Besides that, it introduces SAUL, the [S]ensor [A]ctuator [U]ber [L]ayer, which offers a unified API to interact with all different types of sensors and actuators on RIOT supported hardware. Furthermore, it re-enables the support for ICN by integrating CCN-Lite as a package. A lot of new overall documentation was added and existing documentation was improved (http://riot-os.org/api/). In addition, a Vagrant (https://www.vagrantup.com/) configuration file was added to the RIOT repository in order to create reproducible and portable environments that contain all necessary toolchains.

About 222 pull requests with about 631 commits have been merged since the last release and 48 additional issues have been solved. 37 people contributed code in 102 days. 980 files have been touched with ~59779 insertions and ~12115 deletions.

Notations used below:

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

New features and changes

General

Device support

+ SAUL [S]ensor [A]ctuator [U]ber [L]ayer

Core

* replaced deprecated dINT()/eINT() calls by up-to-date disableIRQ()/enableIRQ()/restoreIRQ() calls throughout the whole core

Network Stack

+ TFTP support + 6LoWPAN: Next Header Compression + leaf mode for RPL nodes * RPL: refactoring of instances and dodags (saved 1kB ROM and 0,5kB RAM) * FIB: initial source route support * change to non-blocking 6LoWPAN fragmentation * POSIX sockets: various fixes * periodic stats printing for ping6 command * convert all vtimer into xtimer calls * send router advertisements without PIOs

Packages

+ CCN-Lite as a ICN network stack + RELIC: efficient cryptography library * fix TLSF to compile with -pedantic

Supported platforms

Additional support for the following boards: + weio board with NXP LPC11U34 (ARM Cortex-M0) + Silicon Labs Wireless Eval Kit SLWSTK6220A (Wonder Gecko) + STM32 Nucleo-F401

Drivers

+ Arduino-mega2560 GPIO + Arduino pin mapping for Mega2560 and Due

Network drivers

+ enc28j60 Ethernet chip + at86rf2xx: Add support for channel page * at86rf2xx: fix LQI reading * implement sleep mode for at86rf2xx

Sensors drivers

+ AT30TSE75x temperature sensor + TCS3772 Color Light-to-Digital converter

System libraries

+ partial support for the Arduino API + lightweight semaphores + fmt: simple string formatting library + xtimer: 32-bit version of msgrecvtimeout * implicit socket binding for POSIX connect() and sendto() * posix_semaphore: make API POSIX compliant

Examples

+ microcoap/conn example + minimal GNRC networking example

Build System

* split the Cortex-M0 buildtest group to avoid timeout issues with Travis * split the Cortex-M4 buildtest group to avoid timeout issues with Travis

Other

+ vagrant configuration + documentation: various high-level descriptions of crucial features + IoT-LAB: create and connect to debug server * pyterm: fix problems with German umlauts as input

Fixed Issues from the last release

2724: Add support for serial number passing to CMSIS boards, document it

Documentation about how to discover and set the serial number of CMSIS-DAP chips is missing

3201: Odd length packet snips cause invalid check sum

If an odd length packet snip occurs in a packet and is not the last snip
(in the order the packet is supposed to be, not in the list's order)
in a packet it will generate a wrong check sum.

Known Issues

network related issues

3075: nhdp: unnecessary microsecond precision

NHDP works with timer values of microsecond precision which is not required. Changing
to lower precision would save some memory.

3086: Max. packet length for AT86RF2XX

The size of the link-layer header is not dynamically calculated, but instead the maximum
size is always assumed.

3970: RPL: Advertise DODAG only over the assigned interface

 gnrc_rpl seems to multicast DIOs over all interfaces, though gnrc_rpl_init expects an
 interface as parameter and sets the RPL-nodes multicast address only for that interface.

4048: potential racey memory leak

 According to the packet buffer stats, flood-pinging a multicast destination may lead to a
 memory leak due to a race condition. However, it seems to be a rare case and a
 completely filled up packet buffer was not observed.

4462: IPHC/NHC broken between Linux and a RIOT node with a RIOT-based border router in between.

native related issues

495: native not float safe

When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.

534: native debugging on osx fails

Using valgrind or gdb with a nativenet target in OSX leads to "the network"
being stuck (gdb) or the whole process being stuck (valgrind).

3341 and #3824: nativenet crashes when hammered

Flood-pinging a native instance from more than one host (either multiple threads on the
host system or multiple other native instances), leads to a SEGFAULT.

4608: tests/xtimerusleepuntil: unstable behaviour

The test starts to output "too large difference" and fails after a random period of time.

other platform related issues

4560: make: clang is more pedantic than gcc

oonf_api is not building with clang.

4583: cpp11: clang doesn't allow mutex_t to be used with constexpr

All cpp11-\* tests fail with clang.

other issues

2761: core: define default flags

If a thread is created without the corresponding flag  (CREATE_STACKTEST),
the ps command will yield wrong numbers for the stack usage

2927: core: Automatically select the lowest possible LPM mode

Not all available low power modes (LPMs) are implemented for each platform and the
concept of how the LPM is chosen needs some reconsideration

2967: Makefile.features: location is not relevant for all features

Provided features for the build system should be split up into a board and cpu specific
part

3109: periph/random: random_read should return unsigned int

The documentation of this function does not match corresponding implementation.

4488: Making the newlib thread-safe

When calling puts/printf after thread_create(), the CPU hangs for DMA enabled uart drivers.

Special Thanks

We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabetical order): Atmel, Freescale, Limifrog, Phytec, SiLabs, and Zolertia; and also companies that directly sponsored development time: Cisco Systems, Google, Eistec, Ell-i, Engineering Spirit, FreshTemp LLC, and Phytec.

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list
    • devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list
    • users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits
    • commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications
    • notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

License

  • Most of 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 are published under a separate, LGPL compatible license (e.g. some files developed by SICS).

All code files contain licensing information.

- C
Published by cgundogan about 10 years ago

riot - RIOT-2015.09

RIOT-2015.09 - Release Notes

RIOT is a real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things: devices based on 8-bit microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (this API offers 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).

About this release:

This release introduces the GNRC network stack, a completely new, highly modularized and configurable IPv6/6LoWPAN stack. It also includes xtimer as a new timer subsystem for accurate short- and long-term timers. Moreover, peripheral drivers, board, and CPU support has been tidied up and contains about 50% less duplication in the build system.

About 580 pull requests with about 2,500 commits have been merged since the last release and 120 additional issues have been solved. 62 people contributed code in 278 days. 2578 files have been touched with ~320,000 insertions and ~134,000 deletions.

Loose notations used below:

  • means new feature/item
  • means modified feature/item
  • means removed feature/item

New features

General

  • complete codebase now compiles with -Werror on all platforms

Device support

  • vastly improved hardware abstraction, unified over all devices
  • unified most common code
  • complete refactoring of MSP430 and ARM7 code

Core

  • new timer subsystem: xtimer
  • extended atomic API by compare-and-swap, increase/decrease and set-to-one/set-to-zero functions
  • introduced a more energy-saving assert macro

Network Stack

  • RFC compliant gnrc network stack (6LoWPAN, IPv6, UDP, RPL) major refactoring
  • 6LoWPAN ND (including SLAAC)
  • example applications working out of the box (gnrcnetworking for the full gnrc experience, gnrcborder_router for a 6LoWPAN border router, and default for simple link layer connectivity)
  • explicit support for border router
  • auto-init for the network stack
  • introduction of generic interfaces (netdev, netapi)
  • introduction of a protocol-independent FIB
  • introduction of a central packet buffer
  • wireshark-supported protocol ZEP to send IEEE 802.15.4 frames over UDP on non-IEEE-802.15.4 devices
  • support for SLIP and link-layers without addresses
  • new low-level driver model
  • new nativenet based directly on ethernet
  • conn: general stack-independent transport layer API
  • POSIX sockets ported for conn
  • NHDP support

Packages

  • support for microCoAP
  • CMSIS DSP

Supported platforms

Additional support for the following boards: - Zolertia ReMote - Atmel SAML21 Xplained Pro (saml21-xpro) - ST Nucleo L1 - ST Nucleo F334 - ST Nucleo F091 - Phytec phyWAVE KW22 - Eistec Mulle - Freescale Freedom FRDM-K64F - TI Stellaris Launchpad LM4F120 - LimiFrog V1 - Silabs EZR32WG

Drivers

  • various peripheral drivers (ADC, UART, timer, SPI, I²C, RTC, RTT, DAC, PWM...)
  • basic NVRAM driver (interface)

Network drivers - native ethernet driver - ENCx24J600 ethernet driver

Sensors drivers - ISL29125 RGB light sensor - PDC8544 LCD display - INA220 current and power monitor - MPU-9150 9-DOF motion sensor - LIS3DH accelerometer - TMP006 temperature sensor - MAG3110 magnetometer - MMA8652 accelerometer - DHT11/DHT22 temperature-humidity sensor - ADT7310 temperature sensor

System libraries

  • MD5
  • Fletcher's checksum
  • Unified Cipher API and Block cipher operation modes: ECB, CBC, CTR and CCM
  • Bitfield operations
  • thread safe ringbuffer
  • vtimer compatibility layer

Build System

  • support for the FIT IoT-LAB testbed by direct integration into the Make build system
  • integrated Docker support
  • integration of llvm's clang static analyzer
  • added target for the address sanitizer
  • indicating possible feature conflicts at compile time
  • unified OpenOCD script

Changes

Core

  • improved documentation
  • fixed several IPC message queue initializations
  • removed hwtimer

Drivers

  • optimized/remodeled GPIO interface
  • optimized/remodeled TIMER interface
  • temporarily removed CC2420 driver (awaiting last bug fixes for a rewrite)
  • re-implementation of the CC110x driver against the peripheral interface

Network Stack

  • temporarily removed and currently being refactored:
    • TCP support
    • CCN-lite
    • AODVv2

System libraries

  • new high level UART/stdio interface
  • better modularisation of POSIX wrapper modules
  • removed skipjack crypto library

Packages

  • updated CMSIS HAL to version 4.3

Other

  • clean-up of deprecated system and network libraries
  • clean-up of deprecated boards and drivers

Selected Issues Fixed since the Last Release

21: Deal with stdin in bordermultiplex.c

A completely new border router implementation is in place

715: testhwtimerwait fails on native

Fixed by @benoit-canet in #2870

861: neighbor discovery for 6LoWPAN not working

GNRC implements 6LoWPAN ND in a RFC6775 compliant way

1753: vtimer_msg test crashes after ~49'20" and

1449: a removed vtimer might still get called back by hwtimer

vtimer has been replaced by xtimer which does not have these issues

1870: IPv6 neighbor advertisements are malformed

According to Wireshark (and reference implementations) GNRC sends
well-formed neighbor advertisements

1964 and #1955: eventual problems with IoT-LAB M3 nodes in the testbed

Solved by new driver versions for UART and radio

2228: samd21 stack sizes are too small

The stacksize has been adapted in #2229

Known Issues

network related issues

3075: nhdp: unnecessary microsecond precision

NHDP works with timer values of microsecond precision which is not
required. Changing to lower precision would save some memory.

3086: Max. packet length for AT86RF2XX

The size of the link-layer header is not dynamically calculated, but
instead the maximum# size is always assumed.

3201: Odd length packet snips cause invalid check sum

If an odd length packet snip occurs in a packet and is not the last snip
(in the order the packet is supposed to be, not in the list's order) in  a
packet it will generate a wrong check sum.

4048: potential racey memory leak

According to the packet buffer stats, flood-pinging a multicast destination
may lead to a memory leak due to a race condition. However, it seems to be
a rare case and a completely filled up packet buffer was not observed.

native related issues

495: native not float safe

When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.

499: native is segfaulting on heavy network usage

Sending more than 100 packets per second causes a SEGFAULT in RIOT native.

534: native debugging on osx fails

Using valgrind or gdb with a nativenet target in OSX leads to "the network"
being stuck (gdb) or the whole process being stuck (valgrind).

3341 and #3824: nativenet crashes when hammered

Flood-pinging a native instance from more than one host (either multiple
threads on the host system or multiple other native instances), leads to a
SEGFAULT.

other platform related issues

2724: Add support for serial number passing to CMSIS boards, document it

Documentation about how to discover and set the serial number of CMSIS-DAP
chips is missing

other issues

2761: core: define default flags

 If a thread is created without the corresponding flag  (CREATE_STACKTEST),
 the ps command will yield wrong numbers for the  stack usage

2927: core: Automatically select the lowest possible LPM mode

Not all available low power modes (LPMs) are implemented for each platform
and the concept of how the LPM is chosen need some reconsideration

2967: Makefile.features: location is not relevant for all features

Provided features for the build system should be split up into a board and
cpu specific part

3109: periph/random: random_read should return unsigned int

The documentation of this function does not match corresponding
implementation.

Special Thanks

We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabetical order): Atmel, Freescale, Limifrog, Phytec, SiLabs, and Zolertia; and also companies that directly sponsored development time: Cisco Systems, Eistec, Ell-i, FreshTemp LLC, and Phytec.

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list
    • devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list
    • users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits
    • commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications
    • notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC

  • Join the RIOT IRC channel at: irc.freenode.net, #riot-os

License

  • Most of 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 are published under a separate, LGPL compatible license (e.g. some files developed by SICS).

All code files contain licensing information.

- C
Published by OlegHahm over 10 years ago

riot - RIOT-2014.12

RIOT-2014.12 - Release Notes

RIOT is a real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things: from 8-bit microcontrollers to light-weight 32-bit processors. RIOT is based on the following design principles: energy-efficiency, real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (this API offers partial POSIX compliance).

New features

Core

  • introduced new threadyield() and renamed the old implementation to threadyield_higher()

Supported platforms

Additional support for the following boards: - Arduino Mega 2560 (first-time support of an 8-bit platform) - HikoB Fox - Atmel samr21-Xplained Pro - OpenMote - cc2538 Developer Kit - Spark-Core - f4vi1 - Airfy-Beacon - STMF0Discovery Board - STMF3Discovery Board - STMF4Discovery Board - nrf51822 Development Kit - yunjia-nrf51822 - MSB-IoT - native on ARM platforms

Drivers

  • various peripheral drivers (ADC, UART, timer, SPI, I²C, RTC, RTT, DAC, PWM...)
  • MQ-3 alcohol sensor
  • ISL29020 light sensor
  • LPS331AP pressure sensor
  • LSM303DLHC accelerometer
  • L3G4200D gyroscope
  • servo motor
  • TI HDC 1000 low power humidity and temperature digital sensor
  • SRF02/SRF08 ultrasonic range sensors
  • PIR motion sensor
  • RGB LED

Network Stack

  • AODVv2
  • RPL non-storing mode
  • OF manager for RPL
  • Source Routing Header support
  • introduced netapi
  • introduced netdev, a general interface for network device drivers
  • introduced global packet buffer

System libraries

  • CBOR
  • UBJSON
  • color module for PWM

Packages

  • libfixmath

Other

  • C++ support for most platforms
  • PCAP based wireless sniffer

Changes

Core

  • PIDs begin with 1
  • mamximum 16 priority levels for every platform
  • fixed sched_switch()
  • simplified mutex signatures
  • minimized size of TCB
  • allow hwtimer to run with more than 1MHz
  • imported ringbuffer from sys

Supported platforms

  • improved iot-lab_M3 support
  • major improvements on the mbed LPC1768
  • improved at86rf231 radio driver
  • fixed hwtimer for MSP430
  • added support for timer B for MSP430
  • fixed thread_yield() for MSP430
  • several fixes for the cc2420
  • improved interrupt handling on ARM
  • adjusted stack sizes for Cortex platforms

Network Stack

  • refactored CCN-lite
  • refactored RPL
  • renamed destiny to transportlayer and socketbase
  • several fixes for TCP
  • split UDP and TCP

System libraries

  • removed hashtable implementation

Packages

  • updated and simplified OpenWSN

Other

  • Improved and cleaned up build system
  • various new helper targets (like debug, distclean, reset, objdump...)
  • use newlib's nano specs if available
  • various new features and added Python 3 compatibility for pyterm
  • major reduction of warnings in doxygen and improved html layout

Fixed Issues from the last release

426: Interrupt handling on MSP430 is buggy

Several fixes by @rousselk

1798: core: first thread on runqueue is scheduled twice

Was fixed along with the thread_yield() refactoring

1127: Random build fails on OSX

native is building stable also on OSX now

Known Issues

network related issues

21: Deal with stdin in bordermultiplex.c

Not all supported platforms provide a stdin in the current release.
However, the implementation of the 6LoWPAN border router won't work
without stdin.

861: neighbor discovery for 6LoWPAN not working

Duplicate address detection according to RFC 6775 is also missing.

1577: ccn-lite: populate does not work with disabled cache

If cache is set to zero, the chunks cannot be loaded and therefore also not get populated.

1870: IPv6 neighbor advertisements are malformed

According to Wireshark, ICMPv6 neighbor advertisements are malformed (wrong 
checksum or other reasons).

native related issues

495: native not float safe

When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.

499: native is segfaulting on heavy network usage

Sending more than 100 packets per second causes a SEGFAULT in RIOT native.

534: native debugging on osx fails

Using valgrind or gdb with a nativenet target in OSX leads to "the network"
being stuck (gdb) or the whole process being stuck (valgrind).

715: testhwtimerwait fails on native

The problem appears to be lost signals and depends on the CPU speed.

787: reboot not working with open file descriptors on native

If for example a tap device is in use, the reboot command fails.

862: sometimes the tap bridge does not work in native

Sometimes (rather suddenly) packages are not received by a TAP and won't be
received even if I reconfigure the bridge.

other platform related issues

1232: x86 doesn't build on OS X with clang

Current version of the x86 port doesn't build for OS X with clang.

1442: setting channel is not persistent cc2420

After changing the channel via a shell command, the channel reverts back to an arbitrary 
value. However, this might be only a shell problem.

1753: vtimer_msg test crashes after ~49'20"

dependent on the platform, vtimer stops working after some time.

1891: printf formatting does not work properly on some Cortex platforms for 64 bit numbers

This problem happens mostly for the Newlib nano, which does not support 64 bit integer 
printing, but sometimes happens also with other toolchains.

1964 and #1955: eventual problems with IoT-LAB M3 nodes in the testbed

The shell is sometimes not properly working after a reboot and the PDR is sometimes 
worse than expected.

2143: tests.core doesn't compile for all platforms

For some missing GCC compiler builtins, the unittests do not compile for MSP430
platforms.

2228: samd21 stack sizes are too small

The application examples/default for example will crash when issuing the txtsnd command

other issues

1449: a removed vtimer might still get called back by hwtimer

The timer callback might still fire even after vtimer_remove() was called.

2175: valgrind registeres "Invalid write of size 4" in unittests for ubjson

 According to valgrind the stack gets corrupted in UBJSON.

For all issues and open pull requests please check the RIOT issue tracker: https://github.com/RIOT-OS/RIOT/issues

Special Thanks

We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabetical order): airfy, Atmel, ELL-i, Intel, IoT-Lab, mbed, Phytec, and Udoo

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list
    • devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list
    • users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits
    • commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications
    • notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

License

  • All sources and binaries that have been developed at Freie Universität Berlin and most of the other code are licensed under the GNU Lesser General Public License version 2 as published by the Free Software Foundation.
  • Some external sources, especially files developed by SICS are published under a separate license.

All code files contain licensing information.

- C
Published by OlegHahm about 11 years ago

riot - RIOT-2014.05

RIOT-2014.05 - Release Notes

RIOT is a real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things: from 16-bit microcontrollers to light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (this API offers partial POSIX compliance).

New features

Core

  • introduced explicit core/cpu interface through a set of header files
  • added reboot and panic functions
  • added a node name to the sysconfig struct
  • added the ability to send a message to the current thread's message queue

Supported platforms

Additional support for the following boards: - Arduino Due - UDOO board - X86 via qemu - Zolertia Z1

Network stack

  • added net_if as abstraction layer between transceiver module and L3 protocol
  • added support for auto initializing of the 6LoWPAN network stack
  • added support for RFC5444 via oonf_api (from OLSR.org)
  • added a Wireshark dissector for nativenet packets
  • introduced low-level radio driver interface
  • added a default transceiver for all boards
  • common IEEE 802.15.4 radio driver API definition
  • added standard way to query CCA (Clear Channel Assessment) status
  • enabled nonces in interests for CCN-lite (Content Centric Networking)
  • added a route shell command

System libraries

  • added quad-precision math library (quad_math)

Automated Testing

  • added Travis CI based build tests
  • added support for a Jenkins CI server
  • added a unittest framework (based on embunit)
  • added unittests for most core functions

POSIX compliance

  • pthread support including
    • dynamic memory pool and cleanup handlers
    • mutexes
    • condition variable implementation
    • reader/writer lock
    • pthreadbarrier* functions

Native

  • added a valgrind and cachegrind targets
  • added profiling support

Changes

Core

  • initialize hwtimer automatically
  • optimized thread status field usage
  • moved oneway_malloc to sys
  • prefixed API functions correctly

Network stack

  • major refactoring and decoupling
  • refactor use of vtimer
  • fixed forwarding
  • added IoT-LAB M3 Open Node support and dropped TelosB support temporarily for OpenWSN
  • moved ETX beaconing to a module on its own
  • various byte order and other bug fixes

Drivers

  • added low-level driver interface for unified CPU peripheral abstraction for GPIO, ADC, PWM, Timer and UART
  • handle race conditions preventing timers to be set correctly on MSP430 MCUs
  • several CC2420 fixes

System libraries

  • auto_init is used by default
  • changed function prototype for shell handlers

Other

  • cleaned up Makefile system and simplified binary directory
  • improved documentation for core and sys
  • build system uses PKG dependency
  • build system sets include paths automatically
  • black and white lists for applications and tests
  • add stacksize checker for DEBUG macro
  • styling corrections
  • fixed license boiler plates
  • set lpc2k_pgm return value correctly
  • various bug fixes and cleanups

Fixed Issues from the last release

45: bit field order in the fcf may be wrong

The CC2420 FIFO expects the IEEE802.15.4 FCF field in reversed bit order.
With this release the byte order is now handled by the net_if module and
all device specific handling is done by the driver.

82: Setting STATUSREPLYBLOCKED thread to STATUS_PENDING though it is not

 handled yet
In some rare cases the status of a thread might falsely change to
STATUS_PENDING instead of STATUS_REPLY_BLOCKED.

455: sha256 is broken on MSP430

Fixed.

498: native is segfaulting at startup

Fixed by several PRs (#501, #583, and #588).

505: native on FreeBSD is broken

Fixed by PR #1022.

Known Issues

network related issues

21: Deal with stdin in bordermultiplex.c

Not all supported platforms provide a stdin in the current release.
However, the implementation of the 6LoWPAN border router won't work
without stdin.

861: neighbor discovery for 6LoWPAN not working

Duplicate address detection according to RFC 6775 is also missing.

native related issues

495: native not float safe

When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.

499: native is segfaulting on heavy network usage

Sending more than 100 packets per second causes a SEGFAULT in RIOT native.

534: native debugging on osx fails

Using valgrind or gdb with a nativenet target in OSX leads to "the network"
being stuck (gdb) or the whole process being stuck (valgrind).

715: testhwtimerwait fails on native

The problem appears to be lost signals and depends on the CPU speed.

787: reboot not working with open file descriptors on native

If for example a tap device is in use, the reboot command fails.

862: sometimes the tap bridge does not work in native

Sometimes (rather suddenly) packages are not received by a TAP and won't be
received even if I reconfigure the bridge.

1127: Random build fails on OSX

Building for native on OSX often fails - Workaround: build using  -B  flag,
e.g.:  make -B clean all

other platform related issues

426: Interrupt handling on MSP430 is buggy

UART and timer handling is currently unstable on MSP430 based platforms

1232: x86 doesn't build on OS X with clang

Current version of the x86 port doesn't build for OS X with clang.

For all issues and open pull requests please check the RIOT issue tracker: https://github.com/RIOT-OS/RIOT/issues

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list
    • devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list
    • users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits
    • commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications
    • notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

License

  • All sources and binaries that have been developed at Freie Universität Berlin and most of the other code are licensed under the GNU Lesser General Public License version 2 as published by the Free Software Foundation.
  • Some external sources, especially files developed by SICS are published under a separate license.

All code files contain licensing information.

- C
Published by OlegHahm over 11 years ago

riot - RIOT-2013.08

RIOT-2013.08 - Release Notes

RIOT is a real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things: from 16-bit microcontrollers to light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (this API offers partial POSIX compliance).

RIOT leverages a robust micro-kernel architecture based on the FeuerWare kernel originally developed in 2008 targeting Wireless Sensor Networks, and further developed in µkleos. As such, RIOT is the direct heir of FeuerWare and µkleos.

To lower the hurdles for new developers, all coding in RIOT can be done in standard C (or C++) with standard tools like gcc and gdb, which also facilitates application development and adaptation of existing Linux libraries. Last but not least: the native port allows to run RIOT as-is on Linux and MacOS. Multiple instances of RIOT running on a single machine can also be interconnected via a simple virtual Ethernet bridge, which facilitates networked application development.

Features

Kernel

  • Microkernel with a powerful messaging system
  • Multi-Threading with low overhead
  • an energy-efficient, real-time capable scheduler
  • small memory footprint

Userspace

  • 6LoWPAN according to RFC 4944, RFC 6282, and RFC 6775
  • TCP and UDP
  • RPL according to RFC 6550 and RFC 6719
  • High resolution and long-term timers
  • POSIX IO and BSD socket API
  • Bloom filter
  • SHA256

Hardware Support

  • various ARM and MSP430 MCUs
    • ARM7 NXP LPC2387
    • TI MSP430F1612
    • TI CC430F6137
    • ARM7 Freescale MC13224v (preliminary)
    • ARM Cortex-M4 STM32f407vgt6 (preliminary)
    • ARM Cortex-M3 STM32f103rey6 (preliminary)
  • radio drivers
    • TI CC1100 and CC1101
    • TI CC2420
    • Atmel AT86RF231
  • sensor drivers
    • Sensirion SHT11
    • Linear Technology LT4150

Known Issues

21: Deal with stdin in bordermultiplex.c

Not all supported platforms provide a stdin in the current release.
However, the implementation of the 6LoWPAN border router won't work
without stdin.

45: bit field order in the fcf may be wrong

The CC2420 FIFO expects the IEEE802.15.4 FCF field in reversed bit order.
This might break the implementation for other, upcoming radio
transceivers.

83: Wrong byte order in sixlowpan

The 6LoWPAN stack might still contain some variables using the wrong byte
order.

132: segfault in vtimer update shortterm

The vtimer is known to be buggy on all platforms and causes segmentation
faults on the native port.

For more issues please check the RIOT issue tracker: https://github.com/RIOT-OS/RIOT/issues

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list
    • devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list
    • users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits
    • commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications
    • notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

License

  • All sources and binaries that have been developed at Freie Universität Berlin are licensed under the GNU Lesser General Public License version 2 as published by the Free Software Foundation.
  • Some external sources, especially files developed by SICS are published under a separate license.

All code files contain licensing information.

- C
Published by OlegHahm almost 12 years ago

riot - RIOT-2014.01

RIOT is a real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things: from 16-bit microcontrollers to light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (this API offers partial POSIX compliance).

New features

Core

  • msg_receive() with timeout
  • LPM support for MSP430 based platforms
  • introduced a version string

Supported platforms

Additional support for the following boards: - TelosB - mbed LPC1768

Sensor drivers

  • drivers for the LM75A Digital temperature sensor and thermal watchdog
  • SRF02 and SRF08 ultrasonic range finders

Native port

  • implemented UART via I/O redirection or TCP and UNIX socket

System libraries

  • Mersenne twister pseudorandom number generator
  • crypto libraries
    • 3des
    • aes
    • rc5
    • skipjack
    • twofish
  • BSD-like package system for easy integration of external libraries

Network stack

  • port of CCN lite
  • POSIX socket wrapper
  • integration of libcoap
  • integration of OpenWSN

Further Changes

  • boards and projects repositories have been integrated and are now part of the RIOT repository itself
  • full refactoring of the network stack and introducing a substructure according to the modules' functionalities
  • cleaned up Makefile system and simplified binary folder
  • more documentation
  • various bug fixes and cleanups

Fixed Issues from the last release

83: Wrong byte order in sixlowpan

To our best knowledge all occurrences of wrong byte order within the 6LoWPAN
network stack are fixed now.

132: segfault in vtimer update shortterm

The vtimer has been carefully evaluated and all known issues concerning this
module are fixed.

Known Issues

21: Deal with stdin in bordermultiplex.c

Not all supported platforms provide a stdin in the current release.
However, the implementation of the 6LoWPAN border router won't work
without stdin.

45: bit field order in the fcf may be wrong

The CC2420 FIFO expects the IEEE802.15.4 FCF field in reversed bit order.
This might break the implementation for other, upcoming radio
transceivers.

82: Setting STATUSREPLYBLOCKED thread to STATUS_PENDING though it is not

 handled yet
In some rare cases the status of a thread might falsely change to
STATUS_PENDING instead of STATUS_REPLY_BLOCKED.

426: Interrupt handling on MSP430 is buggy

UART and timer handling is currently unstable on MSP430 based platforms.

455: sha256 is broken on MSP430

For unknown reasons sha256 calculates wrong results on MSP430 based platforms.

495: native not float safe

When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.

498: native is segfaulting at startup

In some cases (about 5-10%) a RIOT native process crashes with a SEGFAULT
at startup.

499: native is segfaulting on heavy network usage

Sending more than 100 packets per second causes a SEGFAULT in RIOT native.

505: native on FreeBSD is broken

Due to different parameter handling in FreeBSD, native is currently not
working there.

For all issues and open pull requests please check the RIOT issue tracker: https://github.com/RIOT-OS/RIOT/issues

Release 2013.08

Kernel

  • Microkernel with a powerful messaging system
  • Multi-Threading with low overhead
  • an energy-efficient, real-time capable scheduler
  • small memory footprint

Userspace

  • 6LoWPAN according to RFC 4944, RFC 6282, and RFC 6775
  • TCP and UDP
  • RPL according to RFC 6550 and RFC 6719
  • High resolution and long-term timers
  • POSIX IO and BSD socket API
  • Bloom filter
  • SHA256

Hardware Support

  • various ARM and MSP430 MCUs
    • ARM7 NXP LPC2387
    • TI MSP430F1612
    • TI CC430F6137
    • ARM7 Freescale MC13224v (preliminary)
    • ARM Cortex-M4 STM32f407vgt6 (preliminary)
    • ARM Cortex-M3 STM32f103rey6 (preliminary)
  • radio drivers
    • TI CC1100 and CC1101
    • TI CC2420
    • Atmel AT86RF231
  • sensor drivers
    • Sensirion SHT11
    • Linear Technology LT4150

More information

http://www.riot-os.org

Mailing lists

  • RIOT OS kernel developers list
    • devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
  • RIOT OS users list
    • users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
  • RIOT commits
    • commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
  • Github notifications
    • notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

License

  • All sources and binaries that have been developed at Freie Universität Berlin are licensed under the GNU Lesser General Public License version 2 as published by the Free Software Foundation.
  • Some external sources, especially files developed by SICS are published under a separate license.

All code files contain licensing information.

- C
Published by OlegHahm about 12 years ago