On Friady we were finishing off our final testing for our nRF5340 based product (SDK 2.1) when we discovered we couldnt do firmware updates from Samsung Galaxy Tab A8 tablets (Android 14). We developed the product using the Tab A9+'s which work fine (Android 14), and the bootloader is fine on our older Tab A (2016) and Tab A (2019) tablets which are Android 8/11.
We run our own Android app on them so removed that and am using your Device Manager app to remove our app as variable. Firmware app_update.bin is identical on all 4 tablets.
Works fine on 3 tablets, but not the A8's. Have tried multiple A8's and same failure on each other them.
Downloaded the Device Manager source from Github and have that on the A8 so I can capture the logs in Logcat
As far as the perpherial logging goes, it connects to the central, and then gets disconnected a few seconds later multiple times
[00:00:00.002,014] <inf> main: ~~~~~~~~
board: nrf5340dk_nrf5340_cpuapp
[00:00:00.002,014] <inf> main: build time: Jan 20 2025 15:45:57
[00:00:00.002,044] <inf> main: firmware version: 751
[00:00:01.504,730] <inf> main: MEMORY_SYSTEM_SIZE_HEARTBEATS: 138752
[00:00:01.506,958] <inf> main: Startup : NOT in Test Jig
[00:00:01.509,735] <inf> bluetooth: MAC Address: 00:48:A0:20:06:B8 (0x3c)
[00:00:01.509,765] <inf> taskBlinkLED: enableBlinkFor 5
[00:00:01.526,824] <inf> bluetooth: Bluetooth initialized
[00:00:01.529,327] <inf> bluetooth: Advertising successfully started
[00:00:10.150,207] <wrn> bt_hci_core: opcode 0x200a status 0x09
[00:00:10.150,390] <inf> bluetooth: Connected
[00:00:10.150,421] <inf> bleConnectionManager: onConnect
[00:00:10.150,421] <inf> taskBlinkLED: disableBlinkFor 5
[00:00:11.705,871] <inf> mcuboot_util: Swap type: none
[00:00:11.706,085] <inf> mcuboot_util: Swap type: none
[00:00:11.796,142] <inf> bluetooth: Connection parameters updated: interval 15 ms, latency 0 intervals, timeout 5000 ms
[00:00:11.796,142] <inf> taskRadio: Connection Parameters Changed
[00:00:16.850,128] <err> bluetooth: Disconnected (reason 0x08)
[00:00:16.850,158] <inf> bleConnectionManager: onDisconnect
[00:00:16.850,158] <wrn> taskRadio: Resetting states...
[00:00:16.850,219] <inf> taskBlinkLED: enableBlinkFor 5
[00:00:16.853,454] <inf> bluetooth: Advertising successfully started
[00:00:16.966,247] <wrn> bt_hci_core: opcode 0x200a status 0x09
[00:00:16.966,400] <inf> bluetooth: Connected
[00:00:16.966,430] <inf> bleConnectionManager: onConnect
[00:00:16.966,461] <inf> taskBlinkLED: disableBlinkFor 5
[00:00:23.269,775] <wrn> bt_hci_core: Not reporting packet for non-connected conn
[00:00:23.269,989] <err> bluetooth: Disconnected (reason 0x08)
[00:00:23.270,019] <inf> bleConnectionManager: onDisconnect
[00:00:23.270,050] <wrn> taskRadio: Resetting states...
[00:00:23.270,111] <inf> taskBlinkLED: enableBlinkFor 5
[00:00:23.273,315] <inf> bluetooth: Advertising successfully started
[00:00:24.331,481] <wrn> bt_hci_core: opcode 0x200a status 0x09
[00:00:24.331,634] <inf> bluetooth: Connected
[00:00:24.331,665] <inf> bleConnectionManager: onConnect
[00:00:24.331,695] <inf> taskBlinkLED: disableBlinkFor 5
[00:00:30.424,041] <wrn> bt_hci_core: Not reporting packet for non-connected conn
[00:00:30.424,255] <err> bluetooth: Disconnected (reason 0x08)
[00:00:30.424,285] <inf> bleConnectionManager: onDisconnect
[00:00:30.424,285] <wrn> taskRadio: Resetting states...
[00:00:30.424,346] <inf> taskBlinkLED: enableBlinkFor 5
[00:00:30.427,581] <inf> bluetooth: Advertising successfully started
[00:00:30.757,232] <wrn> bt_hci_core: opcode 0x200a status 0x09
[00:00:30.757,385] <inf> bluetooth: Connected
[00:00:30.757,415] <inf> bleConnectionManager: onConnect
[00:00:30.757,415] <inf> taskBlinkLED: disableBlinkFor 5
The below is the Android Logcat output. It failed when switching to UPLOAD and retries multiple times. My gut is that the perpherial firmware is doing something BT5 ish that the A8 cannot support but the A9 tablet does.....
McuMgrBleTransport Connected to EB:3D:2C:D6:60:A0
BluetoothGatt discoverServices() - device: XX:XX:XX:XX:60:A0
BluetoothGatt onSearchComplete() = Device=XX:XX:XX:XX:60:A0 Status=0
McuMgrBleTransport Services discovered
BluetoothGatt configureMTU() - device: XX:XX:XX:XX:60:A0 mtu: 498
BluetoothGatt onConfigureMTU() - Device=XX:XX:XX:XX:60:A0 mtu=252 status=0
McuMgrBleTransport MTU changed to: 252
BluetoothGatt setCharacteristicNotification() - uuid: da2e7828-fbce-4e01-ae9e-261174997c48 enable: true
McuMgrBleTransport Data written to descr. 00002902-0000-1000-8000-00805f9b34fb
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Notification received from da2e7828-fbce-4e01-ae9e-261174997c48, value: (0x) 01-00-00-06-00-00-FF-06-BF-62-72-63-08-FF
McuMgrBleTransport Wait for value changed complete
McuMgrBleTransport Received Header (Version: 0, Op: 1, Flags: 0, Len: 6, Group: 0, Seq: 255, Command: 6) CBOR {"rc":8}
BluetoothGatt onPhyRead() - status=0 address=XX:XX:XX:XX:60:A0 txPhy=1 rxPhy=1
McuMgrBleTransport PHY read (TX: LE 1M, RX: LE 1M)
BluetoothGatt requestConnectionPriority() - params: 1
McuMgrBleTransport Sending (9 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 1, Group: 0, Seq: 0, Command: 8) CBOR {}
McuMgrBleTransport Sending (9 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 1, Group: 0, Seq: 1, Command: 6) CBOR {}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Notification received from da2e7828-fbce-4e01-ae9e-261174997c48, value: (0x) 01-00-00-06-00-00-00-08-BF-62-72-63-08-FF
McuMgrBleTransport Notification received from da2e7828-fbce-4e01-ae9e-261174997c48, value: (0x) 01-00-00-06-00-00-01-06-BF-62-72-63-08-FF
McuMgrBleTransport Received Header (Version: 0, Op: 1, Flags: 0, Len: 6, Group: 0, Seq: 0, Command: 8) CBOR {"rc":8}
McuMgrBleTransport Received Header (Version: 0, Op: 1, Flags: 0, Len: 6, Group: 0, Seq: 1, Command: 6) CBOR {"rc":8}
McuMgrBleTransport Sending (9 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 1, Group: 1, Seq: 2, Command: 0) CBOR {}
McuMgrBleTransport Sending (19 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 11, Group: 0, Seq: 3, Command: 7) CBOR {"format":"sv"}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Notification received from da2e7828-fbce-4e01-ae9e-261174997c48, value: (0x) 01-00-00-F4-00-01-02-00-BF-66-69-6D-61-67-65-73-9F-BF-64-73-6C-6F-74-00-67-76-65-72-73-69-6F-6E-65-30-2E-30-2E-30-64-68-61-73-68-58-20-69-D0-38-C3-0A-49-D6-81-41-9A-A7-36-5A-4B-26-1A-51-12-86-03-17-E9-CB-DE-35-BB-D7-27-31-F5-66-16-68-62-6F-6F-74-61-62-6C-65-F5-67-70-65-6E-64-69-6E-67-F4-69-63-6F-6E-66-69-72-6D-65-64-F5-66-61-63-74-69-76-65-F5-69-70-65-72-6D-61-6E-65-6E-74-F4-FF-BF-64-73-6C-6F-74-01-67-76-65-72-73-69-6F-6E-65-30-2E-30-2E-30-64-68-61-73-68-58-20-69-D0-38-C3-0A-49-D6-81-41-9A-A7-36-5A-4B-26-1A-51-12-86-03-17-E9-CB-DE-35-BB-D7-27-31-F5-66-16-68-62-6F-6F-74-61-62-6C-65-F5-67-70-65-6E-64-69-6E-67-F4-69-63-6F-6E-66-69-72-6D-65-64-F4-66-61-63-74-69-76-65-F4-69-70-65-72-6D-61-6E-65-6E-74-F4-FF-FF-6B-73-70-6C-69-74-53-74-61-74-75
McuMgrBleTransport Notification received from da2e7828-fbce-4e01-ae9e-261174997c48, value: (0x) 73-00-FF
McuMgrBleTransport Received Header (Version: 0, Op: 1, Flags: 0, Len: 244, Group: 1, Seq: 2, Command: 0) CBOR {"images":[{"slot":0,"version":"0.0.0","hash":"adA4wwpJ1oFBmqc2WksmGlEShgMX6cveNbvXJzH1ZhY=","bootable":true,"pending":false,"confirmed":true,"active":true,"permanent":false},{"slot":1,"version":"0.0.0","hash":"adA4wwpJ1oFBmqc2WksmGlEShgMX6cveNbvXJzH1ZhY=","bootable":true,"pending":false,"confirmed":false,"active":false,"permanent":false}],"splitStatus":0}
Validate Validation response: {"images":[{"slot":0,"version":"0.0.0","hash":"adA4wwpJ1oFBmqc2WksmGlEShgMX6cveNbvXJzH1ZhY=","bootable":true,"pending":false,"confirmed":true,"active":true,"permanent":false},{"slot":1,"version":"0.0.0","hash":"adA4wwpJ1oFBmqc2WksmGlEShgMX6cveNbvXJzH1ZhY=","bootable":true,"pending":false,"confirmed":false,"active":false,"permanent":false}],"splitStatus":0}
FirmwareUp...ePerformer Moving from state VALIDATE to state UPLOAD
ImageUpgradeViewModel Uploading firmware...
McuMgrBleTransport Sending (248 bytes) Header (Version: 1, Op: 2, Flags: 0, Len: 240, Group: 1, Seq: 4, Command: 1) CBOR {"data":"PbjzlgAAAAAAAgAAXFADAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////","len":218028,"sha":"2xpbY1ZHpNFAuX1m7jidoDKGaWDtiKgTfT7gkEqF500=","off":0}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Notification received from da2e7828-fbce-4e01-ae9e-261174997c48, value: (0x) 01-00-00-06-00-00-03-07-BF-62-72-63-08-FF
McuMgrBleTransport Received Header (Version: 0, Op: 1, Flags: 0, Len: 6, Group: 0, Seq: 3, Command: 7) CBOR {"rc":8}
McuMgrBleTransport Sending (9 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 1, Group: 0, Seq: 5, Command: 8) CBOR {}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
BluetoothGatt onConnectionUpdated() - Device=XX:XX:XX:XX:60:A0 interval=12 latency=0 timeout=500 status=0
McuMgrBleTransport Connection parameters updated (interval: 15.0ms, latency: 0, timeout: 5000ms)
BluetoothGatt onClientConnectionState() - status=62 clientIf=5 device=XX:XX:XX:XX:60:A0
McuMgrBleTransport Error: (0x3e): GATT CONN FAIL ESTABLISH
McuMgrBleTransport Disconnected
BluetoothGatt close()
BluetoothGatt unregisterApp() - mClientIf=5
Uploader Uploader write failure for chunk with offset=0: io.runtime.mcumgr.ble.exception.McuMgrDisconnectedException
BluetoothAdapter getBleEnabledArray(): ON
BluetoothGatt connect() - device: XX:XX:XX:XX:60:A0, auto: false
BluetoothGatt registerApp()
BluetoothGatt registerApp() - UUID=1305d0c1-682b-47e8-9568-abea74c88fb2
BluetoothGatt onClientRegistered() - status=0 clientIf=5
BluetoothAdapter getBleEnabledArray(): ON
BluetoothGatt onClientConnectionState() - status=0 clientIf=5 device=XX:XX:XX:XX:60:A0
McuMgrBleTransport Connected to EB:3D:2C:D6:60:A0
BluetoothGatt discoverServices() - device: XX:XX:XX:XX:60:A0
BluetoothGatt onSearchComplete() = Device=XX:XX:XX:XX:60:A0 Status=0
McuMgrBleTransport Services discovered
BluetoothGatt configureMTU() - device: XX:XX:XX:XX:60:A0 mtu: 498
BluetoothGatt onConfigureMTU() - Device=XX:XX:XX:XX:60:A0 mtu=252 status=0
McuMgrBleTransport MTU changed to: 252
BluetoothGatt setCharacteristicNotification() - uuid: da2e7828-fbce-4e01-ae9e-261174997c48 enable: true
McuMgrBleTransport Data written to descr. 00002902-0000-1000-8000-00805f9b34fb
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Notification received from da2e7828-fbce-4e01-ae9e-261174997c48, value: (0x) 01-00-00-06-00-00-FF-06-BF-62-72-63-08-FF
McuMgrBleTransport Wait for value changed complete
McuMgrBleTransport Received Header (Version: 0, Op: 1, Flags: 0, Len: 6, Group: 0, Seq: 255, Command: 6) CBOR {"rc":8}
BluetoothGatt onPhyRead() - status=0 address=XX:XX:XX:XX:60:A0 txPhy=1 rxPhy=1
McuMgrBleTransport PHY read (TX: LE 1M, RX: LE 1M)
McuMgrBleTransport Sending (248 bytes) Header (Version: 1, Op: 2, Flags: 0, Len: 240, Group: 1, Seq: 0, Command: 1) CBOR {"data":"PbjzlgAAAAAAAgAAXFADAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////","len":218028,"sha":"2xpbY1ZHpNFAuX1m7jidoDKGaWDtiKgTfT7gkEqF500=","off":0}
McuMgrBleTransport Sending (9 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 1, Group: 0, Seq: 1, Command: 6) CBOR {}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Sending (19 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 11, Group: 0, Seq: 2, Command: 7) CBOR {"format":"sv"}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Sending (9 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 1, Group: 0, Seq: 3, Command: 8) CBOR {}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
BluetoothGatt onClientConnectionState() - status=8 clientIf=5 device=XX:XX:XX:XX:60:A0
McuMgrBleTransport Error: (0x8): GATT CONN TIMEOUT
McuMgrBleTransport Disconnected
BluetoothGatt close()
BluetoothGatt unregisterApp() - mClientIf=5
Uploader Uploader write failure for chunk with offset=0: io.runtime.mcumgr.ble.exception.McuMgrDisconnectedException
BluetoothAdapter getBleEnabledArray(): ON
BluetoothGatt connect() - device: XX:XX:XX:XX:60:A0, auto: false
BluetoothGatt registerApp()
BluetoothGatt registerApp() - UUID=336bad41-11c9-419f-b6d3-e48e85476271
BluetoothGatt onClientRegistered() - status=0 clientIf=5
BluetoothAdapter getBleEnabledArray(): ON
BluetoothGatt onClientConnectionState() - status=0 clientIf=5 device=XX:XX:XX:XX:60:A0
McuMgrBleTransport Connected to EB:3D:2C:D6:60:A0
BluetoothGatt discoverServices() - device: XX:XX:XX:XX:60:A0
BluetoothGatt onSearchComplete() = Device=XX:XX:XX:XX:60:A0 Status=0
McuMgrBleTransport Services discovered
BluetoothGatt configureMTU() - device: XX:XX:XX:XX:60:A0 mtu: 498
BluetoothGatt onConfigureMTU() - Device=XX:XX:XX:XX:60:A0 mtu=252 status=0
McuMgrBleTransport MTU changed to: 252
BluetoothGatt setCharacteristicNotification() - uuid: da2e7828-fbce-4e01-ae9e-261174997c48 enable: true
McuMgrBleTransport Data written to descr. 00002902-0000-1000-8000-00805f9b34fb
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Notification received from da2e7828-fbce-4e01-ae9e-261174997c48, value: (0x) 01-00-00-06-00-00-FF-06-BF-62-72-63-08-FF
McuMgrBleTransport Wait for value changed complete
McuMgrBleTransport Received Header (Version: 0, Op: 1, Flags: 0, Len: 6, Group: 0, Seq: 255, Command: 6) CBOR {"rc":8}
BluetoothGatt onPhyRead() - status=0 address=XX:XX:XX:XX:60:A0 txPhy=1 rxPhy=1
McuMgrBleTransport PHY read (TX: LE 1M, RX: LE 1M)
McuMgrBleTransport Sending (248 bytes) Header (Version: 1, Op: 2, Flags: 0, Len: 240, Group: 1, Seq: 0, Command: 1) CBOR {"data":"PbjzlgAAAAAAAgAAXFADAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////","len":218028,"sha":"2xpbY1ZHpNFAuX1m7jidoDKGaWDtiKgTfT7gkEqF500=","off":0}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Sending (9 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 1, Group: 0, Seq: 1, Command: 6) CBOR {}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Sending (19 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 11, Group: 0, Seq: 2, Command: 7) CBOR {"format":"sv"}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Sending (9 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 1, Group: 0, Seq: 3, Command: 8) CBOR {}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
BluetoothGatt onClientConnectionState() - status=8 clientIf=5 device=XX:XX:XX:XX:60:A0
McuMgrBleTransport Error: (0x8): GATT CONN TIMEOUT
McuMgrBleTransport Disconnected
BluetoothGatt close()
BluetoothGatt unregisterApp() - mClientIf=5
Uploader Uploader write failure for chunk with offset=0: io.runtime.mcumgr.ble.exception.McuMgrDisconnectedException
BluetoothAdapter getBleEnabledArray(): ON
BluetoothGatt connect() - device: XX:XX:XX:XX:60:A0, auto: false
BluetoothGatt registerApp()
BluetoothGatt registerApp() - UUID=d335c2c5-2d9e-4c87-8697-ab1b89115fc2
BluetoothGatt onClientRegistered() - status=0 clientIf=5
BluetoothAdapter getBleEnabledArray(): ON
BluetoothGatt onClientConnectionState() - status=0 clientIf=5 device=XX:XX:XX:XX:60:A0
McuMgrBleTransport Connected to EB:3D:2C:D6:60:A0
BluetoothGatt discoverServices() - device: XX:XX:XX:XX:60:A0
BluetoothGatt onSearchComplete() = Device=XX:XX:XX:XX:60:A0 Status=0
McuMgrBleTransport Services discovered
BluetoothGatt configureMTU() - device: XX:XX:XX:XX:60:A0 mtu: 498
BluetoothGatt onConfigureMTU() - Device=XX:XX:XX:XX:60:A0 mtu=252 status=0
McuMgrBleTransport MTU changed to: 252
BluetoothGatt setCharacteristicNotification() - uuid: da2e7828-fbce-4e01-ae9e-261174997c48 enable: true
McuMgrBleTransport Data written to descr. 00002902-0000-1000-8000-00805f9b34fb
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Notification received from da2e7828-fbce-4e01-ae9e-261174997c48, value: (0x) 01-00-00-06-00-00-FF-06-BF-62-72-63-08-FF
McuMgrBleTransport Wait for value changed complete
McuMgrBleTransport Received Header (Version: 0, Op: 1, Flags: 0, Len: 6, Group: 0, Seq: 255, Command: 6) CBOR {"rc":8}
BluetoothGatt onPhyRead() - status=0 address=XX:XX:XX:XX:60:A0 txPhy=1 rxPhy=1
McuMgrBleTransport PHY read (TX: LE 1M, RX: LE 1M)
McuMgrBleTransport Sending (248 bytes) Header (Version: 1, Op: 2, Flags: 0, Len: 240, Group: 1, Seq: 0, Command: 1) CBOR {"data":"PbjzlgAAAAAAAgAAXFADAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////","len":218028,"sha":"2xpbY1ZHpNFAuX1m7jidoDKGaWDtiKgTfT7gkEqF500=","off":0}
McuMgrBleTransport Sending (9 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 1, Group: 0, Seq: 1, Command: 6) CBOR {}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Sending (19 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 11, Group: 0, Seq: 2, Command: 7) CBOR {"format":"sv"}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
McuMgrBleTransport Sending (9 bytes) Header (Version: 1, Op: 0, Flags: 0, Len: 1, Group: 0, Seq: 3, Command: 8) CBOR {}
McuMgrBleTransport Data written to da2e7828-fbce-4e01-ae9e-261174997c48
BluetoothGatt onClientConnectionState() - status=8 clientIf=5 device=XX:XX:XX:XX:60:A0
McuMgrBleTransport Error: (0x8): GATT CONN TIMEOUT
Anyone got any ideas here?