Production programming changes from Thingy91 to Thingy91x

We are moving to the Thingy91x after shipping over 1000 thingy91s. We are struggling though with evolving our production tools. Currently for the T91 we have a very slick python/pylink script that...

1) Loads ModemShell with RTT and retrieves device and sim information, generates and stores keys in the modem.

2) Programs our application (merged.hex) to the device.

3) Displays RTT diagnostics to verify operation.

We keep running into the T91x getting in a locked state. Claude gave us some advice to program and unlock, however "nrfutil device write" is only available on window and not on linux/macos and seems essential to unlocking without destroying the loaded programs.

Question:

1) Is there a alternative to "nrfutil device write --address 0x00FF8000 --value 0x50FA50FA" that is cross platform to unlock the devices?

2) Is there a better alternative to programming devices with the new 5 hex file scheme that guarantees unlocked success?

I've attached the nrfutil commands that work reliably (for Windows). I've also attached the current functional script for Thingy91.

Thanks

nrfutil device recover
nrfutil device program --firmware build_2\b0\zephyr\zephyr.hex --options chip_erase_mode=ERASE_ALL,reset=RESET_NONE
nrfutil device program --firmware build_2\signed_by_b0_mcuboot.hex --options chip_erase_mode=ERASE_NONE,reset=RESET_NONE
nrfutil device program --firmware build_2\signed_by_b0_mcuboot_s1_variant.hex --options chip_erase_mode=ERASE_NONE,reset=RESET_NONE
nrfutil device program --firmware build_2\MoShell\zephyr\zephyr.signed.hex --options chip_erase_mode=ERASE_NONE,reset=RESET_NONE
nrfutil device program --firmware build_2\app_provision.hex --options chip_erase_mode=ERASE_NONE,reset=RESET_NONE
nrfutil device write --address 0x00FF8000 --value 0x50FA50FA
nrfutil device write --address 0x00FF802C --value 0x50FA50FA
nrfutil device reset
T91.zip

  • Hi,

    1) Is there a alternative to "nrfutil device write --address 0x00FF8000 --value 0x50FA50FA" that is cross platform to unlock the devices?

    nrfutil is also supported on Linux and macOS (link). The "device write" command should be able to work fine. I currently am using Ubuntu 24.04 and the "device write" command works just fine... Which OS are you using and what CPU architecture do you have?

    And if you really want to use something else, I think you should be able to use pylink (that you are already using) to write this register.

    2) Is there a better alternative to programming devices with the new 5 hex file scheme that guarantees unlocked success?

    You can set the"SB_CONFIG_MERGED_HEX_FILES=y" sysbuild Kconfig to create a single .hex file that should contain the others .hex. Then programming this single merged file should do the trick.

    Best regards,

    Simon

  • Hi, I'm working on the same production process and I'm running Arch Linux x86_64. On nrfUtil's page with the downloads part, there are 2 Linux options, x86_64 and ARM. I have the x86_64 one which is version 7.6.0.
    On windows though, it's running 7.12.0 so I should be able to have that latest version too on Linux if you tell us it's supported as well right?
    Thanks for your time!
    Best regards,
    0x35c

  • Hi,

    I just tried to download the latest version from here, and it seems like it is version 8.2.0:

    > nrfutil --version    
    nrfutil 8.2.0 (c910332 2026-04-21)
    commit-hash: c910332307392c1f6801baadd3cc0265965803a5
    commit-date: 2026-04-21
    host: x86_64-unknown-linux-gnu
    build-timestamp: 2026-04-21T14:10:36.571810011Z
    classification: nrf-external

    I don't think you are using the one you just downloaded...

    Also, we don't guarantee that nrfutil works flawlessly on Arch Linux as we only test it for the OS marked with Tier 1 support listed in here.

    Best regards,

    Simon

Related