Hello,
I need help recovering a RAK4631 WisBlock Core installed on a RAK19026 WisMesh Base.
The RAKDAP1 is brand new and previously worked correctly with this exact RAK4631. Before the failure, it successfully detected the nRF52840 and backed up the complete internal flash and UICR.
HARDWARE
Target:
- RAK4631 WisBlock Core
- RAK4630 / Nordic nRF52840 + SX1262
- Installed on a RAK19026 WisMesh Base
- LoRa antenna connected
- Target powered separately through the RAK19026 USB-C port
Debug probe:
- Official RAKWireless RAKDAP1
- SKU: 910009
- New device
- Detected as ARM DAPLink CMSIS-DAP
- USB VID:PID: 0d28:0204
- Interface: CMSIS-DAP-v1-MuseLab
- The full probe UID can be provided privately if required
HOST SOFTWARE
- Kali Linux
- pyOCD 0.45.1
- Target explicitly selected with: -t nrf52840
- RAKDAP1 selected by its unique probe ID
- SWD frequencies tested: 100 kHz, 10 kHz and 5 kHz
RAKDAP1 DETAILS.TXT
- Interface Version: 0254
- Bootloader Version: 0254
- Build Time: Nov 30 2019 15:39:08
- HIC ID: 97969908
- Git SHA: 241d432f83187de9ec2e0209972bf200010b5e8f
- Local Mods: 1
- Auto Reset: 1
- Automation allowed: 1
- Overflow detection: 1
- DAPLink Mode: Interface
- USB Interfaces: MSD, CDC, HID, WebUSB
- Bootloader CRC: 0x76d78d7a
- Interface CRC: 0x9cd5b2d6
WIRING
The wiring follows the official RAKDAP1 Quick Start Figure 15:
- RAKDAP1 GND → RAK4631 GND
- RAKDAP1 TCK/CK → RAK4631 SWDCLK
- RAKDAP1 TMS/IO → RAK4631 SWDIO
- RAKDAP1 3V3 → RAK4631 3V3
- RAKDAP1 5V not connected
- RESET not connected because the 1x4 pogo fixture only covers GND, SWDCLK, SWDIO and 3V3
Actual wire mapping:
- Brown → GND
- Red → TCK/CK / SWDCLK
- Orange → TMS/IO / SWDIO
- Yellow → 3V3
- 5V remains unused
The four RAK4631 pads, with the base USB-C connector oriented upwards, are:
- GND
- SWDCLK
- SWDIO
- 3V3
The upper RESET pad remains outside the 1x4 pogo fixture.
OFFICIAL DOCUMENTATION USED
RAKDAP1 Quick Start:
The official diagram confirms:
- TCK/CK → SWCLK
- GND → GND
- TMS/IO → SWDIO
- 3V3 → 3V3
- External target power
ELECTRICAL CHECKS
Target voltage:
- 3.32 V measured between GND and 3V3
Continuity:
- GND continuity verified
- SWDIO continuity verified
- SWDCLK continuity verified
- Pogo wires checked individually
- No 5V connection
Resistance measurements with the target completely unpowered, RAKDAP1 disconnected and pogo fixture removed:
-
SWDIO to GND:
- one polarity: OL above the 200 kOhm range
- reverse polarity: 74.8 kOhm
-
SWDCLK to GND:
- one polarity: OL above the 200 kOhm range
- reverse polarity: 75.0 kOhm
-
SWDIO to SWDCLK:
- OL in both polarities
Measurements through the pogo fixture, with RAKDAP1 disconnected:
-
SWDIO to GND:
- one polarity: OL
- reverse polarity: approximately 61 kOhm
-
SWDCLK to GND:
- one polarity: OL
- reverse polarity: 64.6 kOhm
-
SWDIO to SWDCLK:
- OL in both polarities after ensuring no fingers touched the metal contacts
No direct short circuit was found on the RAK4631 or through the pogo fixture.
HISTORY BEFORE THE FAILURE
-
The RAKDAP1 initially detected and communicated with the nRF52840 correctly.
-
A complete backup was successfully created before any destructive operation:
- Internal flash: 1,048,576 bytes
- UICR: 4,096 bytes
- Both backup files were hashed and verified
-
The official RAKWireless bootloader was downloaded and verified:
- File: WisCore_RAK4631_Board_Bootloader.hex
- Release: 0.4.2
- File size: 512,576 bytes
- SHA-256:
44013dd02aa5335cbeb85a6b838408dc34b267e8d732965ab4c62730fa81b9a1
-
Standard pyOCD sector programming attempts failed.
-
A Nordic mass erase was then performed. This erased the internal flash and UICR.
-
Direct NVMC programming was attempted:
- The first word 0x20000400 was programmed and read back successfully.
- The complete programming operation was interrupted during a CMSIS-DAP transaction.
- The exact extent of the partially programmed flash is unknown.
-
After that interrupted transaction, the RAKDAP1 remained visible over USB, but the nRF52840 stopped responding over SWD.
CURRENT ERRORS
At 100 kHz:
Error probing AP#0:
SWD/JTAG communication failure (Unexpected ACK ‘0’)
Error probing AP#1:
SWD/JTAG communication failure (No ACK)
Error probing AP#2:
SWD/JTAG communication failure (No ACK)
At 10 kHz:
- No ACK while initializing the target
At 5 kHz:
- No ACK while initializing the target
Five consecutive attempts at 100 kHz and three attempts at both 10 kHz and 5 kHz failed.
STANDARD READ TEST
Command:
pyocd commander --no-config
-u <RAKDAP1_UID>
-t nrf52840
-f 100k
-M attach
-c “read32 0xE000ED00”
-c “read32 0x00000000”
Result:
- Unexpected ACK ‘0’
- No ACK
- No CPUID or flash data returned
DIRECT SWD-DP TEST
The Debug Port was also tested directly without initializing the APs or processor:
pyocd commander --no-config
-N
-u <RAKDAP1_UID>
-t nrf52840
-f 100k
-M attach
-c “readdp 0x0”
Three attempts returned:
Error: memory transfer failed
This suggests the failure occurs at the SWD-DP level, before normal AP or CPU discovery.
3V3 ISOLATION TEST
Following advice from the RAKWireless forum, another test was performed with:
- RAK19026 powered separately through USB-C
- Common GND connected
- SWDIO and SWDCLK connected
- RAKDAP1 3V3 wire disconnected
- 5V not connected
The result was unchanged:
- direct DP read failed
- Unexpected ACK ‘0’
- No ACK
The normal official wiring with the 3V3 wire connected was restored afterwards while everything was powered off.
RAKDAP1 USB STATUS
The RAKDAP1 still enumerates correctly and exposes:
- USB mass storage: DAPLINK
- CDC serial interface
- CMSIS-DAP HID interface
- WebUSB interface
pyOCD detects it as:
ARM DAPLink CMSIS-DAP
NUCLEO-F103RB / stm32f103rb
I understand that this label likely describes the STM32F103 used inside the RAKDAP1 and not the nRF52840 target.
QUESTIONS FOR RAKWIRELESS
-
Can an interrupted direct NVMC programming transaction leave the nRF52840 SWD-DP or CTRL-AP inaccessible even after APPROTECT was previously cleared by ERASEALL?
-
Is there an official non-destructive recovery sequence for this condition?
-
Should the fifth RESET pad be connected to the RAKDAP1 for recovery, even though UICR.PSELRESET was erased by ERASEALL?
-
Is DAPLink Interface/Bootloader version 0254 the correct official firmware for this RAKDAP1 revision?
-
Is an official newer RAKDAP1 DAPLink firmware available? If yes, please provide:
- exact filename
- download URL
- SHA-256 checksum
- update instructions
- rollback procedure
-
Does the successful initial full flash/UICR backup prove that the RAKDAP1 wiring and SWD output were functioning correctly before the interrupted transaction?
-
Do these symptoms indicate:
- a damaged RAKDAP1 SWD output,
- a damaged nRF52840 SWD interface,
- or a recoverable CTRL-AP/debug state?
-
Is there an official diagnostic command that can test the RAKDAP1 SWD output without requiring a second target?
-
Should the RAKDAP1 or the RAK4631 be returned under warranty or examined by RAKWireless?
For safety, I have stopped all erase, flash, UICR write and unlock operations.
I can provide privately:
- the complete RAKDAP1 UID
- full pyOCD logs
- photos of the wiring and pogo fixture
- flash and UICR backup hashes
I will not publish or upload the raw flash/UICR backups because they may contain device configuration or keys.
Thank you for your assistance.
