programming nRF5340 with nrfjprog

I've been working for a year now programming nRF5340 DKs using nrfjprog and I still can't seem to figure out what is the right way to program them. It is also very random. I tend to get error 90:

```

- Encountered error -90: Command read_device_info executed for 3 milliseconds with result -90\"
- Encountered error -90: Command read_memory_descriptors executed for 3 milliseconds with result -90
- Encountered error -90: Command sys_reset executed for 3 milliseconds with result -90
- Access protection is enabled, can't read device version.
- Can't read memory descriptors, ap-protection is enabled.
- Unable to perform system reset. Device is readback protected.
- Try a debug reset instead if possible.
ERROR: The operation attempted is unavailable due to readback protection in
ERROR: your device. Please use --recover to unlock the device.
NOTE: For additional output, try running again with logging enabled (--log).
NOTE: Any generated log error messages will be displayed.

```

But even if I run --recover or --reset it continues to fail until randomly some day it decides not to.

I believe I've tried all combinations of --recover and --reset and --erase. What is the ultimate way to program these chips using nrfjprog? 

Thanks!!

Related