boards/seeedstudio-xiao-nrf52840: initial board support
Contribution description
Initial board support for the tiny Seed Studio XIAO nRF52840. It uses the same bootloader as the Adafruit nrf52840 Feather (Sense) boards.
Testing procedure
-
I'm still in the process of running
BUILD_IN_DOCKER=1 dist/tools/compile_and_test_for_board/compile_and_test_for_board.py . seeedstudio-xiao-nrf52840locally and will report back with the result later. -
Look through the header and configuration files. I've mostly followed the example from
feather-nrf52840-senseandnrf52840dk(for the external flash). -
Check generated documentation for the board.
- I'm still in the process of running
BUILD_IN_DOCKER=1 dist/tools/compile_and_test_for_board/compile_and_test_for_board.py . seeedstudio-xiao-nrf52840locally and will report back with the result later.
Currently failing tests:
$ find results -name "*.failed"
results/seeedstudio-xiao-nrf52840/tests/sys/congure_test/test.failed
results/seeedstudio-xiao-nrf52840/tests/sys/pthread_flood/test.failed
results/seeedstudio-xiao-nrf52840/tests/sys/congure_quic/test.failed
results/seeedstudio-xiao-nrf52840/tests/sys/usbus/test.failed
results/seeedstudio-xiao-nrf52840/tests/sys/shell/test.failed
results/seeedstudio-xiao-nrf52840/tests/core/thread_msg/test.failed
results/seeedstudio-xiao-nrf52840/tests/core/msg_queue_print/test.failed
results/seeedstudio-xiao-nrf52840/tests/riotboot/test.failed
results/seeedstudio-xiao-nrf52840/tests/turo/test.failed
results/seeedstudio-xiao-nrf52840/tests/cpu/mpu_noexec_ram/test.failed
results/seeedstudio-xiao-nrf52840/tests/cpu/mpu_stack_guard/test.failed
results/seeedstudio-xiao-nrf52840/tests/riotboot_hdr/test.failed
results/seeedstudio-xiao-nrf52840/tests/pkg/libschc/test.failed
Most of those are software-only and won't depend on the board.
compile_and_test_for_board.py isn't the greatest way to test a board, there are tests/periph/spi, tests/periph/uart and tests/drivers/mtd_raw that come with a test command but that requires RX/TX / MISO/MOSI to be connected or a writable MTD device (in case the board exposes MTD). ``tests/periph/i2calso includesi2c_scan, but that can be included everywhere with shell_cmd_i2c_scan`.
(Thinking of it, we should probably add a general board test app that makes it easier to evaluate a newly ported board)
Most of those are software-only and won't depend on the board.
True, but I've still managed to find some issues which are at least board-related :)
there are
tests/periph/spi,tests/periph/uartandtests/drivers/mtd_raw
Great, I'll have a look! Do we have a list of such useful test applications for new boards somewhere? May be good to add a pointer to the documentation.
(Thinking of it, we should probably add a general board test app that makes it easier to evaluate a newly ported board)
Or even better!
tests/periph/uart: :heavy_check_mark: SUCCESS
with UART pins connected (TX to RX)
make -C tests/periph/uart BOARD=seeedstudio-xiao-nrf52840 flash term
make: Entering directory '/home/mikolai/TUD/Code/RIOT-build/tests/periph/uart'
Building application "tests_uart" for "seeedstudio-xiao-nrf52840" with CPU "nrf52".
"make" -C /home/mikolai/TUD/Code/RIOT-build/pkg/cmsis/
"make" -C /home/mikolai/TUD/Code/RIOT-build/boards/common/init
"make" -C /home/mikolai/TUD/Code/RIOT-build/boards/seeedstudio-xiao-nrf52840
"make" -C /home/mikolai/TUD/Code/RIOT-build/core
"make" -C /home/mikolai/TUD/Code/RIOT-build/core/lib
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf52
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/cortexm_common
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/cortexm_common/periph
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf52/periph
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf52/vectors
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf5x_common
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf5x_common/periph
"make" -C /home/mikolai/TUD/Code/RIOT-build/drivers
"make" -C /home/mikolai/TUD/Code/RIOT-build/drivers/periph_common
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/auto_init
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/auto_init/usb
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/div
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/event
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/fmt
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/frac
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/isrpipe
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/libc
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/luid
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/malloc_thread_safe
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/newlib_syscalls_default
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/preprocessor
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/shell
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/stdio
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/tsrb
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/usb/usbus
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/usb/usbus/cdc/acm
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/usb_board_reset
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/ztimer
text data bss dec hex filename
28324 132 6324 34780 87dc /home/mikolai/TUD/Code/RIOT-build/tests/periph/uart/bin/seeedstudio-xiao-nrf52840/tests_uart.elf
stty -F /dev/ttyACM0 raw ispeed 1200 ospeed 1200 cs8 -cstopb ignpar eol 255 eof 255
sleep 10
/home/mikolai/TUD/Code/RIOT-build/dist/tools/uf2/uf2conv.py -f 0xADA52840 /home/mikolai/TUD/Code/RIOT-build/tests/periph/uart/bin/seeedstudio-xiao-nrf52840/tests_uart.hex --base 0x1000
Converted to uf2, output size: 57344, start address: 0x1000
Flashing /media/mikolai/XIAO-SENSE (Seeed_XIAO_nRF52840_Sense)
Wrote 57344 bytes to /media/mikolai/XIAO-SENSE/NEW.UF2
sleep 2
/home/mikolai/TUD/Code/RIOT-build/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200" -ln "/tmp/pyterm-mikolai" -rn "2024-11-25_16.37.17-tests_uart-seeedstudio-xiao-nrf52840"
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2024-11-25 16:37:17,369 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2024-11-25 16:37:18,371 # data
2024-11-25 16:37:18,372 # being printed to STDOUT
2024-11-25 16:37:18,372 #
2024-11-25 16:37:18,373 # NOTE: all strings need to be '\n' terminated!
2024-11-25 16:37:18,373 #
2024-11-25 16:37:18,373 #
2024-11-25 16:37:18,373 # UART INFO:
2024-11-25 16:37:18,374 # Available devices: 1
> test 0
2024-11-25 16:37:20,905 # test 0
2024-11-25 16:37:20,905 # [START]
2024-11-25 16:37:20,935 # warning: unsupported baudrate 48000
2024-11-25 16:37:20,939 # warning: unsupported baudrate 67200
2024-11-25 16:37:20,942 # warning: unsupported baudrate 86400
2024-11-25 16:37:20,943 # warning: unsupported baudrate 96000
2024-11-25 16:37:20,944 # warning: unsupported baudrate 105600
2024-11-25 16:37:20,944 # [SUCCESS]
> /exit
2024-11-25 16:37:55,158 # Exiting Pyterm
make: Leaving directory '/home/mikolai/TUD/Code/RIOT-build/tests/periph/uart'
tests/periph/spi: :heavy_check_mark: SUCCESS
with SPI pins connected (MOSI to MISO)
make -C tests/periph/spi BOARD=seeedstudio-xiao-nrf52840 flash term
make: Entering directory '/home/mikolai/TUD/Code/RIOT-build/tests/periph/spi'
Building application "tests_spi" for "seeedstudio-xiao-nrf52840" with CPU "nrf52".
"make" -C /home/mikolai/TUD/Code/RIOT-build/pkg/cmsis/
"make" -C /home/mikolai/TUD/Code/RIOT-build/boards/common/init
"make" -C /home/mikolai/TUD/Code/RIOT-build/boards/seeedstudio-xiao-nrf52840
"make" -C /home/mikolai/TUD/Code/RIOT-build/core
"make" -C /home/mikolai/TUD/Code/RIOT-build/core/lib
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf52
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/cortexm_common
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/cortexm_common/periph
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf52/periph
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf52/vectors
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf5x_common
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf5x_common/periph
"make" -C /home/mikolai/TUD/Code/RIOT-build/drivers
"make" -C /home/mikolai/TUD/Code/RIOT-build/drivers/periph_common
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/auto_init
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/auto_init/usb
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/div
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/event
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/fmt
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/frac
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/isrpipe
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/libc
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/luid
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/malloc_thread_safe
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/newlib_syscalls_default
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/preprocessor
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/schedstatistics
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/shell
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/shell/cmds
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/stdio
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/tsrb
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/usb/usbus
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/usb/usbus/cdc/acm
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/usb_board_reset
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/ztimer
text data bss dec hex filename
30272 168 5704 36144 8d30 /home/mikolai/TUD/Code/RIOT-build/tests/periph/spi/bin/seeedstudio-xiao-nrf52840/tests_spi.elf
stty -F /dev/ttyACM0 raw ispeed 1200 ospeed 1200 cs8 -cstopb ignpar eol 255 eof 255
sleep 10
/home/mikolai/TUD/Code/RIOT-build/dist/tools/uf2/uf2conv.py -f 0xADA52840 /home/mikolai/TUD/Code/RIOT-build/tests/periph/spi/bin/seeedstudio-xiao-nrf52840/tests_spi.hex --base 0x1000
Converted to uf2, output size: 60928, start address: 0x1000
Flashing /media/mikolai/XIAO-SENSE (Seeed_XIAO_nRF52840_Sense)
Wrote 60928 bytes to /media/mikolai/XIAO-SENSE/NEW.UF2
sleep 2
/home/mikolai/TUD/Code/RIOT-build/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200" -ln "/tmp/pyterm-mikolai" -rn "2024-11-25_16.46.30-tests_spi-seeedstudio-xiao-nrf52840"
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2024-11-25 16:46:30,424 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2024-11-25 16:46:31,426 # -board-xiao-nrf52840)
2024-11-25 16:46:31,427 # Manual SPI peripheral driver test (see README.md)
2024-11-25 16:46:31,428 # There are 2 SPI devices configured for your platform.
init 0 0 0
2024-11-25 16:46:38,372 # init 0 0 0
2024-11-25 16:46:38,373 # Trying to initialize SPI_DEV(0): mode: 0, clk: 0, cs_port: 0, cs_pin: 0
2024-11-25 16:46:38,383 # (if below the program crashes with a failed assertion, then it means the configuration is not supported)
2024-11-25 16:46:38,383 # Success.
> send hello
2024-11-25 16:46:43,524 # send hello
2024-11-25 16:46:43,525 # Sent bytes
2024-11-25 16:46:43,533 # 0 1 2 3 4
2024-11-25 16:46:43,534 # 0x68 0x65 0x6c 0x6c 0x6f
2024-11-25 16:46:43,534 # h e l l o
2024-11-25 16:46:43,534 #
2024-11-25 16:46:43,535 # Received bytes
2024-11-25 16:46:43,535 # 0 1 2 3 4
2024-11-25 16:46:43,536 # 0x68 0x65 0x6c 0x6c 0x6f
2024-11-25 16:46:43,536 # h e l l o
2024-11-25 16:46:43,536 #
>
tests/drivers/mtd_raw: :heavy_check_mark: SUCCESS
make -C tests/drivers/mtd_raw BOARD=seeedstudio-xiao-nrf52840 flash term
make: Entering directory '/home/mikolai/TUD/Code/RIOT-build/tests/drivers/mtd_raw'
Building application "tests_mtd_raw" for "seeedstudio-xiao-nrf52840" with CPU "nrf52".
"make" -C /home/mikolai/TUD/Code/RIOT-build/pkg/cmsis/
"make" -C /home/mikolai/TUD/Code/RIOT-build/boards/common/init
"make" -C /home/mikolai/TUD/Code/RIOT-build/boards/seeedstudio-xiao-nrf52840
"make" -C /home/mikolai/TUD/Code/RIOT-build/core
"make" -C /home/mikolai/TUD/Code/RIOT-build/core/lib
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf52
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/cortexm_common
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/cortexm_common/periph
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf52/periph
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf52/vectors
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf5x_common
"make" -C /home/mikolai/TUD/Code/RIOT-build/cpu/nrf5x_common/periph
"make" -C /home/mikolai/TUD/Code/RIOT-build/drivers
"make" -C /home/mikolai/TUD/Code/RIOT-build/drivers/mtd
"make" -C /home/mikolai/TUD/Code/RIOT-build/drivers/mtd_spi_nor
"make" -C /home/mikolai/TUD/Code/RIOT-build/drivers/periph_common
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/auto_init
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/auto_init/usb
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/div
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/event
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/fmt
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/isrpipe
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/libc
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/luid
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/malloc_thread_safe
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/newlib_syscalls_default
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/od
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/preprocessor
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/shell
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/shell/cmds
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/stdio
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/test_utils/interactive_sync
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/test_utils/print_stack_usage
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/tsrb
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/usb/usbus
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/usb/usbus/cdc/acm
"make" -C /home/mikolai/TUD/Code/RIOT-build/sys/usb_board_reset
text data bss dec hex filename
30980 172 4664 35816 8be8 /home/mikolai/TUD/Code/RIOT-build/tests/drivers/mtd_raw/bin/seeedstudio-xiao-nrf52840/tests_mtd_raw.elf
stty -F /dev/ttyACM0 raw ispeed 1200 ospeed 1200 cs8 -cstopb ignpar eol 255 eof 255
sleep 10
/home/mikolai/TUD/Code/RIOT-build/dist/tools/uf2/uf2conv.py -f 0xADA52840 /home/mikolai/TUD/Code/RIOT-build/tests/drivers/mtd_raw/bin/seeedstudio-xiao-nrf52840/tests_mtd_raw.hex --base 0x1000
Converted to uf2, output size: 62464, start address: 0x1000
Flashing /media/mikolai/XIAO-SENSE (Seeed_XIAO_nRF52840_Sense)
Wrote 62464 bytes to /media/mikolai/XIAO-SENSE/NEW.UF2
sleep 2
/home/mikolai/TUD/Code/RIOT-build/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200" -ln "/tmp/pyterm-mikolai" -rn "2024-11-25_16.52.18-tests_mtd_raw-seeedstudio-xiao-nrf52840"
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2024-11-25 16:52:18,148 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2024-11-25 16:52:19,150 # main(): This is RIOT! (Version: 2025.01-devel-193-g72f9f-board-xiao-nrf52840)
2024-11-25 16:52:19,151 # Manual MTD test
2024-11-25 16:52:19,151 # init MTD_0… OK (2 MiB)
info
2024-11-25 16:52:24,740 # info
2024-11-25 16:52:24,741 # mtd devices: 1
2024-11-25 16:52:24,741 # -=[ MTD_0 ]=-
2024-11-25 16:52:24,742 # sectors: 512
2024-11-25 16:52:24,742 # pages per sector: 16
2024-11-25 16:52:24,742 # page size: 256
2024-11-25 16:52:24,743 # total: 2 MiB
> test 0
2024-11-25 16:52:27,891 # test 0
2024-11-25 16:52:27,891 # [START]
2024-11-25 16:52:28,207 # [SUCCESS]
>
Status update on tests that have been failing previously:
- [x]
tests/sys/congure_test - [x]
tests/sys/pthread_flood(only withstdio_uart) - [x]
tests/sys/congure_quic(only withstdio_uart) - [x]
tests/sys/usbus(only withstdio_uart) - [x]
tests/sys/shell(see #21036) - [x]
tests/core/thread_msg(see #20989) - [x]
tests/core/msg_queue_print(withstdio_uart, forhighlevel_stdiosee #21047) - [ ]
tests/riotboot - [x]
tests/turo(only withstdio_uart) - [x]
tests/cpu/mpu_noexec_ram(only withstdio_uart,highlevel_stdioblacklisted since #20990) - [x]
tests/cpu/mpu_stack_guard(only withstdio_uart,highlevel_stdioblacklisted since #20990) - [x]
tests/riotboot_hdr - [x]
tests/pkg/libschc(only withstdio_uart)
Some of them fail with stdio_cdc_acm but not with stdio_uart. In some cases this is expected, in others not really.
I've created #21231 for tests that reproducibly fail on other boards as well with stdio_cdc_acm but succeed with stdio_uart.
For tests/sys/congure_quick and tests/pkg/libschc I couldn't reproduce with BOARD=feather-nrf52840-sense. Not sure whether it's worth to investigate more here what the difference could be.
tests/riotboot is probably deemed to fail as long as we use the adafruit bootloader.
Regarding the failing static tests, do you think it actually makes sense to keep these defines in the header (and document them accordingly) or should I just move them to the c-file? In the end, the flash is hard-soldered onto the board anyways.
Other than that, I'd say this is ready to be reviewed again from my side.
Murdock results
:heavy_check_mark: PASSED
a0678a7a55e09636487dc88b0392f2074e0c4bba boards/seeedstudio-xiao-nrf52840: Arduino pin map
| Success | Failures | Total | Runtime |
|---|---|---|---|
| 10270 | 0 | 10271 | 12m:32s |
Artifacts
IMO it looks good and you can resolve the suggestions. I gave this a quick test run with tests/sys/shell via USB, tests/sys/shell_ble via BLE, tests/periph/adc and examples/essentials/filesystem for the flash and everything seems to work (after the US_PER_MS change).
Regarding the failing static tests, do you think it actually makes sense to keep these defines in the header (and document them accordingly) or should I just move them to the c-file? In the end, the flash is hard-soldered onto the board anyways.
For consistency with the other boards, I would probably leave them in the header. How to deal with the doccheck? Good question, I don't know.
Do you want/need to have anything else tested specifically?
It seems like the static tests are unhappy about trailing whitespaces in boards/seeedstudio-xiao-nrf52840/doc.txt and the closing operator for the group @} is missing. This happened when you included the asterisks I think.
I ordered a Xiao nRF52840 Sense board yesterday, which we want to use for an upcoming seminar. Apparently the LSM6DS3TR-C is fully compatible with the LSM6DSL that is already implemented in RIOT :)
For consistency with the other boards, I would probably leave them in the header. How to deal with the
doccheck? Good question, I don't know.
As for the other boards, I've left them there and added them to the doccheck excludes (using a pattern instead of listing them all individually).
the closing operator for the group
@}is missing.
which one do you mean?
I ordered a Xiao nRF52840 Sense board yesterday, which we want to use for an upcoming seminar. Apparently the LSM6DS3TR-C is fully compatible with the LSM6DSL that is already implemented in RIOT :)
Nice, should be straightforward to add to RIOT with this one as blue-print!
Do you want/need to have anything else tested specifically?
I'd say I'm happy with the testing both from my and your side. Thanks again!
which one do you mean?
Nevermind, there is no group-opening operator in the doc.txt.
LGTM, IMO this is ready for merge.
Would you mind to just obey with what the CI suggests (see inline) to get rid of the linter warnings?
Sure sorry, done :)
Thanks everyone!