This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRFConnect DFU not working from Android 8 devices but does work to Android 7.1 and Android 7.1.1 devices

Scan of services after connecting to DFUTarg does not return

the new services on the device. Instead the old services that existed

on the device before going into DFU mode are returned.

Device side trace shows it was actually in DFU mode. 

Same device with nRFConnect works from Android 7.1 and 7.1.1

Device side trace

0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> SD: BLE_GATTS_EVT_WRITE
0> PM: PM_EVT_STORAGE_FULL
0> DFU:BLE_GATTS_EVT_WRITE
0> DFU: on_write
0> DFU:Received indication state 1
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> SD: BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST
0> DFU:BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST
0> DFU: on_rw_authorize_req
0> DFU: type=2,w.op=1
0> DFU: req.handle=0x10, ctrl.handle=0x10
0> DFU: on_ctrlpt_write
0> DFU: DFU_RSP_BUSY NOT Programming or Engineering Mode
0> DFU: forward
0> DFU:Writing peer data to the bootloaderDFU:---------------system attribute table: 8--------------SD: BLE_GATTS_EVT_HVC
0> DFU:BLE_GATTS_EVT_HVC
0> Device is preparing to enter bootloader mode.
0> PM: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED
0> Device will enter bootloader mode.
0> PMM: prepare_dfu_mode() id=65535
0> PMM: delete_peer_id_history
0> PWR: wants to reset to DFU mode.
0> PWD: power-off detect enabled
0>
0> DFU BOOT (145)
0>
0> Bluetooth Name NM04-000008
0> Board Type D048 (INCOMPATIBLE)
0> Model Type ETS (INCOMPATIBLE)
0> FPGA Ver Model 4 Version 4 (INCOMPATIBLE)
0> Firmware Ver 1.2.262
0> Firmware Type DEVELOP_BLE_UART
0> SoftDevice Ver 5.0.0
0> BootLoader Ver 2 (INSTALLED)
0> Mfg Data Ver 3
0> Sys Config Ver 6
0> Bluetooth Enabled
0> Stimulation Enabled
0>
0> 3V supply enabled
0> Vrf (3000 mV) enabled
0> BLE: local BDADDR EFF00F3689C3
0> PWR: Normal Power State entered
0> 3V supply enabled
0> Stim State SEARCHING
0> ADV: Sys=31F0736D Bat=4009 Amp=0 Err=00 Prg=F Ins=0 Post=0 Stim=0 LowP=0 LowB=0 Sess=1 Buzz=1
0> BLE: Starting advertising upon reset
0> BLE: Fast advertising in progress
0> SD: BLE_GAP_EVT_TIMEOUT
0> BLE: Slow advertising in progress

Host side trace 

nRF Connect, 2018-06-29
NM04-000008 (EF:F0:0F:36:89:C3)
V	11:19:34.115	Connecting to EF:F0:0F:36:89:C3...
D	11:19:34.115	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	11:19:37.443	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	11:19:37.443	Connected to EF:F0:0F:36:89:C3
D	11:19:37.447	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
D	11:19:37.449	wait(1600ms)
V	11:19:39.050	Discovering services...
D	11:19:39.050	gatt.discoverServices()
D	11:19:39.086	[Callback] Services discovered with status: 0
I	11:19:39.086	Services discovered
V	11:19:39.125	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)
- Service Changed [I] (0x2A05)
   Client Characteristic Configuration (0x2902)
Secure DFU Service (0xFE59)
- Secure Buttonless DFU [I W] (8ec90004-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)
- Unknown Characteristic [R] (6e400010-b5a3-f393-e0a9-e50e24dcca9e)
- Unknown Characteristic [R] (6e400020-b5a3-f393-e0a9-e50e24dcca9e)
- Unknown Characteristic [R] (6e400030-b5a3-f393-e0a9-e50e24dcca9e)
- Unknown Characteristic [W] (6e400040-b5a3-f393-e0a9-e50e24dcca9e)
D	11:19:39.125	gatt.setCharacteristicNotification(00002a05-0000-1000-8000-00805f9b34fb, true)
D	11:19:39.129	gatt.setCharacteristicNotification(8ec90004-f315-4f60-9fb8-838830daea50, true)
D	11:19:39.131	gatt.setCharacteristicNotification(6e400003-b5a3-f393-e0a9-e50e24dcca9e, true)
V	11:19:44.975	Reading characteristic 6e400030-b5a3-f393-e0a9-e50e24dcca9e
D	11:19:44.975	gatt.readCharacteristic(6e400030-b5a3-f393-e0a9-e50e24dcca9e)
I	11:19:45.043	Read Response received from 6e400030-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) 34-56-C9-BE-64-01-B3-F9-06-DC-D5-FF-13-DC-52-E3
A	11:19:45.044	"(0x) 34-56-C9-BE-64-01-B3-F9-06-DC-D5-FF-13-DC-52-E3" received
V	11:20:01.878	[DFU] DFU service started
V	11:20:01.878	[DFU] Opening file...
I	11:20:01.958	[DFU] Firmware file opened successfully
V	11:20:01.958	[DFU] Connecting to DFU target...
D	11:20:01.958	[DFU] gatt = device.connectGatt(autoConnect = false)
I	11:20:02.122	[DFU] Connected to EF:F0:0F:36:89:C3
D	11:20:02.126	[DFU] wait(1600)
V	11:20:03.726	[DFU] Discovering services...
D	11:20:03.726	[DFU] gatt.discoverServices()
I	11:20:03.732	[DFU] Services discovered
D	11:20:03.759	[DFU] wait(1000)
W	11:20:04.738	[DFU] Application with buttonless update found
V	11:20:04.738	[DFU] Jumping to the DFU Bootloader...
V	11:20:04.738	[DFU] Enabling indications for 8ec90004-f315-4f60-9fb8-838830daea50
D	11:20:04.738	[DFU] gatt.setCharacteristicNotification(8ec90004-f315-4f60-9fb8-838830daea50, true)
D	11:20:04.740	[DFU] gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb, value=0x02-00)
I	11:20:04.792	[DFU] Data written to descr.8ec90004-f315-4f60-9fb8-838830daea50, value (0x): 02-00
V	11:20:04.792	[DFU] Notifications enabled for 8ec90004-f315-4f60-9fb8-838830daea50
A	11:20:04.792	[DFU] Indications enabled
D	11:20:04.792	[DFU] wait(1000)
V	11:20:05.806	[DFU] Writing to characteristic 8ec90004-f315-4f60-9fb8-838830daea50
D	11:20:05.806	[DFU] gatt.writeCharacteristic(8ec90004-f315-4f60-9fb8-838830daea50)
I	11:20:05.876	[DFU] Notification received from 8ec90004-f315-4f60-9fb8-838830daea50, value (0x): 20-01-01
I	11:20:05.876	Indication received from 8ec90004-f315-4f60-9fb8-838830daea50, value: (0x) 20-01-01
A	11:20:05.876	"(0x) 20-01-01" received
A	11:20:05.883	[DFU] Enter bootloader sent (Op Code = 1)
A	11:20:05.883	[DFU] Response received (Op Code = 1, Status = 1)
D	11:20:10.926	[Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E	11:20:10.926	Error 8 (0x8): GATT CONN TIMEOUT
I	11:20:10.926	[DFU] Disconnected by the remote device
I	11:20:10.926	Disconnected
D	11:20:10.963	[DFU] gatt.close()
D	11:20:10.964	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
D	11:20:10.965	[DFU] [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
V	11:20:10.976	[DFU] DFU service started
I	11:20:10.976	[DFU] Firmware file opened successfully
D	11:20:10.976	[DFU] wait(1000)
D	11:20:11.976	[DFU] wait(1000)
V	11:20:12.977	[DFU] Connecting to DFU target...
D	11:20:13.023	[DFU] gatt = device.connectGatt(autoConnect = false)
I	11:20:13.302	[DFU] Connected to EF:F0:0F:36:89:C3
D	11:20:13.303	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
D	11:20:13.304	[DFU] [Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
D	11:20:13.305	[DFU] wait(1600)
V	11:20:14.906	[DFU] Discovering services...
D	11:20:14.906	[DFU] gatt.discoverServices()
I	11:20:14.911	[DFU] Services discovered
D	11:20:14.937	[DFU] wait(1000)
W	11:20:15.920	[DFU] Application with buttonless update found
V	11:20:15.920	[DFU] Jumping to the DFU Bootloader...
V	11:20:15.920	[DFU] Enabling indications for 8ec90004-f315-4f60-9fb8-838830daea50
D	11:20:15.920	[DFU] gatt.setCharacteristicNotification(8ec90004-f315-4f60-9fb8-838830daea50, true)
D	11:20:15.921	[DFU] gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb, value=0x02-00)
E	11:20:15.998	[DFU] Error (0x03): GATT WRITE NOT PERMIT
V	11:20:15.998	[DFU] Disconnecting...
D	11:20:16.026	[DFU] gatt.disconnect()
I	11:20:16.026	[DFU] Disconnected
D	11:20:16.026	[DFU] gatt.close()
D	11:20:16.026	[DFU] wait(600)
D	11:20:16.615	gatt.close()
D	11:20:16.618	wait(200)
V	11:20:16.819	Connecting to EF:F0:0F:36:89:C3...
D	11:20:16.819	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	11:20:16.826	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	11:20:16.826	Connected to EF:F0:0F:36:89:C3
D	11:20:16.827	wait(1600ms)
D	11:20:17.038	[Callback] Connection state changed with status: 22 and new state: DISCONNECTED (0)
E	11:20:17.038	Error 22 (0x16): GATT CONN TERMINATE LOCAL HOST
I	11:20:17.038	Disconnected
D	11:20:17.089	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
D	11:20:20.416	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
D	11:20:20.417	gatt.close()
D	11:20:20.422	wait(200)
V	11:20:20.624	Connecting to EF:F0:0F:36:89:C3...
D	11:20:20.625	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	11:20:20.636	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	11:20:20.636	Connected to EF:F0:0F:36:89:C3
D	11:20:20.638	wait(1600ms)
V	11:20:22.238	Discovering services...
D	11:20:22.238	gatt.discoverServices()
D	11:20:22.242	[Callback] Services discovered with status: 0
I	11:20:22.242	Services discovered
V	11:20:22.275	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)
- Service Changed [I] (0x2A05)
   Client Characteristic Configuration (0x2902)
Secure DFU Service (0xFE59)
- Secure Buttonless DFU [I W] (8ec90004-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)
- Unknown Characteristic [R] (6e400010-b5a3-f393-e0a9-e50e24dcca9e)
- Unknown Characteristic [R] (6e400020-b5a3-f393-e0a9-e50e24dcca9e)
- Unknown Characteristic [R] (6e400030-b5a3-f393-e0a9-e50e24dcca9e)
- Unknown Characteristic [W] (6e400040-b5a3-f393-e0a9-e50e24dcca9e)
D	11:20:22.275	gatt.setCharacteristicNotification(00002a05-0000-1000-8000-00805f9b34fb, true)
D	11:20:22.277	gatt.setCharacteristicNotification(8ec90004-f315-4f60-9fb8-838830daea50, true)
D	11:20:22.279	gatt.setCharacteristicNotification(6e400003-b5a3-f393-e0a9-e50e24dcca9e, true)
Parents Reply Children
Related