Buttonless DFU not working with my App, but with DFU example OK

Hi Nordic team,

I have a 52832_xxaa processor with SDK 14.2 and Softdevice 5.1.0. My App run without problems if I only add SD. No problems as well if I add my bootloader (incl. App Settings).
A DFU from my mobile (Sony with andriod, last version) doesn't work.

To prove my bootloader is ok, I tried the buttonless example from the SDK first. Setup was: SD + my bootloader + settings flashed via nRFConnect J-Link Programmer.
With this setup, I can see DFUTarg on my mobile, start DFU, transfer the example and successfully start the example app after reset.

If I do the same with my app, the DFU transfer works well and also after reset I can see my app runing correctly. If I try to DFU my app again know using my app as buttonless DFU service, the DFUTarg (bootloader) is starting, but no transfer of data happens.

Here is my log file, I hope you can help my finding the source of the problem.

nRF Connect, 2023-10-16
DRACER000003 (F0:CF:C4:F3:10:D0)
V	21:30:37.034	Connecting to F0:CF:C4:F3:10:D0...
D	21:30:37.034	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	21:30:37.393	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	21:30:37.393	Connected to F0:CF:C4:F3:10:D0
V	21:30:37.421	Discovering services...
D	21:30:37.421	gatt.discoverServices()
D	21:30:37.433	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
I	21:30:37.830	Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
D	21:30:38.037	[Callback] Services discovered with status: 0
I	21:30:38.037	Services discovered
V	21:30:38.041	Generic Access (0x1800)
- Device Name [R W] (0x2A00)
- Appearance [R] (0x2A01)
- Peripheral Preferred Connection Parameters [R] (0x2A04)
- Central Address Resolution [R] (0x2AA6)
Generic Attribute (0x1801)
Secure DFU Service (0xFE59)
- Buttonless DFU [I W] (8ec90003-f315-4f60-9fb8-838830daea50)
   Client Characteristic Configuration (0x2902)
Nordic UART Service (6e400001-b5a3-f393-e0a9-e50e24dcca9e)
- RX Characteristic [W WNR] (6e400002-b5a3-f393-e0a9-e50e24dcca9e)
- TX Characteristic [N] (6e400003-b5a3-f393-e0a9-e50e24dcca9e)
   Client Characteristic Configuration (0x2902)
D	21:30:38.043	gatt.setCharacteristicNotification(6e400003-b5a3-f393-e0a9-e50e24dcca9e, true)
I	21:30:38.144	Connection parameters updated (interval: 45.0ms, latency: 0, timeout: 5000ms)
I	21:30:40.709	PHY updated (TX: LE 2M, RX: LE 2M)
I	21:30:43.365	Connection parameters updated (interval: 75.0ms, latency: 0, timeout: 4000ms)
V	21:31:02.751	[DFU] DFU service started
V	21:31:02.751	[DFU] Opening file...
I	21:31:02.766	[DFU] Firmware file opened successfully
V	21:31:02.768	[DFU] Connecting to DFU target...
D	21:31:02.783	[DFU] gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferredPhy = LE_1M | LE_2M)
I	21:31:02.783	[DFU] Connected to F0:CF:C4:F3:10:D0
V	21:31:02.783	[DFU] Discovering services...
D	21:31:02.783	[DFU] gatt.discoverServices()
I	21:31:02.804	[DFU] Services discovered
D	21:31:02.804	[DFU] wait(1000)
W	21:31:03.815	[DFU] Application with buttonless update found
V	21:31:03.815	[DFU] Jumping to the DFU Bootloader...
V	21:31:03.815	[DFU] Enabling indications for 8ec90003-f315-4f60-9fb8-838830daea50
D	21:31:03.816	[DFU] gatt.setCharacteristicNotification(8ec90003-f315-4f60-9fb8-838830daea50, true)
D	21:31:03.816	[DFU] gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb, value=0x02-00)
I	21:31:03.916	[DFU] Data written to descr.8ec90003-f315-4f60-9fb8-838830daea50, value (0x): 02-00
V	21:31:03.916	[DFU] Notifications enabled for 8ec90003-f315-4f60-9fb8-838830daea50
A	21:31:03.918	[DFU] Indications enabled
D	21:31:03.918	[DFU] wait(1000)
V	21:31:04.940	[DFU] Writing to characteristic 8ec90003-f315-4f60-9fb8-838830daea50
D	21:31:04.940	[DFU] gatt.writeCharacteristic(8ec90003-f315-4f60-9fb8-838830daea50)
A	21:31:05.040	[DFU] Enter bootloader sent (Op Code = 1)
I	21:31:05.041	[DFU] Notification received from 8ec90003-f315-4f60-9fb8-838830daea50, value (0x): 20-01-01
A	21:31:05.041	[DFU] Response received (Op Code = 1, Status = 1)
D	21:31:05.041	[DFU] gatt.refresh() (hidden)
D	21:31:05.045	[DFU] gatt.disconnect()
D	21:31:05.047	[DFU] gatt.close()
V	21:31:05.051	[DFU] Scanning for the DFU Bootloader... (timeout 5000 ms)
I	21:31:05.211	[DFU] DFU Bootloader found with address F0:CF:C4:F3:10:D1
V	21:31:05.227	[DFU] DFU service started
I	21:31:05.227	[DFU] Firmware file opened successfully
D	21:31:05.227	[DFU] wait(1000)
I	21:31:05.792	Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
D	21:31:06.227	[DFU] wait(1000)
V	21:31:07.248	[DFU] Connecting to DFU target...
D	21:31:07.250	[DFU] gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferredPhy = LE_1M | LE_2M)
I	21:31:07.694	[DFU] Connected to F0:CF:C4:F3:10:D1
V	21:31:07.702	[DFU] Discovering services...
D	21:31:07.702	[DFU] gatt.discoverServices()
D	21:31:07.835	[DFU] [Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
I	21:31:08.321	[DFU] Services discovered
D	21:31:08.321	[DFU] wait(1000)
V	21:31:09.321	[DFU] Requesting new MTU...
D	21:31:09.322	[DFU] gatt.requestMtu(517)
D	21:31:10.820	[Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E	21:31:10.821	Error 8 (0x8): GATT CONN TIMEOUT
I	21:31:10.822	Disconnected
D	21:31:10.855	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
V	21:31:14.206	[DFU] Enabling notifications for 8ec90001-f315-4f60-9fb8-838830daea50
D	21:31:14.206	[DFU] gatt.setCharacteristicNotification(8ec90001-f315-4f60-9fb8-838830daea50, true)
D	21:31:14.251	[DFU] gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb, value=0x01-00)
E	21:31:14.251	[DFU] Device has disconnected
D	21:31:14.251	[DFU] gatt.disconnect()
D	21:31:14.251	[DFU] gatt.close()
D	21:31:14.255	[DFU] [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
V	21:31:14.260	[DFU] DFU service started
I	21:31:14.260	[DFU] Firmware file opened successfully
D	21:31:14.260	[DFU] wait(1000)
D	21:31:15.282	[DFU] wait(1000)
V	21:31:16.260	[DFU] Connecting to DFU target...
D	21:31:16.294	[DFU] gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferredPhy = LE_1M | LE_2M)
E	21:31:46.294	[DFU] Connection failed (0xFF): UNKNOWN (255)
W	21:31:46.295	[DFU] Retrying...
D	21:31:46.295	[DFU] gatt.refresh() (hidden)
D	21:31:46.301	[DFU] gatt.disconnect()
D	21:31:46.303	[DFU] gatt.close()
V	21:31:46.322	[DFU] DFU service started
I	21:31:46.322	[DFU] Firmware file opened successfully
D	21:31:46.322	[DFU] wait(1000)
D	21:31:47.338	[DFU] wait(1000)
V	21:31:48.323	[DFU] Connecting to DFU target...
D	21:31:48.324	[DFU] gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferredPhy = LE_1M | LE_2M)
E	21:32:18.337	[DFU] Connection failed (0xFF): UNKNOWN (255)
W	21:32:18.337	[DFU] Retrying...
D	21:32:18.337	[DFU] gatt.refresh() (hidden)
D	21:32:18.341	[DFU] gatt.disconnect()
D	21:32:18.343	[DFU] gatt.close()
V	21:32:18.358	[DFU] DFU service started
I	21:32:18.358	[DFU] Firmware file opened successfully
D	21:32:18.358	[DFU] wait(1000)
D	21:32:19.358	[DFU] wait(1000)
V	21:32:20.376	[DFU] Connecting to DFU target...
D	21:32:20.376	[DFU] gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferredPhy = LE_1M | LE_2M)

Kind regards, Andreas

Related