]> git.tnoah.ca Git - lora-radio.git/commitdiff
Set firmware hashes on nRF
authorMark Qvist <mark@unsigned.io>
Mon, 13 Jan 2025 10:37:29 +0000 (11:37 +0100)
committerMark Qvist <mark@unsigned.io>
Mon, 13 Jan 2025 10:37:29 +0000 (11:37 +0100)
Makefile
partition_hashes

index d2f74a20856828aa535cf09db948070dd3614f2f..70ae1f774538c138e4e26544078a0afc1b7f630f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -238,9 +238,13 @@ upload-featheresp32:
 
 upload-rak4631:
        arduino-cli upload -p /dev/ttyACM0 --fqbn rakwireless:nrf52:WisCoreRAK4631Board
+       @sleep 1
+       rnodeconf /dev/ttyACM0 --firmware-hash $$(./partition_hashes from_device /dev/ttyACM0)
 
 upload-heltec_t114:
-       arduino-cli upload -p /dev/cu.usbmodem14401 --fqbn heltec:Heltec_nRF52:HT-n5262
+       arduino-cli upload -p /dev/ttyACM0 --fqbn Heltec_nRF52:Heltec_nRF52:HT-n5262
+       @sleep 1
+       rnodeconf /dev/ttyACM0 --firmware-hash $$(./partition_hashes from_device /dev/ttyACM0)
 
 release: release-all
 
index a87c1531bcda54f36ebe2fb97d14586c0e95be06..9d8db4baeb8e9faee5260f2e580f98f9b35016ed 100755 (executable)
@@ -20,6 +20,7 @@ import sys
 import RNS
 import json
 import hashlib
+import subprocess
 
 major_version = None
 minor_version = None
@@ -27,9 +28,23 @@ target_version = None
 
 target_file = os.path.join(sys.argv[1])
 
-firmware_data = open(target_file, "rb").read()
-calc_hash = hashlib.sha256(firmware_data[0:-32]).digest()
-part_hash = firmware_data[-32:]
-
-if calc_hash == part_hash:
-    print(RNS.hexrep(part_hash, delimit=False))
+if sys.argv[1] == "from_device":
+    from_device = True
+else:
+    from_device = False
+
+if not from_device:
+    firmware_data = open(target_file, "rb").read()
+    calc_hash = hashlib.sha256(firmware_data[0:-32]).digest()
+    part_hash = firmware_data[-32:]
+
+    if calc_hash == part_hash:
+        print(RNS.hexrep(part_hash, delimit=False))
+
+else:
+    try:
+        cmdresult = subprocess.run(["rnodeconf", sys.argv[2], "-L"], stdout=subprocess.PIPE).stdout.decode('utf-8')
+        part_hash = cmdresult.split("The actual firmware hash is: ")[1].replace("\n", "")
+        print(part_hash)
+    except Exception as e:
+        print("Could not get partition hash from device: "+str(e))