Skip to content

Commit

Permalink
Set firmware hashes on nRF
Browse files Browse the repository at this point in the history
  • Loading branch information
markqvist committed Jan 13, 2025
1 parent c1b3b4f commit 95895f3
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 7 deletions.
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
27 changes: 21 additions & 6 deletions partition_hashes
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,31 @@ import sys
import RNS
import json
import hashlib
import subprocess

major_version = None
minor_version = None
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))

0 comments on commit 95895f3

Please sign in to comment.