Have a NCS/ZBoss-based Zigbee app running and I want to enable FOTA, and it was failing with missing app_update.bin file.
Thinking it might be something with my own code, I enabled FOTA for the light_switch sample and built it, that's when things got strange.
The end of the process is (sometimes??):
[393/409] Linking C executable zephyr/zephyr.elf Memory region Used Size Region Size %age Used FLASH: 308064 B 474624 B 64.91% SRAM: 68116 B 440 KB 15.12% IDT_LIST: 0 GB 2 KB 0.00% [403/409] Generating ../../zephyr/net_core_app_test_update.hex Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee [406/409] Generating ../../zephyr/app_test_update.hex Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee [409/409] Generating zephyr/merged_domains.hex
Looks good. But when I ran it again:
[Errno 2] No such file or directory: '/path/to/dev/nrf/build/zephyr/app_update.bin'
Odd... So, running west build in a loop (with -p always) and piping output to log files, I find that 11 runs out of 30 produce the update image, and the rest fail. Same command, pristine builds, different results. It's almost every second run for a while, but not really.
Successes:
$ grep 'Zigbee update created' lightsw* | sort -n | uniq lightsw01.txt:Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee lightsw08.txt:Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee lightsw12.txt:Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee lightsw14.txt:Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee lightsw16.txt:Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee lightsw18.txt:Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee lightsw22.txt:Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee lightsw24.txt:Zigbee update createdat 127F-FFFF-01020003-light_switch.zigbee lightsw25.txt:Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee lightsw26.txt:Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee lightsw27.txt:Zigbee update created at 127F-FFFF-01020003-light_switch.zigbee
Failures:
$ grep 'Errno 2' lightsw* | sort -n lightsw02.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw03.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw04.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw05.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw06.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw09.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw10.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw11.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw13.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw15.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw17.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw19.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw20.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw21.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw23.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw28.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' lightsw29.txt:[Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin'
and it never succeeds with my own code.
The questions are basically what is causing this, or how can I get the system to at least tell me what's wrong when it's ending with:
[257/263] Generating linker.cmd [258/263] Generating isr_tables.c, isrList.bin [259/263] Generating dev_handles.c [260/263] Building C object zephyr/CMakeFiles/zephyr_final.dir/misc/empty_file.c.obj [261/263] Building C object zephyr/CMakeFiles/zephyr_final.dir/isr_tables.c.obj [262/263] Building C object zephyr/CMakeFiles/zephyr_final.dir/dev_handles.c.obj [263/263] Linking C executable zephyr/zephyr.elf Memory region Used Size Region Size %age Used FLASH: 36276 B 48 KB 73.80% SRAM: 22712 B 440 KB 5.04% IDT_LIST: 0 GB 2 KB 0.00% [394/409] Linking C executable zephyr/zephyr.elf Memory region Used Size Region Size %age Used FLASH: 308064 B 474624 B 64.91% SRAM: 68116 B 440 KB 15.12% IDT_LIST: 0 GB 2 KB 0.00% [396/409] Generating ../../zephyr/net_core_app_test_update.hex FAILED: zephyr/net_core_app_test_update.hex /storage/pat/dev/nrf/build/zephyr/net_core_app_test_update.hex cd /storage/pat/dev/nrf/build/modules/mcuboot && /usr/bin/python3.9 /storage/pat/dev/nrf/bootloader/mcuboot/scripts/imgtool.py sign --key /storage/pat/dev/nrf/bootloader/mcuboot/root-rsa-2048.pem --header-size 0x200 --align 4 --version 1.2.3 --pad-header --slot-size 0x74000 --pad /storage/pat/dev/nrf/build/multiprotocol_rpmsg/zephyr/signed_by_b0_app.hex /storage/pat/dev/nrf/build/zephyr/net_core_app_test_update.hex && /usr/bin/python3.9 /storage/pat/dev/nrf/nrf/scripts/bootloader/zb_add_ota_header.py --application /storage/pat/dev/nrf/build/zephyr/app_update.bin --application-version-string 1.2.3 --zigbee-manufacturer-id 0x127F --zigbee-image-type 0xFFFF --zigbee-comment light_switch --zigbee-ota-min-hw-version --zigbee-ota-max-hw-version --out-directory /storage/pat/dev/nrf/build/zephyr [Errno 2] No such file or directory: '/storage/pat/dev/nrf/build/zephyr/app_update.bin' [398/409] Generating zephyr/mcuboot_primary_app.hex ninja: build stopped: subcommand failed. FATAL ERROR: command exited with status 1: /home/pat/.local/bin/cmake --build /storage/pat/dev/nrf/build