Skip to content

dfu_version unexpected in manifest for pca10059? #4089

Open
@aeijdenberg

Description

@aeijdenberg

Hi, I've been trying to get the example flashing light working with tinygo and the nRF52840 USB Dongle.

When I run tinygo flash -target=pca10059 ./main.go I get the following output:

Traceback (most recent call last):
  File "nordicsemi/__main__.py", line 1555, in <module>
  File "click/core.py", line 1137, in __call__
  File "click/core.py", line 1062, in main
  File "click/core.py", line 1668, in invoke
  File "click/core.py", line 1668, in invoke
  File "click/core.py", line 1404, in invoke
  File "click/core.py", line 763, in invoke
  File "nordicsemi/__main__.py", line 1032, in usb_serial
  File "nordicsemi/__main__.py", line 982, in do_serial
  File "nordicsemi/dfu/dfu.py", line 69, in __init__
  File "nordicsemi/dfu/package.py", line 671, in unpack_package
  File "nordicsemi/dfu/manifest.py", line 200, in from_json
TypeError: Manifest.__init__() got an unexpected keyword argument 'dfu_version'
[85994] Failed to execute script '__main__' due to unhandled exception!

I'm running this version of nrfutil downloaded from https://www.nordicsemi.com/Products/Development-tools/nrf-util:

% nrfutil --version                   
nrfutil 7.6.0 (92ce3a0 2023-08-15)
commit-hash: 92ce3a0c1cc7e203326d85919d826009510dc631
commit-date: 2023-08-15
host: aarch64-apple-darwin
build-timestamp: 2023-08-23T08:22:36.822784Z
classification: nrf-external

and have installed the nrf5sdk-tools package:

% nrfutil list    
Command        Version  Description
nrf5sdk-tools  1.0.1    nRF5 SDK tools that were available in nRF Util 6
   dfu                  
   keys                 
   pkg                  
   settings             
   zigbee               

Found 1 installed command(s)

I noticed the manifest.json inside of the package ZIP file generated by Go includes the following content:

{
    "manifest": {
        "application": {
            "bin_file": "application.bin",
            "dat_file": "application.dat",
            "init_packet_data": {
                "application_version": 4294967295,
                "device_revision": 65535,
                "device_type": 82,
                "firmware_crc16": 10853,
                "softdevice_req": [
                    65534
                ]
            }
        },
        "dfu_version": 0.5
    }
}

whereas if I generate the package ZIP with the command that replaces, i.e. nrfutil pkg generate --hw-version 52 --sd-req 0x0 --application application.bin --application-version 1 package.zip then it generates much simpler manifest.json:

{
    "manifest": {
        "application": {
            "bin_file": "application.bin",
            "dat_file": "application.dat"
        }
    }
}

Note this does not include the dfu_version attribute that nrfutil complained about.

That ZIP then works and I've managed to flash my device for the first time!

It's my first time working in this space, happy to help try to fix this with a PR, but wanted to open the issue first in case I'm advertently using incorrect tooling.

The code that generates the manifest.json looks to be here

type jsonManifest struct {
Manifest struct {
Application struct {
BinaryFile string `json:"bin_file"`
DataFile string `json:"dat_file"`
InitPacketData nrfInitPacket `json:"init_packet_data"`
} `json:"application"`
DFUVersion float64 `json:"dfu_version"` // yes, this is a JSON number, not a string
} `json:"manifest"`
}

CC @deadprogram @aykevl who I think made the last change in this space?

Metadata

Metadata

Assignees

No one assigned

    Labels

    nRFNordic Semi

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions