What about DFU suffix signature?

A simple question: when I update the firmware of my DFU device via USB with the dfu-utils application I get the message

Warning: Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release

Is it possible to manage the suffix signature in the actual nRF Connect SDK?

Parents
  • Hi, 

    I have not found any references to dfu-util being used with any code Nordic supplies.

    Could you try to use mcumgr to communicate with the bootloader?

    Regards,
    Amanda H.

  • But can mcumgr comunicate over USB? In the documentation I read that it is for serial, BLE and UDP. The dfu-utils see my device as USB DFU device and I can update the firmware easily even if I get the warning above.

    In addiction, in this documentation I read

    "This tool is provided for evaluation use only and is not recommended for use in a production environment. It has known issues and will not respect the MCUmgr protocol properly e.g. when an error is received, instead of aborting will, in some circumstances, sit in an endless loop of sending the same command over and over again...."

    so if I want to develop a custom application with a update firmware feature for my device it seems not suitable use mcumgr. Am I right?

Reply
  • But can mcumgr comunicate over USB? In the documentation I read that it is for serial, BLE and UDP. The dfu-utils see my device as USB DFU device and I can update the firmware easily even if I get the warning above.

    In addiction, in this documentation I read

    "This tool is provided for evaluation use only and is not recommended for use in a production environment. It has known issues and will not respect the MCUmgr protocol properly e.g. when an error is received, instead of aborting will, in some circumstances, sit in an endless loop of sending the same command over and over again...."

    so if I want to develop a custom application with a update firmware feature for my device it seems not suitable use mcumgr. Am I right?

Children
  • Andrea Verdecchia said:
    can mcumgr comunicate over USB?

    Yes, see my colleague's example

    You also could try nRF Util. Here is the blog One tool to rule them all: nRF Util becomes a unified command line utility . Good to check out this post.  

    -Amanda H.

  • Thanks for your reply Amanda,

    I'm trying to use the nRF Util but I have the same problem of this post. I've added the

    CONFIG_USB_DEVICE_VID=0x1915
    CONFIG_USB_DEVICE_PID=0x5300

    in the child_image/mcuboot.conf but nothing changed. My child_image/mcuboot.conf is

    CONFIG_BOOT_SIGNATURE_TYPE_RSA=y
    CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256=n
    CONFIG_BOOT_SIGNATURE_KEY_FILE="C:/ncsapps/gravity/sdk_2_3_0/cruise_dongle/child_image/cruise_dongle_private_key.pem"
    CONFIG_USB_DEVICE_VID=0x1915
    CONFIG_USB_DEVICE_PID=0x5300

    and the prj.conf is

    ################################################
    ### SYSTEM CONFIGURATION #######################
    ################################################
    CONFIG_LOG=y
    CONFIG_USE_SEGGER_RTT=y
    CONFIG_RTT_CONSOLE=y
    CONFIG_UART_CONSOLE=n
    CONFIG_USB_DRIVER_LOG_LEVEL_ERR=y
    CONFIG_USB_DEVICE_LOG_LEVEL_ERR=y
    CONFIG_HEAP_MEM_POOL_SIZE=2048
    CONFIG_MAIN_STACK_SIZE=2048
    CONFIG_FPU=y
    # CONFIG_DISABLE_FLASH_PATCH=y
    
    ################################################
    ### SOC'S PERIPHERALS CONFIGURATION ############
    ################################################
    CONFIG_GPIO=y
    CONFIG_PWM=y
    CONFIG_SERIAL=y
    CONFIG_UART_INTERRUPT_DRIVEN=y
    CONFIG_UART_LINE_CTRL=y
    CONFIG_USB_DEVICE_STACK=y
    CONFIG_USB_DEVICE_PRODUCT="Sensor Cruise Dongle"
    CONFIG_USB_DEVICE_PID=0x0001
    CONFIG_USB_DEVICE_VID=0xAD5A
    CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n
    CONFIG_USB_COMPOSITE_DEVICE=y
    
    ################################################
    ### BLE CONFIGURATION ##########################
    ################################################
    CONFIG_BT_MAX_CONN=6
    CONFIG_BT=y
    CONFIG_BT_DEBUG_LOG=y
    CONFIG_BT_CENTRAL=y
    # CONFIG_BT_SMP=y
    CONFIG_BT_GATT_CLIENT=y
    CONFIG_BT_SCAN=y
    CONFIG_BT_SCAN_FILTER_ENABLE=y
    CONFIG_BT_SCAN_CONN_ATTEMPTS_FILTER=y
    CONFIG_BT_SCAN_CONN_ATTEMPTS_FILTER_LEN=6
    CONFIG_BT_SCAN_CONN_ATTEMPTS_COUNT=2
    CONFIG_BT_SCAN_UUID_CNT=1
    CONFIG_BT_GATT_DM=y
    CONFIG_BT_BUF_ACL_RX_SIZE=502
    CONFIG_BT_ATT_PREPARE_COUNT=2
    # CONFIG_BT_L2CAP_TX_BUF_COUNT=10
    CONFIG_BT_L2CAP_TX_MTU=498
    # CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y
    CONFIG_BT_CONN_TX_MAX=10
    CONFIG_BT_BUF_ACL_TX_COUNT=10
    CONFIG_BT_BUF_ACL_TX_SIZE=502
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
    CONFIG_BT_CTLR_PHY_2M=y
    CONFIG_BT_CTLR_RX_BUFFERS=2
    CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT=4000000
    
    CONFIG_BT_USER_DATA_LEN_UPDATE=y
    CONFIG_BT_USER_PHY_UPDATE=y
    
    ################################################
    ### FLASH MEMORY SUPPORT CONFIGURATION #########
    ################################################
    CONFIG_FLASH=y
    CONFIG_MPU_ALLOW_FLASH_WRITE=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    
    ################################################
    ### DFU CONFIGURATION 
    ### dfu-util --alt 1 --device ad5a:0001 --download C:\ncsapps\gravity\sdk_2_3_0\cruise_dongle\cruise_dongle_build\zephyr\app_update.bin
    ################################################
    CONFIG_USB_DFU_CLASS=y
    CONFIG_USB_DFU_ENABLE_UPLOAD=y
    # CONFIG_USB_DEVICE_DFU_PID=0xABCD
    CONFIG_IMG_MANAGER=y
    CONFIG_BOOTLOADER_MCUBOOT=y
    CONFIG_MCUBOOT_SIGNATURE_KEY_FILE=""
    # CONFIG_MCUBOOT_IMAGE_VERSION ="0.0.0+0"
    CONFIG_USB_DFU_REBOOT=y
    CONFIG_USB_DFU_PERMANENT_DOWNLOAD=y
    

    I've tryed to set CONFIG_USB_DEVICE_PID and CONFIG_USB_DEVICE_VID only in the mcuboot.conf but nothing. Any suggestion?

  • Hi, 

    Could you try this example mcuboot_serial_recovery_cdc_acm with adding CONFIG_USB_DEVICE_VID and CONFIG_USB_DEVICE_PID?

    -Amanda H. 

  • I've tryed to run the example on the nRF52840DK but nothing: I can't see it as USB device when i connect a USB to the nRF_USB connector and then I can't see the device when I run the nrfutil device list command.

  • Could you try to hold Button 1 while restarting the DK to activate the Serial Recovery Mode? 

Related