+
+For a big device that has more space for the label, a long version label could be used to store more information.
+
+
+
+
+
+
+
+
+
+
+```
+{
+ "PROVID": "PROVISIONIDOOOOOOOOO",
+ "BRAND": "MatchX",
+ "MODEL": "MX1234",
+ "SN": "S123456"
+}
+
+```
+
+
+## What device developer needs to do?
+
+The firmware needs to implement the flow device provisioning. It is a two steps process and needs to be done for a new produced device. The details of this process is listed on the later part of this document.
+
+During the device provisioning, it required the Provision ID to identify the device. We suggest the device firmware add an interface to let the manufacturer set this information at the end of the quality assurance (QA) procedure.
+
+An example method is to use a UART interface to program the information. Our example device uses an “AT” command to achieve this. But any other serial protocol should be fine.
+
+
+
+
+
+## What device manufacturer needs to do?
+
+To successfully provision a device, it required the information of Provision ID. The manufacturer needs to request it from us, MatchX. We will prepare a spreadsheet that has the assigned Provision ID and related information for the manufacturer. The Manufacturer needs to make sure the information is set to the device with the correct matched QR-Code label.
+
+We suggest the manufacturer to add an extra step at their quality assurance (QA) procedure. The step included setting the Provision ID to the device with a matched QR-Code label. Then verify the device is being provisioned, that means it exchanged key information with the server.
+
+
+
+
+
+
+
+
+## Device Provisioning Implementation Details
+
+Source code of our example device: TBD
+
+
+### Provision ID
+
+The Provision ID is a unique string for each device. During the provisioning, it is used as an identity at the provisioning server to access the device information. The Provision ID is 20 characters long and uses the RFC4648 Base32 alphabet.
+
+
+### Hash of Provision ID
+
+It is the result of the SHA256 hash on the Provision ID. The device provisioning process uses this value when doing authentication with the server. To minimize the complexity of the device implementation, we suggest the device also store this value to its FLASH, instead of calculating it by itself.
+
+
+```
+provisionIdHash = SHA256(provisionId | '.MatchX')
+```
+
+
+For example:
+
+
+```
+PID = 'TESTPIDOOOOOOOOOOOOO'
+HASH = 'c8c7564b46b91c91ef6c4f37bcca8cf7e81baac6eb869dcc62e5fafdd0242497'
+```
+
+
+
+### Message integrity code (MIC)
+
+The message integrity code (MIC) value at LoRa PHYPayload for HELLO and AUTH messages is calculated as below.
+
+
+```
+FixedKey[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
+
+cmac = aes128_cmac(FixedKey, message)
+MIC = cmac[0..3]
+```
+
+
+### Verification Code
+
+The verification code is used when the device authenticates with the server. The calculation is shown below.
+
+
+```
+ FixedKey[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
+
+ cal_buf = provisionId + nonce;
+ verifyCode = aes128_cmac(FixedKey, cal_buf)
+```
+
+Example:
+
+
+```
+// Input
+ privisionid = "SERIALNUMBEROOOOOOOO";
+ servernonce = {0x01, 0x02, 0x03, 0x04};
+
+// Output
+ verifyCode = {0x2E, 0x69, 0xBB, 0x5E, 0xD7, 0x8B, 0x5E, 0xE8,
+ 0x0C, 0x6A, 0x8A, 0xDC, 0x81, 0x91, 0xDD, 0xF8};
+```
+
+
+
+### AES
+
+The encryption scheme used in aes128_encrypt() and aes128_cmac() are the same as LoRaWAN specification. This approach will minimize the need for extra code on the device side.
+
+
+### LoRa
+
+The device provisioning using the “Proprietary” LoRa frame for communication, it means the MType on MHDR is set to ‘111’.
+
+The receiving windows using RX1 and delay is 5s.
+
+Data Rate:
+
+
+
+
+
Region
+
+
Data Rate
+
+
Configuration
+
+
+
+
EU868
+
+
3
+
+
Up and Down: SF9 / 125 kHz
+
+
+
+
US915
+
+
3
+
+
Up: SF7 / 125 kHz
+
+ Down: SF7 / 500 kHz
+
+
+
+
+
CN470
+
+
3
+
+
Up and Down: SF9 / 125 kHz
+
+
+
+
+### Sequence Diagram
+
+The device provisioning has two steps. First, it is a ECDH key exchange process, called “Hello” by us. The device and the server will exchange their public key on this step. Then the next step is the authentication. The device will submit its hashed Provision ID to the server. If it is a valid ID on the server, the server will accept the request and send back the EUI information.
+
+The keys used for LoRaWAN OTAA are derived from the ECDH shared key. All this information will not appear on the communication message.
+
+
+
+
+### Message format
+
+The messages shown below are the content of the MACPayload of the Proprietary MAC message of LoRaWAN.
+
+LoRaWAN PHYPayload:
+
+
+
A random device EUI for the current device. 8 bytes long.
+
+
+
+
devPubKey
+
+
The ECDH public key generated by device. 64 bytes long.
+
+
+
+
serverPubKey
+
+
The ECDH public key generated by the server. 64 bytes long.
+
+
+
+
version
+
+
Protocol version. Value is 0x01. 1 byte value.
+
+
+
+
provisionIdHash
+
+
Hashed Provision ID. 32 bytes long.
+
+
+
+
serverNonce
+
+
Random value for verifyCode generation. 4 bytes long.
+
+
+
+
devNonce
+
+
Random value for verifyCode generation. 4 bytes long.
+
+
+
+
devEUI
+
+
The assigned Device EUI for the device. 8 bytes long.
+
+
+
+
verifyCode
+
+
Verification code. 16 bytes long.
+
+
+
+
+### ECDH
+
+In our example device source code, we used the following C source at GitHub for the ECDH.
+
+https://github.com/kokke/tiny-ECDH-c
+
+The compiled size is as small as 1.4KiB for ARM Thumb Code. It minimized the extra cost for fitting into an MCU.
+
+The ECDH key exchange will use the NIST K-233 curve. Private key size is 32 bytes, public key size is 64 bytes.
+
+
+### Key generation
+
+The keys used for LoRaWAN are generated inside the device instead of sending via the air. After the ECDH key exchange (Hello message), both device and server will hold a sharedKey in the same value. Then it will use the following calculation to derive to several keys.
+
+When the authentication is done, the derived AppKey and NwkKey should be stored in FLASH for later LoRaWAN OTAA use.
+
+
+```
+ AppKey = aes128_encrypt (sharedKey[0..15], rDevEUI | pad 0x01)
+
+ NwkKey = aes128_encrypt (sharedKey[32..47], rDevEUI | pad 0x02)
+
+ ProvKey = aes128_encrypt (sharedKey[16..23] | sharedKey[48..55], rDevEUI | pad 0x03)
+```
+
+
+AppKey and NwkKey are the keys for OTAA on LoRa communication.
+
+For 1.0.x LoRa, NwkKey will be used as AppKey for OTAA.
+
+ProvKey is used as the key for payload encryption of Auth messages and responses.
+
+Example:
+
+
+```
+// Input
+ sharedkey = {0x57, 0x57, 0x3A, 0x81, 0xE2, 0x7E, 0x48, 0x26, 0xFA, 0x8E, 0x18, 0x70, 0xCD,
+ 0x6B, 0x66, 0x40, 0xF3, 0x90, 0x5D, 0x98, 0x40, 0xF4, 0x12, 0xFA, 0xAE, 0x74,
+ 0x0B, 0x12, 0xE0, 0x01, 0x00, 0x00, 0xC4, 0xD8, 0x27, 0xA9, 0x37, 0x49, 0xEE,
+ 0x44, 0xEA, 0x1B, 0xAC, 0x1C, 0x18, 0x8C, 0x03, 0xAA, 0x6B, 0x02, 0xDA, 0x1C,
+ 0x68, 0xE9, 0xE8, 0xE6, 0xCA, 0xB9, 0xD1, 0xED, 0x91, 0x01, 0x00, 0x00};
+
+// Output
+ appkey = {0xFC, 0x3B, 0xDD, 0x59, 0x22, 0x87, 0xD9, 0x73
+ 0x48, 0xC0, 0x0B, 0xAC, 0x46, 0xB3, 0x05, 0x79};
+ nwkkey = {0x5B, 0x87, 0x83, 0xAF, 0x06, 0xFF, 0xB3, 0x62,
+ 0x9D, 0x03, 0x77, 0x9B, 0xF3, 0x4E, 0x12, 0x89};
+ provkey = {0x29, 0x53, 0x01, 0x98, 0x2D, 0x35, 0xC7, 0x2F,
+ 0x71, 0x42, 0xB9, 0xDD, 0x07, 0xFE, 0x1D, 0xEF};
+```
+
+
+
+
+
+## Request for Provision ID (CSV file)
+
+This is the CSV file you need to send to us to request for the Provision ID.
+
+
+```
+ MatchX Device Provisioning,,,,,
+ manufacturerName,MatchX GmbH,,,,
+ provisionId,model,serialNumber,fixedDevEUI,devEUI,appEUI
+ ,M-1234,S000000,Y,000000fffe000000,0000000000000000
+ ,M-1234,S000001,Y,000000fffe000001,0000000000000000
+ ,M-1234,S000002,Y,000000fffe000002,0000000000000000
+ ,M-1234,S000003,Y,000000fffe000003,0000000000000000
+ ,M-1234,S000004,Y,000000fffe000004,0000000000000000
+ ,M-1234,S000005,Y,000000fffe000005,0000000000000000
+ ,M-1234,S000006,Y,000000fffe000006,0000000000000000
+ ,M-1234,S000007,Y,000000fffe000007,0000000000000000
+```
+
+
+The first line is the signature, please don’t modify it.
+
+The second line is the name of the device manufacturer. Modify it to your company name.
+
+The third line is the header, please don’t modify it.
+
+Starting from the fourth line, it is the list of device information you need for a Provision ID.
+
+“provisionId” is the Provision ID, we will generate one for you if it is blank.
+
+“model” is the model number of your device.
+
+“serialNumber” is the serial number of your device.
+
+When your device has its own MAC address and is willing to use it as the Device EUI on LoRa, you should set the “fixedDevEUI” to “Y” and fill the “fixedDevEUI”.
+
+“appEUI” is not used at the moment, please fill it with “0000000000000000”.
+
+Here is the view when you use a spreadsheet program to edit the file.
+
+
+
+
+
+
+
+
+48-bits MAC to 64-bits EUI
+
+To convert a 48-bits MAC address into a 64-bits EUI, you need to insert a “0xff 0xfe” in the middle of it.
+
+For example:
+
+
+```
+ MAC = 01 02 03 04 05 06
+ EUI = 01 02 03 ff fe 04 05 06
+```
+
+
+
+
+After the request is approved, we will send you back the report file in CSV format. Here is an example for the report that is viewed with a spreadsheet program.
+
+
+
+
+
+The important parts are the “provisionId” and “provisionIdHash”. You need to program this information to the device. For the device with MAC and using fixed Device EUI, you need to take care of the “devEUI” and make sure the Provision ID is programmed to the corresponding device.
+
+Here is an example CSV file for the device that will use a random Device EUI. The “fixedDevEUI” will set to “N” and “deviceEUI” is blank. A random device EUI will assign to the device after provisioning.
+
+
+```
+ MatchX Device Provisioning,,,,,
+ manufacturerName,MatchX GmbH,,,,
+ provisionId,model,serialNumber,fixedDevEUI,devEUI,appEUI
+ ,M-1234,S000000,N,,0000000000000000
+ ,M-1234,S000001,N,,0000000000000000
+ ,M-1234,S000002,N,,0000000000000000
+ ,M-1234,S000003,N,,0000000000000000
+ ,M-1234,S000004,N,,0000000000000000
+ ,M-1234,S000005,N,,0000000000000000
+ ,M-1234,S000006,N,,0000000000000000
+ ,M-1234,S000007,N,,0000000000000000
+```
+
+
+
+
+
+
+
+
From 7d3f44089bc30a805886255825cfae4f2ec0c7c3 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:20 +0200
Subject: [PATCH 072/234] New translations miner-health.mdx (Chinese
Traditional)
---
.../current/tutorials/m2-pro/miner-health.mdx | 48 +++++++++++++++++++
1 file changed, 48 insertions(+)
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
new file mode 100644
index 0000000..8e488ac
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
@@ -0,0 +1,48 @@
+---
+sidebar_position: 4
+---
+
+# Miner Health
+
+Miner Health rewards users for placing their miner in a fashion that will provide a strong LoRa signal. These are the six items that make up miner health:
+* Fuel (Live)
+* Uptime (Live)
+* GPS Signal
+* Orientation
+* Proximity
+* Altitude
+
+## Miner Health Grace Period
+Each M2 Pro Miner has a 90-day grace period that begins with the initial registration of the miner. During this period of time, health will not affect the mining potential of the M2 Pro. After the grace period is over, the current health of the miner will be applied.
+
+If the fuel tank is empty after the grace period, mining efficiency will be reduced by 50% (see Fuel).
+
+## Fuel (Live)
+Each miner has a fuel tank. This tank is equal to the size of all the MXC mined by this miner. So a miner mined 10 MXC, the tank size would then be 10 MXC.
+
+*Fuel has a 50 percent influence on your mining potential*
+
+### How does this work?
+
+As a miner mines, it maintains the fuel tank. All newly mined MXC are added to the tank to ensure it continues to mine at peek efficiency. When MXC is removed from the fuel tank, the miner will mine at a reduced efficiency. For example, if all MXC would be removed from the fuel tank, the miner would mine at 50% efficiency.
+
+### Fuel percentage increases over time
+As a miner mines, it continues to add MXC. If a miner's tank size is 99 MXC, and all the fuel is removed from the tank, then the fuel percentage would be zero. However, if the miner mines one MXC on the following day, the fuel balance increases by one MXC, as does the tank size, resulting in a 1% fuel capacity. Naturally this version of "refilling" the tank takes time, however it ensure that the M2 Pro retains its value after all fuel is removed.
+
+## Uptime
+Uptime is a reliability metric calculated using the average reliability of the miner over the past 7 days. Uptime as a whole, has a 20 percent influence on miner health.
+
+## GPS Signal
+GPS is another form of wireless signal. Therefore we can *assume* that if the miner has a strong GPS signal, it's positioned well enough to provide an excellent wireless network. *GPS has a 10 percent influence on miner health.*
+
+## Orientation
+An M2 Pro antenna provides a wireless signal to the sides of the miner. If the miner is mounted horizontally, the network that it provides will be extremely limited (i.e. airplanes and moles would benefit when they pass overhead or underneath the miner). Therefore, orientation ensures a miner is mounted vertically as designed, with the antenna facing upwards. *Orientation has an 8 percent influence on miner health.*
+
+## Proximity
+In order to achieve a broad wireless network, and in doing so get the most possible coverage, proximity rewards users for spreading out their miners. If a miner is in close proximity with another miner, then it will receive a proximity hit on miner health. *Proximity has a 7 percent influence on miner health.*
+
+## Altitude
+A miner placed in a higher position is more likely to provide a wireless network that transverses physical obstacles. Altitude is measured by using the pressure sensor in the miner itself, and combining it with a terrain elevation database to determine how high above ground level the miner is. This is then cross referenced with the elevation of nearby miners to determine whether the miner is ideally placed. *Altitude has a 5 percent influence on miner health.*
+
+### Proposed alternative to altitude
+As altitude is extremely difficult to measure, we are considering a method for users to manually measure the signal strength of a miner.
From 6dfcc16bfada6104b973005711bfe1761904c2f4 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:21 +0200
Subject: [PATCH 073/234] New translations payload.md (Chinese Traditional)
---
.../current/tutorials/devices/payload.md | 194 ++++++++++++++++++
1 file changed, 194 insertions(+)
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
new file mode 100644
index 0000000..733d9ab
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
@@ -0,0 +1,194 @@
+---
+title: Payload Format
+sidebar_label: Payload Format
+---
+
+## Uplink Payload Data Format
+
+The payload is consisting of several commands in a Type-Length-Value (TLV) format. The first byte is consisting of Type (bits [7:4]), defining the command, and Length (bits [3:0]), the length of the arguments in bytes. If the Length bits are 0xF (binary 1111), the command has its length specified in bits [5:0] of the second byte.
+
+| Number | Name | Length | Description |
+| ------ | --------------- | ------ | ------------------------------------------------------------------------------------------------- |
+| 0 | Param value | >=2 | Response to the "Get params" command. The first byte is the param number, the rest are the value. |
+| 1 | Sensor data | >=1 | Sensor data. |
+| 2 | Battery level | 1 | Battery level in 10mV steps from 2V (0 = 2V, 255 = 4.55V). |
+| 3 | Battery Percent | 1 | Battery level in percent (0 to 100). |
+| 4 | Event data | >=1 | Event data |
+
+
+
+### Sensor Data
+
+Sensor data consists of a byte signifying the sensor type, and zero or more bytes of sensor data. The defined types and corresponding data formats are:
+
+| Number | Name | Length | Description |
+| ---------- | ----------- | ----------- | ---------------------------------------------------------------------------------------- |
+| 0 (0x00) | unknown | 0 | No data. |
+| 1 (0x01) | gps | 1 or 11 | GPS coordinates. |
+| 2 (0x02) | temp | 1 or 2 or 4 | Temperature in degrees Celsius. |
+| 3 (0x03) | humi | 1 or 2 or 4 | Relative humidity in %RH. |
+| 4 (0x04) | pressure | 4 | Barometric pressure in hPa. |
+| 5 (0x05) | pm10 | 4 | PM10 Concentration in μg/m3. |
+| 6 (0x06) | pm2.5 | 4 | PM2.5 Concentration in μg/m3. |
+| 7 (0x07) | tvoc | 4 | VOC Concentration in ppb. |
+| 8 (0x08) | no2 | 4 | Nitrogen Dioxide Concentration in ppm. |
+| 9 (0x09) | co2 | 4 | Carbon Dioxide Concentration in ppm. |
+| 10 (0x0a) | airFlow | 4 | Air Flow Rate (Wind Speed) in m/s. |
+| 11 (0x0b) | voltage | 1 or 2 or 4 | Voltage in V. |
+| 12 (0x0c) | current | 1 or 2 or 4 | Electric Current in A. |
+| 13 (0x0d) | power | 1 or 2 or 4 | Electric Power in W. |
+| 14 (0x0e) | powerUsage | 4 | Electric energy usage in kWh. |
+| 15 (0x0f) | waterUsage | 4 | Water usage in Kilolitres. |
+| 16 (0x10) | speed | 4 | Movement Speed in m/s. |
+| 17 (0x11) | rotation | 4 | Rotational speed in RPM. |
+| 18 (0x12) | counter | 4 | A generic counter in a 32-bits unsigned value. |
+| 19 (0x13) | digital | 1 | A generic digital value. 0: Low or OFF, 1: High or ON, -1 Unknown or Invalid. |
+| 20 (0x14) | percent | 1 | A generic value in percent. |
+| 21 (0x15) | powerFactor | 2 or 4 | Power factor for AC power system. Value range from 0 to 1. |
+| 254 (0xfe) | uplinkPower | 1 | Exact value of TX Power in dBm. |
+
+
+
+#### GPS data format
+
+When data length is 1
+
+| Offset | Length | Description |
+| ------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | 1 | Indicates whether the node has moved since last GPS fix. Possible values are: 0: Node is stable since last GPS fix 1: Node has moved, or has not received a GPS fix since boot; waiting for GPS fix |
+
+When data length is 11
+
+| Offset | Length | Description |
+| ------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | 1 | $GPGGA Position Fix Indicator. Possible values are: * 0 Fix not available or invalid * 1 GPS SPS Mode, fix valid * 2 Differential GPS, SPS Mode, fix valid * 6 Dead Reckoning Mode, fix valid |
+| 1 | 4 | Latitude in 1/1000 of minutes, as little-endian int32. Positive is north, negative is south. To get the value in degrees, divide by 600000. |
+| 5 | 4 | Longitude in 1/1000 of minutes, as little-endian int32. Positive is east, negative is west. To get the value in degrees, divide by 600000. |
+| 9 | 2 | Altitude above geoid mean sea level in decimeters (0.1m), as little-endian int16. |
+
+
+
+#### Data format for 1 byte value
+
+It is a signed 8-bits integer (int8_t), giving the range between -128 and +127.
+
+```javascript
+// Decoding
+if (offset_0 > 0x7f) {
+ value = ((offset_0 ^ 0xff) + 1) * -1;
+}
+else {
+ value = offset_0;
+}
+```
+
+
+
+#### Data format for 2 bytes value
+
+It is a signed 16-bits fixed point number. Offset 0 is the sign bit and integer part. Offset 1 is the fractional part.
+
+```javascript
+// Decoding in Javascript
+let raw_value = (offset_0 << 8) | offset_1;
+if (raw_value > 0x7fff) {
+ value = ((raw_value ^ 0xffff) + 1) * -1;
+}
+else {
+ value = raw_value;
+}
+value = value / 256;
+```
+
+
+
+#### Data format for 4 bytes value
+
+It is a 32-bits floating point number (IEEE 754). Offset 0 is the MSB.
+
+For example, a value of 54.12 will has a 32-bits value of 0x42587ae1.
+
+The payload will become <0x42><0x58><0x7a><0xe1>.
+
+```javascript
+// Decoding in Javascript
+let raw_value = (offset_0 << 24) | (offset_1 << 16) | (offset_2 << 8) | offset_3;
+let v_temp = new DataView(new ArrayBuffer(4))
+v_temp.setUint32(0, raw_value)
+value = v_temp.getFloat32(0)
+```
+
+
+
+The NAN (Not A Number) (0x7fc00000), means the sensor value is unknown or invalid.
+
+
+
+### Event Data
+
+Event data is information about change that occurs at a point in time. A event will contain the type value and additional event data.
+
+| Number | Name | Length | Description |
+| --------- | ------------- | ------ | ------------------------------------------------------------------ |
+| 0 (0x00) | unknown | 0 | No data. |
+| 11 (0x0b) | opened | 1 | The unit is opened by a user. Data is the user ID. |
+| 12 (0x0c) | specialOpened | 0 | The unit is opened in a special way. For example, a key or button. |
+| 13 (0x0d) | forceOpened | 0 | The unit is opened in a abnormal way. |
+
+
+
+## Downlink Payload Data Format
+
+Payload is consisting of several commands in a Type-Length-Value (TLV) format. The first byte is consisting of Type (bits [7:4]), defining the command, and Length (bits [3:0]), the length of the arguments in bytes. If the Length bits are 0xF (binary 1111), the command has its length specified in bits [5:0] of the second byte.
+
+| Number | Name | Length | Description |
+| ------ | -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | Get params | 1 | Get parameter described by first byte. |
+| 1 | Set params | >=2 | Set parameter described by first byte to the value specified in the rest of the message. |
+| 2 | Reboot | 0 | Reboot the node immediately. |
+| 3 | Reboot/upgrade | 1 | Reboot the node after the specified timeout; optionally turn BLE and SUOTA on for upgrades. The argument is as follows:bit [7]:0: just reboot1: BLE onbits [6:3]: Reservedbits [2:0]: Timeout0: TBD1: 5 minutes2: 15 minutes3: 30 minutes4: 1 hour5: 2 hours6: 4 hours7: TBD |
+| 4 | Set Controls | \>=1 | Set a value to the control. For example, turn on/off a digital output. |
+
+
+
+### Parameters
+
+| Number | Name | Length | Description |
+| ------ | ------- | ------ | ------------------------------------------------------------------------- |
+| 0 | deveui | 6 | DevEUI-48 and BLE MAC address (MSBF) Only for DevKit. Please don't use it at final product. |
+| 1 | appeui | 8 | AppEUI-64 (MSBF) Only for DevKit. Please don't use it at final product. |
+| 2 | appkey | 16 | AppKey (write-only) Only for DevKit. Please don't use it at final product. |
+| 3 | period | 1 | Sensor period |
+| 4 | sf | 1 | Minimal LoRa Spread Factor (valid values: 7-12) |
+| 5 | version | 2 | Version number. 01 00 => V1.0 |
+
+Parameters 0, 1, 2 and 4 are actualized after reboot.
+
+Sensor period is as follows:
+
+| Number | Period |
+| ------ | -------- |
+| 0 | Default |
+| 1 | 10 sec |
+| 2 | 30 sec |
+| 3 | 1 min |
+| 4 | 2 min |
+| 5 | 5 min |
+| 6 | 10 min |
+| 7 | 30 min |
+| 8 | 1 hour |
+| 9 | 2 hours |
+| 10 | 5 hours |
+| 11 | 12 hours |
+
+
+
+### Controls
+
+Controls are used for the user to change a value or state of the device. The control data consists of a byte signifying the data type, and zero or more bytes of the data. The defined types and corresponding data formats are:
+
+| Number | Name | Length | Description |
+| --------- | ------- | ------ | ----------------------------------------------------------------- |
+| 0 (0x00) | unknown | 0 | No data. |
+| 19 (0x13) | digital | 1 | A generic digital value. 0: Low or OFF, 1: High or ON. |
+| 20 (0x14) | percent | 1 | A generic value in percent. |
From c927804bf32b76884a29785481d377d03e3847bd Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:22 +0200
Subject: [PATCH 074/234] New translations 2021-07-5-tech-update.md (Chinese
Simplified)
---
.../2021-07-5-tech-update.md | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-blog/2021-07-5-tech-update.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-blog/2021-07-5-tech-update.md b/i18n/zh-CN/docusaurus-plugin-content-blog/2021-07-5-tech-update.md
new file mode 100644
index 0000000..2dd0bc2
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-blog/2021-07-5-tech-update.md
@@ -0,0 +1,36 @@
+---
+slug: 2021-07-05-tech-update
+title: Tech Update - July 5, 2021
+author: Jeff Stahlnecker
+author_title: Head of Development @ MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - tech update
+ - datadash
+ - supernode
+ - dhx
+---
+
+Welcome to the very first MXC tech update!
+
+This week the tech team has been extremely busy. Throughout the past sprint we've focused on closing any and all ongoing projects. That brought us back to a few "low hanging" items that will add some EPIC value to our users -- especially those interested in connecting LoRa devices.
+
+## Device Provisioning
+Our very own backend engineer Lixuan took a deep dive to test the device provisioning system built by Ian to ensure that it was ready to be added with our live code. She solved a number of conflicts (device provisioning has been *ready* since January!), then ran it through a round of rigorous testing. This was done in collaboration with MatchX embedded software engineer Ian. They did some great work, and you'll see device provisioning going live early this week. In the meantime, you can check out the technical documentation here: [Device Provisioning FAQ](/docs/tutorials/devices/provisioning)
+
+As part of our focus on devices during the past two weeks, Lixuan also solved an issue which kept users from adding new devices on a supernode. We should be in ship-shape, and ready for some developer interaction. Feel free to send us your feedback! :)
+
+## Foundation for DHX Simulator Improvement
+The DataDash DHX Simulator has been a long-standing issue. While it works, it's a little buggy, and once in a while spits out something unexpected. Our backend developer Pavel decided enough is enough, and jumped in to solve the challenge of the buggy simulator. To accomplish this he brought together the required information from a ton of different sources and built an API for the DataDash team to integrate. For those developers out there, I'll update this post with a link to the API as soon as it is live.
+
+## Improved Technical Support
+We've been working hard to improve the technical support services provided by both MXC and MatchX. Our Tech Support Engineer Latifah has been hard at work building a ticketing system, integrating Discord, writing an internal support knowledgebase, while naturally also responding to your support requests. She's done an excellent job, and has set a strong foundation for reliable support moving forward.
+
+## Cleaning up the DataDash
+Over the past two weeks our DataDash team has focused primarily on solving some pesky issues with the app. We also added support for DHX in the in-app address book. Just another feature to make life a little easier for you.
+
+## Contributing to DataHighway
+Team members Luke, Ayush and Christian updated the DataHighway blockchain to add multisig functionality. They also made a number of improvements, and fixed issues with the Harbour testnet. You can review the full release notes [here](https://github.com/DataHighway-DHX/node/releases/tag/v3.0.5).
+
+That's the newest from Tech, and I'll be sure to update this post with that API link as soon as it goes live.
\ No newline at end of file
From 0fab4b29bdfce5f229f06971fe036829903fdcbf Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:23 +0200
Subject: [PATCH 075/234] New translations intro.md (Chinese Simplified)
---
.../current/tutorials/dhx/intro.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
new file mode 100644
index 0000000..18d2c90
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
@@ -0,0 +1 @@
+# What is DHX
\ No newline at end of file
From bce02c0fc45fd2dac10cf4c6a177c7566aa362a0 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:23 +0200
Subject: [PATCH 076/234] New translations _category_.json (Chinese Simplified)
---
.../current/tutorials/dhx/_category_.json | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
new file mode 100644
index 0000000..6f5f53d
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Mining DHX",
+ "position": 4
+}
From 6ba984858ffccb02166e42a830cf7ee1242d0f02 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:25 +0200
Subject: [PATCH 077/234] New translations provisioning.mdx (Chinese
Simplified)
---
.../tutorials/devices/provisioning.mdx | 514 ++++++++++++++++++
1 file changed, 514 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
new file mode 100644
index 0000000..b56498c
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
@@ -0,0 +1,514 @@
+---
+sidebar_position: 4
+sidebar_label: Device Provisioning
+---
+
+# Device Provisioning
+
+## What is Device Provisioning?
+
+Device Provisioning is a process of exchanging sensitive information between a device and a server. This process will store the encryption keys required for LoRaWAN communication on the device and the server. The whole process will be completed through LoRa communication. Therefore, no additional hardware is required on the device.
+
+In terms of security, Elliptic-curve Diffie-Hellman is used as the key exchange, which enables subsequent sensitive data to be exchanged between the device and the server in a secure manner.
+
+
+## What is the advantage of it?
+
+With the provisioning is done and the key is ready on both server and device. The operation on the user side will become simple. The user needs only a few steps to register the device to the system. He/She just needs to use our DataDash mobile APP to scan the QR-code label on the device. Then enter a few more information about the device, such as name. After that the device will start to join the network. The user didn’t need to enter any keys that the traditional way needs. During production no keys need to be sent to the assembly house, further improving the security by preventing unwanted compromise of the keys by the 3rd party.
+
+
+## What about the QR-code label?
+
+The QR-code label stored the identity of the device. There is no sensitive information on it, just an ID code (called Provision ID). A minimal label just needs the Provision ID. The mobile APP will use this Provision ID to register the device to the system. It is a secure way to do the task which no encryption keys content appears during the whole process.
+
+Here is an example of a minimal label.
+
+
+
+
+
+
+
+
PID:PROVISIONIDOOOOOOOOO
+
+
+
+For a big device that has more space for the label, a long version label could be used to store more information.
+
+
+
+
+
+
+
+
+
+
+```
+{
+ "PROVID": "PROVISIONIDOOOOOOOOO",
+ "BRAND": "MatchX",
+ "MODEL": "MX1234",
+ "SN": "S123456"
+}
+
+```
+
+
+## What device developer needs to do?
+
+The firmware needs to implement the flow device provisioning. It is a two steps process and needs to be done for a new produced device. The details of this process is listed on the later part of this document.
+
+During the device provisioning, it required the Provision ID to identify the device. We suggest the device firmware add an interface to let the manufacturer set this information at the end of the quality assurance (QA) procedure.
+
+An example method is to use a UART interface to program the information. Our example device uses an “AT” command to achieve this. But any other serial protocol should be fine.
+
+
+
+
+
+## What device manufacturer needs to do?
+
+To successfully provision a device, it required the information of Provision ID. The manufacturer needs to request it from us, MatchX. We will prepare a spreadsheet that has the assigned Provision ID and related information for the manufacturer. The Manufacturer needs to make sure the information is set to the device with the correct matched QR-Code label.
+
+We suggest the manufacturer to add an extra step at their quality assurance (QA) procedure. The step included setting the Provision ID to the device with a matched QR-Code label. Then verify the device is being provisioned, that means it exchanged key information with the server.
+
+
+
+
+
+
+
+
+## Device Provisioning Implementation Details
+
+Source code of our example device: TBD
+
+
+### Provision ID
+
+The Provision ID is a unique string for each device. During the provisioning, it is used as an identity at the provisioning server to access the device information. The Provision ID is 20 characters long and uses the RFC4648 Base32 alphabet.
+
+
+### Hash of Provision ID
+
+It is the result of the SHA256 hash on the Provision ID. The device provisioning process uses this value when doing authentication with the server. To minimize the complexity of the device implementation, we suggest the device also store this value to its FLASH, instead of calculating it by itself.
+
+
+```
+provisionIdHash = SHA256(provisionId | '.MatchX')
+```
+
+
+For example:
+
+
+```
+PID = 'TESTPIDOOOOOOOOOOOOO'
+HASH = 'c8c7564b46b91c91ef6c4f37bcca8cf7e81baac6eb869dcc62e5fafdd0242497'
+```
+
+
+
+### Message integrity code (MIC)
+
+The message integrity code (MIC) value at LoRa PHYPayload for HELLO and AUTH messages is calculated as below.
+
+
+```
+FixedKey[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
+
+cmac = aes128_cmac(FixedKey, message)
+MIC = cmac[0..3]
+```
+
+
+### Verification Code
+
+The verification code is used when the device authenticates with the server. The calculation is shown below.
+
+
+```
+ FixedKey[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
+
+ cal_buf = provisionId + nonce;
+ verifyCode = aes128_cmac(FixedKey, cal_buf)
+```
+
+Example:
+
+
+```
+// Input
+ privisionid = "SERIALNUMBEROOOOOOOO";
+ servernonce = {0x01, 0x02, 0x03, 0x04};
+
+// Output
+ verifyCode = {0x2E, 0x69, 0xBB, 0x5E, 0xD7, 0x8B, 0x5E, 0xE8,
+ 0x0C, 0x6A, 0x8A, 0xDC, 0x81, 0x91, 0xDD, 0xF8};
+```
+
+
+
+### AES
+
+The encryption scheme used in aes128_encrypt() and aes128_cmac() are the same as LoRaWAN specification. This approach will minimize the need for extra code on the device side.
+
+
+### LoRa
+
+The device provisioning using the “Proprietary” LoRa frame for communication, it means the MType on MHDR is set to ‘111’.
+
+The receiving windows using RX1 and delay is 5s.
+
+Data Rate:
+
+
+
+
+
Region
+
+
Data Rate
+
+
Configuration
+
+
+
+
EU868
+
+
3
+
+
Up and Down: SF9 / 125 kHz
+
+
+
+
US915
+
+
3
+
+
Up: SF7 / 125 kHz
+
+ Down: SF7 / 500 kHz
+
+
+
+
+
CN470
+
+
3
+
+
Up and Down: SF9 / 125 kHz
+
+
+
+
+### Sequence Diagram
+
+The device provisioning has two steps. First, it is a ECDH key exchange process, called “Hello” by us. The device and the server will exchange their public key on this step. Then the next step is the authentication. The device will submit its hashed Provision ID to the server. If it is a valid ID on the server, the server will accept the request and send back the EUI information.
+
+The keys used for LoRaWAN OTAA are derived from the ECDH shared key. All this information will not appear on the communication message.
+
+
+
+
+### Message format
+
+The messages shown below are the content of the MACPayload of the Proprietary MAC message of LoRaWAN.
+
+LoRaWAN PHYPayload:
+
+
+
A random device EUI for the current device. 8 bytes long.
+
+
+
+
devPubKey
+
+
The ECDH public key generated by device. 64 bytes long.
+
+
+
+
serverPubKey
+
+
The ECDH public key generated by the server. 64 bytes long.
+
+
+
+
version
+
+
Protocol version. Value is 0x01. 1 byte value.
+
+
+
+
provisionIdHash
+
+
Hashed Provision ID. 32 bytes long.
+
+
+
+
serverNonce
+
+
Random value for verifyCode generation. 4 bytes long.
+
+
+
+
devNonce
+
+
Random value for verifyCode generation. 4 bytes long.
+
+
+
+
devEUI
+
+
The assigned Device EUI for the device. 8 bytes long.
+
+
+
+
verifyCode
+
+
Verification code. 16 bytes long.
+
+
+
+
+### ECDH
+
+In our example device source code, we used the following C source at GitHub for the ECDH.
+
+https://github.com/kokke/tiny-ECDH-c
+
+The compiled size is as small as 1.4KiB for ARM Thumb Code. It minimized the extra cost for fitting into an MCU.
+
+The ECDH key exchange will use the NIST K-233 curve. Private key size is 32 bytes, public key size is 64 bytes.
+
+
+### Key generation
+
+The keys used for LoRaWAN are generated inside the device instead of sending via the air. After the ECDH key exchange (Hello message), both device and server will hold a sharedKey in the same value. Then it will use the following calculation to derive to several keys.
+
+When the authentication is done, the derived AppKey and NwkKey should be stored in FLASH for later LoRaWAN OTAA use.
+
+
+```
+ AppKey = aes128_encrypt (sharedKey[0..15], rDevEUI | pad 0x01)
+
+ NwkKey = aes128_encrypt (sharedKey[32..47], rDevEUI | pad 0x02)
+
+ ProvKey = aes128_encrypt (sharedKey[16..23] | sharedKey[48..55], rDevEUI | pad 0x03)
+```
+
+
+AppKey and NwkKey are the keys for OTAA on LoRa communication.
+
+For 1.0.x LoRa, NwkKey will be used as AppKey for OTAA.
+
+ProvKey is used as the key for payload encryption of Auth messages and responses.
+
+Example:
+
+
+```
+// Input
+ sharedkey = {0x57, 0x57, 0x3A, 0x81, 0xE2, 0x7E, 0x48, 0x26, 0xFA, 0x8E, 0x18, 0x70, 0xCD,
+ 0x6B, 0x66, 0x40, 0xF3, 0x90, 0x5D, 0x98, 0x40, 0xF4, 0x12, 0xFA, 0xAE, 0x74,
+ 0x0B, 0x12, 0xE0, 0x01, 0x00, 0x00, 0xC4, 0xD8, 0x27, 0xA9, 0x37, 0x49, 0xEE,
+ 0x44, 0xEA, 0x1B, 0xAC, 0x1C, 0x18, 0x8C, 0x03, 0xAA, 0x6B, 0x02, 0xDA, 0x1C,
+ 0x68, 0xE9, 0xE8, 0xE6, 0xCA, 0xB9, 0xD1, 0xED, 0x91, 0x01, 0x00, 0x00};
+
+// Output
+ appkey = {0xFC, 0x3B, 0xDD, 0x59, 0x22, 0x87, 0xD9, 0x73
+ 0x48, 0xC0, 0x0B, 0xAC, 0x46, 0xB3, 0x05, 0x79};
+ nwkkey = {0x5B, 0x87, 0x83, 0xAF, 0x06, 0xFF, 0xB3, 0x62,
+ 0x9D, 0x03, 0x77, 0x9B, 0xF3, 0x4E, 0x12, 0x89};
+ provkey = {0x29, 0x53, 0x01, 0x98, 0x2D, 0x35, 0xC7, 0x2F,
+ 0x71, 0x42, 0xB9, 0xDD, 0x07, 0xFE, 0x1D, 0xEF};
+```
+
+
+
+
+
+## Request for Provision ID (CSV file)
+
+This is the CSV file you need to send to us to request for the Provision ID.
+
+
+```
+ MatchX Device Provisioning,,,,,
+ manufacturerName,MatchX GmbH,,,,
+ provisionId,model,serialNumber,fixedDevEUI,devEUI,appEUI
+ ,M-1234,S000000,Y,000000fffe000000,0000000000000000
+ ,M-1234,S000001,Y,000000fffe000001,0000000000000000
+ ,M-1234,S000002,Y,000000fffe000002,0000000000000000
+ ,M-1234,S000003,Y,000000fffe000003,0000000000000000
+ ,M-1234,S000004,Y,000000fffe000004,0000000000000000
+ ,M-1234,S000005,Y,000000fffe000005,0000000000000000
+ ,M-1234,S000006,Y,000000fffe000006,0000000000000000
+ ,M-1234,S000007,Y,000000fffe000007,0000000000000000
+```
+
+
+The first line is the signature, please don’t modify it.
+
+The second line is the name of the device manufacturer. Modify it to your company name.
+
+The third line is the header, please don’t modify it.
+
+Starting from the fourth line, it is the list of device information you need for a Provision ID.
+
+“provisionId” is the Provision ID, we will generate one for you if it is blank.
+
+“model” is the model number of your device.
+
+“serialNumber” is the serial number of your device.
+
+When your device has its own MAC address and is willing to use it as the Device EUI on LoRa, you should set the “fixedDevEUI” to “Y” and fill the “fixedDevEUI”.
+
+“appEUI” is not used at the moment, please fill it with “0000000000000000”.
+
+Here is the view when you use a spreadsheet program to edit the file.
+
+
+
+
+
+
+
+
+48-bits MAC to 64-bits EUI
+
+To convert a 48-bits MAC address into a 64-bits EUI, you need to insert a “0xff 0xfe” in the middle of it.
+
+For example:
+
+
+```
+ MAC = 01 02 03 04 05 06
+ EUI = 01 02 03 ff fe 04 05 06
+```
+
+
+
+
+After the request is approved, we will send you back the report file in CSV format. Here is an example for the report that is viewed with a spreadsheet program.
+
+
+
+
+
+The important parts are the “provisionId” and “provisionIdHash”. You need to program this information to the device. For the device with MAC and using fixed Device EUI, you need to take care of the “devEUI” and make sure the Provision ID is programmed to the corresponding device.
+
+Here is an example CSV file for the device that will use a random Device EUI. The “fixedDevEUI” will set to “N” and “deviceEUI” is blank. A random device EUI will assign to the device after provisioning.
+
+
+```
+ MatchX Device Provisioning,,,,,
+ manufacturerName,MatchX GmbH,,,,
+ provisionId,model,serialNumber,fixedDevEUI,devEUI,appEUI
+ ,M-1234,S000000,N,,0000000000000000
+ ,M-1234,S000001,N,,0000000000000000
+ ,M-1234,S000002,N,,0000000000000000
+ ,M-1234,S000003,N,,0000000000000000
+ ,M-1234,S000004,N,,0000000000000000
+ ,M-1234,S000005,N,,0000000000000000
+ ,M-1234,S000006,N,,0000000000000000
+ ,M-1234,S000007,N,,0000000000000000
+```
+
+
+
+
+
+
+
+
From 43c3657bdb9a43b0621f3cb44941f3f881e48d51 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:26 +0200
Subject: [PATCH 078/234] New translations miner-health.mdx (Chinese
Simplified)
---
.../current/tutorials/m2-pro/miner-health.mdx | 48 +++++++++++++++++++
1 file changed, 48 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
new file mode 100644
index 0000000..8e488ac
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
@@ -0,0 +1,48 @@
+---
+sidebar_position: 4
+---
+
+# Miner Health
+
+Miner Health rewards users for placing their miner in a fashion that will provide a strong LoRa signal. These are the six items that make up miner health:
+* Fuel (Live)
+* Uptime (Live)
+* GPS Signal
+* Orientation
+* Proximity
+* Altitude
+
+## Miner Health Grace Period
+Each M2 Pro Miner has a 90-day grace period that begins with the initial registration of the miner. During this period of time, health will not affect the mining potential of the M2 Pro. After the grace period is over, the current health of the miner will be applied.
+
+If the fuel tank is empty after the grace period, mining efficiency will be reduced by 50% (see Fuel).
+
+## Fuel (Live)
+Each miner has a fuel tank. This tank is equal to the size of all the MXC mined by this miner. So a miner mined 10 MXC, the tank size would then be 10 MXC.
+
+*Fuel has a 50 percent influence on your mining potential*
+
+### How does this work?
+
+As a miner mines, it maintains the fuel tank. All newly mined MXC are added to the tank to ensure it continues to mine at peek efficiency. When MXC is removed from the fuel tank, the miner will mine at a reduced efficiency. For example, if all MXC would be removed from the fuel tank, the miner would mine at 50% efficiency.
+
+### Fuel percentage increases over time
+As a miner mines, it continues to add MXC. If a miner's tank size is 99 MXC, and all the fuel is removed from the tank, then the fuel percentage would be zero. However, if the miner mines one MXC on the following day, the fuel balance increases by one MXC, as does the tank size, resulting in a 1% fuel capacity. Naturally this version of "refilling" the tank takes time, however it ensure that the M2 Pro retains its value after all fuel is removed.
+
+## Uptime
+Uptime is a reliability metric calculated using the average reliability of the miner over the past 7 days. Uptime as a whole, has a 20 percent influence on miner health.
+
+## GPS Signal
+GPS is another form of wireless signal. Therefore we can *assume* that if the miner has a strong GPS signal, it's positioned well enough to provide an excellent wireless network. *GPS has a 10 percent influence on miner health.*
+
+## Orientation
+An M2 Pro antenna provides a wireless signal to the sides of the miner. If the miner is mounted horizontally, the network that it provides will be extremely limited (i.e. airplanes and moles would benefit when they pass overhead or underneath the miner). Therefore, orientation ensures a miner is mounted vertically as designed, with the antenna facing upwards. *Orientation has an 8 percent influence on miner health.*
+
+## Proximity
+In order to achieve a broad wireless network, and in doing so get the most possible coverage, proximity rewards users for spreading out their miners. If a miner is in close proximity with another miner, then it will receive a proximity hit on miner health. *Proximity has a 7 percent influence on miner health.*
+
+## Altitude
+A miner placed in a higher position is more likely to provide a wireless network that transverses physical obstacles. Altitude is measured by using the pressure sensor in the miner itself, and combining it with a terrain elevation database to determine how high above ground level the miner is. This is then cross referenced with the elevation of nearby miners to determine whether the miner is ideally placed. *Altitude has a 5 percent influence on miner health.*
+
+### Proposed alternative to altitude
+As altitude is extremely difficult to measure, we are considering a method for users to manually measure the signal strength of a miner.
From c5ccdef5c8f4a61159c9aae37ece21ec1dfda882 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:27 +0200
Subject: [PATCH 079/234] New translations payload.md (Chinese Simplified)
---
.../current/tutorials/devices/payload.md | 194 ++++++++++++++++++
1 file changed, 194 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
new file mode 100644
index 0000000..733d9ab
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
@@ -0,0 +1,194 @@
+---
+title: Payload Format
+sidebar_label: Payload Format
+---
+
+## Uplink Payload Data Format
+
+The payload is consisting of several commands in a Type-Length-Value (TLV) format. The first byte is consisting of Type (bits [7:4]), defining the command, and Length (bits [3:0]), the length of the arguments in bytes. If the Length bits are 0xF (binary 1111), the command has its length specified in bits [5:0] of the second byte.
+
+| Number | Name | Length | Description |
+| ------ | --------------- | ------ | ------------------------------------------------------------------------------------------------- |
+| 0 | Param value | >=2 | Response to the "Get params" command. The first byte is the param number, the rest are the value. |
+| 1 | Sensor data | >=1 | Sensor data. |
+| 2 | Battery level | 1 | Battery level in 10mV steps from 2V (0 = 2V, 255 = 4.55V). |
+| 3 | Battery Percent | 1 | Battery level in percent (0 to 100). |
+| 4 | Event data | >=1 | Event data |
+
+
+
+### Sensor Data
+
+Sensor data consists of a byte signifying the sensor type, and zero or more bytes of sensor data. The defined types and corresponding data formats are:
+
+| Number | Name | Length | Description |
+| ---------- | ----------- | ----------- | ---------------------------------------------------------------------------------------- |
+| 0 (0x00) | unknown | 0 | No data. |
+| 1 (0x01) | gps | 1 or 11 | GPS coordinates. |
+| 2 (0x02) | temp | 1 or 2 or 4 | Temperature in degrees Celsius. |
+| 3 (0x03) | humi | 1 or 2 or 4 | Relative humidity in %RH. |
+| 4 (0x04) | pressure | 4 | Barometric pressure in hPa. |
+| 5 (0x05) | pm10 | 4 | PM10 Concentration in μg/m3. |
+| 6 (0x06) | pm2.5 | 4 | PM2.5 Concentration in μg/m3. |
+| 7 (0x07) | tvoc | 4 | VOC Concentration in ppb. |
+| 8 (0x08) | no2 | 4 | Nitrogen Dioxide Concentration in ppm. |
+| 9 (0x09) | co2 | 4 | Carbon Dioxide Concentration in ppm. |
+| 10 (0x0a) | airFlow | 4 | Air Flow Rate (Wind Speed) in m/s. |
+| 11 (0x0b) | voltage | 1 or 2 or 4 | Voltage in V. |
+| 12 (0x0c) | current | 1 or 2 or 4 | Electric Current in A. |
+| 13 (0x0d) | power | 1 or 2 or 4 | Electric Power in W. |
+| 14 (0x0e) | powerUsage | 4 | Electric energy usage in kWh. |
+| 15 (0x0f) | waterUsage | 4 | Water usage in Kilolitres. |
+| 16 (0x10) | speed | 4 | Movement Speed in m/s. |
+| 17 (0x11) | rotation | 4 | Rotational speed in RPM. |
+| 18 (0x12) | counter | 4 | A generic counter in a 32-bits unsigned value. |
+| 19 (0x13) | digital | 1 | A generic digital value. 0: Low or OFF, 1: High or ON, -1 Unknown or Invalid. |
+| 20 (0x14) | percent | 1 | A generic value in percent. |
+| 21 (0x15) | powerFactor | 2 or 4 | Power factor for AC power system. Value range from 0 to 1. |
+| 254 (0xfe) | uplinkPower | 1 | Exact value of TX Power in dBm. |
+
+
+
+#### GPS data format
+
+When data length is 1
+
+| Offset | Length | Description |
+| ------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | 1 | Indicates whether the node has moved since last GPS fix. Possible values are: 0: Node is stable since last GPS fix 1: Node has moved, or has not received a GPS fix since boot; waiting for GPS fix |
+
+When data length is 11
+
+| Offset | Length | Description |
+| ------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | 1 | $GPGGA Position Fix Indicator. Possible values are: * 0 Fix not available or invalid * 1 GPS SPS Mode, fix valid * 2 Differential GPS, SPS Mode, fix valid * 6 Dead Reckoning Mode, fix valid |
+| 1 | 4 | Latitude in 1/1000 of minutes, as little-endian int32. Positive is north, negative is south. To get the value in degrees, divide by 600000. |
+| 5 | 4 | Longitude in 1/1000 of minutes, as little-endian int32. Positive is east, negative is west. To get the value in degrees, divide by 600000. |
+| 9 | 2 | Altitude above geoid mean sea level in decimeters (0.1m), as little-endian int16. |
+
+
+
+#### Data format for 1 byte value
+
+It is a signed 8-bits integer (int8_t), giving the range between -128 and +127.
+
+```javascript
+// Decoding
+if (offset_0 > 0x7f) {
+ value = ((offset_0 ^ 0xff) + 1) * -1;
+}
+else {
+ value = offset_0;
+}
+```
+
+
+
+#### Data format for 2 bytes value
+
+It is a signed 16-bits fixed point number. Offset 0 is the sign bit and integer part. Offset 1 is the fractional part.
+
+```javascript
+// Decoding in Javascript
+let raw_value = (offset_0 << 8) | offset_1;
+if (raw_value > 0x7fff) {
+ value = ((raw_value ^ 0xffff) + 1) * -1;
+}
+else {
+ value = raw_value;
+}
+value = value / 256;
+```
+
+
+
+#### Data format for 4 bytes value
+
+It is a 32-bits floating point number (IEEE 754). Offset 0 is the MSB.
+
+For example, a value of 54.12 will has a 32-bits value of 0x42587ae1.
+
+The payload will become <0x42><0x58><0x7a><0xe1>.
+
+```javascript
+// Decoding in Javascript
+let raw_value = (offset_0 << 24) | (offset_1 << 16) | (offset_2 << 8) | offset_3;
+let v_temp = new DataView(new ArrayBuffer(4))
+v_temp.setUint32(0, raw_value)
+value = v_temp.getFloat32(0)
+```
+
+
+
+The NAN (Not A Number) (0x7fc00000), means the sensor value is unknown or invalid.
+
+
+
+### Event Data
+
+Event data is information about change that occurs at a point in time. A event will contain the type value and additional event data.
+
+| Number | Name | Length | Description |
+| --------- | ------------- | ------ | ------------------------------------------------------------------ |
+| 0 (0x00) | unknown | 0 | No data. |
+| 11 (0x0b) | opened | 1 | The unit is opened by a user. Data is the user ID. |
+| 12 (0x0c) | specialOpened | 0 | The unit is opened in a special way. For example, a key or button. |
+| 13 (0x0d) | forceOpened | 0 | The unit is opened in a abnormal way. |
+
+
+
+## Downlink Payload Data Format
+
+Payload is consisting of several commands in a Type-Length-Value (TLV) format. The first byte is consisting of Type (bits [7:4]), defining the command, and Length (bits [3:0]), the length of the arguments in bytes. If the Length bits are 0xF (binary 1111), the command has its length specified in bits [5:0] of the second byte.
+
+| Number | Name | Length | Description |
+| ------ | -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | Get params | 1 | Get parameter described by first byte. |
+| 1 | Set params | >=2 | Set parameter described by first byte to the value specified in the rest of the message. |
+| 2 | Reboot | 0 | Reboot the node immediately. |
+| 3 | Reboot/upgrade | 1 | Reboot the node after the specified timeout; optionally turn BLE and SUOTA on for upgrades. The argument is as follows:bit [7]:0: just reboot1: BLE onbits [6:3]: Reservedbits [2:0]: Timeout0: TBD1: 5 minutes2: 15 minutes3: 30 minutes4: 1 hour5: 2 hours6: 4 hours7: TBD |
+| 4 | Set Controls | \>=1 | Set a value to the control. For example, turn on/off a digital output. |
+
+
+
+### Parameters
+
+| Number | Name | Length | Description |
+| ------ | ------- | ------ | ------------------------------------------------------------------------- |
+| 0 | deveui | 6 | DevEUI-48 and BLE MAC address (MSBF) Only for DevKit. Please don't use it at final product. |
+| 1 | appeui | 8 | AppEUI-64 (MSBF) Only for DevKit. Please don't use it at final product. |
+| 2 | appkey | 16 | AppKey (write-only) Only for DevKit. Please don't use it at final product. |
+| 3 | period | 1 | Sensor period |
+| 4 | sf | 1 | Minimal LoRa Spread Factor (valid values: 7-12) |
+| 5 | version | 2 | Version number. 01 00 => V1.0 |
+
+Parameters 0, 1, 2 and 4 are actualized after reboot.
+
+Sensor period is as follows:
+
+| Number | Period |
+| ------ | -------- |
+| 0 | Default |
+| 1 | 10 sec |
+| 2 | 30 sec |
+| 3 | 1 min |
+| 4 | 2 min |
+| 5 | 5 min |
+| 6 | 10 min |
+| 7 | 30 min |
+| 8 | 1 hour |
+| 9 | 2 hours |
+| 10 | 5 hours |
+| 11 | 12 hours |
+
+
+
+### Controls
+
+Controls are used for the user to change a value or state of the device. The control data consists of a byte signifying the data type, and zero or more bytes of the data. The defined types and corresponding data formats are:
+
+| Number | Name | Length | Description |
+| --------- | ------- | ------ | ----------------------------------------------------------------- |
+| 0 (0x00) | unknown | 0 | No data. |
+| 19 (0x13) | digital | 1 | A generic digital value. 0: Low or OFF, 1: High or ON. |
+| 20 (0x14) | percent | 1 | A generic value in percent. |
From 31f97bcf9e5cc01677850491cbd165fa053efff4 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:28 +0200
Subject: [PATCH 080/234] New translations intro.md (Korean)
---
.../current/tutorials/dhx/intro.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
new file mode 100644
index 0000000..18d2c90
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
@@ -0,0 +1 @@
+# What is DHX
\ No newline at end of file
From 2408a421d03833f078666d890b1ffae671e4a790 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:29 +0200
Subject: [PATCH 081/234] New translations _category_.json (Korean)
---
.../current/tutorials/dhx/_category_.json | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
new file mode 100644
index 0000000..6f5f53d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Mining DHX",
+ "position": 4
+}
From 149f9b0359d610434470d0ab61966ab7dd8e7625 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:30 +0200
Subject: [PATCH 082/234] New translations provisioning.mdx (Korean)
---
.../tutorials/devices/provisioning.mdx | 514 ++++++++++++++++++
1 file changed, 514 insertions(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
new file mode 100644
index 0000000..b56498c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
@@ -0,0 +1,514 @@
+---
+sidebar_position: 4
+sidebar_label: Device Provisioning
+---
+
+# Device Provisioning
+
+## What is Device Provisioning?
+
+Device Provisioning is a process of exchanging sensitive information between a device and a server. This process will store the encryption keys required for LoRaWAN communication on the device and the server. The whole process will be completed through LoRa communication. Therefore, no additional hardware is required on the device.
+
+In terms of security, Elliptic-curve Diffie-Hellman is used as the key exchange, which enables subsequent sensitive data to be exchanged between the device and the server in a secure manner.
+
+
+## What is the advantage of it?
+
+With the provisioning is done and the key is ready on both server and device. The operation on the user side will become simple. The user needs only a few steps to register the device to the system. He/She just needs to use our DataDash mobile APP to scan the QR-code label on the device. Then enter a few more information about the device, such as name. After that the device will start to join the network. The user didn’t need to enter any keys that the traditional way needs. During production no keys need to be sent to the assembly house, further improving the security by preventing unwanted compromise of the keys by the 3rd party.
+
+
+## What about the QR-code label?
+
+The QR-code label stored the identity of the device. There is no sensitive information on it, just an ID code (called Provision ID). A minimal label just needs the Provision ID. The mobile APP will use this Provision ID to register the device to the system. It is a secure way to do the task which no encryption keys content appears during the whole process.
+
+Here is an example of a minimal label.
+
+
+
+
+
+
+
+
PID:PROVISIONIDOOOOOOOOO
+
+
+
+For a big device that has more space for the label, a long version label could be used to store more information.
+
+
+
+
+
+
+
+
+
+
+```
+{
+ "PROVID": "PROVISIONIDOOOOOOOOO",
+ "BRAND": "MatchX",
+ "MODEL": "MX1234",
+ "SN": "S123456"
+}
+
+```
+
+
+## What device developer needs to do?
+
+The firmware needs to implement the flow device provisioning. It is a two steps process and needs to be done for a new produced device. The details of this process is listed on the later part of this document.
+
+During the device provisioning, it required the Provision ID to identify the device. We suggest the device firmware add an interface to let the manufacturer set this information at the end of the quality assurance (QA) procedure.
+
+An example method is to use a UART interface to program the information. Our example device uses an “AT” command to achieve this. But any other serial protocol should be fine.
+
+
+
+
+
+## What device manufacturer needs to do?
+
+To successfully provision a device, it required the information of Provision ID. The manufacturer needs to request it from us, MatchX. We will prepare a spreadsheet that has the assigned Provision ID and related information for the manufacturer. The Manufacturer needs to make sure the information is set to the device with the correct matched QR-Code label.
+
+We suggest the manufacturer to add an extra step at their quality assurance (QA) procedure. The step included setting the Provision ID to the device with a matched QR-Code label. Then verify the device is being provisioned, that means it exchanged key information with the server.
+
+
+
+
+
+
+
+
+## Device Provisioning Implementation Details
+
+Source code of our example device: TBD
+
+
+### Provision ID
+
+The Provision ID is a unique string for each device. During the provisioning, it is used as an identity at the provisioning server to access the device information. The Provision ID is 20 characters long and uses the RFC4648 Base32 alphabet.
+
+
+### Hash of Provision ID
+
+It is the result of the SHA256 hash on the Provision ID. The device provisioning process uses this value when doing authentication with the server. To minimize the complexity of the device implementation, we suggest the device also store this value to its FLASH, instead of calculating it by itself.
+
+
+```
+provisionIdHash = SHA256(provisionId | '.MatchX')
+```
+
+
+For example:
+
+
+```
+PID = 'TESTPIDOOOOOOOOOOOOO'
+HASH = 'c8c7564b46b91c91ef6c4f37bcca8cf7e81baac6eb869dcc62e5fafdd0242497'
+```
+
+
+
+### Message integrity code (MIC)
+
+The message integrity code (MIC) value at LoRa PHYPayload for HELLO and AUTH messages is calculated as below.
+
+
+```
+FixedKey[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
+
+cmac = aes128_cmac(FixedKey, message)
+MIC = cmac[0..3]
+```
+
+
+### Verification Code
+
+The verification code is used when the device authenticates with the server. The calculation is shown below.
+
+
+```
+ FixedKey[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
+
+ cal_buf = provisionId + nonce;
+ verifyCode = aes128_cmac(FixedKey, cal_buf)
+```
+
+Example:
+
+
+```
+// Input
+ privisionid = "SERIALNUMBEROOOOOOOO";
+ servernonce = {0x01, 0x02, 0x03, 0x04};
+
+// Output
+ verifyCode = {0x2E, 0x69, 0xBB, 0x5E, 0xD7, 0x8B, 0x5E, 0xE8,
+ 0x0C, 0x6A, 0x8A, 0xDC, 0x81, 0x91, 0xDD, 0xF8};
+```
+
+
+
+### AES
+
+The encryption scheme used in aes128_encrypt() and aes128_cmac() are the same as LoRaWAN specification. This approach will minimize the need for extra code on the device side.
+
+
+### LoRa
+
+The device provisioning using the “Proprietary” LoRa frame for communication, it means the MType on MHDR is set to ‘111’.
+
+The receiving windows using RX1 and delay is 5s.
+
+Data Rate:
+
+
+
+
+
Region
+
+
Data Rate
+
+
Configuration
+
+
+
+
EU868
+
+
3
+
+
Up and Down: SF9 / 125 kHz
+
+
+
+
US915
+
+
3
+
+
Up: SF7 / 125 kHz
+
+ Down: SF7 / 500 kHz
+
+
+
+
+
CN470
+
+
3
+
+
Up and Down: SF9 / 125 kHz
+
+
+
+
+### Sequence Diagram
+
+The device provisioning has two steps. First, it is a ECDH key exchange process, called “Hello” by us. The device and the server will exchange their public key on this step. Then the next step is the authentication. The device will submit its hashed Provision ID to the server. If it is a valid ID on the server, the server will accept the request and send back the EUI information.
+
+The keys used for LoRaWAN OTAA are derived from the ECDH shared key. All this information will not appear on the communication message.
+
+
+
+
+### Message format
+
+The messages shown below are the content of the MACPayload of the Proprietary MAC message of LoRaWAN.
+
+LoRaWAN PHYPayload:
+
+
+
A random device EUI for the current device. 8 bytes long.
+
+
+
+
devPubKey
+
+
The ECDH public key generated by device. 64 bytes long.
+
+
+
+
serverPubKey
+
+
The ECDH public key generated by the server. 64 bytes long.
+
+
+
+
version
+
+
Protocol version. Value is 0x01. 1 byte value.
+
+
+
+
provisionIdHash
+
+
Hashed Provision ID. 32 bytes long.
+
+
+
+
serverNonce
+
+
Random value for verifyCode generation. 4 bytes long.
+
+
+
+
devNonce
+
+
Random value for verifyCode generation. 4 bytes long.
+
+
+
+
devEUI
+
+
The assigned Device EUI for the device. 8 bytes long.
+
+
+
+
verifyCode
+
+
Verification code. 16 bytes long.
+
+
+
+
+### ECDH
+
+In our example device source code, we used the following C source at GitHub for the ECDH.
+
+https://github.com/kokke/tiny-ECDH-c
+
+The compiled size is as small as 1.4KiB for ARM Thumb Code. It minimized the extra cost for fitting into an MCU.
+
+The ECDH key exchange will use the NIST K-233 curve. Private key size is 32 bytes, public key size is 64 bytes.
+
+
+### Key generation
+
+The keys used for LoRaWAN are generated inside the device instead of sending via the air. After the ECDH key exchange (Hello message), both device and server will hold a sharedKey in the same value. Then it will use the following calculation to derive to several keys.
+
+When the authentication is done, the derived AppKey and NwkKey should be stored in FLASH for later LoRaWAN OTAA use.
+
+
+```
+ AppKey = aes128_encrypt (sharedKey[0..15], rDevEUI | pad 0x01)
+
+ NwkKey = aes128_encrypt (sharedKey[32..47], rDevEUI | pad 0x02)
+
+ ProvKey = aes128_encrypt (sharedKey[16..23] | sharedKey[48..55], rDevEUI | pad 0x03)
+```
+
+
+AppKey and NwkKey are the keys for OTAA on LoRa communication.
+
+For 1.0.x LoRa, NwkKey will be used as AppKey for OTAA.
+
+ProvKey is used as the key for payload encryption of Auth messages and responses.
+
+Example:
+
+
+```
+// Input
+ sharedkey = {0x57, 0x57, 0x3A, 0x81, 0xE2, 0x7E, 0x48, 0x26, 0xFA, 0x8E, 0x18, 0x70, 0xCD,
+ 0x6B, 0x66, 0x40, 0xF3, 0x90, 0x5D, 0x98, 0x40, 0xF4, 0x12, 0xFA, 0xAE, 0x74,
+ 0x0B, 0x12, 0xE0, 0x01, 0x00, 0x00, 0xC4, 0xD8, 0x27, 0xA9, 0x37, 0x49, 0xEE,
+ 0x44, 0xEA, 0x1B, 0xAC, 0x1C, 0x18, 0x8C, 0x03, 0xAA, 0x6B, 0x02, 0xDA, 0x1C,
+ 0x68, 0xE9, 0xE8, 0xE6, 0xCA, 0xB9, 0xD1, 0xED, 0x91, 0x01, 0x00, 0x00};
+
+// Output
+ appkey = {0xFC, 0x3B, 0xDD, 0x59, 0x22, 0x87, 0xD9, 0x73
+ 0x48, 0xC0, 0x0B, 0xAC, 0x46, 0xB3, 0x05, 0x79};
+ nwkkey = {0x5B, 0x87, 0x83, 0xAF, 0x06, 0xFF, 0xB3, 0x62,
+ 0x9D, 0x03, 0x77, 0x9B, 0xF3, 0x4E, 0x12, 0x89};
+ provkey = {0x29, 0x53, 0x01, 0x98, 0x2D, 0x35, 0xC7, 0x2F,
+ 0x71, 0x42, 0xB9, 0xDD, 0x07, 0xFE, 0x1D, 0xEF};
+```
+
+
+
+
+
+## Request for Provision ID (CSV file)
+
+This is the CSV file you need to send to us to request for the Provision ID.
+
+
+```
+ MatchX Device Provisioning,,,,,
+ manufacturerName,MatchX GmbH,,,,
+ provisionId,model,serialNumber,fixedDevEUI,devEUI,appEUI
+ ,M-1234,S000000,Y,000000fffe000000,0000000000000000
+ ,M-1234,S000001,Y,000000fffe000001,0000000000000000
+ ,M-1234,S000002,Y,000000fffe000002,0000000000000000
+ ,M-1234,S000003,Y,000000fffe000003,0000000000000000
+ ,M-1234,S000004,Y,000000fffe000004,0000000000000000
+ ,M-1234,S000005,Y,000000fffe000005,0000000000000000
+ ,M-1234,S000006,Y,000000fffe000006,0000000000000000
+ ,M-1234,S000007,Y,000000fffe000007,0000000000000000
+```
+
+
+The first line is the signature, please don’t modify it.
+
+The second line is the name of the device manufacturer. Modify it to your company name.
+
+The third line is the header, please don’t modify it.
+
+Starting from the fourth line, it is the list of device information you need for a Provision ID.
+
+“provisionId” is the Provision ID, we will generate one for you if it is blank.
+
+“model” is the model number of your device.
+
+“serialNumber” is the serial number of your device.
+
+When your device has its own MAC address and is willing to use it as the Device EUI on LoRa, you should set the “fixedDevEUI” to “Y” and fill the “fixedDevEUI”.
+
+“appEUI” is not used at the moment, please fill it with “0000000000000000”.
+
+Here is the view when you use a spreadsheet program to edit the file.
+
+
+
+
+
+
+
+
+48-bits MAC to 64-bits EUI
+
+To convert a 48-bits MAC address into a 64-bits EUI, you need to insert a “0xff 0xfe” in the middle of it.
+
+For example:
+
+
+```
+ MAC = 01 02 03 04 05 06
+ EUI = 01 02 03 ff fe 04 05 06
+```
+
+
+
+
+After the request is approved, we will send you back the report file in CSV format. Here is an example for the report that is viewed with a spreadsheet program.
+
+
+
+
+
+The important parts are the “provisionId” and “provisionIdHash”. You need to program this information to the device. For the device with MAC and using fixed Device EUI, you need to take care of the “devEUI” and make sure the Provision ID is programmed to the corresponding device.
+
+Here is an example CSV file for the device that will use a random Device EUI. The “fixedDevEUI” will set to “N” and “deviceEUI” is blank. A random device EUI will assign to the device after provisioning.
+
+
+```
+ MatchX Device Provisioning,,,,,
+ manufacturerName,MatchX GmbH,,,,
+ provisionId,model,serialNumber,fixedDevEUI,devEUI,appEUI
+ ,M-1234,S000000,N,,0000000000000000
+ ,M-1234,S000001,N,,0000000000000000
+ ,M-1234,S000002,N,,0000000000000000
+ ,M-1234,S000003,N,,0000000000000000
+ ,M-1234,S000004,N,,0000000000000000
+ ,M-1234,S000005,N,,0000000000000000
+ ,M-1234,S000006,N,,0000000000000000
+ ,M-1234,S000007,N,,0000000000000000
+```
+
+
+
+
+
+
+
+
From 088197cce0f45cc853abc666f93433c6d74830c7 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:31 +0200
Subject: [PATCH 083/234] New translations miner-health.mdx (Korean)
---
.../current/tutorials/m2-pro/miner-health.mdx | 48 +++++++++++++++++++
1 file changed, 48 insertions(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
new file mode 100644
index 0000000..8e488ac
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
@@ -0,0 +1,48 @@
+---
+sidebar_position: 4
+---
+
+# Miner Health
+
+Miner Health rewards users for placing their miner in a fashion that will provide a strong LoRa signal. These are the six items that make up miner health:
+* Fuel (Live)
+* Uptime (Live)
+* GPS Signal
+* Orientation
+* Proximity
+* Altitude
+
+## Miner Health Grace Period
+Each M2 Pro Miner has a 90-day grace period that begins with the initial registration of the miner. During this period of time, health will not affect the mining potential of the M2 Pro. After the grace period is over, the current health of the miner will be applied.
+
+If the fuel tank is empty after the grace period, mining efficiency will be reduced by 50% (see Fuel).
+
+## Fuel (Live)
+Each miner has a fuel tank. This tank is equal to the size of all the MXC mined by this miner. So a miner mined 10 MXC, the tank size would then be 10 MXC.
+
+*Fuel has a 50 percent influence on your mining potential*
+
+### How does this work?
+
+As a miner mines, it maintains the fuel tank. All newly mined MXC are added to the tank to ensure it continues to mine at peek efficiency. When MXC is removed from the fuel tank, the miner will mine at a reduced efficiency. For example, if all MXC would be removed from the fuel tank, the miner would mine at 50% efficiency.
+
+### Fuel percentage increases over time
+As a miner mines, it continues to add MXC. If a miner's tank size is 99 MXC, and all the fuel is removed from the tank, then the fuel percentage would be zero. However, if the miner mines one MXC on the following day, the fuel balance increases by one MXC, as does the tank size, resulting in a 1% fuel capacity. Naturally this version of "refilling" the tank takes time, however it ensure that the M2 Pro retains its value after all fuel is removed.
+
+## Uptime
+Uptime is a reliability metric calculated using the average reliability of the miner over the past 7 days. Uptime as a whole, has a 20 percent influence on miner health.
+
+## GPS Signal
+GPS is another form of wireless signal. Therefore we can *assume* that if the miner has a strong GPS signal, it's positioned well enough to provide an excellent wireless network. *GPS has a 10 percent influence on miner health.*
+
+## Orientation
+An M2 Pro antenna provides a wireless signal to the sides of the miner. If the miner is mounted horizontally, the network that it provides will be extremely limited (i.e. airplanes and moles would benefit when they pass overhead or underneath the miner). Therefore, orientation ensures a miner is mounted vertically as designed, with the antenna facing upwards. *Orientation has an 8 percent influence on miner health.*
+
+## Proximity
+In order to achieve a broad wireless network, and in doing so get the most possible coverage, proximity rewards users for spreading out their miners. If a miner is in close proximity with another miner, then it will receive a proximity hit on miner health. *Proximity has a 7 percent influence on miner health.*
+
+## Altitude
+A miner placed in a higher position is more likely to provide a wireless network that transverses physical obstacles. Altitude is measured by using the pressure sensor in the miner itself, and combining it with a terrain elevation database to determine how high above ground level the miner is. This is then cross referenced with the elevation of nearby miners to determine whether the miner is ideally placed. *Altitude has a 5 percent influence on miner health.*
+
+### Proposed alternative to altitude
+As altitude is extremely difficult to measure, we are considering a method for users to manually measure the signal strength of a miner.
From ca7082b61acb2f057ee9549e2c35831aca9da1fb Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:34 +0200
Subject: [PATCH 084/234] New translations payload.md (Korean)
---
.../current/tutorials/devices/payload.md | 194 ++++++++++++++++++
1 file changed, 194 insertions(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
new file mode 100644
index 0000000..733d9ab
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
@@ -0,0 +1,194 @@
+---
+title: Payload Format
+sidebar_label: Payload Format
+---
+
+## Uplink Payload Data Format
+
+The payload is consisting of several commands in a Type-Length-Value (TLV) format. The first byte is consisting of Type (bits [7:4]), defining the command, and Length (bits [3:0]), the length of the arguments in bytes. If the Length bits are 0xF (binary 1111), the command has its length specified in bits [5:0] of the second byte.
+
+| Number | Name | Length | Description |
+| ------ | --------------- | ------ | ------------------------------------------------------------------------------------------------- |
+| 0 | Param value | >=2 | Response to the "Get params" command. The first byte is the param number, the rest are the value. |
+| 1 | Sensor data | >=1 | Sensor data. |
+| 2 | Battery level | 1 | Battery level in 10mV steps from 2V (0 = 2V, 255 = 4.55V). |
+| 3 | Battery Percent | 1 | Battery level in percent (0 to 100). |
+| 4 | Event data | >=1 | Event data |
+
+
+
+### Sensor Data
+
+Sensor data consists of a byte signifying the sensor type, and zero or more bytes of sensor data. The defined types and corresponding data formats are:
+
+| Number | Name | Length | Description |
+| ---------- | ----------- | ----------- | ---------------------------------------------------------------------------------------- |
+| 0 (0x00) | unknown | 0 | No data. |
+| 1 (0x01) | gps | 1 or 11 | GPS coordinates. |
+| 2 (0x02) | temp | 1 or 2 or 4 | Temperature in degrees Celsius. |
+| 3 (0x03) | humi | 1 or 2 or 4 | Relative humidity in %RH. |
+| 4 (0x04) | pressure | 4 | Barometric pressure in hPa. |
+| 5 (0x05) | pm10 | 4 | PM10 Concentration in μg/m3. |
+| 6 (0x06) | pm2.5 | 4 | PM2.5 Concentration in μg/m3. |
+| 7 (0x07) | tvoc | 4 | VOC Concentration in ppb. |
+| 8 (0x08) | no2 | 4 | Nitrogen Dioxide Concentration in ppm. |
+| 9 (0x09) | co2 | 4 | Carbon Dioxide Concentration in ppm. |
+| 10 (0x0a) | airFlow | 4 | Air Flow Rate (Wind Speed) in m/s. |
+| 11 (0x0b) | voltage | 1 or 2 or 4 | Voltage in V. |
+| 12 (0x0c) | current | 1 or 2 or 4 | Electric Current in A. |
+| 13 (0x0d) | power | 1 or 2 or 4 | Electric Power in W. |
+| 14 (0x0e) | powerUsage | 4 | Electric energy usage in kWh. |
+| 15 (0x0f) | waterUsage | 4 | Water usage in Kilolitres. |
+| 16 (0x10) | speed | 4 | Movement Speed in m/s. |
+| 17 (0x11) | rotation | 4 | Rotational speed in RPM. |
+| 18 (0x12) | counter | 4 | A generic counter in a 32-bits unsigned value. |
+| 19 (0x13) | digital | 1 | A generic digital value. 0: Low or OFF, 1: High or ON, -1 Unknown or Invalid. |
+| 20 (0x14) | percent | 1 | A generic value in percent. |
+| 21 (0x15) | powerFactor | 2 or 4 | Power factor for AC power system. Value range from 0 to 1. |
+| 254 (0xfe) | uplinkPower | 1 | Exact value of TX Power in dBm. |
+
+
+
+#### GPS data format
+
+When data length is 1
+
+| Offset | Length | Description |
+| ------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | 1 | Indicates whether the node has moved since last GPS fix. Possible values are: 0: Node is stable since last GPS fix 1: Node has moved, or has not received a GPS fix since boot; waiting for GPS fix |
+
+When data length is 11
+
+| Offset | Length | Description |
+| ------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | 1 | $GPGGA Position Fix Indicator. Possible values are: * 0 Fix not available or invalid * 1 GPS SPS Mode, fix valid * 2 Differential GPS, SPS Mode, fix valid * 6 Dead Reckoning Mode, fix valid |
+| 1 | 4 | Latitude in 1/1000 of minutes, as little-endian int32. Positive is north, negative is south. To get the value in degrees, divide by 600000. |
+| 5 | 4 | Longitude in 1/1000 of minutes, as little-endian int32. Positive is east, negative is west. To get the value in degrees, divide by 600000. |
+| 9 | 2 | Altitude above geoid mean sea level in decimeters (0.1m), as little-endian int16. |
+
+
+
+#### Data format for 1 byte value
+
+It is a signed 8-bits integer (int8_t), giving the range between -128 and +127.
+
+```javascript
+// Decoding
+if (offset_0 > 0x7f) {
+ value = ((offset_0 ^ 0xff) + 1) * -1;
+}
+else {
+ value = offset_0;
+}
+```
+
+
+
+#### Data format for 2 bytes value
+
+It is a signed 16-bits fixed point number. Offset 0 is the sign bit and integer part. Offset 1 is the fractional part.
+
+```javascript
+// Decoding in Javascript
+let raw_value = (offset_0 << 8) | offset_1;
+if (raw_value > 0x7fff) {
+ value = ((raw_value ^ 0xffff) + 1) * -1;
+}
+else {
+ value = raw_value;
+}
+value = value / 256;
+```
+
+
+
+#### Data format for 4 bytes value
+
+It is a 32-bits floating point number (IEEE 754). Offset 0 is the MSB.
+
+For example, a value of 54.12 will has a 32-bits value of 0x42587ae1.
+
+The payload will become <0x42><0x58><0x7a><0xe1>.
+
+```javascript
+// Decoding in Javascript
+let raw_value = (offset_0 << 24) | (offset_1 << 16) | (offset_2 << 8) | offset_3;
+let v_temp = new DataView(new ArrayBuffer(4))
+v_temp.setUint32(0, raw_value)
+value = v_temp.getFloat32(0)
+```
+
+
+
+The NAN (Not A Number) (0x7fc00000), means the sensor value is unknown or invalid.
+
+
+
+### Event Data
+
+Event data is information about change that occurs at a point in time. A event will contain the type value and additional event data.
+
+| Number | Name | Length | Description |
+| --------- | ------------- | ------ | ------------------------------------------------------------------ |
+| 0 (0x00) | unknown | 0 | No data. |
+| 11 (0x0b) | opened | 1 | The unit is opened by a user. Data is the user ID. |
+| 12 (0x0c) | specialOpened | 0 | The unit is opened in a special way. For example, a key or button. |
+| 13 (0x0d) | forceOpened | 0 | The unit is opened in a abnormal way. |
+
+
+
+## Downlink Payload Data Format
+
+Payload is consisting of several commands in a Type-Length-Value (TLV) format. The first byte is consisting of Type (bits [7:4]), defining the command, and Length (bits [3:0]), the length of the arguments in bytes. If the Length bits are 0xF (binary 1111), the command has its length specified in bits [5:0] of the second byte.
+
+| Number | Name | Length | Description |
+| ------ | -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | Get params | 1 | Get parameter described by first byte. |
+| 1 | Set params | >=2 | Set parameter described by first byte to the value specified in the rest of the message. |
+| 2 | Reboot | 0 | Reboot the node immediately. |
+| 3 | Reboot/upgrade | 1 | Reboot the node after the specified timeout; optionally turn BLE and SUOTA on for upgrades. The argument is as follows:bit [7]:0: just reboot1: BLE onbits [6:3]: Reservedbits [2:0]: Timeout0: TBD1: 5 minutes2: 15 minutes3: 30 minutes4: 1 hour5: 2 hours6: 4 hours7: TBD |
+| 4 | Set Controls | \>=1 | Set a value to the control. For example, turn on/off a digital output. |
+
+
+
+### Parameters
+
+| Number | Name | Length | Description |
+| ------ | ------- | ------ | ------------------------------------------------------------------------- |
+| 0 | deveui | 6 | DevEUI-48 and BLE MAC address (MSBF) Only for DevKit. Please don't use it at final product. |
+| 1 | appeui | 8 | AppEUI-64 (MSBF) Only for DevKit. Please don't use it at final product. |
+| 2 | appkey | 16 | AppKey (write-only) Only for DevKit. Please don't use it at final product. |
+| 3 | period | 1 | Sensor period |
+| 4 | sf | 1 | Minimal LoRa Spread Factor (valid values: 7-12) |
+| 5 | version | 2 | Version number. 01 00 => V1.0 |
+
+Parameters 0, 1, 2 and 4 are actualized after reboot.
+
+Sensor period is as follows:
+
+| Number | Period |
+| ------ | -------- |
+| 0 | Default |
+| 1 | 10 sec |
+| 2 | 30 sec |
+| 3 | 1 min |
+| 4 | 2 min |
+| 5 | 5 min |
+| 6 | 10 min |
+| 7 | 30 min |
+| 8 | 1 hour |
+| 9 | 2 hours |
+| 10 | 5 hours |
+| 11 | 12 hours |
+
+
+
+### Controls
+
+Controls are used for the user to change a value or state of the device. The control data consists of a byte signifying the data type, and zero or more bytes of the data. The defined types and corresponding data formats are:
+
+| Number | Name | Length | Description |
+| --------- | ------- | ------ | ----------------------------------------------------------------- |
+| 0 (0x00) | unknown | 0 | No data. |
+| 19 (0x13) | digital | 1 | A generic digital value. 0: Low or OFF, 1: High or ON. |
+| 20 (0x14) | percent | 1 | A generic value in percent. |
From b9f40f4595490e9983217b5fec4458cbed39aad6 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:35 +0200
Subject: [PATCH 085/234] New translations 2021-07-5-tech-update.md (German)
---
.../2021-07-5-tech-update.md | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-blog/2021-07-5-tech-update.md
diff --git a/i18n/de/docusaurus-plugin-content-blog/2021-07-5-tech-update.md b/i18n/de/docusaurus-plugin-content-blog/2021-07-5-tech-update.md
new file mode 100644
index 0000000..2dd0bc2
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-blog/2021-07-5-tech-update.md
@@ -0,0 +1,36 @@
+---
+slug: 2021-07-05-tech-update
+title: Tech Update - July 5, 2021
+author: Jeff Stahlnecker
+author_title: Head of Development @ MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - tech update
+ - datadash
+ - supernode
+ - dhx
+---
+
+Welcome to the very first MXC tech update!
+
+This week the tech team has been extremely busy. Throughout the past sprint we've focused on closing any and all ongoing projects. That brought us back to a few "low hanging" items that will add some EPIC value to our users -- especially those interested in connecting LoRa devices.
+
+## Device Provisioning
+Our very own backend engineer Lixuan took a deep dive to test the device provisioning system built by Ian to ensure that it was ready to be added with our live code. She solved a number of conflicts (device provisioning has been *ready* since January!), then ran it through a round of rigorous testing. This was done in collaboration with MatchX embedded software engineer Ian. They did some great work, and you'll see device provisioning going live early this week. In the meantime, you can check out the technical documentation here: [Device Provisioning FAQ](/docs/tutorials/devices/provisioning)
+
+As part of our focus on devices during the past two weeks, Lixuan also solved an issue which kept users from adding new devices on a supernode. We should be in ship-shape, and ready for some developer interaction. Feel free to send us your feedback! :)
+
+## Foundation for DHX Simulator Improvement
+The DataDash DHX Simulator has been a long-standing issue. While it works, it's a little buggy, and once in a while spits out something unexpected. Our backend developer Pavel decided enough is enough, and jumped in to solve the challenge of the buggy simulator. To accomplish this he brought together the required information from a ton of different sources and built an API for the DataDash team to integrate. For those developers out there, I'll update this post with a link to the API as soon as it is live.
+
+## Improved Technical Support
+We've been working hard to improve the technical support services provided by both MXC and MatchX. Our Tech Support Engineer Latifah has been hard at work building a ticketing system, integrating Discord, writing an internal support knowledgebase, while naturally also responding to your support requests. She's done an excellent job, and has set a strong foundation for reliable support moving forward.
+
+## Cleaning up the DataDash
+Over the past two weeks our DataDash team has focused primarily on solving some pesky issues with the app. We also added support for DHX in the in-app address book. Just another feature to make life a little easier for you.
+
+## Contributing to DataHighway
+Team members Luke, Ayush and Christian updated the DataHighway blockchain to add multisig functionality. They also made a number of improvements, and fixed issues with the Harbour testnet. You can review the full release notes [here](https://github.com/DataHighway-DHX/node/releases/tag/v3.0.5).
+
+That's the newest from Tech, and I'll be sure to update this post with that API link as soon as it goes live.
\ No newline at end of file
From 00a56bdb1ee759be24f46c1f3aa42c3bb2796c74 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:36 +0200
Subject: [PATCH 086/234] New translations intro.md (German)
---
.../current/tutorials/dhx/intro.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
new file mode 100644
index 0000000..18d2c90
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
@@ -0,0 +1 @@
+# What is DHX
\ No newline at end of file
From 308b6d5d6443cf78842b86d0709b4d92d072a8e1 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:37 +0200
Subject: [PATCH 087/234] New translations _category_.json (German)
---
.../current/tutorials/dhx/_category_.json | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
new file mode 100644
index 0000000..6f5f53d
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Mining DHX",
+ "position": 4
+}
From 0367f802d9907d9e0a6abe3a93d099c145b1c45b Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:38 +0200
Subject: [PATCH 088/234] New translations provisioning.mdx (German)
---
.../tutorials/devices/provisioning.mdx | 514 ++++++++++++++++++
1 file changed, 514 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
new file mode 100644
index 0000000..b56498c
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
@@ -0,0 +1,514 @@
+---
+sidebar_position: 4
+sidebar_label: Device Provisioning
+---
+
+# Device Provisioning
+
+## What is Device Provisioning?
+
+Device Provisioning is a process of exchanging sensitive information between a device and a server. This process will store the encryption keys required for LoRaWAN communication on the device and the server. The whole process will be completed through LoRa communication. Therefore, no additional hardware is required on the device.
+
+In terms of security, Elliptic-curve Diffie-Hellman is used as the key exchange, which enables subsequent sensitive data to be exchanged between the device and the server in a secure manner.
+
+
+## What is the advantage of it?
+
+With the provisioning is done and the key is ready on both server and device. The operation on the user side will become simple. The user needs only a few steps to register the device to the system. He/She just needs to use our DataDash mobile APP to scan the QR-code label on the device. Then enter a few more information about the device, such as name. After that the device will start to join the network. The user didn’t need to enter any keys that the traditional way needs. During production no keys need to be sent to the assembly house, further improving the security by preventing unwanted compromise of the keys by the 3rd party.
+
+
+## What about the QR-code label?
+
+The QR-code label stored the identity of the device. There is no sensitive information on it, just an ID code (called Provision ID). A minimal label just needs the Provision ID. The mobile APP will use this Provision ID to register the device to the system. It is a secure way to do the task which no encryption keys content appears during the whole process.
+
+Here is an example of a minimal label.
+
+
+
+
+
+
+
+
PID:PROVISIONIDOOOOOOOOO
+
+
+
+For a big device that has more space for the label, a long version label could be used to store more information.
+
+
+
+
+
+
+
+
+
+
+```
+{
+ "PROVID": "PROVISIONIDOOOOOOOOO",
+ "BRAND": "MatchX",
+ "MODEL": "MX1234",
+ "SN": "S123456"
+}
+
+```
+
+
+## What device developer needs to do?
+
+The firmware needs to implement the flow device provisioning. It is a two steps process and needs to be done for a new produced device. The details of this process is listed on the later part of this document.
+
+During the device provisioning, it required the Provision ID to identify the device. We suggest the device firmware add an interface to let the manufacturer set this information at the end of the quality assurance (QA) procedure.
+
+An example method is to use a UART interface to program the information. Our example device uses an “AT” command to achieve this. But any other serial protocol should be fine.
+
+
+
+
+
+## What device manufacturer needs to do?
+
+To successfully provision a device, it required the information of Provision ID. The manufacturer needs to request it from us, MatchX. We will prepare a spreadsheet that has the assigned Provision ID and related information for the manufacturer. The Manufacturer needs to make sure the information is set to the device with the correct matched QR-Code label.
+
+We suggest the manufacturer to add an extra step at their quality assurance (QA) procedure. The step included setting the Provision ID to the device with a matched QR-Code label. Then verify the device is being provisioned, that means it exchanged key information with the server.
+
+
+
+
+
+
+
+
+## Device Provisioning Implementation Details
+
+Source code of our example device: TBD
+
+
+### Provision ID
+
+The Provision ID is a unique string for each device. During the provisioning, it is used as an identity at the provisioning server to access the device information. The Provision ID is 20 characters long and uses the RFC4648 Base32 alphabet.
+
+
+### Hash of Provision ID
+
+It is the result of the SHA256 hash on the Provision ID. The device provisioning process uses this value when doing authentication with the server. To minimize the complexity of the device implementation, we suggest the device also store this value to its FLASH, instead of calculating it by itself.
+
+
+```
+provisionIdHash = SHA256(provisionId | '.MatchX')
+```
+
+
+For example:
+
+
+```
+PID = 'TESTPIDOOOOOOOOOOOOO'
+HASH = 'c8c7564b46b91c91ef6c4f37bcca8cf7e81baac6eb869dcc62e5fafdd0242497'
+```
+
+
+
+### Message integrity code (MIC)
+
+The message integrity code (MIC) value at LoRa PHYPayload for HELLO and AUTH messages is calculated as below.
+
+
+```
+FixedKey[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
+
+cmac = aes128_cmac(FixedKey, message)
+MIC = cmac[0..3]
+```
+
+
+### Verification Code
+
+The verification code is used when the device authenticates with the server. The calculation is shown below.
+
+
+```
+ FixedKey[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
+
+ cal_buf = provisionId + nonce;
+ verifyCode = aes128_cmac(FixedKey, cal_buf)
+```
+
+Example:
+
+
+```
+// Input
+ privisionid = "SERIALNUMBEROOOOOOOO";
+ servernonce = {0x01, 0x02, 0x03, 0x04};
+
+// Output
+ verifyCode = {0x2E, 0x69, 0xBB, 0x5E, 0xD7, 0x8B, 0x5E, 0xE8,
+ 0x0C, 0x6A, 0x8A, 0xDC, 0x81, 0x91, 0xDD, 0xF8};
+```
+
+
+
+### AES
+
+The encryption scheme used in aes128_encrypt() and aes128_cmac() are the same as LoRaWAN specification. This approach will minimize the need for extra code on the device side.
+
+
+### LoRa
+
+The device provisioning using the “Proprietary” LoRa frame for communication, it means the MType on MHDR is set to ‘111’.
+
+The receiving windows using RX1 and delay is 5s.
+
+Data Rate:
+
+
+
+
+
Region
+
+
Data Rate
+
+
Configuration
+
+
+
+
EU868
+
+
3
+
+
Up and Down: SF9 / 125 kHz
+
+
+
+
US915
+
+
3
+
+
Up: SF7 / 125 kHz
+
+ Down: SF7 / 500 kHz
+
+
+
+
+
CN470
+
+
3
+
+
Up and Down: SF9 / 125 kHz
+
+
+
+
+### Sequence Diagram
+
+The device provisioning has two steps. First, it is a ECDH key exchange process, called “Hello” by us. The device and the server will exchange their public key on this step. Then the next step is the authentication. The device will submit its hashed Provision ID to the server. If it is a valid ID on the server, the server will accept the request and send back the EUI information.
+
+The keys used for LoRaWAN OTAA are derived from the ECDH shared key. All this information will not appear on the communication message.
+
+
+
+
+### Message format
+
+The messages shown below are the content of the MACPayload of the Proprietary MAC message of LoRaWAN.
+
+LoRaWAN PHYPayload:
+
+
+
A random device EUI for the current device. 8 bytes long.
+
+
+
+
devPubKey
+
+
The ECDH public key generated by device. 64 bytes long.
+
+
+
+
serverPubKey
+
+
The ECDH public key generated by the server. 64 bytes long.
+
+
+
+
version
+
+
Protocol version. Value is 0x01. 1 byte value.
+
+
+
+
provisionIdHash
+
+
Hashed Provision ID. 32 bytes long.
+
+
+
+
serverNonce
+
+
Random value for verifyCode generation. 4 bytes long.
+
+
+
+
devNonce
+
+
Random value for verifyCode generation. 4 bytes long.
+
+
+
+
devEUI
+
+
The assigned Device EUI for the device. 8 bytes long.
+
+
+
+
verifyCode
+
+
Verification code. 16 bytes long.
+
+
+
+
+### ECDH
+
+In our example device source code, we used the following C source at GitHub for the ECDH.
+
+https://github.com/kokke/tiny-ECDH-c
+
+The compiled size is as small as 1.4KiB for ARM Thumb Code. It minimized the extra cost for fitting into an MCU.
+
+The ECDH key exchange will use the NIST K-233 curve. Private key size is 32 bytes, public key size is 64 bytes.
+
+
+### Key generation
+
+The keys used for LoRaWAN are generated inside the device instead of sending via the air. After the ECDH key exchange (Hello message), both device and server will hold a sharedKey in the same value. Then it will use the following calculation to derive to several keys.
+
+When the authentication is done, the derived AppKey and NwkKey should be stored in FLASH for later LoRaWAN OTAA use.
+
+
+```
+ AppKey = aes128_encrypt (sharedKey[0..15], rDevEUI | pad 0x01)
+
+ NwkKey = aes128_encrypt (sharedKey[32..47], rDevEUI | pad 0x02)
+
+ ProvKey = aes128_encrypt (sharedKey[16..23] | sharedKey[48..55], rDevEUI | pad 0x03)
+```
+
+
+AppKey and NwkKey are the keys for OTAA on LoRa communication.
+
+For 1.0.x LoRa, NwkKey will be used as AppKey for OTAA.
+
+ProvKey is used as the key for payload encryption of Auth messages and responses.
+
+Example:
+
+
+```
+// Input
+ sharedkey = {0x57, 0x57, 0x3A, 0x81, 0xE2, 0x7E, 0x48, 0x26, 0xFA, 0x8E, 0x18, 0x70, 0xCD,
+ 0x6B, 0x66, 0x40, 0xF3, 0x90, 0x5D, 0x98, 0x40, 0xF4, 0x12, 0xFA, 0xAE, 0x74,
+ 0x0B, 0x12, 0xE0, 0x01, 0x00, 0x00, 0xC4, 0xD8, 0x27, 0xA9, 0x37, 0x49, 0xEE,
+ 0x44, 0xEA, 0x1B, 0xAC, 0x1C, 0x18, 0x8C, 0x03, 0xAA, 0x6B, 0x02, 0xDA, 0x1C,
+ 0x68, 0xE9, 0xE8, 0xE6, 0xCA, 0xB9, 0xD1, 0xED, 0x91, 0x01, 0x00, 0x00};
+
+// Output
+ appkey = {0xFC, 0x3B, 0xDD, 0x59, 0x22, 0x87, 0xD9, 0x73
+ 0x48, 0xC0, 0x0B, 0xAC, 0x46, 0xB3, 0x05, 0x79};
+ nwkkey = {0x5B, 0x87, 0x83, 0xAF, 0x06, 0xFF, 0xB3, 0x62,
+ 0x9D, 0x03, 0x77, 0x9B, 0xF3, 0x4E, 0x12, 0x89};
+ provkey = {0x29, 0x53, 0x01, 0x98, 0x2D, 0x35, 0xC7, 0x2F,
+ 0x71, 0x42, 0xB9, 0xDD, 0x07, 0xFE, 0x1D, 0xEF};
+```
+
+
+
+
+
+## Request for Provision ID (CSV file)
+
+This is the CSV file you need to send to us to request for the Provision ID.
+
+
+```
+ MatchX Device Provisioning,,,,,
+ manufacturerName,MatchX GmbH,,,,
+ provisionId,model,serialNumber,fixedDevEUI,devEUI,appEUI
+ ,M-1234,S000000,Y,000000fffe000000,0000000000000000
+ ,M-1234,S000001,Y,000000fffe000001,0000000000000000
+ ,M-1234,S000002,Y,000000fffe000002,0000000000000000
+ ,M-1234,S000003,Y,000000fffe000003,0000000000000000
+ ,M-1234,S000004,Y,000000fffe000004,0000000000000000
+ ,M-1234,S000005,Y,000000fffe000005,0000000000000000
+ ,M-1234,S000006,Y,000000fffe000006,0000000000000000
+ ,M-1234,S000007,Y,000000fffe000007,0000000000000000
+```
+
+
+The first line is the signature, please don’t modify it.
+
+The second line is the name of the device manufacturer. Modify it to your company name.
+
+The third line is the header, please don’t modify it.
+
+Starting from the fourth line, it is the list of device information you need for a Provision ID.
+
+“provisionId” is the Provision ID, we will generate one for you if it is blank.
+
+“model” is the model number of your device.
+
+“serialNumber” is the serial number of your device.
+
+When your device has its own MAC address and is willing to use it as the Device EUI on LoRa, you should set the “fixedDevEUI” to “Y” and fill the “fixedDevEUI”.
+
+“appEUI” is not used at the moment, please fill it with “0000000000000000”.
+
+Here is the view when you use a spreadsheet program to edit the file.
+
+
+
+
+
+
+
+
+48-bits MAC to 64-bits EUI
+
+To convert a 48-bits MAC address into a 64-bits EUI, you need to insert a “0xff 0xfe” in the middle of it.
+
+For example:
+
+
+```
+ MAC = 01 02 03 04 05 06
+ EUI = 01 02 03 ff fe 04 05 06
+```
+
+
+
+
+After the request is approved, we will send you back the report file in CSV format. Here is an example for the report that is viewed with a spreadsheet program.
+
+
+
+
+
+The important parts are the “provisionId” and “provisionIdHash”. You need to program this information to the device. For the device with MAC and using fixed Device EUI, you need to take care of the “devEUI” and make sure the Provision ID is programmed to the corresponding device.
+
+Here is an example CSV file for the device that will use a random Device EUI. The “fixedDevEUI” will set to “N” and “deviceEUI” is blank. A random device EUI will assign to the device after provisioning.
+
+
+```
+ MatchX Device Provisioning,,,,,
+ manufacturerName,MatchX GmbH,,,,
+ provisionId,model,serialNumber,fixedDevEUI,devEUI,appEUI
+ ,M-1234,S000000,N,,0000000000000000
+ ,M-1234,S000001,N,,0000000000000000
+ ,M-1234,S000002,N,,0000000000000000
+ ,M-1234,S000003,N,,0000000000000000
+ ,M-1234,S000004,N,,0000000000000000
+ ,M-1234,S000005,N,,0000000000000000
+ ,M-1234,S000006,N,,0000000000000000
+ ,M-1234,S000007,N,,0000000000000000
+```
+
+
+
+
+
+
+
+
From 17c30e07728be7ea1b24a34090104b988dd175e9 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:39 +0200
Subject: [PATCH 089/234] New translations miner-health.mdx (German)
---
.../current/tutorials/m2-pro/miner-health.mdx | 48 +++++++++++++++++++
1 file changed, 48 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
new file mode 100644
index 0000000..8e488ac
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/miner-health.mdx
@@ -0,0 +1,48 @@
+---
+sidebar_position: 4
+---
+
+# Miner Health
+
+Miner Health rewards users for placing their miner in a fashion that will provide a strong LoRa signal. These are the six items that make up miner health:
+* Fuel (Live)
+* Uptime (Live)
+* GPS Signal
+* Orientation
+* Proximity
+* Altitude
+
+## Miner Health Grace Period
+Each M2 Pro Miner has a 90-day grace period that begins with the initial registration of the miner. During this period of time, health will not affect the mining potential of the M2 Pro. After the grace period is over, the current health of the miner will be applied.
+
+If the fuel tank is empty after the grace period, mining efficiency will be reduced by 50% (see Fuel).
+
+## Fuel (Live)
+Each miner has a fuel tank. This tank is equal to the size of all the MXC mined by this miner. So a miner mined 10 MXC, the tank size would then be 10 MXC.
+
+*Fuel has a 50 percent influence on your mining potential*
+
+### How does this work?
+
+As a miner mines, it maintains the fuel tank. All newly mined MXC are added to the tank to ensure it continues to mine at peek efficiency. When MXC is removed from the fuel tank, the miner will mine at a reduced efficiency. For example, if all MXC would be removed from the fuel tank, the miner would mine at 50% efficiency.
+
+### Fuel percentage increases over time
+As a miner mines, it continues to add MXC. If a miner's tank size is 99 MXC, and all the fuel is removed from the tank, then the fuel percentage would be zero. However, if the miner mines one MXC on the following day, the fuel balance increases by one MXC, as does the tank size, resulting in a 1% fuel capacity. Naturally this version of "refilling" the tank takes time, however it ensure that the M2 Pro retains its value after all fuel is removed.
+
+## Uptime
+Uptime is a reliability metric calculated using the average reliability of the miner over the past 7 days. Uptime as a whole, has a 20 percent influence on miner health.
+
+## GPS Signal
+GPS is another form of wireless signal. Therefore we can *assume* that if the miner has a strong GPS signal, it's positioned well enough to provide an excellent wireless network. *GPS has a 10 percent influence on miner health.*
+
+## Orientation
+An M2 Pro antenna provides a wireless signal to the sides of the miner. If the miner is mounted horizontally, the network that it provides will be extremely limited (i.e. airplanes and moles would benefit when they pass overhead or underneath the miner). Therefore, orientation ensures a miner is mounted vertically as designed, with the antenna facing upwards. *Orientation has an 8 percent influence on miner health.*
+
+## Proximity
+In order to achieve a broad wireless network, and in doing so get the most possible coverage, proximity rewards users for spreading out their miners. If a miner is in close proximity with another miner, then it will receive a proximity hit on miner health. *Proximity has a 7 percent influence on miner health.*
+
+## Altitude
+A miner placed in a higher position is more likely to provide a wireless network that transverses physical obstacles. Altitude is measured by using the pressure sensor in the miner itself, and combining it with a terrain elevation database to determine how high above ground level the miner is. This is then cross referenced with the elevation of nearby miners to determine whether the miner is ideally placed. *Altitude has a 5 percent influence on miner health.*
+
+### Proposed alternative to altitude
+As altitude is extremely difficult to measure, we are considering a method for users to manually measure the signal strength of a miner.
From f7c69bcd0e3aab93673546d4d16bdb8eadd02165 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:40 +0200
Subject: [PATCH 090/234] New translations payload.md (German)
---
.../current/tutorials/devices/payload.md | 194 ++++++++++++++++++
1 file changed, 194 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
new file mode 100644
index 0000000..733d9ab
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/devices/payload.md
@@ -0,0 +1,194 @@
+---
+title: Payload Format
+sidebar_label: Payload Format
+---
+
+## Uplink Payload Data Format
+
+The payload is consisting of several commands in a Type-Length-Value (TLV) format. The first byte is consisting of Type (bits [7:4]), defining the command, and Length (bits [3:0]), the length of the arguments in bytes. If the Length bits are 0xF (binary 1111), the command has its length specified in bits [5:0] of the second byte.
+
+| Number | Name | Length | Description |
+| ------ | --------------- | ------ | ------------------------------------------------------------------------------------------------- |
+| 0 | Param value | >=2 | Response to the "Get params" command. The first byte is the param number, the rest are the value. |
+| 1 | Sensor data | >=1 | Sensor data. |
+| 2 | Battery level | 1 | Battery level in 10mV steps from 2V (0 = 2V, 255 = 4.55V). |
+| 3 | Battery Percent | 1 | Battery level in percent (0 to 100). |
+| 4 | Event data | >=1 | Event data |
+
+
+
+### Sensor Data
+
+Sensor data consists of a byte signifying the sensor type, and zero or more bytes of sensor data. The defined types and corresponding data formats are:
+
+| Number | Name | Length | Description |
+| ---------- | ----------- | ----------- | ---------------------------------------------------------------------------------------- |
+| 0 (0x00) | unknown | 0 | No data. |
+| 1 (0x01) | gps | 1 or 11 | GPS coordinates. |
+| 2 (0x02) | temp | 1 or 2 or 4 | Temperature in degrees Celsius. |
+| 3 (0x03) | humi | 1 or 2 or 4 | Relative humidity in %RH. |
+| 4 (0x04) | pressure | 4 | Barometric pressure in hPa. |
+| 5 (0x05) | pm10 | 4 | PM10 Concentration in μg/m3. |
+| 6 (0x06) | pm2.5 | 4 | PM2.5 Concentration in μg/m3. |
+| 7 (0x07) | tvoc | 4 | VOC Concentration in ppb. |
+| 8 (0x08) | no2 | 4 | Nitrogen Dioxide Concentration in ppm. |
+| 9 (0x09) | co2 | 4 | Carbon Dioxide Concentration in ppm. |
+| 10 (0x0a) | airFlow | 4 | Air Flow Rate (Wind Speed) in m/s. |
+| 11 (0x0b) | voltage | 1 or 2 or 4 | Voltage in V. |
+| 12 (0x0c) | current | 1 or 2 or 4 | Electric Current in A. |
+| 13 (0x0d) | power | 1 or 2 or 4 | Electric Power in W. |
+| 14 (0x0e) | powerUsage | 4 | Electric energy usage in kWh. |
+| 15 (0x0f) | waterUsage | 4 | Water usage in Kilolitres. |
+| 16 (0x10) | speed | 4 | Movement Speed in m/s. |
+| 17 (0x11) | rotation | 4 | Rotational speed in RPM. |
+| 18 (0x12) | counter | 4 | A generic counter in a 32-bits unsigned value. |
+| 19 (0x13) | digital | 1 | A generic digital value. 0: Low or OFF, 1: High or ON, -1 Unknown or Invalid. |
+| 20 (0x14) | percent | 1 | A generic value in percent. |
+| 21 (0x15) | powerFactor | 2 or 4 | Power factor for AC power system. Value range from 0 to 1. |
+| 254 (0xfe) | uplinkPower | 1 | Exact value of TX Power in dBm. |
+
+
+
+#### GPS data format
+
+When data length is 1
+
+| Offset | Length | Description |
+| ------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | 1 | Indicates whether the node has moved since last GPS fix. Possible values are: 0: Node is stable since last GPS fix 1: Node has moved, or has not received a GPS fix since boot; waiting for GPS fix |
+
+When data length is 11
+
+| Offset | Length | Description |
+| ------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | 1 | $GPGGA Position Fix Indicator. Possible values are: * 0 Fix not available or invalid * 1 GPS SPS Mode, fix valid * 2 Differential GPS, SPS Mode, fix valid * 6 Dead Reckoning Mode, fix valid |
+| 1 | 4 | Latitude in 1/1000 of minutes, as little-endian int32. Positive is north, negative is south. To get the value in degrees, divide by 600000. |
+| 5 | 4 | Longitude in 1/1000 of minutes, as little-endian int32. Positive is east, negative is west. To get the value in degrees, divide by 600000. |
+| 9 | 2 | Altitude above geoid mean sea level in decimeters (0.1m), as little-endian int16. |
+
+
+
+#### Data format for 1 byte value
+
+It is a signed 8-bits integer (int8_t), giving the range between -128 and +127.
+
+```javascript
+// Decoding
+if (offset_0 > 0x7f) {
+ value = ((offset_0 ^ 0xff) + 1) * -1;
+}
+else {
+ value = offset_0;
+}
+```
+
+
+
+#### Data format for 2 bytes value
+
+It is a signed 16-bits fixed point number. Offset 0 is the sign bit and integer part. Offset 1 is the fractional part.
+
+```javascript
+// Decoding in Javascript
+let raw_value = (offset_0 << 8) | offset_1;
+if (raw_value > 0x7fff) {
+ value = ((raw_value ^ 0xffff) + 1) * -1;
+}
+else {
+ value = raw_value;
+}
+value = value / 256;
+```
+
+
+
+#### Data format for 4 bytes value
+
+It is a 32-bits floating point number (IEEE 754). Offset 0 is the MSB.
+
+For example, a value of 54.12 will has a 32-bits value of 0x42587ae1.
+
+The payload will become <0x42><0x58><0x7a><0xe1>.
+
+```javascript
+// Decoding in Javascript
+let raw_value = (offset_0 << 24) | (offset_1 << 16) | (offset_2 << 8) | offset_3;
+let v_temp = new DataView(new ArrayBuffer(4))
+v_temp.setUint32(0, raw_value)
+value = v_temp.getFloat32(0)
+```
+
+
+
+The NAN (Not A Number) (0x7fc00000), means the sensor value is unknown or invalid.
+
+
+
+### Event Data
+
+Event data is information about change that occurs at a point in time. A event will contain the type value and additional event data.
+
+| Number | Name | Length | Description |
+| --------- | ------------- | ------ | ------------------------------------------------------------------ |
+| 0 (0x00) | unknown | 0 | No data. |
+| 11 (0x0b) | opened | 1 | The unit is opened by a user. Data is the user ID. |
+| 12 (0x0c) | specialOpened | 0 | The unit is opened in a special way. For example, a key or button. |
+| 13 (0x0d) | forceOpened | 0 | The unit is opened in a abnormal way. |
+
+
+
+## Downlink Payload Data Format
+
+Payload is consisting of several commands in a Type-Length-Value (TLV) format. The first byte is consisting of Type (bits [7:4]), defining the command, and Length (bits [3:0]), the length of the arguments in bytes. If the Length bits are 0xF (binary 1111), the command has its length specified in bits [5:0] of the second byte.
+
+| Number | Name | Length | Description |
+| ------ | -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0 | Get params | 1 | Get parameter described by first byte. |
+| 1 | Set params | >=2 | Set parameter described by first byte to the value specified in the rest of the message. |
+| 2 | Reboot | 0 | Reboot the node immediately. |
+| 3 | Reboot/upgrade | 1 | Reboot the node after the specified timeout; optionally turn BLE and SUOTA on for upgrades. The argument is as follows:bit [7]:0: just reboot1: BLE onbits [6:3]: Reservedbits [2:0]: Timeout0: TBD1: 5 minutes2: 15 minutes3: 30 minutes4: 1 hour5: 2 hours6: 4 hours7: TBD |
+| 4 | Set Controls | \>=1 | Set a value to the control. For example, turn on/off a digital output. |
+
+
+
+### Parameters
+
+| Number | Name | Length | Description |
+| ------ | ------- | ------ | ------------------------------------------------------------------------- |
+| 0 | deveui | 6 | DevEUI-48 and BLE MAC address (MSBF) Only for DevKit. Please don't use it at final product. |
+| 1 | appeui | 8 | AppEUI-64 (MSBF) Only for DevKit. Please don't use it at final product. |
+| 2 | appkey | 16 | AppKey (write-only) Only for DevKit. Please don't use it at final product. |
+| 3 | period | 1 | Sensor period |
+| 4 | sf | 1 | Minimal LoRa Spread Factor (valid values: 7-12) |
+| 5 | version | 2 | Version number. 01 00 => V1.0 |
+
+Parameters 0, 1, 2 and 4 are actualized after reboot.
+
+Sensor period is as follows:
+
+| Number | Period |
+| ------ | -------- |
+| 0 | Default |
+| 1 | 10 sec |
+| 2 | 30 sec |
+| 3 | 1 min |
+| 4 | 2 min |
+| 5 | 5 min |
+| 6 | 10 min |
+| 7 | 30 min |
+| 8 | 1 hour |
+| 9 | 2 hours |
+| 10 | 5 hours |
+| 11 | 12 hours |
+
+
+
+### Controls
+
+Controls are used for the user to change a value or state of the device. The control data consists of a byte signifying the data type, and zero or more bytes of the data. The defined types and corresponding data formats are:
+
+| Number | Name | Length | Description |
+| --------- | ------- | ------ | ----------------------------------------------------------------- |
+| 0 (0x00) | unknown | 0 | No data. |
+| 19 (0x13) | digital | 1 | A generic digital value. 0: Low or OFF, 1: High or ON. |
+| 20 (0x14) | percent | 1 | A generic value in percent. |
From 8b26da95001319c0f4f2a6dc347f1e776b5f14fc Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:27:41 +0200
Subject: [PATCH 091/234] New translations 2019-05-30-welcome.md (German)
---
i18n/de/docusaurus-plugin-content-blog/2019-05-30-welcome.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/i18n/de/docusaurus-plugin-content-blog/2019-05-30-welcome.md b/i18n/de/docusaurus-plugin-content-blog/2019-05-30-welcome.md
index a85fec8..592f3ed 100644
--- a/i18n/de/docusaurus-plugin-content-blog/2019-05-30-welcome.md
+++ b/i18n/de/docusaurus-plugin-content-blog/2019-05-30-welcome.md
@@ -2,7 +2,7 @@
slug: welcome
title: Welcome
author: Jeff Stahlnecker
-author_title: Front End Engineer @ Facebook
+author_title: Head of Development at MXC Foundation
author_url: https://github.com/jeffstahlnecker
author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
tags:
From aebcb740dcd235c5318b34d8e7ee310e87a924e2 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:28:08 +0200
Subject: [PATCH 092/234] New translations intro.md (Chinese Traditional)
---
.../docusaurus-plugin-content-docs/current/tutorials/intro.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 56a974b..3516ee5 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -12,7 +12,9 @@ We have a number of public repos with active issues that could use assistance. O
Here is an updated list of repos that could use assistance.
* [DataDash App](https://github.com/mxc-foundation/supernode-app) [Flutter / Dart]
+ * [Translate the DataDash](https://crowdin.com/project/mxc-mobile-app)
* [Developer Documentation](https://github.com/mxc-foundation/developer-documentation) [Markdown, Javascript]
+ * [Translate the Docs Today](https://crowdin.com/project/mxc-documentation)
We will continue to add repositories to this list as we work to increase transparency with our code and development process.
From ba0ee4f1727d8dcad140198379004e8d3eeac9ad Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:28:09 +0200
Subject: [PATCH 093/234] New translations intro.md (Chinese Simplified)
---
.../docusaurus-plugin-content-docs/current/tutorials/intro.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 56a974b..3516ee5 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -12,7 +12,9 @@ We have a number of public repos with active issues that could use assistance. O
Here is an updated list of repos that could use assistance.
* [DataDash App](https://github.com/mxc-foundation/supernode-app) [Flutter / Dart]
+ * [Translate the DataDash](https://crowdin.com/project/mxc-mobile-app)
* [Developer Documentation](https://github.com/mxc-foundation/developer-documentation) [Markdown, Javascript]
+ * [Translate the Docs Today](https://crowdin.com/project/mxc-documentation)
We will continue to add repositories to this list as we work to increase transparency with our code and development process.
From 98eb1e8c2258ae318a036a99ee31f448478ea5b8 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:28:11 +0200
Subject: [PATCH 094/234] New translations intro.md (Korean)
---
.../docusaurus-plugin-content-docs/current/tutorials/intro.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 56a974b..3516ee5 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -12,7 +12,9 @@ We have a number of public repos with active issues that could use assistance. O
Here is an updated list of repos that could use assistance.
* [DataDash App](https://github.com/mxc-foundation/supernode-app) [Flutter / Dart]
+ * [Translate the DataDash](https://crowdin.com/project/mxc-mobile-app)
* [Developer Documentation](https://github.com/mxc-foundation/developer-documentation) [Markdown, Javascript]
+ * [Translate the Docs Today](https://crowdin.com/project/mxc-documentation)
We will continue to add repositories to this list as we work to increase transparency with our code and development process.
From 0b226ec5406c99e9741820c1a225fa57befdc4a1 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Mon, 5 Jul 2021 20:28:21 +0200
Subject: [PATCH 095/234] New translations 2021-07-5-tech-update.md (Chinese
Traditional)
---
.../2021-07-5-tech-update.md | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-blog/2021-07-5-tech-update.md
diff --git a/i18n/zh-TW/docusaurus-plugin-content-blog/2021-07-5-tech-update.md b/i18n/zh-TW/docusaurus-plugin-content-blog/2021-07-5-tech-update.md
new file mode 100644
index 0000000..2dd0bc2
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-blog/2021-07-5-tech-update.md
@@ -0,0 +1,36 @@
+---
+slug: 2021-07-05-tech-update
+title: Tech Update - July 5, 2021
+author: Jeff Stahlnecker
+author_title: Head of Development @ MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - tech update
+ - datadash
+ - supernode
+ - dhx
+---
+
+Welcome to the very first MXC tech update!
+
+This week the tech team has been extremely busy. Throughout the past sprint we've focused on closing any and all ongoing projects. That brought us back to a few "low hanging" items that will add some EPIC value to our users -- especially those interested in connecting LoRa devices.
+
+## Device Provisioning
+Our very own backend engineer Lixuan took a deep dive to test the device provisioning system built by Ian to ensure that it was ready to be added with our live code. She solved a number of conflicts (device provisioning has been *ready* since January!), then ran it through a round of rigorous testing. This was done in collaboration with MatchX embedded software engineer Ian. They did some great work, and you'll see device provisioning going live early this week. In the meantime, you can check out the technical documentation here: [Device Provisioning FAQ](/docs/tutorials/devices/provisioning)
+
+As part of our focus on devices during the past two weeks, Lixuan also solved an issue which kept users from adding new devices on a supernode. We should be in ship-shape, and ready for some developer interaction. Feel free to send us your feedback! :)
+
+## Foundation for DHX Simulator Improvement
+The DataDash DHX Simulator has been a long-standing issue. While it works, it's a little buggy, and once in a while spits out something unexpected. Our backend developer Pavel decided enough is enough, and jumped in to solve the challenge of the buggy simulator. To accomplish this he brought together the required information from a ton of different sources and built an API for the DataDash team to integrate. For those developers out there, I'll update this post with a link to the API as soon as it is live.
+
+## Improved Technical Support
+We've been working hard to improve the technical support services provided by both MXC and MatchX. Our Tech Support Engineer Latifah has been hard at work building a ticketing system, integrating Discord, writing an internal support knowledgebase, while naturally also responding to your support requests. She's done an excellent job, and has set a strong foundation for reliable support moving forward.
+
+## Cleaning up the DataDash
+Over the past two weeks our DataDash team has focused primarily on solving some pesky issues with the app. We also added support for DHX in the in-app address book. Just another feature to make life a little easier for you.
+
+## Contributing to DataHighway
+Team members Luke, Ayush and Christian updated the DataHighway blockchain to add multisig functionality. They also made a number of improvements, and fixed issues with the Harbour testnet. You can review the full release notes [here](https://github.com/DataHighway-DHX/node/releases/tag/v3.0.5).
+
+That's the newest from Tech, and I'll be sure to update this post with that API link as soon as it goes live.
\ No newline at end of file
From 14eb47a234fff918b0c51416780cf9bf228cf5f7 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Tue, 6 Jul 2021 08:39:08 +0200
Subject: [PATCH 096/234] New translations intro.md (Korean)
---
.../current/tutorials/intro.md | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 3516ee5..294d70b 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -8,6 +8,16 @@ sidebar_position: 1
There are a number of ways for developers to interact with the MXC ecosystem. These forms of participation are integral to the further development and deployment of the MXProtocol.
## Direct Participation
+
+### Beta Testing
+At the moment we have an open "closed beta" DataDash group for both iOS and Android. To participate as a beta tester follow the following steps:
+1. Join our [Discord Community](https://mxc.news/discord)
+1. Use the #bot-talk channel to send one of the following commands:
+ * `!role ios`
+ * `!role andorid`
+1. You will then see a new channel in the `develompent` category. Follow the steps in the message at the top of the channel to join your selected test group.
+
+### Coding and Translating
We have a number of public repos with active issues that could use assistance. Our team is still growing, and community support is always appreciated, encouraged and in some cases rewarded.
Here is an updated list of repos that could use assistance.
From a37f00e2d3921c6ca8089613de4b05a24d5fbfe3 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Tue, 6 Jul 2021 08:39:09 +0200
Subject: [PATCH 097/234] New translations intro.md (Chinese Simplified)
---
.../current/tutorials/intro.md | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 3516ee5..294d70b 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -8,6 +8,16 @@ sidebar_position: 1
There are a number of ways for developers to interact with the MXC ecosystem. These forms of participation are integral to the further development and deployment of the MXProtocol.
## Direct Participation
+
+### Beta Testing
+At the moment we have an open "closed beta" DataDash group for both iOS and Android. To participate as a beta tester follow the following steps:
+1. Join our [Discord Community](https://mxc.news/discord)
+1. Use the #bot-talk channel to send one of the following commands:
+ * `!role ios`
+ * `!role andorid`
+1. You will then see a new channel in the `develompent` category. Follow the steps in the message at the top of the channel to join your selected test group.
+
+### Coding and Translating
We have a number of public repos with active issues that could use assistance. Our team is still growing, and community support is always appreciated, encouraged and in some cases rewarded.
Here is an updated list of repos that could use assistance.
From b0ada12eaa9fb3d80a60605ea56401f0973af83b Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Tue, 6 Jul 2021 08:39:10 +0200
Subject: [PATCH 098/234] New translations intro.md (Chinese Traditional)
---
.../current/tutorials/intro.md | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 3516ee5..294d70b 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -8,6 +8,16 @@ sidebar_position: 1
There are a number of ways for developers to interact with the MXC ecosystem. These forms of participation are integral to the further development and deployment of the MXProtocol.
## Direct Participation
+
+### Beta Testing
+At the moment we have an open "closed beta" DataDash group for both iOS and Android. To participate as a beta tester follow the following steps:
+1. Join our [Discord Community](https://mxc.news/discord)
+1. Use the #bot-talk channel to send one of the following commands:
+ * `!role ios`
+ * `!role andorid`
+1. You will then see a new channel in the `develompent` category. Follow the steps in the message at the top of the channel to join your selected test group.
+
+### Coding and Translating
We have a number of public repos with active issues that could use assistance. Our team is still growing, and community support is always appreciated, encouraged and in some cases rewarded.
Here is an updated list of repos that could use assistance.
From 003acfa664e7f0e88796e5026a19b65966ff386b Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Tue, 6 Jul 2021 08:39:11 +0200
Subject: [PATCH 099/234] New translations intro.md (German)
---
.../current/tutorials/intro.md | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 3516ee5..294d70b 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -8,6 +8,16 @@ sidebar_position: 1
There are a number of ways for developers to interact with the MXC ecosystem. These forms of participation are integral to the further development and deployment of the MXProtocol.
## Direct Participation
+
+### Beta Testing
+At the moment we have an open "closed beta" DataDash group for both iOS and Android. To participate as a beta tester follow the following steps:
+1. Join our [Discord Community](https://mxc.news/discord)
+1. Use the #bot-talk channel to send one of the following commands:
+ * `!role ios`
+ * `!role andorid`
+1. You will then see a new channel in the `develompent` category. Follow the steps in the message at the top of the channel to join your selected test group.
+
+### Coding and Translating
We have a number of public repos with active issues that could use assistance. Our team is still growing, and community support is always appreciated, encouraged and in some cases rewarded.
Here is an updated list of repos that could use assistance.
From ce6b3175d4819fea11374b172749d1c4c41e7e49 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:35 +0200
Subject: [PATCH 100/234] New translations troubleshooting.md (Korean)
---
.../tutorials/m2-pro/troubleshooting.md | 62 ++++++++++++++++++-
1 file changed, 61 insertions(+), 1 deletion(-)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
index 569c821..287696d 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
@@ -2,4 +2,64 @@
sidebar_position: 5
---
-# Troubleshooting
\ No newline at end of file
+# Troubleshooting
+Experiencing a problem with your M2 Pro? The guides here will help you find the problem. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
+
+## Connectivity (uptime)
+If your uptime is taking a hit, there's an easy way to find out if the miner is at fault, or your local network connection. To do that follow the following steps:
+### 1. Access the M2 Pro Miner web interface
+You can find the interface here: `http://yourSerialNumber.local`
+ * Your computer or phone must be on the same network as the M2 Pro Miner
+ * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
+### 2. Download the miner logs:
+ TODO: Add how to access miner logs for users
+1. Decompress and un-tar the file and the file. You should see several files like this: 
+ * info.txt contains the model, version, serial number and mac address for reference.
+ * messages, messages.0, messages.1 are the system log files.
+ * loraMgmtDaemon.log, loraMgmtDaemon1.log, loraMgmtDaemon2.log are the LoRa packet forwarder log files.
+ * The System log and LoRa log are usually what you need to check on.
+1. Check the system log by opening `messages`, `messages.0`, `messages.1` file.
+### 3. Reading the logs
+
+First step is to check if offline is happening due to failed heartbeat. Use the search/find function (ctl+f, cmd+f) and type in the word failure to see any failed heartbeat.
+
+This is the example of a successful heartbeat session.
+ ```
+ Jun 29 04:58:09 M2XLCTRM3ZW daemon.info gwconfd[619]: Received hb response: fw conf
+ ```
+Here is an example of a failed heartbeat session.
+
+```
+Jun 29 04:56:07 M2XLCTRM3ZW daemon.err gwconfd[619]: Heartbeat api failure:4: Deadline Exceeded
+```
+A failed heartbeat can happen due to many reason but the most common reason is an unstable network connection. To rule this out, you need to check if the internet connection is good.
+
+These are the list of common errors which indicates unstable, loss or bad internet connection.
+1. Connectivity error from network issue
+```
+Jun 24 06:49:53 M2XLCTRM3ZW daemon.err tlsDaemon[606]: Setup TLS error: TCP Connection error.
+```
+
+2. Unstable/dropping WiFi connection
+```
+Jun 17 07:25:29 M2XLCTRM3ZW user.info kernel: CFG80211-ERROR) wl_is_linkdown : Link down Reason : WLC_E_LINK
+```
+3. Internet connection loss
+```
+Jun 13 15:05:50 M2XLCTRM3ZW daemon.info netMgmtDaemon[614]: Internet connection loss
+```
+
+In most cases, the issue is related to unstable internet connection at user's end and the miner is working fine (not a hardware issue).
+
+To isolate this further, you can try the following:
+* If the miner is connected using wireless connection – try using wired connection.
+* If wired connection is not possible – move the miner closer to the router as see if the uptime improves
+* If both still not solving the issue - try putting the miner on a different network (such as, at friend's home). If the miner is working fine on another network, the issue is related to your home network connection.
+
+### 4. Checking LoRa Connectivity
+For LoRa, when you see that a miner is offline you can check on the Last Seen. This is pretty straight forward as you just need to search these two lines. If you get PUSH_ACK, that means it is fine.
+```
+[2021-06-17 08:58:48.437] [loraMgmtDaemon] [info] INFO: [up] PUSH_ACK received in 43 ms
+```
+This message is sent every 30 seconds.
+
From 0296a9d02db3b714d997ac9c99e105ffb701c40d Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:36 +0200
Subject: [PATCH 101/234] New translations beta.md (Korean)
---
.../current/tutorials/datadash/beta.md | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
new file mode 100644
index 0000000..521ead1
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
@@ -0,0 +1,20 @@
+---
+sidebar_position: 2
+title: DataDash Beta Testing
+---
+
+# DataDash Ongoing Beta
+At the moment we have an open beta DataDash group for both iOS and Android. We consider this a semi-closed beta because we require participants to join our beta discord channels. This is key for discussions among participants, and provides us with an easy way to interact with beta participants.
+
+
+To participate as a beta tester follow the following steps:
+1. Join our [Discord Community](https://mxc.news/discord)
+1. Use the #bot-talk channel to send one of the following commands:
+ * `!role ios`
+ * `!role andorid`
+1. You will then see a new channel in the `develompent` category. Follow the steps outlined at the top of the channel to join your selected test group.
+
+## DataDash Closed Beta
+Before a major release, we will do a call for closed beta participants. This will have a limited number of available seats per operating system, and will only be available to current beta testers who actively submit feedback.
+
+Closed betas will provide users access to new and unreleased features that require a major backend change. Because of this, each participant will receive a test account on a "fake" supernode to work with.
\ No newline at end of file
From e46a9e6da440efdd83b1723fffae0217dec47a77 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:37 +0200
Subject: [PATCH 102/234] New translations bugs.md (Chinese Traditional)
---
.../current/tutorials/datadash/bugs.md | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
new file mode 100644
index 0000000..01e11de
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 2
+title: Reporting Bugs
+---
+
+# How to report DataDash Bugs
+
+The DataDash app codebase is [Publicly available on GitHub](https://github.com/mxc-foundation/supernode-app). Therefore the best way to submit a DataDash bug, is directly as a [GitHub issue](https://github.com/mxc-foundation/supernode-app/issues).
+
+Please include the following information in your bug report:
+
+* What is the problem?
+* What is the expected behavior?
+* Mark the issue with the appropriate labels:
+ * `bug`
+ * `ios` or `android`
+* Provide any additional information, screenshots, or videos you believe might be helpful.
+
+**GitHub Issues are public! Do not share any personal or identifiable information. If you believe the issue is specific to you, it should be submitted as a support ticket to [support@mxc.org](mailto:support.mxc.org).**
From 5b73856daf3ef5ace66bfc66559fb0db8b6013f3 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:38 +0200
Subject: [PATCH 103/234] New translations beta.md (Chinese Traditional)
---
.../current/tutorials/datadash/beta.md | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
new file mode 100644
index 0000000..521ead1
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
@@ -0,0 +1,20 @@
+---
+sidebar_position: 2
+title: DataDash Beta Testing
+---
+
+# DataDash Ongoing Beta
+At the moment we have an open beta DataDash group for both iOS and Android. We consider this a semi-closed beta because we require participants to join our beta discord channels. This is key for discussions among participants, and provides us with an easy way to interact with beta participants.
+
+
+To participate as a beta tester follow the following steps:
+1. Join our [Discord Community](https://mxc.news/discord)
+1. Use the #bot-talk channel to send one of the following commands:
+ * `!role ios`
+ * `!role andorid`
+1. You will then see a new channel in the `develompent` category. Follow the steps outlined at the top of the channel to join your selected test group.
+
+## DataDash Closed Beta
+Before a major release, we will do a call for closed beta participants. This will have a limited number of available seats per operating system, and will only be available to current beta testers who actively submit feedback.
+
+Closed betas will provide users access to new and unreleased features that require a major backend change. Because of this, each participant will receive a test account on a "fake" supernode to work with.
\ No newline at end of file
From eac39bd85f98bf3083566b272a8c5ef2c0fea372 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:39 +0200
Subject: [PATCH 104/234] New translations _category_.json (Chinese
Traditional)
---
.../current/tutorials/datadash/_category_.json | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
new file mode 100644
index 0000000..96eea63
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "DataDash",
+ "position": 6
+}
From 6620455765df455eb7c5b7d33571a343eb00ce35 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:40 +0200
Subject: [PATCH 105/234] New translations intro.md (Chinese Simplified)
---
.../current/tutorials/datadash/intro.md | 35 +++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
new file mode 100644
index 0000000..5df58e1
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
@@ -0,0 +1,35 @@
+---
+sidebar_position: 1
+title: Intro
+---
+
+# Introducing the DataDash App
+
+Our DataDash app has the following core functionality:
+* LPWAN Functionality
+ * M2 Pro Miner
+ * Register
+ * Manage Miner Health
+ * MXProtocol enabled devices (coming soon)
+ * Register
+ * View live data frames
+ * Generate MQTT credentials (for external data management tools)
+* Token Management
+ * MXC M2M Wallet
+ * DHX Wallet
+ * BTC Wallet (Withdrawals Only)
+
+
+## Downloading the DataDash App
+
+You can get the DataDash app at the following locations:
+
+**Android**
+* [Google Play Store](https://play.google.com/store/apps/details?id=com.mxc.smartcity)
+* [APK Download](https://datadash.oss-accelerate.aliyuncs.com/app-prod-release.apk)
+
+**iOS**
+* [App Store](https://apps.apple.com/us/app/datadash-app/id1509218470)
+
+## Participating with DataDash Development
+Our DataDash app is [open on GitHub](https://github.com/mxc-foundation/supernode-app) and anyone is welcome to participate in its improvement. To participate, clone the repo, and then tackle a [GitHub issue](https://github.com/mxc-foundation/supernode-app/issues). When you think you've solved it, submit a pull request for our team to review. Before getting started, take a look at the rules [here](https://github.com/mxc-foundation/supernode-app/blob/master/RETHINK.md).
\ No newline at end of file
From ff933e7db03b75629f889d28d5eb66347152d10d Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:41 +0200
Subject: [PATCH 106/234] New translations bugs.md (Chinese Simplified)
---
.../current/tutorials/datadash/bugs.md | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
new file mode 100644
index 0000000..01e11de
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 2
+title: Reporting Bugs
+---
+
+# How to report DataDash Bugs
+
+The DataDash app codebase is [Publicly available on GitHub](https://github.com/mxc-foundation/supernode-app). Therefore the best way to submit a DataDash bug, is directly as a [GitHub issue](https://github.com/mxc-foundation/supernode-app/issues).
+
+Please include the following information in your bug report:
+
+* What is the problem?
+* What is the expected behavior?
+* Mark the issue with the appropriate labels:
+ * `bug`
+ * `ios` or `android`
+* Provide any additional information, screenshots, or videos you believe might be helpful.
+
+**GitHub Issues are public! Do not share any personal or identifiable information. If you believe the issue is specific to you, it should be submitted as a support ticket to [support@mxc.org](mailto:support.mxc.org).**
From bc32d7639ff0d636be8832b78bac184e5ef01160 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:42 +0200
Subject: [PATCH 107/234] New translations beta.md (Chinese Simplified)
---
.../current/tutorials/datadash/beta.md | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
new file mode 100644
index 0000000..521ead1
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
@@ -0,0 +1,20 @@
+---
+sidebar_position: 2
+title: DataDash Beta Testing
+---
+
+# DataDash Ongoing Beta
+At the moment we have an open beta DataDash group for both iOS and Android. We consider this a semi-closed beta because we require participants to join our beta discord channels. This is key for discussions among participants, and provides us with an easy way to interact with beta participants.
+
+
+To participate as a beta tester follow the following steps:
+1. Join our [Discord Community](https://mxc.news/discord)
+1. Use the #bot-talk channel to send one of the following commands:
+ * `!role ios`
+ * `!role andorid`
+1. You will then see a new channel in the `develompent` category. Follow the steps outlined at the top of the channel to join your selected test group.
+
+## DataDash Closed Beta
+Before a major release, we will do a call for closed beta participants. This will have a limited number of available seats per operating system, and will only be available to current beta testers who actively submit feedback.
+
+Closed betas will provide users access to new and unreleased features that require a major backend change. Because of this, each participant will receive a test account on a "fake" supernode to work with.
\ No newline at end of file
From 975b5249379616c0ce1ad24a5f4db862474cade9 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:43 +0200
Subject: [PATCH 108/234] New translations _category_.json (Chinese Simplified)
---
.../current/tutorials/datadash/_category_.json | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
new file mode 100644
index 0000000..96eea63
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "DataDash",
+ "position": 6
+}
From 732f0f9c951a77254027500bfb59dad2d1b537ed Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:44 +0200
Subject: [PATCH 109/234] New translations intro.md (Korean)
---
.../current/tutorials/datadash/intro.md | 35 +++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
new file mode 100644
index 0000000..5df58e1
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
@@ -0,0 +1,35 @@
+---
+sidebar_position: 1
+title: Intro
+---
+
+# Introducing the DataDash App
+
+Our DataDash app has the following core functionality:
+* LPWAN Functionality
+ * M2 Pro Miner
+ * Register
+ * Manage Miner Health
+ * MXProtocol enabled devices (coming soon)
+ * Register
+ * View live data frames
+ * Generate MQTT credentials (for external data management tools)
+* Token Management
+ * MXC M2M Wallet
+ * DHX Wallet
+ * BTC Wallet (Withdrawals Only)
+
+
+## Downloading the DataDash App
+
+You can get the DataDash app at the following locations:
+
+**Android**
+* [Google Play Store](https://play.google.com/store/apps/details?id=com.mxc.smartcity)
+* [APK Download](https://datadash.oss-accelerate.aliyuncs.com/app-prod-release.apk)
+
+**iOS**
+* [App Store](https://apps.apple.com/us/app/datadash-app/id1509218470)
+
+## Participating with DataDash Development
+Our DataDash app is [open on GitHub](https://github.com/mxc-foundation/supernode-app) and anyone is welcome to participate in its improvement. To participate, clone the repo, and then tackle a [GitHub issue](https://github.com/mxc-foundation/supernode-app/issues). When you think you've solved it, submit a pull request for our team to review. Before getting started, take a look at the rules [here](https://github.com/mxc-foundation/supernode-app/blob/master/RETHINK.md).
\ No newline at end of file
From 85056e13186b75fd69d143831f2b6016277318ba Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:45 +0200
Subject: [PATCH 110/234] New translations bugs.md (Korean)
---
.../current/tutorials/datadash/bugs.md | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
new file mode 100644
index 0000000..01e11de
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 2
+title: Reporting Bugs
+---
+
+# How to report DataDash Bugs
+
+The DataDash app codebase is [Publicly available on GitHub](https://github.com/mxc-foundation/supernode-app). Therefore the best way to submit a DataDash bug, is directly as a [GitHub issue](https://github.com/mxc-foundation/supernode-app/issues).
+
+Please include the following information in your bug report:
+
+* What is the problem?
+* What is the expected behavior?
+* Mark the issue with the appropriate labels:
+ * `bug`
+ * `ios` or `android`
+* Provide any additional information, screenshots, or videos you believe might be helpful.
+
+**GitHub Issues are public! Do not share any personal or identifiable information. If you believe the issue is specific to you, it should be submitted as a support ticket to [support@mxc.org](mailto:support.mxc.org).**
From 30936656f8ed8419391e568501b0aa3b73df19d8 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:46 +0200
Subject: [PATCH 111/234] New translations _category_.json (Korean)
---
.../current/tutorials/datadash/_category_.json | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
new file mode 100644
index 0000000..96eea63
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "DataDash",
+ "position": 6
+}
From b19e0f0f9e7df5806f546f7e88f71ad7ae333a63 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:46 +0200
Subject: [PATCH 112/234] New translations troubleshooting.md (Chinese
Simplified)
---
.../tutorials/m2-pro/troubleshooting.md | 62 ++++++++++++++++++-
1 file changed, 61 insertions(+), 1 deletion(-)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
index 569c821..287696d 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
@@ -2,4 +2,64 @@
sidebar_position: 5
---
-# Troubleshooting
\ No newline at end of file
+# Troubleshooting
+Experiencing a problem with your M2 Pro? The guides here will help you find the problem. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
+
+## Connectivity (uptime)
+If your uptime is taking a hit, there's an easy way to find out if the miner is at fault, or your local network connection. To do that follow the following steps:
+### 1. Access the M2 Pro Miner web interface
+You can find the interface here: `http://yourSerialNumber.local`
+ * Your computer or phone must be on the same network as the M2 Pro Miner
+ * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
+### 2. Download the miner logs:
+ TODO: Add how to access miner logs for users
+1. Decompress and un-tar the file and the file. You should see several files like this: 
+ * info.txt contains the model, version, serial number and mac address for reference.
+ * messages, messages.0, messages.1 are the system log files.
+ * loraMgmtDaemon.log, loraMgmtDaemon1.log, loraMgmtDaemon2.log are the LoRa packet forwarder log files.
+ * The System log and LoRa log are usually what you need to check on.
+1. Check the system log by opening `messages`, `messages.0`, `messages.1` file.
+### 3. Reading the logs
+
+First step is to check if offline is happening due to failed heartbeat. Use the search/find function (ctl+f, cmd+f) and type in the word failure to see any failed heartbeat.
+
+This is the example of a successful heartbeat session.
+ ```
+ Jun 29 04:58:09 M2XLCTRM3ZW daemon.info gwconfd[619]: Received hb response: fw conf
+ ```
+Here is an example of a failed heartbeat session.
+
+```
+Jun 29 04:56:07 M2XLCTRM3ZW daemon.err gwconfd[619]: Heartbeat api failure:4: Deadline Exceeded
+```
+A failed heartbeat can happen due to many reason but the most common reason is an unstable network connection. To rule this out, you need to check if the internet connection is good.
+
+These are the list of common errors which indicates unstable, loss or bad internet connection.
+1. Connectivity error from network issue
+```
+Jun 24 06:49:53 M2XLCTRM3ZW daemon.err tlsDaemon[606]: Setup TLS error: TCP Connection error.
+```
+
+2. Unstable/dropping WiFi connection
+```
+Jun 17 07:25:29 M2XLCTRM3ZW user.info kernel: CFG80211-ERROR) wl_is_linkdown : Link down Reason : WLC_E_LINK
+```
+3. Internet connection loss
+```
+Jun 13 15:05:50 M2XLCTRM3ZW daemon.info netMgmtDaemon[614]: Internet connection loss
+```
+
+In most cases, the issue is related to unstable internet connection at user's end and the miner is working fine (not a hardware issue).
+
+To isolate this further, you can try the following:
+* If the miner is connected using wireless connection – try using wired connection.
+* If wired connection is not possible – move the miner closer to the router as see if the uptime improves
+* If both still not solving the issue - try putting the miner on a different network (such as, at friend's home). If the miner is working fine on another network, the issue is related to your home network connection.
+
+### 4. Checking LoRa Connectivity
+For LoRa, when you see that a miner is offline you can check on the Last Seen. This is pretty straight forward as you just need to search these two lines. If you get PUSH_ACK, that means it is fine.
+```
+[2021-06-17 08:58:48.437] [loraMgmtDaemon] [info] INFO: [up] PUSH_ACK received in 43 ms
+```
+This message is sent every 30 seconds.
+
From 5cefedba215d60046bd0b78a451367548ba3b0bc Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:47 +0200
Subject: [PATCH 113/234] New translations intro.md (German)
---
.../current/tutorials/datadash/intro.md | 35 +++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
new file mode 100644
index 0000000..5df58e1
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
@@ -0,0 +1,35 @@
+---
+sidebar_position: 1
+title: Intro
+---
+
+# Introducing the DataDash App
+
+Our DataDash app has the following core functionality:
+* LPWAN Functionality
+ * M2 Pro Miner
+ * Register
+ * Manage Miner Health
+ * MXProtocol enabled devices (coming soon)
+ * Register
+ * View live data frames
+ * Generate MQTT credentials (for external data management tools)
+* Token Management
+ * MXC M2M Wallet
+ * DHX Wallet
+ * BTC Wallet (Withdrawals Only)
+
+
+## Downloading the DataDash App
+
+You can get the DataDash app at the following locations:
+
+**Android**
+* [Google Play Store](https://play.google.com/store/apps/details?id=com.mxc.smartcity)
+* [APK Download](https://datadash.oss-accelerate.aliyuncs.com/app-prod-release.apk)
+
+**iOS**
+* [App Store](https://apps.apple.com/us/app/datadash-app/id1509218470)
+
+## Participating with DataDash Development
+Our DataDash app is [open on GitHub](https://github.com/mxc-foundation/supernode-app) and anyone is welcome to participate in its improvement. To participate, clone the repo, and then tackle a [GitHub issue](https://github.com/mxc-foundation/supernode-app/issues). When you think you've solved it, submit a pull request for our team to review. Before getting started, take a look at the rules [here](https://github.com/mxc-foundation/supernode-app/blob/master/RETHINK.md).
\ No newline at end of file
From 792b15a90700b70f3522d18165b6ec8318689217 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:48 +0200
Subject: [PATCH 114/234] New translations bugs.md (German)
---
.../current/tutorials/datadash/bugs.md | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
new file mode 100644
index 0000000..01e11de
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 2
+title: Reporting Bugs
+---
+
+# How to report DataDash Bugs
+
+The DataDash app codebase is [Publicly available on GitHub](https://github.com/mxc-foundation/supernode-app). Therefore the best way to submit a DataDash bug, is directly as a [GitHub issue](https://github.com/mxc-foundation/supernode-app/issues).
+
+Please include the following information in your bug report:
+
+* What is the problem?
+* What is the expected behavior?
+* Mark the issue with the appropriate labels:
+ * `bug`
+ * `ios` or `android`
+* Provide any additional information, screenshots, or videos you believe might be helpful.
+
+**GitHub Issues are public! Do not share any personal or identifiable information. If you believe the issue is specific to you, it should be submitted as a support ticket to [support@mxc.org](mailto:support.mxc.org).**
From a9f477984bd462859365b456deae6b67fab0f606 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:49 +0200
Subject: [PATCH 115/234] New translations beta.md (German)
---
.../current/tutorials/datadash/beta.md | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
new file mode 100644
index 0000000..521ead1
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
@@ -0,0 +1,20 @@
+---
+sidebar_position: 2
+title: DataDash Beta Testing
+---
+
+# DataDash Ongoing Beta
+At the moment we have an open beta DataDash group for both iOS and Android. We consider this a semi-closed beta because we require participants to join our beta discord channels. This is key for discussions among participants, and provides us with an easy way to interact with beta participants.
+
+
+To participate as a beta tester follow the following steps:
+1. Join our [Discord Community](https://mxc.news/discord)
+1. Use the #bot-talk channel to send one of the following commands:
+ * `!role ios`
+ * `!role andorid`
+1. You will then see a new channel in the `develompent` category. Follow the steps outlined at the top of the channel to join your selected test group.
+
+## DataDash Closed Beta
+Before a major release, we will do a call for closed beta participants. This will have a limited number of available seats per operating system, and will only be available to current beta testers who actively submit feedback.
+
+Closed betas will provide users access to new and unreleased features that require a major backend change. Because of this, each participant will receive a test account on a "fake" supernode to work with.
\ No newline at end of file
From e7b0a02a654b03e8c5b34ce7fbf2bb9495dbd1d4 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:50 +0200
Subject: [PATCH 116/234] New translations _category_.json (German)
---
.../current/tutorials/datadash/_category_.json | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
new file mode 100644
index 0000000..96eea63
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "DataDash",
+ "position": 6
+}
From 8cbf9ed1ab29c9c55cf3c50d125d60f7efbfec4f Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:51 +0200
Subject: [PATCH 117/234] New translations troubleshooting.md (German)
---
.../tutorials/m2-pro/troubleshooting.md | 62 ++++++++++++++++++-
1 file changed, 61 insertions(+), 1 deletion(-)
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
index 569c821..287696d 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
@@ -2,4 +2,64 @@
sidebar_position: 5
---
-# Troubleshooting
\ No newline at end of file
+# Troubleshooting
+Experiencing a problem with your M2 Pro? The guides here will help you find the problem. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
+
+## Connectivity (uptime)
+If your uptime is taking a hit, there's an easy way to find out if the miner is at fault, or your local network connection. To do that follow the following steps:
+### 1. Access the M2 Pro Miner web interface
+You can find the interface here: `http://yourSerialNumber.local`
+ * Your computer or phone must be on the same network as the M2 Pro Miner
+ * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
+### 2. Download the miner logs:
+ TODO: Add how to access miner logs for users
+1. Decompress and un-tar the file and the file. You should see several files like this: 
+ * info.txt contains the model, version, serial number and mac address for reference.
+ * messages, messages.0, messages.1 are the system log files.
+ * loraMgmtDaemon.log, loraMgmtDaemon1.log, loraMgmtDaemon2.log are the LoRa packet forwarder log files.
+ * The System log and LoRa log are usually what you need to check on.
+1. Check the system log by opening `messages`, `messages.0`, `messages.1` file.
+### 3. Reading the logs
+
+First step is to check if offline is happening due to failed heartbeat. Use the search/find function (ctl+f, cmd+f) and type in the word failure to see any failed heartbeat.
+
+This is the example of a successful heartbeat session.
+ ```
+ Jun 29 04:58:09 M2XLCTRM3ZW daemon.info gwconfd[619]: Received hb response: fw conf
+ ```
+Here is an example of a failed heartbeat session.
+
+```
+Jun 29 04:56:07 M2XLCTRM3ZW daemon.err gwconfd[619]: Heartbeat api failure:4: Deadline Exceeded
+```
+A failed heartbeat can happen due to many reason but the most common reason is an unstable network connection. To rule this out, you need to check if the internet connection is good.
+
+These are the list of common errors which indicates unstable, loss or bad internet connection.
+1. Connectivity error from network issue
+```
+Jun 24 06:49:53 M2XLCTRM3ZW daemon.err tlsDaemon[606]: Setup TLS error: TCP Connection error.
+```
+
+2. Unstable/dropping WiFi connection
+```
+Jun 17 07:25:29 M2XLCTRM3ZW user.info kernel: CFG80211-ERROR) wl_is_linkdown : Link down Reason : WLC_E_LINK
+```
+3. Internet connection loss
+```
+Jun 13 15:05:50 M2XLCTRM3ZW daemon.info netMgmtDaemon[614]: Internet connection loss
+```
+
+In most cases, the issue is related to unstable internet connection at user's end and the miner is working fine (not a hardware issue).
+
+To isolate this further, you can try the following:
+* If the miner is connected using wireless connection – try using wired connection.
+* If wired connection is not possible – move the miner closer to the router as see if the uptime improves
+* If both still not solving the issue - try putting the miner on a different network (such as, at friend's home). If the miner is working fine on another network, the issue is related to your home network connection.
+
+### 4. Checking LoRa Connectivity
+For LoRa, when you see that a miner is offline you can check on the Last Seen. This is pretty straight forward as you just need to search these two lines. If you get PUSH_ACK, that means it is fine.
+```
+[2021-06-17 08:58:48.437] [loraMgmtDaemon] [info] INFO: [up] PUSH_ACK received in 43 ms
+```
+This message is sent every 30 seconds.
+
From 9cfe4d6d1759e0d4c1e2c53d20a05242987a1351 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:52 +0200
Subject: [PATCH 118/234] New translations intro.md (German)
---
.../current/tutorials/intro.md | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 294d70b..5e1be6f 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -10,12 +10,16 @@ There are a number of ways for developers to interact with the MXC ecosystem. Th
## Direct Participation
### Beta Testing
-At the moment we have an open "closed beta" DataDash group for both iOS and Android. To participate as a beta tester follow the following steps:
-1. Join our [Discord Community](https://mxc.news/discord)
-1. Use the #bot-talk channel to send one of the following commands:
- * `!role ios`
- * `!role andorid`
-1. You will then see a new channel in the `develompent` category. Follow the steps in the message at the top of the channel to join your selected test group.
+Beta testing new features before they are released is a great way to help us improve the overall user experience with our products. Here are beta opportunities currently available:
+
+| Product | Beta Type | How to Participate |
+| --------------- | --------- | ------------------------------------------ |
+| DataDash | Closed | [Instructions](tutorials/datadash/beta.md) |
+| MXC Controller | Closed | *Coming Soon* |
+| M2 Pro (MatchX) | Open | *Coming Soon* |
+
+*A beta version is pre-release and considered unstable. This means that you may experience some issues. Normally these will be minimal, however participating in an M2 Pro beta could potentially affect your mining. MXC Controller and DataDash betas will not have any influence on your overall mining potential.*
+
### Coding and Translating
We have a number of public repos with active issues that could use assistance. Our team is still growing, and community support is always appreciated, encouraged and in some cases rewarded.
From ac48374dc39584e1a27c886a5130d9e71f8307fb Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:53 +0200
Subject: [PATCH 119/234] New translations intro.md (Chinese Traditional)
---
.../current/tutorials/intro.md | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 294d70b..5e1be6f 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -10,12 +10,16 @@ There are a number of ways for developers to interact with the MXC ecosystem. Th
## Direct Participation
### Beta Testing
-At the moment we have an open "closed beta" DataDash group for both iOS and Android. To participate as a beta tester follow the following steps:
-1. Join our [Discord Community](https://mxc.news/discord)
-1. Use the #bot-talk channel to send one of the following commands:
- * `!role ios`
- * `!role andorid`
-1. You will then see a new channel in the `develompent` category. Follow the steps in the message at the top of the channel to join your selected test group.
+Beta testing new features before they are released is a great way to help us improve the overall user experience with our products. Here are beta opportunities currently available:
+
+| Product | Beta Type | How to Participate |
+| --------------- | --------- | ------------------------------------------ |
+| DataDash | Closed | [Instructions](tutorials/datadash/beta.md) |
+| MXC Controller | Closed | *Coming Soon* |
+| M2 Pro (MatchX) | Open | *Coming Soon* |
+
+*A beta version is pre-release and considered unstable. This means that you may experience some issues. Normally these will be minimal, however participating in an M2 Pro beta could potentially affect your mining. MXC Controller and DataDash betas will not have any influence on your overall mining potential.*
+
### Coding and Translating
We have a number of public repos with active issues that could use assistance. Our team is still growing, and community support is always appreciated, encouraged and in some cases rewarded.
From 521318eff316fd1b4110e76e23a246d80171b6df Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:54 +0200
Subject: [PATCH 120/234] New translations intro.md (Chinese Simplified)
---
.../current/tutorials/intro.md | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 294d70b..5e1be6f 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -10,12 +10,16 @@ There are a number of ways for developers to interact with the MXC ecosystem. Th
## Direct Participation
### Beta Testing
-At the moment we have an open "closed beta" DataDash group for both iOS and Android. To participate as a beta tester follow the following steps:
-1. Join our [Discord Community](https://mxc.news/discord)
-1. Use the #bot-talk channel to send one of the following commands:
- * `!role ios`
- * `!role andorid`
-1. You will then see a new channel in the `develompent` category. Follow the steps in the message at the top of the channel to join your selected test group.
+Beta testing new features before they are released is a great way to help us improve the overall user experience with our products. Here are beta opportunities currently available:
+
+| Product | Beta Type | How to Participate |
+| --------------- | --------- | ------------------------------------------ |
+| DataDash | Closed | [Instructions](tutorials/datadash/beta.md) |
+| MXC Controller | Closed | *Coming Soon* |
+| M2 Pro (MatchX) | Open | *Coming Soon* |
+
+*A beta version is pre-release and considered unstable. This means that you may experience some issues. Normally these will be minimal, however participating in an M2 Pro beta could potentially affect your mining. MXC Controller and DataDash betas will not have any influence on your overall mining potential.*
+
### Coding and Translating
We have a number of public repos with active issues that could use assistance. Our team is still growing, and community support is always appreciated, encouraged and in some cases rewarded.
From 43f8ad975f36ccc3601f645e065a05deacc59e0a Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:55 +0200
Subject: [PATCH 121/234] New translations intro.md (Korean)
---
.../current/tutorials/intro.md | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md
index 294d70b..5e1be6f 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/intro.md
@@ -10,12 +10,16 @@ There are a number of ways for developers to interact with the MXC ecosystem. Th
## Direct Participation
### Beta Testing
-At the moment we have an open "closed beta" DataDash group for both iOS and Android. To participate as a beta tester follow the following steps:
-1. Join our [Discord Community](https://mxc.news/discord)
-1. Use the #bot-talk channel to send one of the following commands:
- * `!role ios`
- * `!role andorid`
-1. You will then see a new channel in the `develompent` category. Follow the steps in the message at the top of the channel to join your selected test group.
+Beta testing new features before they are released is a great way to help us improve the overall user experience with our products. Here are beta opportunities currently available:
+
+| Product | Beta Type | How to Participate |
+| --------------- | --------- | ------------------------------------------ |
+| DataDash | Closed | [Instructions](tutorials/datadash/beta.md) |
+| MXC Controller | Closed | *Coming Soon* |
+| M2 Pro (MatchX) | Open | *Coming Soon* |
+
+*A beta version is pre-release and considered unstable. This means that you may experience some issues. Normally these will be minimal, however participating in an M2 Pro beta could potentially affect your mining. MXC Controller and DataDash betas will not have any influence on your overall mining potential.*
+
### Coding and Translating
We have a number of public repos with active issues that could use assistance. Our team is still growing, and community support is always appreciated, encouraged and in some cases rewarded.
From 429c9d3ff573b22e80ae1a69061461f8fde370ac Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:56 +0200
Subject: [PATCH 122/234] New translations troubleshooting.md (Chinese
Traditional)
---
.../tutorials/m2-pro/troubleshooting.md | 62 ++++++++++++++++++-
1 file changed, 61 insertions(+), 1 deletion(-)
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
index 569c821..287696d 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
@@ -2,4 +2,64 @@
sidebar_position: 5
---
-# Troubleshooting
\ No newline at end of file
+# Troubleshooting
+Experiencing a problem with your M2 Pro? The guides here will help you find the problem. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
+
+## Connectivity (uptime)
+If your uptime is taking a hit, there's an easy way to find out if the miner is at fault, or your local network connection. To do that follow the following steps:
+### 1. Access the M2 Pro Miner web interface
+You can find the interface here: `http://yourSerialNumber.local`
+ * Your computer or phone must be on the same network as the M2 Pro Miner
+ * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
+### 2. Download the miner logs:
+ TODO: Add how to access miner logs for users
+1. Decompress and un-tar the file and the file. You should see several files like this: 
+ * info.txt contains the model, version, serial number and mac address for reference.
+ * messages, messages.0, messages.1 are the system log files.
+ * loraMgmtDaemon.log, loraMgmtDaemon1.log, loraMgmtDaemon2.log are the LoRa packet forwarder log files.
+ * The System log and LoRa log are usually what you need to check on.
+1. Check the system log by opening `messages`, `messages.0`, `messages.1` file.
+### 3. Reading the logs
+
+First step is to check if offline is happening due to failed heartbeat. Use the search/find function (ctl+f, cmd+f) and type in the word failure to see any failed heartbeat.
+
+This is the example of a successful heartbeat session.
+ ```
+ Jun 29 04:58:09 M2XLCTRM3ZW daemon.info gwconfd[619]: Received hb response: fw conf
+ ```
+Here is an example of a failed heartbeat session.
+
+```
+Jun 29 04:56:07 M2XLCTRM3ZW daemon.err gwconfd[619]: Heartbeat api failure:4: Deadline Exceeded
+```
+A failed heartbeat can happen due to many reason but the most common reason is an unstable network connection. To rule this out, you need to check if the internet connection is good.
+
+These are the list of common errors which indicates unstable, loss or bad internet connection.
+1. Connectivity error from network issue
+```
+Jun 24 06:49:53 M2XLCTRM3ZW daemon.err tlsDaemon[606]: Setup TLS error: TCP Connection error.
+```
+
+2. Unstable/dropping WiFi connection
+```
+Jun 17 07:25:29 M2XLCTRM3ZW user.info kernel: CFG80211-ERROR) wl_is_linkdown : Link down Reason : WLC_E_LINK
+```
+3. Internet connection loss
+```
+Jun 13 15:05:50 M2XLCTRM3ZW daemon.info netMgmtDaemon[614]: Internet connection loss
+```
+
+In most cases, the issue is related to unstable internet connection at user's end and the miner is working fine (not a hardware issue).
+
+To isolate this further, you can try the following:
+* If the miner is connected using wireless connection – try using wired connection.
+* If wired connection is not possible – move the miner closer to the router as see if the uptime improves
+* If both still not solving the issue - try putting the miner on a different network (such as, at friend's home). If the miner is working fine on another network, the issue is related to your home network connection.
+
+### 4. Checking LoRa Connectivity
+For LoRa, when you see that a miner is offline you can check on the Last Seen. This is pretty straight forward as you just need to search these two lines. If you get PUSH_ACK, that means it is fine.
+```
+[2021-06-17 08:58:48.437] [loraMgmtDaemon] [info] INFO: [up] PUSH_ACK received in 43 ms
+```
+This message is sent every 30 seconds.
+
From bfb46b995ce29f37fcd90a61c82194b98ebfe149 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Thu, 8 Jul 2021 08:49:57 +0200
Subject: [PATCH 123/234] New translations intro.md (Chinese Traditional)
---
.../current/tutorials/datadash/intro.md | 35 +++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
new file mode 100644
index 0000000..5df58e1
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/datadash/intro.md
@@ -0,0 +1,35 @@
+---
+sidebar_position: 1
+title: Intro
+---
+
+# Introducing the DataDash App
+
+Our DataDash app has the following core functionality:
+* LPWAN Functionality
+ * M2 Pro Miner
+ * Register
+ * Manage Miner Health
+ * MXProtocol enabled devices (coming soon)
+ * Register
+ * View live data frames
+ * Generate MQTT credentials (for external data management tools)
+* Token Management
+ * MXC M2M Wallet
+ * DHX Wallet
+ * BTC Wallet (Withdrawals Only)
+
+
+## Downloading the DataDash App
+
+You can get the DataDash app at the following locations:
+
+**Android**
+* [Google Play Store](https://play.google.com/store/apps/details?id=com.mxc.smartcity)
+* [APK Download](https://datadash.oss-accelerate.aliyuncs.com/app-prod-release.apk)
+
+**iOS**
+* [App Store](https://apps.apple.com/us/app/datadash-app/id1509218470)
+
+## Participating with DataDash Development
+Our DataDash app is [open on GitHub](https://github.com/mxc-foundation/supernode-app) and anyone is welcome to participate in its improvement. To participate, clone the repo, and then tackle a [GitHub issue](https://github.com/mxc-foundation/supernode-app/issues). When you think you've solved it, submit a pull request for our team to review. Before getting started, take a look at the rules [here](https://github.com/mxc-foundation/supernode-app/blob/master/RETHINK.md).
\ No newline at end of file
From f48449b23e0967c4460cd0e93bff7f777aa03c81 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:26 +0200
Subject: [PATCH 124/234] New translations troubleshooting.md (Korean)
---
.../tutorials/m2-pro/troubleshooting.md | 26 ++++++++++---------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
index 287696d..a397b99 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
@@ -3,22 +3,24 @@ sidebar_position: 5
---
# Troubleshooting
-Experiencing a problem with your M2 Pro? The guides here will help you find the problem. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
+Experiencing a problem with your M2 Pro? This tutorial will help you find it. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
## Connectivity (uptime)
If your uptime is taking a hit, there's an easy way to find out if the miner is at fault, or your local network connection. To do that follow the following steps:
### 1. Access the M2 Pro Miner web interface
You can find the interface here: `http://yourSerialNumber.local`
- * Your computer or phone must be on the same network as the M2 Pro Miner
- * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
-### 2. Download the miner logs:
- TODO: Add how to access miner logs for users
-1. Decompress and un-tar the file and the file. You should see several files like this: 
- * info.txt contains the model, version, serial number and mac address for reference.
- * messages, messages.0, messages.1 are the system log files.
- * loraMgmtDaemon.log, loraMgmtDaemon1.log, loraMgmtDaemon2.log are the LoRa packet forwarder log files.
- * The System log and LoRa log are usually what you need to check on.
-1. Check the system log by opening `messages`, `messages.0`, `messages.1` file.
+ * Your computer or phone must be on the same network as the M2 Pro Miner
+ * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
+```
+Username: admin
+Password: your serial number using all caps
+```
+
+
+
+### 2. View the miner logs:
+1. After logging in, you can view or download your logs by clicking on `SysLog` in the menu 
+ * If you're having an ongoing issue, you may want to download your logs regularly. The miner can only store logs for the past 48 hours, so if additional troubleshooting is needed, you should download your logs once every two days.
### 3. Reading the logs
First step is to check if offline is happening due to failed heartbeat. Use the search/find function (ctl+f, cmd+f) and type in the word failure to see any failed heartbeat.
@@ -56,7 +58,7 @@ To isolate this further, you can try the following:
* If wired connection is not possible – move the miner closer to the router as see if the uptime improves
* If both still not solving the issue - try putting the miner on a different network (such as, at friend's home). If the miner is working fine on another network, the issue is related to your home network connection.
-### 4. Checking LoRa Connectivity
+### 4. Checking LoRa Connectivity [in the LoRa Log menu option]
For LoRa, when you see that a miner is offline you can check on the Last Seen. This is pretty straight forward as you just need to search these two lines. If you get PUSH_ACK, that means it is fine.
```
[2021-06-17 08:58:48.437] [loraMgmtDaemon] [info] INFO: [up] PUSH_ACK received in 43 ms
From 09dcf9cc7448ec8b609737d373e405487ff9a734 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:27 +0200
Subject: [PATCH 125/234] New translations troubleshooting.md (Chinese
Simplified)
---
.../tutorials/m2-pro/troubleshooting.md | 26 ++++++++++---------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
index 287696d..a397b99 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
@@ -3,22 +3,24 @@ sidebar_position: 5
---
# Troubleshooting
-Experiencing a problem with your M2 Pro? The guides here will help you find the problem. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
+Experiencing a problem with your M2 Pro? This tutorial will help you find it. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
## Connectivity (uptime)
If your uptime is taking a hit, there's an easy way to find out if the miner is at fault, or your local network connection. To do that follow the following steps:
### 1. Access the M2 Pro Miner web interface
You can find the interface here: `http://yourSerialNumber.local`
- * Your computer or phone must be on the same network as the M2 Pro Miner
- * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
-### 2. Download the miner logs:
- TODO: Add how to access miner logs for users
-1. Decompress and un-tar the file and the file. You should see several files like this: 
- * info.txt contains the model, version, serial number and mac address for reference.
- * messages, messages.0, messages.1 are the system log files.
- * loraMgmtDaemon.log, loraMgmtDaemon1.log, loraMgmtDaemon2.log are the LoRa packet forwarder log files.
- * The System log and LoRa log are usually what you need to check on.
-1. Check the system log by opening `messages`, `messages.0`, `messages.1` file.
+ * Your computer or phone must be on the same network as the M2 Pro Miner
+ * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
+```
+Username: admin
+Password: your serial number using all caps
+```
+
+
+
+### 2. View the miner logs:
+1. After logging in, you can view or download your logs by clicking on `SysLog` in the menu 
+ * If you're having an ongoing issue, you may want to download your logs regularly. The miner can only store logs for the past 48 hours, so if additional troubleshooting is needed, you should download your logs once every two days.
### 3. Reading the logs
First step is to check if offline is happening due to failed heartbeat. Use the search/find function (ctl+f, cmd+f) and type in the word failure to see any failed heartbeat.
@@ -56,7 +58,7 @@ To isolate this further, you can try the following:
* If wired connection is not possible – move the miner closer to the router as see if the uptime improves
* If both still not solving the issue - try putting the miner on a different network (such as, at friend's home). If the miner is working fine on another network, the issue is related to your home network connection.
-### 4. Checking LoRa Connectivity
+### 4. Checking LoRa Connectivity [in the LoRa Log menu option]
For LoRa, when you see that a miner is offline you can check on the Last Seen. This is pretty straight forward as you just need to search these two lines. If you get PUSH_ACK, that means it is fine.
```
[2021-06-17 08:58:48.437] [loraMgmtDaemon] [info] INFO: [up] PUSH_ACK received in 43 ms
From ac04ac8f497dce03947d0ed8fec7c50fdd3cff63 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:28 +0200
Subject: [PATCH 126/234] New translations troubleshooting.md (Chinese
Traditional)
---
.../tutorials/m2-pro/troubleshooting.md | 26 ++++++++++---------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
index 287696d..a397b99 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
@@ -3,22 +3,24 @@ sidebar_position: 5
---
# Troubleshooting
-Experiencing a problem with your M2 Pro? The guides here will help you find the problem. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
+Experiencing a problem with your M2 Pro? This tutorial will help you find it. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
## Connectivity (uptime)
If your uptime is taking a hit, there's an easy way to find out if the miner is at fault, or your local network connection. To do that follow the following steps:
### 1. Access the M2 Pro Miner web interface
You can find the interface here: `http://yourSerialNumber.local`
- * Your computer or phone must be on the same network as the M2 Pro Miner
- * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
-### 2. Download the miner logs:
- TODO: Add how to access miner logs for users
-1. Decompress and un-tar the file and the file. You should see several files like this: 
- * info.txt contains the model, version, serial number and mac address for reference.
- * messages, messages.0, messages.1 are the system log files.
- * loraMgmtDaemon.log, loraMgmtDaemon1.log, loraMgmtDaemon2.log are the LoRa packet forwarder log files.
- * The System log and LoRa log are usually what you need to check on.
-1. Check the system log by opening `messages`, `messages.0`, `messages.1` file.
+ * Your computer or phone must be on the same network as the M2 Pro Miner
+ * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
+```
+Username: admin
+Password: your serial number using all caps
+```
+
+
+
+### 2. View the miner logs:
+1. After logging in, you can view or download your logs by clicking on `SysLog` in the menu 
+ * If you're having an ongoing issue, you may want to download your logs regularly. The miner can only store logs for the past 48 hours, so if additional troubleshooting is needed, you should download your logs once every two days.
### 3. Reading the logs
First step is to check if offline is happening due to failed heartbeat. Use the search/find function (ctl+f, cmd+f) and type in the word failure to see any failed heartbeat.
@@ -56,7 +58,7 @@ To isolate this further, you can try the following:
* If wired connection is not possible – move the miner closer to the router as see if the uptime improves
* If both still not solving the issue - try putting the miner on a different network (such as, at friend's home). If the miner is working fine on another network, the issue is related to your home network connection.
-### 4. Checking LoRa Connectivity
+### 4. Checking LoRa Connectivity [in the LoRa Log menu option]
For LoRa, when you see that a miner is offline you can check on the Last Seen. This is pretty straight forward as you just need to search these two lines. If you get PUSH_ACK, that means it is fine.
```
[2021-06-17 08:58:48.437] [loraMgmtDaemon] [info] INFO: [up] PUSH_ACK received in 43 ms
From a4511c3d4d34a0969f74da4ad816564c4231c224 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:29 +0200
Subject: [PATCH 127/234] New translations 2021-05-30-welcome.md (Korean)
---
.../2021-05-30-welcome.md | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-blog/2021-05-30-welcome.md
diff --git a/i18n/ko/docusaurus-plugin-content-blog/2021-05-30-welcome.md b/i18n/ko/docusaurus-plugin-content-blog/2021-05-30-welcome.md
new file mode 100644
index 0000000..592f3ed
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-blog/2021-05-30-welcome.md
@@ -0,0 +1,13 @@
+---
+slug: welcome
+title: Welcome
+author: Jeff Stahlnecker
+author_title: Head of Development at MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - welcome
+ - intro
+---
+
+It's the beginning. Since I returned to the community following the Miner Health release, I've been saying that we'll impove transparency in development at MXC. This site is the beginning of this transparency. More content will be added here.
From 7f7cba8efe52c3698486c833dcbb81025f3dd114 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:30 +0200
Subject: [PATCH 128/234] New translations 2021-05-30-welcome.md (Chinese
Simplified)
---
.../2021-05-30-welcome.md | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-blog/2021-05-30-welcome.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-blog/2021-05-30-welcome.md b/i18n/zh-CN/docusaurus-plugin-content-blog/2021-05-30-welcome.md
new file mode 100644
index 0000000..592f3ed
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-blog/2021-05-30-welcome.md
@@ -0,0 +1,13 @@
+---
+slug: welcome
+title: Welcome
+author: Jeff Stahlnecker
+author_title: Head of Development at MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - welcome
+ - intro
+---
+
+It's the beginning. Since I returned to the community following the Miner Health release, I've been saying that we'll impove transparency in development at MXC. This site is the beginning of this transparency. More content will be added here.
From a7386611a13c32d6e7e670975ec07043689ac64a Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:31 +0200
Subject: [PATCH 129/234] New translations 2021-05-30-welcome.md (Chinese
Traditional)
---
.../2021-05-30-welcome.md | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-blog/2021-05-30-welcome.md
diff --git a/i18n/zh-TW/docusaurus-plugin-content-blog/2021-05-30-welcome.md b/i18n/zh-TW/docusaurus-plugin-content-blog/2021-05-30-welcome.md
new file mode 100644
index 0000000..592f3ed
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-blog/2021-05-30-welcome.md
@@ -0,0 +1,13 @@
+---
+slug: welcome
+title: Welcome
+author: Jeff Stahlnecker
+author_title: Head of Development at MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - welcome
+ - intro
+---
+
+It's the beginning. Since I returned to the community following the Miner Health release, I've been saying that we'll impove transparency in development at MXC. This site is the beginning of this transparency. More content will be added here.
From 69104c41e439d6094e6217781d4bd8a0c9a0f92b Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:32 +0200
Subject: [PATCH 130/234] New translations troubleshooting.md (German)
---
.../tutorials/m2-pro/troubleshooting.md | 26 ++++++++++---------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
index 287696d..a397b99 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
+++ b/i18n/de/docusaurus-plugin-content-docs/current/tutorials/m2-pro/troubleshooting.md
@@ -3,22 +3,24 @@ sidebar_position: 5
---
# Troubleshooting
-Experiencing a problem with your M2 Pro? The guides here will help you find the problem. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
+Experiencing a problem with your M2 Pro? This tutorial will help you find it. Naturally you can also ask for help in one of our communities, or reach out for manufacturer support by writing [support@matchx.io](mailto:support@matchx.io).
## Connectivity (uptime)
If your uptime is taking a hit, there's an easy way to find out if the miner is at fault, or your local network connection. To do that follow the following steps:
### 1. Access the M2 Pro Miner web interface
You can find the interface here: `http://yourSerialNumber.local`
- * Your computer or phone must be on the same network as the M2 Pro Miner
- * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
-### 2. Download the miner logs:
- TODO: Add how to access miner logs for users
-1. Decompress and un-tar the file and the file. You should see several files like this: 
- * info.txt contains the model, version, serial number and mac address for reference.
- * messages, messages.0, messages.1 are the system log files.
- * loraMgmtDaemon.log, loraMgmtDaemon1.log, loraMgmtDaemon2.log are the LoRa packet forwarder log files.
- * The System log and LoRa log are usually what you need to check on.
-1. Check the system log by opening `messages`, `messages.0`, `messages.1` file.
+ * Your computer or phone must be on the same network as the M2 Pro Miner
+ * This URL works only on iOS, Win10 and Linux. It doesn't work on Android.
+```
+Username: admin
+Password: your serial number using all caps
+```
+
+
+
+### 2. View the miner logs:
+1. After logging in, you can view or download your logs by clicking on `SysLog` in the menu 
+ * If you're having an ongoing issue, you may want to download your logs regularly. The miner can only store logs for the past 48 hours, so if additional troubleshooting is needed, you should download your logs once every two days.
### 3. Reading the logs
First step is to check if offline is happening due to failed heartbeat. Use the search/find function (ctl+f, cmd+f) and type in the word failure to see any failed heartbeat.
@@ -56,7 +58,7 @@ To isolate this further, you can try the following:
* If wired connection is not possible – move the miner closer to the router as see if the uptime improves
* If both still not solving the issue - try putting the miner on a different network (such as, at friend's home). If the miner is working fine on another network, the issue is related to your home network connection.
-### 4. Checking LoRa Connectivity
+### 4. Checking LoRa Connectivity [in the LoRa Log menu option]
For LoRa, when you see that a miner is offline you can check on the Last Seen. This is pretty straight forward as you just need to search these two lines. If you get PUSH_ACK, that means it is fine.
```
[2021-06-17 08:58:48.437] [loraMgmtDaemon] [info] INFO: [up] PUSH_ACK received in 43 ms
From 546a89a1ee0c890e0ee1cb777a80e4a6e05926a8 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:33 +0200
Subject: [PATCH 131/234] New translations 2021-05-30-welcome.md (German)
---
.../2021-05-30-welcome.md | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-blog/2021-05-30-welcome.md
diff --git a/i18n/de/docusaurus-plugin-content-blog/2021-05-30-welcome.md b/i18n/de/docusaurus-plugin-content-blog/2021-05-30-welcome.md
new file mode 100644
index 0000000..592f3ed
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-blog/2021-05-30-welcome.md
@@ -0,0 +1,13 @@
+---
+slug: welcome
+title: Welcome
+author: Jeff Stahlnecker
+author_title: Head of Development at MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - welcome
+ - intro
+---
+
+It's the beginning. Since I returned to the community following the Miner Health release, I've been saying that we'll impove transparency in development at MXC. This site is the beginning of this transparency. More content will be added here.
From d9147bbf9b54f9c4ee940c08d6fc7853828b1cc0 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:34 +0200
Subject: [PATCH 132/234] New translations 2021-07-05-tech-update.md (German)
---
.../2021-07-05-tech-update.md | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 i18n/de/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
diff --git a/i18n/de/docusaurus-plugin-content-blog/2021-07-05-tech-update.md b/i18n/de/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
new file mode 100644
index 0000000..2dd0bc2
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
@@ -0,0 +1,36 @@
+---
+slug: 2021-07-05-tech-update
+title: Tech Update - July 5, 2021
+author: Jeff Stahlnecker
+author_title: Head of Development @ MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - tech update
+ - datadash
+ - supernode
+ - dhx
+---
+
+Welcome to the very first MXC tech update!
+
+This week the tech team has been extremely busy. Throughout the past sprint we've focused on closing any and all ongoing projects. That brought us back to a few "low hanging" items that will add some EPIC value to our users -- especially those interested in connecting LoRa devices.
+
+## Device Provisioning
+Our very own backend engineer Lixuan took a deep dive to test the device provisioning system built by Ian to ensure that it was ready to be added with our live code. She solved a number of conflicts (device provisioning has been *ready* since January!), then ran it through a round of rigorous testing. This was done in collaboration with MatchX embedded software engineer Ian. They did some great work, and you'll see device provisioning going live early this week. In the meantime, you can check out the technical documentation here: [Device Provisioning FAQ](/docs/tutorials/devices/provisioning)
+
+As part of our focus on devices during the past two weeks, Lixuan also solved an issue which kept users from adding new devices on a supernode. We should be in ship-shape, and ready for some developer interaction. Feel free to send us your feedback! :)
+
+## Foundation for DHX Simulator Improvement
+The DataDash DHX Simulator has been a long-standing issue. While it works, it's a little buggy, and once in a while spits out something unexpected. Our backend developer Pavel decided enough is enough, and jumped in to solve the challenge of the buggy simulator. To accomplish this he brought together the required information from a ton of different sources and built an API for the DataDash team to integrate. For those developers out there, I'll update this post with a link to the API as soon as it is live.
+
+## Improved Technical Support
+We've been working hard to improve the technical support services provided by both MXC and MatchX. Our Tech Support Engineer Latifah has been hard at work building a ticketing system, integrating Discord, writing an internal support knowledgebase, while naturally also responding to your support requests. She's done an excellent job, and has set a strong foundation for reliable support moving forward.
+
+## Cleaning up the DataDash
+Over the past two weeks our DataDash team has focused primarily on solving some pesky issues with the app. We also added support for DHX in the in-app address book. Just another feature to make life a little easier for you.
+
+## Contributing to DataHighway
+Team members Luke, Ayush and Christian updated the DataHighway blockchain to add multisig functionality. They also made a number of improvements, and fixed issues with the Harbour testnet. You can review the full release notes [here](https://github.com/DataHighway-DHX/node/releases/tag/v3.0.5).
+
+That's the newest from Tech, and I'll be sure to update this post with that API link as soon as it goes live.
\ No newline at end of file
From 262bf1be28e13175daebee21df700c55ec12932e Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:35 +0200
Subject: [PATCH 133/234] New translations 2021-07-05-tech-update.md (Korean)
---
.../2021-07-05-tech-update.md | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 i18n/ko/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
diff --git a/i18n/ko/docusaurus-plugin-content-blog/2021-07-05-tech-update.md b/i18n/ko/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
new file mode 100644
index 0000000..2dd0bc2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
@@ -0,0 +1,36 @@
+---
+slug: 2021-07-05-tech-update
+title: Tech Update - July 5, 2021
+author: Jeff Stahlnecker
+author_title: Head of Development @ MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - tech update
+ - datadash
+ - supernode
+ - dhx
+---
+
+Welcome to the very first MXC tech update!
+
+This week the tech team has been extremely busy. Throughout the past sprint we've focused on closing any and all ongoing projects. That brought us back to a few "low hanging" items that will add some EPIC value to our users -- especially those interested in connecting LoRa devices.
+
+## Device Provisioning
+Our very own backend engineer Lixuan took a deep dive to test the device provisioning system built by Ian to ensure that it was ready to be added with our live code. She solved a number of conflicts (device provisioning has been *ready* since January!), then ran it through a round of rigorous testing. This was done in collaboration with MatchX embedded software engineer Ian. They did some great work, and you'll see device provisioning going live early this week. In the meantime, you can check out the technical documentation here: [Device Provisioning FAQ](/docs/tutorials/devices/provisioning)
+
+As part of our focus on devices during the past two weeks, Lixuan also solved an issue which kept users from adding new devices on a supernode. We should be in ship-shape, and ready for some developer interaction. Feel free to send us your feedback! :)
+
+## Foundation for DHX Simulator Improvement
+The DataDash DHX Simulator has been a long-standing issue. While it works, it's a little buggy, and once in a while spits out something unexpected. Our backend developer Pavel decided enough is enough, and jumped in to solve the challenge of the buggy simulator. To accomplish this he brought together the required information from a ton of different sources and built an API for the DataDash team to integrate. For those developers out there, I'll update this post with a link to the API as soon as it is live.
+
+## Improved Technical Support
+We've been working hard to improve the technical support services provided by both MXC and MatchX. Our Tech Support Engineer Latifah has been hard at work building a ticketing system, integrating Discord, writing an internal support knowledgebase, while naturally also responding to your support requests. She's done an excellent job, and has set a strong foundation for reliable support moving forward.
+
+## Cleaning up the DataDash
+Over the past two weeks our DataDash team has focused primarily on solving some pesky issues with the app. We also added support for DHX in the in-app address book. Just another feature to make life a little easier for you.
+
+## Contributing to DataHighway
+Team members Luke, Ayush and Christian updated the DataHighway blockchain to add multisig functionality. They also made a number of improvements, and fixed issues with the Harbour testnet. You can review the full release notes [here](https://github.com/DataHighway-DHX/node/releases/tag/v3.0.5).
+
+That's the newest from Tech, and I'll be sure to update this post with that API link as soon as it goes live.
\ No newline at end of file
From 63a3a9a7eaff57554ba19ab01a122e8883e796af Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:36 +0200
Subject: [PATCH 134/234] New translations 2021-07-05-tech-update.md (Chinese
Simplified)
---
.../2021-07-05-tech-update.md | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-blog/2021-07-05-tech-update.md b/i18n/zh-CN/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
new file mode 100644
index 0000000..2dd0bc2
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
@@ -0,0 +1,36 @@
+---
+slug: 2021-07-05-tech-update
+title: Tech Update - July 5, 2021
+author: Jeff Stahlnecker
+author_title: Head of Development @ MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - tech update
+ - datadash
+ - supernode
+ - dhx
+---
+
+Welcome to the very first MXC tech update!
+
+This week the tech team has been extremely busy. Throughout the past sprint we've focused on closing any and all ongoing projects. That brought us back to a few "low hanging" items that will add some EPIC value to our users -- especially those interested in connecting LoRa devices.
+
+## Device Provisioning
+Our very own backend engineer Lixuan took a deep dive to test the device provisioning system built by Ian to ensure that it was ready to be added with our live code. She solved a number of conflicts (device provisioning has been *ready* since January!), then ran it through a round of rigorous testing. This was done in collaboration with MatchX embedded software engineer Ian. They did some great work, and you'll see device provisioning going live early this week. In the meantime, you can check out the technical documentation here: [Device Provisioning FAQ](/docs/tutorials/devices/provisioning)
+
+As part of our focus on devices during the past two weeks, Lixuan also solved an issue which kept users from adding new devices on a supernode. We should be in ship-shape, and ready for some developer interaction. Feel free to send us your feedback! :)
+
+## Foundation for DHX Simulator Improvement
+The DataDash DHX Simulator has been a long-standing issue. While it works, it's a little buggy, and once in a while spits out something unexpected. Our backend developer Pavel decided enough is enough, and jumped in to solve the challenge of the buggy simulator. To accomplish this he brought together the required information from a ton of different sources and built an API for the DataDash team to integrate. For those developers out there, I'll update this post with a link to the API as soon as it is live.
+
+## Improved Technical Support
+We've been working hard to improve the technical support services provided by both MXC and MatchX. Our Tech Support Engineer Latifah has been hard at work building a ticketing system, integrating Discord, writing an internal support knowledgebase, while naturally also responding to your support requests. She's done an excellent job, and has set a strong foundation for reliable support moving forward.
+
+## Cleaning up the DataDash
+Over the past two weeks our DataDash team has focused primarily on solving some pesky issues with the app. We also added support for DHX in the in-app address book. Just another feature to make life a little easier for you.
+
+## Contributing to DataHighway
+Team members Luke, Ayush and Christian updated the DataHighway blockchain to add multisig functionality. They also made a number of improvements, and fixed issues with the Harbour testnet. You can review the full release notes [here](https://github.com/DataHighway-DHX/node/releases/tag/v3.0.5).
+
+That's the newest from Tech, and I'll be sure to update this post with that API link as soon as it goes live.
\ No newline at end of file
From ad03a7554f727b19de2ab6460451570762d68fa1 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 12:56:36 +0200
Subject: [PATCH 135/234] New translations 2021-07-05-tech-update.md (Chinese
Traditional)
---
.../2021-07-05-tech-update.md | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
diff --git a/i18n/zh-TW/docusaurus-plugin-content-blog/2021-07-05-tech-update.md b/i18n/zh-TW/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
new file mode 100644
index 0000000..2dd0bc2
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
@@ -0,0 +1,36 @@
+---
+slug: 2021-07-05-tech-update
+title: Tech Update - July 5, 2021
+author: Jeff Stahlnecker
+author_title: Head of Development @ MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - tech update
+ - datadash
+ - supernode
+ - dhx
+---
+
+Welcome to the very first MXC tech update!
+
+This week the tech team has been extremely busy. Throughout the past sprint we've focused on closing any and all ongoing projects. That brought us back to a few "low hanging" items that will add some EPIC value to our users -- especially those interested in connecting LoRa devices.
+
+## Device Provisioning
+Our very own backend engineer Lixuan took a deep dive to test the device provisioning system built by Ian to ensure that it was ready to be added with our live code. She solved a number of conflicts (device provisioning has been *ready* since January!), then ran it through a round of rigorous testing. This was done in collaboration with MatchX embedded software engineer Ian. They did some great work, and you'll see device provisioning going live early this week. In the meantime, you can check out the technical documentation here: [Device Provisioning FAQ](/docs/tutorials/devices/provisioning)
+
+As part of our focus on devices during the past two weeks, Lixuan also solved an issue which kept users from adding new devices on a supernode. We should be in ship-shape, and ready for some developer interaction. Feel free to send us your feedback! :)
+
+## Foundation for DHX Simulator Improvement
+The DataDash DHX Simulator has been a long-standing issue. While it works, it's a little buggy, and once in a while spits out something unexpected. Our backend developer Pavel decided enough is enough, and jumped in to solve the challenge of the buggy simulator. To accomplish this he brought together the required information from a ton of different sources and built an API for the DataDash team to integrate. For those developers out there, I'll update this post with a link to the API as soon as it is live.
+
+## Improved Technical Support
+We've been working hard to improve the technical support services provided by both MXC and MatchX. Our Tech Support Engineer Latifah has been hard at work building a ticketing system, integrating Discord, writing an internal support knowledgebase, while naturally also responding to your support requests. She's done an excellent job, and has set a strong foundation for reliable support moving forward.
+
+## Cleaning up the DataDash
+Over the past two weeks our DataDash team has focused primarily on solving some pesky issues with the app. We also added support for DHX in the in-app address book. Just another feature to make life a little easier for you.
+
+## Contributing to DataHighway
+Team members Luke, Ayush and Christian updated the DataHighway blockchain to add multisig functionality. They also made a number of improvements, and fixed issues with the Harbour testnet. You can review the full release notes [here](https://github.com/DataHighway-DHX/node/releases/tag/v3.0.5).
+
+That's the newest from Tech, and I'll be sure to update this post with that API link as soon as it goes live.
\ No newline at end of file
From 38dd2c5e9af2550cf7903fbef75b14d7d0311ae1 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 14:46:40 +0200
Subject: [PATCH 136/234] New translations code.json (French)
---
i18n/fr/code.json | 175 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 175 insertions(+)
create mode 100644 i18n/fr/code.json
diff --git a/i18n/fr/code.json b/i18n/fr/code.json
new file mode 100644
index 0000000..b4bed9b
--- /dev/null
+++ b/i18n/fr/code.json
@@ -0,0 +1,175 @@
+{
+ "Leverage the MXProtocol on LPWAN Miners to build the free Global IoT Network.": {
+ "message": "Leverage the MXProtocol on LPWAN Miners to build the free Global IoT Network."
+ },
+ "Configure your LPWAN devices and sensors to use the MXProtocol's unique provisioning method providing your users with a turnkey experience.": {
+ "message": "Configure your LPWAN devices and sensors to use the MXProtocol's unique provisioning method providing your users with a turnkey experience."
+ },
+ "Connect to your LPWAN devices with data analysis tools.": {
+ "message": "Connect to your LPWAN devices with data analysis tools."
+ },
+ "theme.NotFound.title": {
+ "message": "Page Not Found",
+ "description": "The title of the 404 page"
+ },
+ "theme.NotFound.p1": {
+ "message": "We could not find what you were looking for.",
+ "description": "The first paragraph of the 404 page"
+ },
+ "theme.NotFound.p2": {
+ "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.",
+ "description": "The 2nd paragraph of the 404 page"
+ },
+ "theme.blog.paginator.navAriaLabel": {
+ "message": "Blog list page navigation",
+ "description": "The ARIA label for the blog pagination"
+ },
+ "theme.blog.paginator.newerEntries": {
+ "message": "Newer Entries",
+ "description": "The label used to navigate to the newer blog posts page (previous page)"
+ },
+ "theme.blog.paginator.olderEntries": {
+ "message": "Older Entries",
+ "description": "The label used to navigate to the older blog posts page (next page)"
+ },
+ "theme.blog.post.readingTime.plurals": {
+ "message": "One min read|{readingTime} min read",
+ "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.tags.tagsListLabel": {
+ "message": "Tags:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.blog.post.readMore": {
+ "message": "Read More",
+ "description": "The label used in blog post item excerpts to link to full blog posts"
+ },
+ "theme.blog.post.paginator.navAriaLabel": {
+ "message": "Blog post page navigation",
+ "description": "The ARIA label for the blog posts pagination"
+ },
+ "theme.blog.post.paginator.newerPost": {
+ "message": "Newer Post",
+ "description": "The blog post button label to navigate to the newer/previous post"
+ },
+ "theme.blog.post.paginator.olderPost": {
+ "message": "Older Post",
+ "description": "The blog post button label to navigate to the older/next post"
+ },
+ "theme.blog.sidebar.navAriaLabel": {
+ "message": "Blog recent posts navigation",
+ "description": "The ARIA label for recent posts in the blog sidebar"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "Close",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "Tags",
+ "description": "The title of the tag list page"
+ },
+ "theme.blog.post.plurals": {
+ "message": "One post|{count} posts",
+ "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.tagTitle": {
+ "message": "{nPosts} tagged with \"{tagName}\"",
+ "description": "The title of the page for a blog tag"
+ },
+ "theme.tags.tagsPageLink": {
+ "message": "View All Tags",
+ "description": "The label of the link targeting the tag list page"
+ },
+ "theme.CodeBlock.copyButtonAriaLabel": {
+ "message": "Copy code to clipboard",
+ "description": "The ARIA label for copy code blocks button"
+ },
+ "theme.CodeBlock.copied": {
+ "message": "Copied",
+ "description": "The copied button label on code blocks"
+ },
+ "theme.CodeBlock.copy": {
+ "message": "Copy",
+ "description": "The copy button label on code blocks"
+ },
+ "theme.docs.sidebar.expandButtonTitle": {
+ "message": "Expand sidebar",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.sidebar.expandButtonAriaLabel": {
+ "message": "Expand sidebar",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.paginator.navAriaLabel": {
+ "message": "Docs pages navigation",
+ "description": "The ARIA label for the docs pagination"
+ },
+ "theme.docs.paginator.previous": {
+ "message": "Previous",
+ "description": "The label used to navigate to the previous doc"
+ },
+ "theme.docs.paginator.next": {
+ "message": "Next",
+ "description": "The label used to navigate to the next doc"
+ },
+ "theme.docs.sidebar.collapseButtonTitle": {
+ "message": "Collapse sidebar",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.collapseButtonAriaLabel": {
+ "message": "Collapse sidebar",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.responsiveCloseButtonLabel": {
+ "message": "Close menu",
+ "description": "The ARIA label for close button of mobile doc sidebar"
+ },
+ "theme.docs.sidebar.responsiveOpenButtonLabel": {
+ "message": "Open menu",
+ "description": "The ARIA label for open button of mobile doc sidebar"
+ },
+ "theme.docs.sidebar.navAriaLabel": {
+ "message": "Sidebar navigation",
+ "description": "The ARIA label for documentation menu"
+ },
+ "theme.docs.versions.unreleasedVersionLabel": {
+ "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.",
+ "description": "The label used to tell the user that he's browsing an unreleased doc version"
+ },
+ "theme.docs.versions.unmaintainedVersionLabel": {
+ "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.",
+ "description": "The label used to tell the user that he's browsing an unmaintained doc version"
+ },
+ "theme.docs.versions.latestVersionSuggestionLabel": {
+ "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).",
+ "description": "The label userd to tell the user that he's browsing an unmaintained doc version"
+ },
+ "theme.docs.versions.latestVersionLinkLabel": {
+ "message": "latest version",
+ "description": "The label used for the latest version suggestion link label"
+ },
+ "theme.common.editThisPage": {
+ "message": "Edit this page",
+ "description": "The link label to edit the current page"
+ },
+ "theme.common.headingLinkTitle": {
+ "message": "Direct link to heading",
+ "description": "Title for link to heading"
+ },
+ "theme.lastUpdated.atDate": {
+ "message": " on {date}",
+ "description": "The words used to describe on which date a page has been last updated"
+ },
+ "theme.lastUpdated.byUser": {
+ "message": " by {user}",
+ "description": "The words used to describe by who the page has been last updated"
+ },
+ "theme.lastUpdated.lastUpdatedAtBy": {
+ "message": "Last updated{atDate}{byUser}",
+ "description": "The sentence used to display when a page has been last updated, and by who"
+ },
+ "theme.common.skipToMainContent": {
+ "message": "Skip to main content",
+ "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
+ }
+}
\ No newline at end of file
From 943c9b7bf1728bfc1666ef392b073bd206bc99e1 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 14:46:41 +0200
Subject: [PATCH 137/234] New translations mxc-data-economy.md (French)
---
.../current/whitepapers/mxc-data-economy.md | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/whitepapers/mxc-data-economy.md
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/whitepapers/mxc-data-economy.md b/i18n/fr/docusaurus-plugin-content-docs/current/whitepapers/mxc-data-economy.md
new file mode 100644
index 0000000..7bcfc32
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/whitepapers/mxc-data-economy.md
@@ -0,0 +1,6 @@
+---
+title: MXC Data Economy
+sidebar_position: 3
+---
+
+# MXC Data Economy
\ No newline at end of file
From 57b3fd36bb192d7270fe86fdae2abf90b77a3865 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 14:46:42 +0200
Subject: [PATCH 138/234] New translations bugs.md (French)
---
.../current/tutorials/datadash/bugs.md | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
new file mode 100644
index 0000000..01e11de
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/bugs.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 2
+title: Reporting Bugs
+---
+
+# How to report DataDash Bugs
+
+The DataDash app codebase is [Publicly available on GitHub](https://github.com/mxc-foundation/supernode-app). Therefore the best way to submit a DataDash bug, is directly as a [GitHub issue](https://github.com/mxc-foundation/supernode-app/issues).
+
+Please include the following information in your bug report:
+
+* What is the problem?
+* What is the expected behavior?
+* Mark the issue with the appropriate labels:
+ * `bug`
+ * `ios` or `android`
+* Provide any additional information, screenshots, or videos you believe might be helpful.
+
+**GitHub Issues are public! Do not share any personal or identifiable information. If you believe the issue is specific to you, it should be submitted as a support ticket to [support@mxc.org](mailto:support.mxc.org).**
From a1e32209b3b4ea98c5a341786bca5268322f8f8b Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 14:46:43 +0200
Subject: [PATCH 139/234] New translations beta.md (French)
---
.../current/tutorials/datadash/beta.md | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
new file mode 100644
index 0000000..521ead1
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/beta.md
@@ -0,0 +1,20 @@
+---
+sidebar_position: 2
+title: DataDash Beta Testing
+---
+
+# DataDash Ongoing Beta
+At the moment we have an open beta DataDash group for both iOS and Android. We consider this a semi-closed beta because we require participants to join our beta discord channels. This is key for discussions among participants, and provides us with an easy way to interact with beta participants.
+
+
+To participate as a beta tester follow the following steps:
+1. Join our [Discord Community](https://mxc.news/discord)
+1. Use the #bot-talk channel to send one of the following commands:
+ * `!role ios`
+ * `!role andorid`
+1. You will then see a new channel in the `develompent` category. Follow the steps outlined at the top of the channel to join your selected test group.
+
+## DataDash Closed Beta
+Before a major release, we will do a call for closed beta participants. This will have a limited number of available seats per operating system, and will only be available to current beta testers who actively submit feedback.
+
+Closed betas will provide users access to new and unreleased features that require a major backend change. Because of this, each participant will receive a test account on a "fake" supernode to work with.
\ No newline at end of file
From 15a288ee7c3832c547043a6e96099b66999bacd7 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 14:46:44 +0200
Subject: [PATCH 140/234] New translations _category_.json (French)
---
.../current/tutorials/datadash/_category_.json | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
new file mode 100644
index 0000000..96eea63
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/datadash/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "DataDash",
+ "position": 6
+}
From 8f22f1ee225a1d8d3eedb53aeb694bd8cd8242b1 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 14:46:45 +0200
Subject: [PATCH 141/234] New translations 2021-07-05-tech-update.md (French)
---
.../2021-07-05-tech-update.md | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 i18n/fr/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
diff --git a/i18n/fr/docusaurus-plugin-content-blog/2021-07-05-tech-update.md b/i18n/fr/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
new file mode 100644
index 0000000..2dd0bc2
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-blog/2021-07-05-tech-update.md
@@ -0,0 +1,36 @@
+---
+slug: 2021-07-05-tech-update
+title: Tech Update - July 5, 2021
+author: Jeff Stahlnecker
+author_title: Head of Development @ MXC Foundation
+author_url: https://github.com/jeffstahlnecker
+author_image_url: https://avatars.githubusercontent.com/u/45363541?v=4
+tags:
+ - tech update
+ - datadash
+ - supernode
+ - dhx
+---
+
+Welcome to the very first MXC tech update!
+
+This week the tech team has been extremely busy. Throughout the past sprint we've focused on closing any and all ongoing projects. That brought us back to a few "low hanging" items that will add some EPIC value to our users -- especially those interested in connecting LoRa devices.
+
+## Device Provisioning
+Our very own backend engineer Lixuan took a deep dive to test the device provisioning system built by Ian to ensure that it was ready to be added with our live code. She solved a number of conflicts (device provisioning has been *ready* since January!), then ran it through a round of rigorous testing. This was done in collaboration with MatchX embedded software engineer Ian. They did some great work, and you'll see device provisioning going live early this week. In the meantime, you can check out the technical documentation here: [Device Provisioning FAQ](/docs/tutorials/devices/provisioning)
+
+As part of our focus on devices during the past two weeks, Lixuan also solved an issue which kept users from adding new devices on a supernode. We should be in ship-shape, and ready for some developer interaction. Feel free to send us your feedback! :)
+
+## Foundation for DHX Simulator Improvement
+The DataDash DHX Simulator has been a long-standing issue. While it works, it's a little buggy, and once in a while spits out something unexpected. Our backend developer Pavel decided enough is enough, and jumped in to solve the challenge of the buggy simulator. To accomplish this he brought together the required information from a ton of different sources and built an API for the DataDash team to integrate. For those developers out there, I'll update this post with a link to the API as soon as it is live.
+
+## Improved Technical Support
+We've been working hard to improve the technical support services provided by both MXC and MatchX. Our Tech Support Engineer Latifah has been hard at work building a ticketing system, integrating Discord, writing an internal support knowledgebase, while naturally also responding to your support requests. She's done an excellent job, and has set a strong foundation for reliable support moving forward.
+
+## Cleaning up the DataDash
+Over the past two weeks our DataDash team has focused primarily on solving some pesky issues with the app. We also added support for DHX in the in-app address book. Just another feature to make life a little easier for you.
+
+## Contributing to DataHighway
+Team members Luke, Ayush and Christian updated the DataHighway blockchain to add multisig functionality. They also made a number of improvements, and fixed issues with the Harbour testnet. You can review the full release notes [here](https://github.com/DataHighway-DHX/node/releases/tag/v3.0.5).
+
+That's the newest from Tech, and I'll be sure to update this post with that API link as soon as it goes live.
\ No newline at end of file
From 0dcd72d3b47a024a80b61d1db803559f45fc671b Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 14:46:46 +0200
Subject: [PATCH 142/234] New translations intro.md (French)
---
.../current/tutorials/dhx/intro.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
new file mode 100644
index 0000000..18d2c90
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/dhx/intro.md
@@ -0,0 +1 @@
+# What is DHX
\ No newline at end of file
From 5e34c49cc1e9f2419aedea190ea2228629c913b9 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 14:46:47 +0200
Subject: [PATCH 143/234] New translations _category_.json (French)
---
.../current/tutorials/dhx/_category_.json | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
new file mode 100644
index 0000000..6f5f53d
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/dhx/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Mining DHX",
+ "position": 4
+}
From 8b9c50b5cc47458f4a9721d0ddd53dc56eb4e073 Mon Sep 17 00:00:00 2001
From: jeffstahlnecker <45363541+jeffstahlnecker@users.noreply.github.com>
Date: Fri, 16 Jul 2021 14:46:49 +0200
Subject: [PATCH 144/234] New translations provisioning.mdx (French)
---
.../tutorials/devices/provisioning.mdx | 514 ++++++++++++++++++
1 file changed, 514 insertions(+)
create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
new file mode 100644
index 0000000..b56498c
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/tutorials/devices/provisioning.mdx
@@ -0,0 +1,514 @@
+---
+sidebar_position: 4
+sidebar_label: Device Provisioning
+---
+
+# Device Provisioning
+
+## What is Device Provisioning?
+
+Device Provisioning is a process of exchanging sensitive information between a device and a server. This process will store the encryption keys required for LoRaWAN communication on the device and the server. The whole process will be completed through LoRa communication. Therefore, no additional hardware is required on the device.
+
+In terms of security, Elliptic-curve Diffie-Hellman is used as the key exchange, which enables subsequent sensitive data to be exchanged between the device and the server in a secure manner.
+
+
+## What is the advantage of it?
+
+With the provisioning is done and the key is ready on both server and device. The operation on the user side will become simple. The user needs only a few steps to register the device to the system. He/She just needs to use our DataDash mobile APP to scan the QR-code label on the device. Then enter a few more information about the device, such as name. After that the device will start to join the network. The user didn’t need to enter any keys that the traditional way needs. During production no keys need to be sent to the assembly house, further improving the security by preventing unwanted compromise of the keys by the 3rd party.
+
+
+## What about the QR-code label?
+
+The QR-code label stored the identity of the device. There is no sensitive information on it, just an ID code (called Provision ID). A minimal label just needs the Provision ID. The mobile APP will use this Provision ID to register the device to the system. It is a secure way to do the task which no encryption keys content appears during the whole process.
+
+Here is an example of a minimal label.
+
+
+
+
+
+
+
+
PID:PROVISIONIDOOOOOOOOO
+
+
+
+For a big device that has more space for the label, a long version label could be used to store more information.
+
+
+
+
+
+
+
+
+
+
+```
+{
+ "PROVID": "PROVISIONIDOOOOOOOOO",
+ "BRAND": "MatchX",
+ "MODEL": "MX1234",
+ "SN": "S123456"
+}
+
+```
+
+
+## What device developer needs to do?
+
+The firmware needs to implement the flow device provisioning. It is a two steps process and needs to be done for a new produced device. The details of this process is listed on the later part of this document.
+
+During the device provisioning, it required the Provision ID to identify the device. We suggest the device firmware add an interface to let the manufacturer set this information at the end of the quality assurance (QA) procedure.
+
+An example method is to use a UART interface to program the information. Our example device uses an “AT” command to achieve this. But any other serial protocol should be fine.
+
+
+
+
+
+## What device manufacturer needs to do?
+
+To successfully provision a device, it required the information of Provision ID. The manufacturer needs to request it from us, MatchX. We will prepare a spreadsheet that has the assigned Provision ID and related information for the manufacturer. The Manufacturer needs to make sure the information is set to the device with the correct matched QR-Code label.
+
+We suggest the manufacturer to add an extra step at their quality assurance (QA) procedure. The step included setting the Provision ID to the device with a matched QR-Code label. Then verify the device is being provisioned, that means it exchanged key information with the server.
+
+
+
+
+
+
+
+
+## Device Provisioning Implementation Details
+
+Source code of our example device: TBD
+
+
+### Provision ID
+
+The Provision ID is a unique string for each device. During the provisioning, it is used as an identity at the provisioning server to access the device information. The Provision ID is 20 characters long and uses the RFC4648 Base32 alphabet.
+
+
+### Hash of Provision ID
+
+It is the result of the SHA256 hash on the Provision ID. The device provisioning process uses this value when doing authentication with the server. To minimize the complexity of the device implementation, we suggest the device also store this value to its FLASH, instead of calculating it by itself.
+
+
+```
+provisionIdHash = SHA256(provisionId | '.MatchX')
+```
+
+
+For example:
+
+
+```
+PID = 'TESTPIDOOOOOOOOOOOOO'
+HASH = 'c8c7564b46b91c91ef6c4f37bcca8cf7e81baac6eb869dcc62e5fafdd0242497'
+```
+
+
+
+### Message integrity code (MIC)
+
+The message integrity code (MIC) value at LoRa PHYPayload for HELLO and AUTH messages is calculated as below.
+
+
+```
+FixedKey[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
+
+cmac = aes128_cmac(FixedKey, message)
+MIC = cmac[0..3]
+```
+
+
+### Verification Code
+
+The verification code is used when the device authenticates with the server. The calculation is shown below.
+
+
+```
+ FixedKey[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
+
+ cal_buf = provisionId + nonce;
+ verifyCode = aes128_cmac(FixedKey, cal_buf)
+```
+
+Example:
+
+
+```
+// Input
+ privisionid = "SERIALNUMBEROOOOOOOO";
+ servernonce = {0x01, 0x02, 0x03, 0x04};
+
+// Output
+ verifyCode = {0x2E, 0x69, 0xBB, 0x5E, 0xD7, 0x8B, 0x5E, 0xE8,
+ 0x0C, 0x6A, 0x8A, 0xDC, 0x81, 0x91, 0xDD, 0xF8};
+```
+
+
+
+### AES
+
+The encryption scheme used in aes128_encrypt() and aes128_cmac() are the same as LoRaWAN specification. This approach will minimize the need for extra code on the device side.
+
+
+### LoRa
+
+The device provisioning using the “Proprietary” LoRa frame for communication, it means the MType on MHDR is set to ‘111’.
+
+The receiving windows using RX1 and delay is 5s.
+
+Data Rate:
+
+
+
+
+
Region
+
+
Data Rate
+
+
Configuration
+
+
+
+
EU868
+
+
3
+
+
Up and Down: SF9 / 125 kHz
+
+
+
+
US915
+
+
3
+
+
Up: SF7 / 125 kHz
+
+ Down: SF7 / 500 kHz
+
+
+
+
+
CN470
+
+
3
+
+
Up and Down: SF9 / 125 kHz
+
+
+
+
+### Sequence Diagram
+
+The device provisioning has two steps. First, it is a ECDH key exchange process, called “Hello” by us. The device and the server will exchange their public key on this step. Then the next step is the authentication. The device will submit its hashed Provision ID to the server. If it is a valid ID on the server, the server will accept the request and send back the EUI information.
+
+The keys used for LoRaWAN OTAA are derived from the ECDH shared key. All this information will not appear on the communication message.
+
+
+
+
+### Message format
+
+The messages shown below are the content of the MACPayload of the Proprietary MAC message of LoRaWAN.
+
+LoRaWAN PHYPayload:
+
+
+