One of our employees is following the Cellular Fundamentals courses and they got stuck on getting modem traces out of the Thingy:91X.
In lesson 7 exercise 1, the course instructs you to create a build for "whichever board you are using" and then add the nrf91-modem-trace-uart snippet.
This is the result of the build:
[132/157] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/home/matteo/ncs/v3.2.0/modules/hal/nordic/nrfx/drivers[146/157] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/home/matteo/ncs/v3.2.0/modules/hal/nordic/nrfx/helpers[152/157] Linking C executable zephyr/zephyr_pre0.elf FAILED: zephyr/zephyr_pre0.elf zephyr/zephyr_pre0.map /home/matteo/work/cell-fund/l7/l7_e1_sol/build/b0/zephyr/zephyr_pre0.map : && ccache /home/matteo/ncs/toolchains/43683a87ea/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc -gdwarf-4 -Os zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj -o zephyr/zephyr_pre0.elf zephyr/CMakeFiles/offsets.dir/./arch/arm/core/offsets/offsets.c.obj -T zephyr/linker_zephyr_pre0.cmd -Wl,-Map,/home/matteo/work/cell-fund/l7/l7_e1_sol/build/b0/zephyr/zephyr_pre0.map -Wl,--whole-archive app/libapp.a zephyr/libzephyr.a zephyr/arch/common/libarch__common.a zephyr/arch/arch/arm/core/libarch__arm__core.a zephyr/arch/arch/arm/core/cortex_m/libarch__arm__core__cortex_m.a zephyr/arch/arch/arm/core/cortex_m/cmse/libarch__arm__core__cortex_m__cmse.a zephyr/lib/libc/picolibc/liblib__libc__picolibc.a zephyr/lib/libc/common/liblib__libc__common.a zephyr/soc/soc/nrf9151/libsoc__nordic.a zephyr/drivers/clock_control/libdrivers__clock_control.a zephyr/drivers/console/libdrivers__console.a zephyr/drivers/pinctrl/libdrivers__pinctrl.a zephyr/drivers/serial/libdrivers__serial.a zephyr/drivers/timer/libdrivers__timer.a modules/nrf/lib/fprotect/lib..__nrf__lib__fprotect.a modules/nrf/subsys/bootloader/bl_boot/lib..__nrf__subsys__bootloader__bl_boot.a modules/nrf/subsys/bootloader/bl_crypto/lib..__nrf__subsys__bootloader__bl_crypto.a modules/nrf/subsys/bootloader/bl_validation/lib..__nrf__subsys__bootloader__bl_validation.a modules/nrf/subsys/bootloader/bl_storage/lib..__nrf__subsys__bootloader__bl_storage.a modules/nrf/subsys/fw_info/lib..__nrf__subsys__fw_info.a modules/nrf/drivers/hw_cc3xx/lib..__nrf__drivers__hw_cc3xx.a modules/hal_nordic/modules/hal_nordic/nrfx/libmodules__hal_nordic__nrfx.a -Wl,--no-whole-archive zephyr/kernel/libkernel.a -L/home/matteo/work/cell-fund/l7/l7_e1_sol/build/b0/zephyr zephyr/arch/common/libisr_tables.a /home/matteo/ncs/v3.2.0/nrfxlib/crypto/nrf_oberon/lib/cortex-m33/hard-float/liboberon_3.0.17.a /home/matteo/ncs/v3.2.0/nrfxlib/crypto/nrf_cc310_bl/lib/cortex-m33/hard-float/no-interrupts/libnrf_cc310_bl_0.9.12.a -mcpu=cortex-m33 -mthumb -mabi=aapcs -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mfp16-format=ieee -mtp=soft -fuse-ld=bfd -Wl,--gc-sections -Wl,--build-id=none -Wl,--sort-common=descending -Wl,--sort-section=alignment -Wl,-u,_OffsetAbsSyms -Wl,-u,_ConfigAbsSyms -nostdlib -static -Wl,-X -Wl,-N -Wl,--orphan-handling=warn -Wl,-no-pie -Wl,--undefined=_sw_isr_table -Wl,--undefined=_irq_vector_table -specs=picolibc.specs -DPICOLIBC_DOUBLE_PRINTF_SCANF /home/matteo/ncs/v3.2.0/nrfxlib/crypto/nrf_cc310_platform/lib/cortex-m33/hard-float/no-interrupts/libnrf_cc310_platform_0.9.19.a -L/home/matteo/ncs/toolchains/43683a87ea/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/thumb/v8-m.main+fp/hard -lc -lgcc && cd /home/matteo/work/cell-fund/l7/l7_e1_sol/build/b0/zephyr && /home/matteo/ncs/toolchains/43683a87ea/usr/local/bin/cmake -E true /home/matteo/ncs/toolchains/43683a87ea/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: zephyr/kernel/libkernel.a(timeout.c.obj): in function `elapsed': /home/matteo/ncs/v3.2.0/zephyr/kernel/timeout.c:81: undefined reference to `sys_clock_elapsed' collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed.
I have tested and I can replicate the issue on a Thingy:91X, but not on my usual nRF9151DK.Edit: I reproduced this on the l7_e1_sol solution, so that there is no code of our own to muddy the waters.
I have found this post which shows the same problem, still on the Thingy:91X, but not related to the course, so it looks like the issue is between the specific nrf91-modem-trace-uart snippet and the Thingy91X (not nrf9151 SoCs in general).
I am wondering whether this has something to do with the nRF53 that provides USB connectivity and exposes the virtual UART?