Xiao NRF52840 Build hanging at 'west update'

I have a brand new Seeedstudio Xiao NRF52840 which I am trying to build firmware for. I created a new device in ESPHome of HA and manually pasted in the following configuration:

esphome:
  name: xiao-nrf52840

nrf52:
  board: xiao_ble

logger:
  level: DEBUG

# Blink the red LED (P0.26) as a hello-world
output:
  - platform: gpio
    pin: P0.26
    id: red_led

interval:
  - interval: 1s
    then:
      - output.turn_on: red_led
      - delay: 500ms
      - output.turn_off: red_led

Then I selected Install->Manual Download which generates the following logfile, which shows the process hanging at 'west update'. Does anyone know what might be wrong? Thanks

INFO ESPHome 2026.4.5
INFO Reading configuration /config/esphome/xiao-nrf52840.yaml...
INFO Generating C++ source...
INFO Compiling app... Build path: /data/build/xiao-nrf52840
********************************************************************************
If you like PlatformIO, please:
- star it on GitHub > https://github.com/platformio/platformio-core
- follow us on LinkedIn to stay up-to-date on the latest project news > https://www.linkedin.com/company/platformio/
- try PlatformIO IDE for embedded development > https://platformio.org/platformio-ide
********************************************************************************

Warning! Ignore unknown configuration option `boards_dir` in section [env:xiao-nrf52840]
Processing xiao-nrf52840 (board: xiao_ble; framework: zephyr; platform: https://github.com/tomaszduda23/platform-nordicnrf52/archive/refs/tags/v10.3.0-5.zip)
--------------------------------------------------------------------------------
Platform Manager: Installing https://github.com/tomaszduda23/platform-nordicnrf52/archive/refs/tags/v10.3.0-5.zip
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Platform Manager: [email protected] has been installed!
Tool Manager: Installing https://github.com/tomaszduda23/toolchain-sdk-ng/archive/refs/tags/v0.17.4-0.zip
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Tool Manager: Installing https://github.com/tomaszduda23/framework-sdk-nrf/archive/refs/tags/v2.6.1-a.zip
Downloading...
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Tool Manager: Installing platformio/tool-adafruit-nrfutil @ ~1.503.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Tool Manager: Installing platformio/tool-cmake @ ~3.21.0
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%          
Tool Manager: [email protected] has been installed!
Tool Manager: Installing platformio/tool-ninja @ ^1.7.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Tool Manager: Installing platformio/tool-scons @ ~4.40801.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
HARDWARE: 243KB RAM, 796KB Flash
 - framework-zephyr @ 1.20601.0 (2.6.1) 
 - tool-adafruit-nrfutil @ 1.503.0 (5.3) 
 - tool-cmake @ 3.21.3 
 - tool-ninja @ 1.10.2 
/usr/local/bin/python -m west init -m https://github.com/nrfconnect/sdk-nrf --mr v2.6.1 /data/cache/platformio/packages/framework-zephyr
=== Initializing in /data/cache/platformio/packages/framework-zephyr
--- Cloning manifest repository from https://github.com/nrfconnect/sdk-nrf, rev. v2.6.1
Cloning into '/data/cache/platformio/packages/framework-zephyr/.west/manifest-tmp'...
Updating files:  38% (3528/9136)
Updating files:  39% (3564/9136)
Updating files:  40% (3655/9136)
Updating files:  41% (3746/9136)
Updating files:  42% (3838/9136)
Updating files:  43% (3929/9136)
Updating files:  44% (4020/9136)
Updating files:  45% (4112/9136)
Updating files:  46% (4203/9136)
Updating files:  47% (4294/9136)
Updating files:  48% (4386/9136)
Updating files:  49% (4477/9136)
Updating files:  50% (4568/9136)
Updating files:  51% (4660/9136)
Updating files:  52% (4751/9136)
Updating files:  53% (4843/9136)
Updating files:  54% (4934/9136)
Updating files:  55% (5025/9136)
Updating files:  56% (5117/9136)
Updating files:  57% (5208/9136)
Updating files:  58% (5299/9136)
Updating files:  59% (5391/9136)
Updating files:  60% (5482/9136)
Updating files:  61% (5573/9136)
Updating files:  62% (5665/9136)
Updating files:  63% (5756/9136)
Updating files:  64% (5848/9136)
Updating files:  65% (5939/9136)
Updating files:  66% (6030/9136)
Updating files:  67% (6122/9136)
Updating files:  68% (6213/9136)
Updating files:  69% (6304/9136)
Updating files:  70% (6396/9136)
Updating files:  71% (6487/9136)
Updating files:  72% (6578/9136)
Updating files:  73% (6670/9136)
Updating files:  74% (6761/9136)
Updating files:  75% (6852/9136)
Updating files:  76% (6944/9136)
Updating files:  77% (7035/9136)
Updating files:  78% (7127/9136)
Updating files:  79% (7218/9136)
Updating files:  80% (7309/9136)
Updating files:  81% (7401/9136)
Updating files:  82% (7492/9136)
Updating files:  83% (7583/9136)
Updating files:  84% (7675/9136)
Updating files:  85% (7766/9136)
Updating files:  86% (7857/9136)
Updating files:  87% (7949/9136)
Updating files:  88% (8040/9136)
Updating files:  89% (8132/9136)
Updating files:  90% (8223/9136)
Updating files:  91% (8314/9136)
Updating files:  92% (8406/9136)
Updating files:  93% (8497/9136)
Updating files:  94% (8588/9136)
Updating files:  95% (8680/9136)
Updating files:  96% (8771/9136)
Updating files:  97% (8862/9136)
Updating files:  98% (8954/9136)
Updating files:  99% (9045/9136)
Updating files: 100% (9136/9136)
Updating files: 100% (9136/9136), done.
--- setting manifest.path to nrf
=== Initialized. Now run "west update" inside /data/cache/platformio/packages/framework-zephyr.

I see you are using the provided sample code. A good basis to verify your hardware is functional.

Did you load the bootloader?

Backup your source file and then try clearing your ESPHome cache files for a fresh download of the compiler libraries, in case there are corrupted fragments lying around.

I have not loaded a boot loader which I will presumably have to do, but this is failing during the build phase. Given I am using board xiao_ble with the default boot loader in my config, which boot loader should I use?

Also I am suspicious that this is actually running even though there is no log output, just checking that now.

OK, this is actually working fine it just takes a long time (~45min, much longer than esp32) and initially generates no logging in the 'west update' phase. This was on a Raspberry Pi 4 with 8Gb.

First time to download, unpack and compile ESPHome libraries always takes longer. The respective files are now cached so it should be far quicker next time (until there are updates).

You shouldn't need to clean the cache each time you compile.

Check if there are settings that can be overridden for update speeds over the OTA port, and remember there is a balance between speed and reliability.

2nd time was really quick (seconds). Have copied uf2 file to 'XIAO_SENSE' drive, it rebooted and LED is blinking.

Yes, the downloading and unpacking portions in your initial log have already happened.

Now you have verified the hardware and update process are working, go forth and futz away! The nRF chips are a different class to the usual ESP32 chips and lower power is just one of their advantages.