0x80xx
0x8000 - Model Number
Type: u16
Name: model-number (1)
Model Number. This is the firmware identifier.
Note
Devices will report 0x8007 - Variant simultaneously with this property.
0x8001 - Firmware Version
Name: firmware-version (1)
Offset | Type | Description |
---|---|---|
0 | u8 | Major |
1 | u8 | Minor |
2 | u8 | Patch |
3 | u8 | Beta (optional) |
Beta field will normally only be present for beta versions. In this case, its value will be in the range 1-255. A value of 0 can be ignored and the version should be treated as a production release.
JSON
"{major}.{minor}.{patch}" |
"{major}.{minor}.{patch}-beta.{beta}"
0x8002 - Hardware Version
Name: hardware-version (1)
Offset | Type | Description |
---|---|---|
0 | u8 | Major |
1 | u8 | Minor |
Note
If hardware version is unknown the value 0.0 is used
JSON
"{major}.{minor}"
0x8003 - MAC Address
Type: mac-address
Name: mac-address (1)
Bluetooth MAC address.
Note
Not reported.
0x8005 - Production Info Extended
Type: dictionary
Key | Type | Description |
---|---|---|
0 | u48 | MAC Address |
1 | u16 | Model Number |
2 | u8 | Variant |
3 | u8 [4] | Firmware Version |
4 | u8 [65] | Public Key |
5 | u32 | Chip |
6 | u32 | Chip Variant |
7 | u32 | Chip Package |
0x8006 - Production Info
Type: u32
Name: production-info (1)
Note
Not reported.
0x8007 - Variant
Type: u8
Name: variant (1)
Device variant.
One firmware (Model Number) can operate differently depending on the value of this property.
The combination of 0x8000 - Model Number and 0x8007 - Variant defines the Meshtech Product Name.
Note
A value of 0 or 255 indicates that variant is unused.
Note
Devices will report 0x8000 - Model Number simultaneously with this property.
0x8008 - Public Key
Name: public-key (10)
ECDSA P-256/spec256r1 device public key. The key is in uncompressed format (65 bytes).
The public key is used to authenticate the device as an authentic Meshtech device during provisioning.
0x8009 - Host Public Key
Name: host-public-key (10)
Note
This property is written internally by the gateway host. It is only applicable to extender dongles when operating as gateway.
ECDSA P-256/spec256r1 host public key. The key is in uncompressed format (65 bytes).
If no key exists, the value will be a 65-byte array of all 0's. This indicates that the dongle is unpaired. The key is used for pairing with the host and can be written once.
0x800A - Provision
Type: dictionary
Name: provision (11)
Provision device to Secure mode.
Key | Type | JSON Property | JSON Type | Description |
---|---|---|---|---|
1 | u8 (32) | networkKey | hex-string | Network Key. Value is the 32-byte Key Material (KM). |
2 | u8 | deviceMode | string | Device Mode |
3 | u8 | networkLock | number | Network Lock |
JSON Example
Set to secure network, keep device-mode and network-lock unchanged:
{
"networkKey": "A0B5C632C0BD52FBD9C9578ED0DAED934C0198AA0F27D13A6DE1F738BF0B14A5"
}
This command property is used to provision/re-provision a device.
- When provisioning the gateway, networkKey is required. This sets the gateway network.
- When provisioning a device, networkKey is optional. In this case, when not included, it will be implicitly added by the extender before the value is written to the device. This makes it very simple and secure to add new devices to a network. The property write operation must have access type unprovisioned for this to work.
- If deviceMode is included, switch to this mode.
- If networkLock is included, set this network lock.
The key material (KM) is used as input key material to HKDF:
- To generate a default HMAC-SHA-256 key OKM[0..31] (no salt, no info), used for authentication.
- To generate unique HMAC-SHA-256 and AES-128 session keys (no salt, info set to 16-byte random session challenges, 48-byte output key material):
- HMAC-SHA-256 key = OKM[0..31]
- AES-128 key = OKM[32..47]
The command will fail if:
- The device does not support the device mode requested.
- Network Lock is included, but device doesn't support this.
- An unknown/unsupported dictionary key was included in the value
0x800B - Network ID
Name: network-id (11)
Offset | Type | Description |
---|---|---|
0 | u8 | Network Type |
1..4 | u32 | ID |
Network Type | Description |
---|---|
0x00 | Legacy Network. ID is 0. |
0x01 | Secure Network. ID is the first 4 bytes of 0x800C - Secure Network Fingerprint . |
JSON: hex-string
The default network ID from factory reset is 0x0000000000 (legacy network).
0x800C - Network Fingerprint
Name: network-fingerprint (11)
Offset | Type | Description |
---|---|---|
0..31 | u8 (32) | SHA-256 of the 32-byte Key Material (KM). |
JSON: hex-string
This is only applicable for secure mode. A NULL value is returned when device operates in legacy mode.
0x800D - Provision Legacy
Name: provision-legacy (11)
Provision device to Legacy mode. This will delete the network key from the device if the device is provisioned to secure. The write operation will fail if any of the reserved flags are set.
Offset | Type | JSON Property | JSON Type | Description |
---|---|---|---|---|
0 | u8 | - | - | FLAGS |
1 | u8 | deviceMode | string | Device Mode. Set to 0 if unused, or leave out in JSON. See FLAGS. |
2 | u8 | networkLock | number | Network Lock. Set to 0 if unused, or leave out in JSON. See FLAGS. |
FLAGS bit | Description |
---|---|
7:2 | Reserved, set to 0. |
1 | Set Network Lock |
0 | Set Device Mode |
JSON Example
{
"deviceMode": "connected",
"networkLock": 1
}
0x8010 - Activated
Type: u8
Name: activated (10)
Value | Description |
---|---|
0 | Deactivated |
1 | Activated |
A gateway must be activated before it can be used.
Note
This property is only applicable when extenders operate as gateway.
Note
This property can only be written from Meshtech Device Management.
0x8020 - Power Source
Type: u8
Name: power-source (1)
Value | Description |
---|---|
0 | Unknown |
1 | Mains powered |
2 | Battery powered |
3 | Mains powered, with backup battery |
JSON
"unknown" | "mains" | "battery" | "mains-with-backup-battery"
0x8030 - Add Root Certificate
Type: UTF-8
Name: add-root-certificate (11)
Add root certificate in PEM format.
0x8031 - Remove Root Certificate
Type: UTF-8
Name: remove-root-certificate (11)
Remove root certificate. Value must be SHA-1 fingerprint as uppercase hex string.
0x8032 - Root Certificates
Type: json-array
Name: root-certificates (11)
Root certificates. Value is a JSON array of PEM certificate strings.
0x8033 - Root Certificate Fingerprints
Type: json-array
Name: root-certificate-fingerprints (11)
Root certificate fingerprints. Value is a JSON array of SHA-1 fingerprint uppercase hex strings.