Summary
On the Elecrow ThinkNode M6 (nRF52840 + MX25R1635F QSPI flash), the external QSPI flash never initializes with MeshCore's CustomLFS_QSPIFlash driver. nrfx_qspi_init() returns NRFX_ERROR_TIMEOUT (0xBAD0007) while waiting for the QSPI peripheral to activate.
Serial output from a companion build:
Starting QSPI initialization...
QSPI init failed: 0xBAD0007
Impact
Notes / comparison
- The board config matches Meshtastic's M6 variant exactly: QSPI pins (
SCK 32+3, CS 23, IO0 32+1, IO1 32+2, IO2 32+4, IO3 32+5), flash power enable on pin 21 driven high, and MX25R1635F (JEDEC C2 28 15, which is present in the driver's chip database).
- Meshtastic runs the same external flash successfully on the same hardware using
Adafruit_SPIFlash / Adafruit_FlashTransport_QSPI, which suggests the issue is in the custom QSPI driver's peripheral bring-up rather than the board wiring.
- The timeout is at the peripheral
TASKS_ACTIVATE → EVENTS_READY step inside nrfx_qspi_init(), before any flash command is issued.
Workaround
Building the M6 companion BLE role with internal flash (-D EXTRAFS instead of -D QSPIFLASH=1) gives reliable persistent storage today, at reduced capacity.
Hardware
- Device: Elecrow ThinkNode M6 (nRF52840, SX1262, MX25R1635F)
- Confirmed on companion BLE and USB builds.
Summary
On the Elecrow ThinkNode M6 (nRF52840 + MX25R1635F QSPI flash), the external QSPI flash never initializes with MeshCore's
CustomLFS_QSPIFlashdriver.nrfx_qspi_init()returnsNRFX_ERROR_TIMEOUT(0xBAD0007) while waiting for the QSPI peripheral to activate.Serial output from a companion build:
Impact
DataStoreroutes to the "extra" FS) cannot persist to the 2MB chip.nrfx_qspi_init()leaves the QSPI peripheral +QSPI_IRQnenabled and poisons the SoftDevice enable. That BLE symptom is ThinkNode M6 Companion (Bluetooth): node never advertises BLE on any version (v1.13.0–v1.16.0); USB bootloader healthy, hardware confirmed good on Meshtastic #2827, fixed by companion_radio: tear down QSPI peripheral when its init fails (fixes #2827) #2828 (teardown on failure). This issue tracks the remaining root cause: the QSPI flash itself not initializing.Notes / comparison
SCK 32+3,CS 23,IO0 32+1,IO1 32+2,IO2 32+4,IO3 32+5), flash power enable on pin 21 driven high, andMX25R1635F(JEDECC2 28 15, which is present in the driver's chip database).Adafruit_SPIFlash/Adafruit_FlashTransport_QSPI, which suggests the issue is in the custom QSPI driver's peripheral bring-up rather than the board wiring.TASKS_ACTIVATE→EVENTS_READYstep insidenrfx_qspi_init(), before any flash command is issued.Workaround
Building the M6 companion BLE role with internal flash (
-D EXTRAFSinstead of-D QSPIFLASH=1) gives reliable persistent storage today, at reduced capacity.Hardware