Hi @nicnewdigate ,
Before we dig deeper into this, could you please confirm a few points?
- The MIMXRT1170EVKB_hwrework.md guide lists five required modifications: remove R183, remove R1816, populate R404, populate R1901, and populate R1902.
From your notes, it looks like R404 and R1901 have already been completed. Can you confirm the status of R183, R1816, and R1902 as well?
- Could you provide a serial log from one of the standard NXP examples running without any changes to app?
It could be the bluetooth shell.
Build the project for the Murata 1XK M2
- Send over the complete log.
- Is the board powered only through USB, or are you using an external 5 V supply? Please use external power.
Regards,
Daniel.
Hi @DanielRuvalcaba - thank you for your quick response and your suggestions!
I've completed all three items you asked for. Summary first, then the log.
**1. Rework — complete.** All five items of the EdgeFast BT PAL rework for the
MIMXRT1170-EVKB are done: R404 and R1901 (fitted earlier), plus **R1902 fitted**
and **R1816 + R183 removed**. We confirmed the two removals did not harm the
readable BT link — our own 115200-baud loader still downloads the full image
cleanly (131,840 bytes, framing errors = 0, byte-identical to before the removals).
**2. External power — done.** J38 → 1–2, 5 V into the J43 barrel jack, SW5 on.
**3. Unmodified-shell log — captured.** We built
`examples/edgefast_bluetooth_examples/shell` from MCUXpresso SDK v26.06.00-LTS,
`--config flexspi_nor_debug -Dcore_id=cm7`, armgcc. The only change from stock is
the module selection for our card, in the board `prj.conf`:
```
CONFIG_MCUX_COMPONENT_component.wifi_bt_module.IW61X=y → IW416=y
CONFIG_MCUX_COMPONENT_component.wifi_bt_module.board_murata_2el_m2=y → board_murata_1xk_m2=y
```
(These are the two Kconfig `choice` members that select the module. Our card is a
u-blox MAYA-W161 — an IW416 — so we selected the 1XK/IW416 profile you named.
`CONFIG_BT_SIGNING=y` and everything else is stock.)
Result at the shell prompt:
```
@bt> bt.init
[FW Download] Start to download firmware from 0x301198fc: 6812
download starts(131840)
...................................................................... (141 dots)
download success!
[FW Download]BLE FW is downloaded: 8265
← then nothing, for the remaining 90+ seconds. bt.init never returns.
```
**Two things changed since our earlier report, and both matter:**
**A — the 3 Mbaud download now COMPLETES.** Before the flow-control rework the
stock loader corrupted at the 115200 → 3,000,000-baud switch and looped
indefinitely. With R1902 fitted and R1816 removed (real CTS back-pressure), it
now moves all 131,840 bytes in ~1.45 s (timestamps 6812 → 8265 ms — the
high-speed rate) and prints `download success!`. So the rework fixed the
download-side problem, exactly as expected — thank you for insisting on it.
**B — the controller is still silent after a SUCCESSFUL download.** This is the
core question. After `download success!` / `BLE FW is downloaded`, the stack
receives nothing from the controller — no `Bluetooth initialized`, no error — and
`bt.init` hangs. The host MCU is alive and blocked, not crashed; with the console
detached we read over SWD:
```
DHCSR = 0x01010001 (running: S_HALT=0, S_LOCKUP=0, S_RETIRE_ST=1)
CFSR = 0x00000000 (no configurable fault)
HFSR = 0x00000000 (no hard fault ever taken)
```
So the CM7 is waiting in the stack for an HCI reply that never comes.
This is now a very clean data point: on NXP's **own unmodified EdgeFast stack**,
with the full rework and external power, the card **accepts a complete,
CRC-checked firmware image and then runs no HCI controller**. The earlier "the
3 Mbaud download is corrupt" explanation no longer applies — the download
demonstrably succeeds.
**Our questions (unchanged, now isolated from any download-integrity variable):**
1. Does the IW416 ROM authenticate the UART-downloaded BT firmware (e.g. against
OTP-fused keys), and if so, how is a rejection signalled to the host? We see
every block accepted, `download success!`, then silence — no error frame and
no re-announcement.
2. Is the stock `uartIW416_bt.bin` (16.92.21.p155.2) built for a generic /
un-fused IW416, or does a part fused for a specific OEM key require a matching
signed image? If so, that points us back to u-blox (companion case CA-276115).
3. In the first seconds after a successful UART download, should the controller
answer `HCI_Reset` immediately at the post-download rate, or is a vendor
command / delay required first?
I'm happy to share the full serial capture and the complete SWD register block,
and we can enable `DEBUG_PRINT` in `fw_loader_uart.c` for a narrated download
trace if that would help.
Thanks so much for your time and effort - Its hugely appreciated!!!
cheers -
Nic
Resolved / closing update — thank you for the help, and here is the answer for
anyone who finds this thread later.
After completing the rework and moving to external power (per Daniel's three
preconditions), we ran a **module-substitution test**. Holding *everything* else
identical — same MIMXRT1170-EVKB, same rework, same external 5 V, same MCUXpresso
SDK v26.06.00-LTS, the same stock `uartIW416_bt.bin`, and the *same compiled
EdgeFast `shell` binary* — we swapped the u-blox M2-MAYA-W161 for a genuine
**Embedded Artists Murata Type 1XK M.2 (EAR00385)** (the IW416 module the
`board_murata_1xk_m2` profile targets).
With the Murata 1XK, `bt.init` runs to completion:
```
download success!
[FW Download]BLE FW is downloaded
Bluetooth initialized
Settings Loaded
```
The controller comes up cleanly. With the u-blox MAYA-W161, the *same* binary
downloads identically (`download success!`) and then the controller is silent.
**So this was not an NXP problem.** The board, the SDK, the stock
`uartIW416_bt.bin`, and the EdgeFast stack are all correct — proven by the Murata
IW416 module running to a live controller on the identical setup. The fault is
specific to the u-blox MAYA-W161 (its firmware provisioning / authentication),
and we are taking that to u-blox.
Two useful side notes for others on this board:
* **The 3 Mbaud download corruption we reported earlier was the missing
flow-control rework.** After fitting `R1902` and removing `R1816` (NXP's
five-item EdgeFast rework), the stock loader's 115200 → 3,000,000-baud switch
completes cleanly and the download succeeds. Before that rework it corrupted at
the switch and looped; the rework fixes it.
* On the MIMXRT1170-EVKB the loader must stay well-fed at 3 Mbaud, which needs
that flow-control rework in place; at 115200 it is unconditional.
Thanks again for pointing us at the rework and the external-supply requirement —
both mattered, and together they got a genuine Murata module all the way up.
Cheers @DanielRuvalcaba, I will follow up with uBlox.