Skip to content

Commit 9b5fdc8

Browse files
committed
Add sketch encryption for B2B projects. Fixed FWID issue after upftrading of Target0.
1 parent 1f82a59 commit 9b5fdc8

File tree

19 files changed

+62
-18
lines changed

19 files changed

+62
-18
lines changed

hardware/arduino/zunoG2/beta/boards.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ menu.CleanNVM=Clean NVM
99
menu.UpdateLicense=License update
1010
menu.ChipType=Chip Type
1111
menu.UARTBaudrate=Serial Baudrate
12+
menu.SketchEncryption=Sketch Encryption (B2B)
1213
##############################################################
1314
zuno2.name=Z-Wave>ME Z-Uno2
1415

@@ -117,4 +118,15 @@ zuno2.menu.UARTBaudrate.HIGH.build.baud = 1
117118
zuno2.menu.UARTBaudrate.ULTRA.build.baud = 2
118119
zuno2.menu.UARTBaudrate.LOW.build.baud = 3
119120

121+
zuno2.menu.SketchEncryption.None = None (Default)
122+
zuno2.menu.SketchEncryption.Key1 = Key#1
123+
zuno2.menu.SketchEncryption.Key2 = Key#2
124+
zuno2.menu.SketchEncryption.Key3 = Key#3
125+
zuno2.menu.SketchEncryption.Key4 = Key#4
126+
zuno2.menu.SketchEncryption.None.build.s_key = 0
127+
zuno2.menu.SketchEncryption.Key1.build.s_key = 1
128+
zuno2.menu.SketchEncryption.Key2.build.s_key = 2
129+
zuno2.menu.SketchEncryption.Key3.build.s_key = 3
130+
zuno2.menu.SketchEncryption.Key4.build.s_key = 4
131+
120132

hardware/arduino/zunoG2/beta/platform.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ tools.zprog.upload.pattern="{runtime.tools.zme_make.path}/zme_make" upload "{bui
3232

3333
# ZUNO compile patterns
3434
# ----------------------
35-
recipe.hooks.sketch.prebuild.1.pattern = "{tools.zprog.cmd.path}" build "{build.path}/{build.project_name}" -S "{tools.zprog.cmd.cores}" -S "{tools.zprog.cmd.libraries}" -S "{tools.zprog.cmd.include}" -B "{build.path}" -T "{tools.zprog.cmd.bin}" -O "arduino_ide" -lcl "{tools.zprog.cmd.clang_lib}" -O BO:-DARDUINO=152 -O BO:-DARDUINO_ARCH_ZUNOG2 -O BO:-DZME_ZUNOG2 -O LO:-lm -C "{build.chiptype}"
35+
recipe.hooks.sketch.prebuild.1.pattern = "{tools.zprog.cmd.path}" build "{build.path}/{build.project_name}" -S "{tools.zprog.cmd.cores}" -S "{tools.zprog.cmd.libraries}" -S "{tools.zprog.cmd.include}" -B "{build.path}" -T "{tools.zprog.cmd.bin}" -O "arduino_ide" -lcl "{tools.zprog.cmd.clang_lib}" -O BO:-DARDUINO=152 -O BO:-DARDUINO_ARCH_ZUNOG2 -O BO:-DZME_ZUNOG2 -O LO:-lm -C "{build.chiptype}" -ski "{build.s_key}"
3636

3737
recipe.c.o.pattern="{tools.zprog.cmd.path}" arduino_dummy -t "{source_file} {object_file}" -q
3838
recipe.cpp.o.pattern="{tools.zprog.cmd.path}" arduino_dummy -t "{source_file} {object_file}" -q

hardware/arduino/zunoG2/boards.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ menu.CleanNVM=Clean NVM
99
menu.UpdateLicense=License update
1010
menu.ChipType=Chip Type
1111
menu.UARTBaudrate=Serial Baudrate
12+
menu.SketchEncryption=Sketch Encryption (B2B)
1213
##############################################################
1314
zuno2.name=Z-Wave>ME Z-Uno2
1415

@@ -116,3 +117,14 @@ zuno2.menu.UARTBaudrate.STD.build.baud = 0
116117
zuno2.menu.UARTBaudrate.HIGH.build.baud = 1
117118
zuno2.menu.UARTBaudrate.ULTRA.build.baud = 2
118119
zuno2.menu.UARTBaudrate.LOW.build.baud = 3
120+
121+
zuno2.menu.SketchEncryption.None = None (Default)
122+
zuno2.menu.SketchEncryption.Key1 = Key#1
123+
zuno2.menu.SketchEncryption.Key2 = Key#2
124+
zuno2.menu.SketchEncryption.Key3 = Key#3
125+
zuno2.menu.SketchEncryption.Key4 = Key#4
126+
zuno2.menu.SketchEncryption.None.build.s_key = 0
127+
zuno2.menu.SketchEncryption.Key1.build.s_key = 1
128+
zuno2.menu.SketchEncryption.Key2.build.s_key = 2
129+
zuno2.menu.SketchEncryption.Key3.build.s_key = 3
130+
zuno2.menu.SketchEncryption.Key4.build.s_key = 4
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"hw_revisions": {"0703": {"seq": 4780, "updated": 1741614152.944704, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0704": {"seq": 4780, "updated": 1741614153.92686, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0707": {"seq": 4780, "updated": 1741614149.797733, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0700": {"seq": 4780, "updated": 1741614150.751727, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0701": {"seq": 4780, "updated": 1741614151.758786, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0804": {"seq": 4779, "updated": 1741613578.039905, "chip": "EFR32ZG23B020F512IM48", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0800": {"seq": 4779, "updated": 1741613578.9108942, "chip": "EFR32ZG23B020F512IM48", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0806": {"seq": 4781, "updated": 1741614204.854537, "chip": "ZGM230SA27HGN", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0803": {"seq": 4781, "updated": 1741614205.781367, "chip": "ZGM230SA27HGN", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0805": {"seq": 4781, "updated": 1741614206.701596, "chip": "ZGM230SA27HGN", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0802": {"seq": 4782, "updated": 1741614267.381973, "chip": "ZGM230SB27HGN", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}}}
1+
{"hw_revisions": {"0703": {"seq": 4875, "updated": 1742912904.227514, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0704": {"seq": 4875, "updated": 1742912905.1367989, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0707": {"seq": 4875, "updated": 1742912906.0560708, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0700": {"seq": 4875, "updated": 1742912902.4317849, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0701": {"seq": 4875, "updated": 1742912903.3346171, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0804": {"seq": 4876, "updated": 1742912951.70786, "chip": "EFR32ZG23B020F512IM48", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0800": {"seq": 4876, "updated": 1742912952.621401, "chip": "EFR32ZG23B020F512IM48", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0806": {"seq": 4877, "updated": 1742912987.0069141, "chip": "ZGM230SA27HGN", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0803": {"seq": 4877, "updated": 1742912987.952682, "chip": "ZGM230SA27HGN", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0805": {"seq": 4877, "updated": 1742912988.907735, "chip": "ZGM230SA27HGN", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0802": {"seq": 4782, "updated": 1741614267.381973, "chip": "ZGM230SB27HGN", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}, "0708": {"seq": 4875, "updated": 1742912901.464958, "chip": "ZGM130S037HGN1", "core_version_major": 3, "core_version_minor": 13, "core_version_patch": 1}}}
-1.92 KB
Binary file not shown.
304 Bytes
Binary file not shown.
568 Bytes
Binary file not shown.
308 Bytes
Binary file not shown.

hardware/arduino/zunoG2/cores/LLCore/LLCore.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ extern unsigned long __HeapLimit;
8686
#ifndef ZUNO_SKETCH_NAME
8787
#define ZUNO_SKETCH_NAME ""
8888
#endif
89+
#ifndef ZUNO_VENDOR_ID
90+
#define ZUNO_VENDOR_ID 0x0115
91+
#endif
92+
#ifndef ZUNO_PRODUCT_TYPE_ID
93+
#define ZUNO_PRODUCT_TYPE_ID 0x0210
94+
#endif
8995
void * zunoJumpTable(int vec, void * data);
9096
ZUNOCodeHeader_t g_zuno_codeheader __attribute__((section(".sketch_struct"))) = {
9197
{'Z','M','E','Z','U','N','O','C'},
@@ -103,7 +109,10 @@ ZUNOCodeHeader_t g_zuno_codeheader __attribute__((section(".sketch_struct"))) =
103109
ZUNO_OTA_PIN,
104110
ZUNO_CUSTOM_OTA_OFFSET,
105111
ZUNO_SKETCH_NAME,
106-
ZUNO_HWID};
112+
ZUNO_HWID,
113+
0, // Encryption is always blank here. Utility will modify it
114+
ZUNO_VENDOR_ID,
115+
ZUNO_PRODUCT_TYPE_ID};
107116

108117
// from ZWSupport.c
109118
int zuno_CommandHandler(ZUNOCommandCmd_t * cmd);

hardware/arduino/zunoG2/cores/LLCore/LLCore.h

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,20 @@ typedef struct ZUNOCodeHeader_s{
2020
uint16_t crc16;
2121
uint32_t flags;
2222
uint16_t fwId;
23-
uint32_t jumptable_offset;
24-
uint32_t build_timestamp;
25-
uint8_t console_pin;
26-
uint32_t console_baud;
27-
uint16_t sketch_version;
28-
uint8_t ota_firmwares_count;
29-
ZUNOOTAFWDescr_t * ota_firmwares_descriptions;
30-
uint32_t ota_pincode;
31-
uint32_t ota_custom_offset;
32-
char name[MAX_SKETCH_NAME];
33-
uint16_t hw_id;
23+
uint32_t jumptable_offset;
24+
uint32_t build_timestamp;
25+
uint8_t console_pin;
26+
uint32_t console_baud;
27+
uint16_t sketch_version;
28+
uint8_t ota_firmwares_count;
29+
ZUNOOTAFWDescr_t * ota_firmwares_descriptions;
30+
uint32_t ota_pincode;
31+
uint32_t ota_custom_offset;
32+
char name[MAX_SKETCH_NAME];
33+
uint16_t hw_id;
34+
uint32_t sketch_encryption; // Encryption FLAG + key hash data
35+
uint16_t vendor_id;
36+
uint16_t product_type_id;
3437
} ZUNOCodeHeader_t;
3538

3639
void WDOG_Feed();

0 commit comments

Comments
 (0)