That's the plan eventually. Well, actually I was hopeful that key rotation is added before I need to. It really is pretty important and seems is already accounted for in the libraries (https://groups.google.com/d/msg/openthread-users/Q9sKn6W8hE4/wlc5vgoMBgAJ).
I came up with another idea though. Where you said I could flash system-part1.bin
without destroying another node on the network I simply patched another node to allow me to join the network without knowing the password.
diff --git a/system/src/control/mesh.cpp b/system/src/control/mesh.cpp
index 69b9756c4..c8de8def4 100644
--- a/system/src/control/mesh.cpp
+++ b/system/src/control/mesh.cpp
@@ -398,9 +398,11 @@ int auth(ctrl_request* req) {
// Generate PSKc for the provided commissioning credential
uint8_t pskc[OT_PSKC_MAX_SIZE] = {};
CHECK_THREAD(otCommissionerGeneratePSKc(thread, dPwd.data, name, extPanId, pskc));
+#if 0
if (memcmp(pskc, curPskc, OT_PSKC_MAX_SIZE) != 0) {
return SYSTEM_ERROR_NOT_ALLOWED;
}
+#endif
return 0;
}
Built it with make all PLATFORM=xenon MODULAR=y
in the module
directory, flashed it in DFU mode, and joined the network with particle mesh add "e__id_of_xenon" "existing_name" -v
. It asked for the password, I gave it a wrong one, and it worked just great. (the app was stuck spinning trying to join, but that's not unusual. I really like the new cli command though)
I'm not 100% sure where/how/if the PSK is stored, and if that node will be able to assist another (or even if it might have either received or pushed the key that was supplied), but currently it is that it's back online and I can continue experimenting with it.