-
Notifications
You must be signed in to change notification settings - Fork 214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unknown response received #436
Comments
You request (0x):
06 - Request Op Code: Select Spec says (https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.2/lib_dfu_transport.html#lib_dfu_transport_op_select):
The response you got is (0x):
60 - Response Op Code The Max Size and "What is that?" above are incorrect. |
Good question. ¯\(ツ)/¯ My manifest looks like this:
|
Your file is for legacy DFU, but the device is using Secure DFU. Also, seems like you have endianness wrong? Really the brain numbers are so big? It may also be cache. Try restarting Bluetooth on the iPhone any try again. |
I thought perhaps that it might be an invalid firmware zip package, but regardless of what firmware zip I choose to test with from the demo samples, the same error response arrives. Cycling the Bluetooth on the iPhone didn't change anything. The nRF Connect iOS app doesn't seem to expose any more information either. Is this perhaps a hardware config/setup detail? |
Did you try DFU on Android? Using nRF Connect for Android. Could you paste the logs from the app? |
I did not, and can't currently, as this is primarily an iOS app and don't have access to an Android device. |
Then how about logs from nRF Connect for iOS? |
The issue seems to be on your device side. Is it the standard bootloader, or has it been modified? Why the notification it sends is in wrong format and the values look incorrect? E.g., with offset = 0, the CRC should also be 0. |
Here are two log files from the nRF Connect app. The Android seems to succeed. While the iOS fails with that error. It seems as if there is a discrepancy between how each mobile device handles the communication. For example, I don't see the Android app sending a 0x0601. |
Ok, I can see the difference between Android and iOS. Android actually also sends 0x06-01, but the log gets corrupted (on Android there's a shared buffer for sending and receiving data, so in here:
The "data written" actually displays what has been received, as notification comes even before the write confirmation callback. It should be:
The difference between Android and iOS implementation of DFU library is that Android just reads (0x):
iOS implementation, on the other hand, validates the response and rejects if it's too long, returning an error. However, this doesn't change the situation, that the root cause of this failure is in your DFU bootloader implementation. It should send 3+4+4+4 bytes, not more, in this notification. |
Your experience should improve with version 4.10.4, where I don't check the notifications that strictly. This should be released in nRF Connect for iOS in some time. |
Good work @philips77 , your recent update to the DFU library (v4.10.4) for iOS worked to resolve the error state I was experiencing and the device updated successfully with my new firmware sample. The hardware dev will also be fixing the DFU bootloader implementation as per your feedback. Thanks again. |
Xcode 12.5, iOS 14.6, iPhone XS
I'm struggling to understand the issue here when I try to update the firmware using your iOS example code.
Logs
Can you perhaps shine some light on this
Unknown response received: 0x600601800000000000000000000000003cb7423f
error?The text was updated successfully, but these errors were encountered: