Thingy:52 DFU 2.04

Posted on
  • Got my Thingy:52 in the mail this morning, and trying to put esprunio on it,

    I couldn't see a softdevice file in /binaries for 2.04 so i used the 1.99 one and then put the espruino_1v99_thingy52_app.zip build onto it which worked fine, however I'd now like to update it to 2.04, but using the espruino_2v04_thingy52.zip file I get an Error 'Invalid Object' with DFU from nrfConnect on iOS.

  • That's really strange. You wouldn't need a new softdevice as it's the same one for all versions of Espruino.

    Just as a sanity check, could you try downloading it and re-flashing again? I just checked the zip files and the format seems almost identical, so it seems strange the upload would fail.

    just to add: As you have an nRF52DK you could always upload the hex file - you just need one of the 10 pin small ribbon cables

  • Still same issue, I also tried using my android device and nrfConnnect on there

  • I have the exact same issue. @sammachin did you manage to flash the version 2.04? I noticed that the instructions in https://www.espruino.com/Thingy52 ask you to download a file like espruino_*_thingy52_app.zip but the version 2.04 doesn't have a _app.zip suffix. Is it in a different format maybe? Is there a way to build the right one?

  • I also found out that the two files inside the 1.99_app.zip have version 1.98. It's like somehow it might have been built by hand. I cloned the espruino repository, checked out tag for version 1.99 and tried to build the zip with this:

    make clean && DFU_UPDATE_BUILD=1 BOARD=THINGY52 RELEASE=1 make

    but I've got a zip file that, like 2.04, doesn't work either. However, just to verify that I hadn't reached an invalid state, I retried the 1.99_app.zip from the espruino's download section and it worked like a charm. Any ideas?

  • Any ideas?

    When examining the 1.99 and 2.04 zip packages via nrfutil command I see one difference - the fw_version. For older 1.99 _app package fw is set to value 7, see below. v2.04 has it set to fw_version: 0x000000FF (255). Maybe it could make difference, maybe not. Otherwise it looks same for both. Required softdevice version is the same 0x8c= S132 3.0.0

    $ nrfutil pkg display espruino_1v99_thingy52_app.zip
    
    DFU Package: <espruino_1v99_thingy52_app.zip>:
    |
    |- Image count: 1
    |
    |- Image #0:
       |- Type: application
       |- Image file: espruino_1v98_thingy52_app.bin
       |- Init packet file: espruino_1v98_thingy52_app.dat
          |
          |- op_code: INIT
          |- signature_type: ECDSA_P256_SHA256
          |- signature (little-endian): 7f0399ea98381d2422df261c10376236d888f52c­73bf370a2066c4b1d410f1dd72fff6fab493a091­c0cd2fe57892c1c86965c35e382a8ce4d0584cb6­1c2095ca
          |
          |- fw_version: 0x00000007 (7)
          |- hw_version 0x00000034 (52)
          |- sd_req: 0x8C
          |- type: APPLICATION
          |- sd_size: 0
          |- bl_size: 0
          |- app_size: 253952
          |
          |- hash_type: SHA256
          |- hash (little-endian): fbb0f7848bdf4184e0254c56040636871fdc1216­bd6184bb1ed18bfc7faba244
          |
          |- boot_validation_type: []
          |- boot_validation_signature (little-endian): []
          |
          |- is_debug: False
    
  • make clean && DFU_UPDATE_BUILD=1 BOARD=THINGY52 RELEASE=1 make

    You could try to modify boards/THINGY52.py and set --application-version to 0x07

         'DFU_SETTINGS=--application-version 0xff --hw-version 52 --sd-req 0x8C',
    
  • Ahh, sorry about this. I just figured out what's happening. The Thingy:52 ships with a signed bootloader, and Nordic won't share the private key for it (or even provide a hex file the 'unlocks' it).

    So... the app zip file is one that's specially signed by Nordic for use with their signed bootloader. I should have remembered this - I've just asked Nordic if they can sign the 2v04 firmware, so hopefully if they do that then there will be a new app.zip file which 'just works'

    If you can upload the hex file over SWD with a DK then it'll 'just work' and you get an unlocked Espruino bootloader that you can always update to the newest version with though.

  • and Nordic won't share the private key for it (or even provide a hex file the 'unlocks' it).

    One could posibly rewrite their bootloader from Espruino via the Flash module api? Or even disable just the signature check but whole espruino bootloader is of course much better and cleaner solution.

  • One could posibly rewrite their bootloader from Espruino via the Flash module api?

    Wow, yes, that's an option I guess :)

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Thingy:52 DFU 2.04

Posted by Avatar for sammachin @sammachin

Actions