diff --git a/scripts/west_commands/runners/nrfjprog.py b/scripts/west_commands/runners/nrfjprog.py index 723080d56c3..87c3f2856b8 100644 --- a/scripts/west_commands/runners/nrfjprog.py +++ b/scripts/west_commands/runners/nrfjprog.py @@ -95,6 +95,17 @@ def do_exec_op(self, op, force=False): else: raise RuntimeError(f'Invalid operation: {op_type}') + # Make sure the device is in the expected family + try: + output = self.check_output(['nrfjprog', '--deviceversion', '--snr', self.dev_id]) + if families[self.family] not in output.decode("ASCII"): + raise RuntimeError(f'Family mismatch: {families[self.family]} expected, but got {output.decode("ASCII")}') + except subprocess.CalledProcessError as cpe: + if cpe.returncode == UnavailableOperationBecauseProtectionError: + cpe.returncode = ErrNotAvailableBecauseProtection + raise cpe + + # Execute the flash command try: self.check_call(cmd + ['-f', families[self.family]] + core_opt + ['--snr', self.dev_id] + self.tool_opt)