This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nrfutil on linux?

is there a version of nrfutil that works on linux? this one doesn't: github.com/.../pc-nrfutil

$ nrfutil dfu genpkg --application _build/nrf51822_xxac_s110.hex   fota.zip 
Traceback (most recent call last):
  File "/usr/sbin//nrfutil", line 9, in <module>
    load_entry_point('nrfutil==0.3.0', 'console_scripts', 'nrfutil')()
  File "/usr/lib/python2.7/site-packages/click-6.3-py2.7.egg/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/click-6.3-py2.7.egg/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python2.7/site-packages/click-6.3-py2.7.egg/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python2.7/site-packages/click-6.3-py2.7.egg/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python2.7/site-packages/click-6.3-py2.7.egg/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python2.7/site-packages/click-6.3-py2.7.egg/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/nrfutil-0.3.0-py2.7.egg/nordicsemi/__main__.py", line 236, in genpkg
    package.generate_package(zipfile_path)
  File "/usr/lib/python2.7/site-packages/nrfutil-0.3.0-py2.7.egg/nordicsemi/dfu/package.py", line 220, in generate_package
    init_packet = self._create_init_packet(firmware)
  File "/usr/lib/python2.7/site-packages/nrfutil-0.3.0-py2.7.egg/nordicsemi/dfu/package.py", line 320, in _create_init_packet
    return p.generate_packet()
  File "/usr/lib/python2.7/site-packages/nrfutil-0.3.0-py2.7.egg/nordicsemi/dfu/init_packet.py", line 79, in generate_packet
    format_string = self.__generate_struct_format_string()
  File "/usr/lib/python2.7/site-packages/nrfutil-0.3.0-py2.7.egg/nordicsemi/dfu/init_packet.py", line 97, in __generate_struct_format_string
    for key in sorted(self.init_packet_fields.keys(), key=lambda x: x.value):
  File "/usr/lib/python2.7/site-packages/nrfutil-0.3.0-py2.7.egg/nordicsemi/dfu/init_packet.py", line 97, in <lambda>
    for key in sorted(self.init_packet_fields.keys(), key=lambda x: x.value):
AttributeError: 'int' object has no attribute 'value'
  • as a quickfix, this seems to work for me:

    --- ./build/lib/nordicsemi/dfu/init_packet.py	2016-03-16 14:43:30.000000000 +0100
    +++ /usr/lib/python2.7/site-packages/nrfutil-0.3.0-   py2.7.egg/nordicsemi/dfu/init_packet.py	2016-03-16 14:55:42.765861290 +0100
    @@ -79,7 +79,7 @@
             format_string = self.__generate_struct_format_string()
             args = []
    
    -        for key in sorted(self.init_packet_fields.keys(), key=lambda x: x.value):
    +        for key in sorted(self.init_packet_fields.keys(), key=lambda x: x):
                # Add length to fields that required that
                 if key in [PacketField.REQUIRED_SOFTDEVICES_ARRAY,
                            PacketField.OPT_DATA]:
    @@ -94,7 +94,8 @@
             format_string = "<"  # Use little endian format with standard sizes for python,
             # see docs.python.org/.../struct.html
     
    -        for key in sorted(self.init_packet_fields.keys(), key=lambda x: x.value):
    +        for key in sorted(self.init_packet_fields.keys(), key=lambda x: x):
                 if key in [PacketField.DEVICE_TYPE,
                            PacketField.DEVICE_REVISION,
                            ]:
    
  • What version of Python are you using python --version says I have 2.7.6. I'm on Ubuntu 14.04.3 64-bit and this tool cloned from Git today worked for me.

Related