Hello, I tried to do DFU using MCP 3.10.0.14 and I'm getting the error:
"Error during firmware upload. Timeout while waiting for response for START DFU"
How do I increase timeout in MCP??
It seems to happen when I try to upload bigger firmware.
Hello, I tried to do DFU using MCP 3.10.0.14 and I'm getting the error:
"Error during firmware upload. Timeout while waiting for response for START DFU"
How do I increase timeout in MCP??
It seems to happen when I try to upload bigger firmware.
"Timeout while waiting for response for START DFU" should be 60 seconds according to the documentation, but it seems to be less. A quick fix is to add an additional delay in "..\Master Control Panel\3.10.0.14\lib\nordicsemi\dfu\dfu_transport_ble.py" at line ~229:
def _start_dfu(self, program_mode, image_size_packet):
logger.debug("Sending 'START DFU' command")
self.send_control_data(DfuOpcodesBle.START_DFU, chr(program_mode))
logger.debug("Sending image size")
self.send_packet_data(image_size_packet)
# wait 10 seconds
sleep(10)
self._wait_for_condition(self.get_received_response, waiting_for="response for START DFU")
self.clear_received_response()
Reason for this failure is that the swap erase is taking too long time to complete when the FW image exceeds a certain size. I will report this internally so that it will be addressed when adding DFU support for nRFconnect.
Note that the MIN_CONN_INTERVAL should not be reduced as the flash writes may become a bottleneck. 15 ms is the lowest recommended interval.
"Timeout while waiting for response for START DFU" should be 60 seconds according to the documentation, but it seems to be less. A quick fix is to add an additional delay in "..\Master Control Panel\3.10.0.14\lib\nordicsemi\dfu\dfu_transport_ble.py" at line ~229:
def _start_dfu(self, program_mode, image_size_packet):
logger.debug("Sending 'START DFU' command")
self.send_control_data(DfuOpcodesBle.START_DFU, chr(program_mode))
logger.debug("Sending image size")
self.send_packet_data(image_size_packet)
# wait 10 seconds
sleep(10)
self._wait_for_condition(self.get_received_response, waiting_for="response for START DFU")
self.clear_received_response()
Reason for this failure is that the swap erase is taking too long time to complete when the FW image exceeds a certain size. I will report this internally so that it will be addressed when adding DFU support for nRFconnect.
Note that the MIN_CONN_INTERVAL should not be reduced as the flash writes may become a bottleneck. 15 ms is the lowest recommended interval.