Canedge1 Docs
Canedge1 Docs
Release FW 01.06.04
i
ii
CANedge1 Docs, Release FW 01.06.04
0.1.1.1 Purpose
This manual describes the functionality of the CANedge1 (firmware 01.06.04) with focus on:
1. Hardware & installation
2. Configuration
3. Firmware upgrade
This manual does not provide details on available software/API tools.
The CANedge1 Intro and CANedge2 Intro provide practical guides for getting started. The intros also
detail software & API tools that can be used with the CANedge.
Admonitions
Warning: Used if incorrect use may result in major loss of data and/or time
Danger: Used if incorrect use may result in damage to the device, personal injury or death
Number bases
When relevant, the base of a number is written explicitly as 𝑥𝑦 , with 𝑦 as the base.
The following number bases are used throughout this documentation:
• Binary (𝑦 = 2). Example: The binary number 10101010 is written as 101010102
• Decimal (𝑦 = 10). Example: The decimal number 170 is written as 17010
• Hexadecimal (𝑦 = 16). Example: The hexadecimal number 𝐴𝐴 is written as 𝐴𝐴16
The value of a number is the same regardless of the base (e.g. the values in above examples are equal
101010102 = 17010 = 𝐴𝐴16 ). However, it is sometimes more convenient to represent the number using a
specific base.
Warning: Carefully review the below usage warning before installing the product
The use of the CANedge device must be done with caution and an understanding of the risks involved.
The operation of the device may be dangerous as you may affect the operation and behavior of a CAN
bus system.
Improper installation or usage of the device can lead to serious malfunction, loss of data, equipment
damage and physical injury. This is particularly relevant when the device is physically connected to
a CAN based application that may be controlled via the CAN bus. In this setup you can potentially
cause an operational change in the system, turn on/off certain modules and functions or change to an
unintended mode.
While the device supports a high degree of security in regards to wireless data transfer and over-the-air
updates, it is recommended that these features are used with caution. Incorrect usage of this functionality
can result in a device being unable to connect to your server. Further, changing transmit messages over-
the-air should be done with extreme caution.
The device should only be used by persons who are qualified/trained, understand the risks and understand
how the device interacts with the system in which it is integrated.
The CANedge has been tested in accordance with CE, FCC and IC standards.
Certificates are available in the online documentation.
The device is in conformity with all provisions of Annex II of Council Directive 2014/30/EU, in its latest
amended version, referred to EMC directive.
The device complies with Part 15 of the FCC Rules. Operation is subject to the following two conditions:
(1) this device may not cause harmful interference, and (2) this device must accept any interference
received, including interference that may cause undesired operation.
The device complies with the requirements set forth in the Innovation, Science and Economic Develop-
ment Canada (ISED) Rules and Regulations ICES-003 Class B and the measurement procedure according
to CAN/CSA CISPR 22-10.
Specifically, it is in conformity with the following standards:
The CANedge has passed below ISO 7637-2:2011 tests, performed by TÜV SÜD:
2 CONTENTS
CANedge1 Docs, Release FW 01.06.04
CSS Electronics
EU VAT ID: DK36711949
Soeren Frichs Vej 38K (Office 35), 8230 Aabyhoej, Denmark
contact[AT]csselectronics.com
+45 91252563
www.csselectronics.com
0.2 Specification
• Physical
– Two physical CAN-bus interfaces
– Industry standard DB9 (D-sub9) connectors
• Transceiver
– Compliant with CAN Protocol Version 2.0 Part A, B and ISO 11898-1
– Compliant with ISO CAN FD and Bosch CAN FD
– Ideal passive behavior when unpowered (high impedance / no load)
– Protection: ±16kV HBM ESD, ±15kV IEC ESD, ±70 V bus fault, short circuit
– Common mode input voltage: ±30V
– TXD dominant timeout (prevents network blocking in the event of a failure)
– Data rates up to 5Mbps1
• Controller
– Based on MCAN IP from Bosch
– Bit-rate: Auto-detect (from list2 ), manual simple (from list3 ) or advanced (bit-timing)
– 128 standard CAN ID + 64 extended CAN ID filters (per interface)
– Advanced filter configuration: Range, mask, acceptance, rejection, down sampling
– Configurable transmit messages, single shot or periodic (up to 128/64 regular/extended)
– Support for Remote-Transmission-Request (RTR) frames
– Silent mode: Restricted (acknowledge only) or monitoring (transmission disabled)
– Supports all CAN based protocols (J1939, CANopen, OBD2, NMEA 2000, . . . )4
• Application
– Control reception (logging) and transmission states using CAN-bus control message
– Heartbeat signal to broadcast device time, space left of SD-card and rx/tx state
• Physical
– Two physical LIN-bus interfaces
– Industry standard DB9 (D-sub9) connectors
– No internal diode and resistor for publishing mode
• Transceiver
– Protection: ±8kV HBM ESD, ±1.5kV CDM, ±58V bus fault
– Supports 4V to 24V applications
– TXD dominant timeout (prevents network blocking in the event of a failure)
1 Supported FD bit-rates: 1M, 2M, 4M
2 Bit-rate list: 5k, 10k, 20k, 33.333k, 47.619k, 50k, 83.333k, 95.238k, 100k, 125k, 250k, 500k, 800k, 1M
3 Bit-rate list: 5k, 10k, 20k, 33.333k, 47.619k, 50k, 83.333k, 95.238k, 100k, 125k, 250k, 500k, 800k, 1M, 2M, 4M
4 The device logs raw data frames
4 CONTENTS
CANedge1 Docs, Release FW 01.06.04
0.2.3 Logging
• High precision real-time clock retains date and time when device is off
0.2.5 Electrical
• Device supply
– Channel 1 voltage supply range: +7.0V to +32V DC7
– Reverse voltage protection8
– Transient voltage event protection on supply lines9
– Consumption:
∗ CANedge1: 0.8W
∗ CANedge2: 1W
• Secondary port output supply10
– Configurable output supply on connector 2 (CH2), fixed 5V up to 1.5A11
– Supports power out scheduling to control the output state based on time of day
5 Data lengths are defined by bits 4 and 5 of the LIN identifier
6 See the performance tests
7 The device is supplied from connector 1 (CH1)
8 Up to 24V
9 The transient voltage protection is designed to clamp low energy voltage events. High energy voltage events may
0.2. Specification 5
CANedge1 Docs, Release FW 01.06.04
0.2.6 Mechanical
0.2.7 Connectivity
6 CONTENTS
CANedge1 Docs, Release FW 01.06.04
0.3 Hardware
0.3.1 Installation
The nominal voltage shall be kept within specifications at all times. The device is internally protected
against low energy voltage events which can be expected as a result of supply wire noise, ESD and
stub-wire inductance.
If the supply line is shared with inductive loads, care should be taken to ensure high energy voltage events
do not reach the device. Automotive environments often include several sources of electrical hazards,
such as load dumps (disconnection of battery while charging), relay contacts, solenoids, alternator, fuel
injectors etc. The internal protection circuitry of the device is not capable of handling high energy
voltage events directly from such sources.
0.3.1.2 Grounding
ISO 11898-2 tolerates some level of ground offset between nodes. To ensure the offset remains within
range, it is recommended to use a single point ground reference for all nodes connected to the CAN-bus.
This may require the ground wire to be carried along with data wires.
If a secondary CAN-bus network is connected to Channel 2, care must be taken to ensure that the ground
potentials of the two networks can safely be connected through the common ground in the device.
Shielding is not needed in all applications. If shielding is used, it is recommended that a short pig-tail
be crimped to the shield end at each connector.
ISO 11898-2 defines the basic physical requirements of a high-speed CAN-bus network. Some of these
are listed below:
• Max line length (determined by bit-rate)
• Line termination (120 ohm line termination at each end of data line)
• Twisted data lines
• Ground offsets in range -2V to +7V
It is recommended that the CAN-bus stub length is kept short. The stub length is defined as the length
from the ”main” data line wires to the connection point of the CAN-bus nodes.
0.3. Hardware 7
CANedge1 Docs, Release FW 01.06.04
Warning: Opening the enclosure can permanently damage the device due to e.g. ESD (electrostatic
discharge) - and improper handling may void the warranty
0.3.1.7 Mounting
The device should be mounted in a way that minimizes vibration exposure and accounts for the IP rating
of the device.
0.3.2 Connector
0.3.2.1 Pinout
The CANedge uses two D-sub9 connectors for supply, 2 x CAN, 2 x LIN and a 5 V Supply Output.
Make sure to refer to the pinout matching the product hardware revision (see the label).
8 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Supply
The supply (CH1 pin 9) is used to power the device. The supply is internally protected against reverse
polarity and low-energy voltage spikes.
Refer to the Electrical Specification for more details on the device supply.
Warning: The supply line must be protected against high-energy voltage events exceeding device
limits
GND
5 V Supply Output
The +5 V output can be used to power external devices. The power can be toggled via the device
configuration. The output can deliver 1.5 A @ 5 V continuously.
Danger: Connecting external input power to this pin can permanently damage the device
Warning: External protection (such as clamp diodes) must be installed if inductive loads are
connected to the 5V Supply Output
CAN L/H
LIN VBAT
LIN Data
Below example illustrates how the CANedge CAN-bus 1 (channel 1) can be connected.
0.3. Hardware 9
CANedge1 Docs, Release FW 01.06.04
0.3.3 Enclosure
The CANedge uses a robust aluminium enclosure - PDF drawings and 3D STEP files can be found in
the online documentation.
0.3.4 SD card
The CANedge uses an extractable SD-card to store device configuration and log files.
Warning: Never extract the SD-card while the device is on. Remove power first and wait a few
seconds for the device to turn off.
The files stored on the SD-card are organized as illustrated by below example:
/
config-XX.XX.json
schema-XX.XX.json
device.json
LOG/
[DEVICE_ID]
00000001
00000001.MF4
00000002.MF4
...
...
00000002
00000001.MF4
00000002.MF4
...
...
...
...
10 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Log files
0.3.4.2 Type
The CANedge uses a specifically selected industrial graded SD-card with special timing constraints to
ensure safe shutdown when power is lost.
Warning: The device cannot be guaranteed to work if the pre-installed SD-card is replaced
The SD card is not “locked” to the device. If the card is replaced, be aware of the following points:
• Critical device specific data are not stored on the SD card (e.g. device ID)
• Non-critical meta data are stored on the SD card (e.g. log file session number)
• If the card is replaced by a card from another device, it is recommended to clear the card first
• It may be necessary to update the configuration file if it contains device specific settings
0.3.4.3 Lifetime
The SD-card memory wears as any other flash based memory. The industrial graded SD-cards provided
with the CANedge have the following guaranteed minimum endurance numbers1 :
0.3.5 LED
0.3.5.1 Location
The LEDs are located at the back of the device as illustrated below.
1 TBW: Terabytes Written
2 A constant logging rate of 1 MB/sec is likely much much higher than in any practical logging use-case
0.3. Hardware 11
CANedge1 Docs, Release FW 01.06.04
0.3.5.2 Overview
PWR
The Power LED is constantly on when the device is in normal operation. An exception is when the
firmware is being updated (for more information go to the Firmware section).
CH1 / CH2
The Channel 1 / Channel 2 LEDs indicate bus activity on Channel 1 and 2 respectively.
MEM
The Memory LED indicates activity on the memory card. Config file parsing, message logging, file
upload etc. all generate activity on the memory card.
0.3.6 Label
A unique label is attached to the back of each device. Examples of the labels are illustrated below.
Note: The data matrix can be scanned to simplify installation of a new device
12 CONTENTS
CANedge1 Docs, Release FW 01.06.04
0.3. Hardware 13
CANedge1 Docs, Release FW 01.06.04
0.4 Configuration
0.4.1 General
Security general.security
Server public key general.security.kpub
Server / user ECC public key in base64 format. Shall match the encryption used for all protected fields.
Debug general.debug
Debug functionality for use during installation and troubleshooting.
System log general.debug.syslog
System events logged to the SD-card. The log levels are listed in order of increasing amount of information
logged. Should only be enabled if needed during installation or troubleshooting.
The device meta data is an optional string copied to the device.json file and log file headers.
Security
Some configuration field values can be encrypted to hide sensitive data stored in the Configuration File
(passwords etc.). In this section, we provide a technical summary and provide resource suggestions for
implementing the encryption.
The field encryption feature uses a key agreement scheme based on Elliptic Curve Cryptography (ECC)
(similar to the one used in a TLS handshake). The scheme allows the device and user to compute
14 CONTENTS
CANedge1 Docs, Release FW 01.06.04
the same shared secret, without exposing any secrets. The shared secret is in turn used to generate a
symmetric key, which is used to encrypt / decrypt protected field values.
The following sequence diagram illustrates the process of encrypting configuration fields:
0.4. Configuration 15
CANedge1 Docs, Release FW 01.06.04
configuration file
Note: The symmetric key shall match the public key set by the user in the configuration and protected
fields shall be encrypted with this symmetric key
Note: By storing the symmetric key it is possible to change specific protected fields - without updating
the user public key (and in turn all other protected fields)
Encryption tools
Tools are provided with the CANedge for use in encrypting secure fields - see the CANedge Intro.
You can batch-encrypt passwords across multiple devices using e.g. Python. Below we provide a basic
code sample to illustrate how Python can be used to encrypt plain-text data. The example code is tested
with Python 3.7.2 and requires the pycryptodome crypto library:
Python example code
0.4.2 Logging
16 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Compression log.compression
Level log.compression.level
Window size used during optional compression. Larger window sizes yield potentially better compres-
sion rates, but may reduce logging performance. Compressed log files need to be decompressed prior to
processing.
Encryption log.encryption
State log.encryption.state
Optional log file encryption. Encrypted log files need to be decrypted prior to processing. Decryption
requires your encryption password in plain form - if this is lost, the encrypted data cannot be recovered.
File split
File splitting can be based on file size or file size and time:
• split_time_period = 0: Split based on size only
• split_time_period > 0: Split based on both size and time - whichever is reached first
Limits
The file system limits should be considered when configuring the split size and time:
• SD-card size
0.4. Configuration 17
CANedge1 Docs, Release FW 01.06.04
Compression
Log files can be compressed on the device during logging using a variant of the LZSS algorithm based on
heatshrink. Compressed files will have *.MFC as file extension. A high window size improves compression
rates, but may cause message loss on very busy networks.
The table below lists results for J1939 and OBD data with different window size configurations3 :
Decompression can be done using an implementation of LZSS or via the CANedge tools (see the CANedge
Intro).
Note: The split size set in split_size considers the size of the compressed data. I.e. if the split size
is 10 MB, the resulting file sizes become 10 MB regardless if compression is used or not.
Encryption
Log files can be encrypted on the device. Here, data is streamed through an AES-GCM encryption
scheme prior to persistence on the SD card. Encrypted files have *.MFE as file extension.
Decryption can be done using an implementation of the PBKDF2 algorithm or via CANedge tools (see
the CANedge Intro).
Error Frames
Enabling error frames will log errors across all interfaces, both CAN and LIN. Note that this can decrease
the performance of the device due to the added logging load.
1 If files are offloaded through WiFi in the case of the CANedge2, the logging will resume
3 Compressed size in percentage of original. Lower is better.
18 CONTENTS
CANedge1 Docs, Release FW 01.06.04
0.4.3 Real-Time-Clock
Manual update
Manually changing the RTC is only needed if the RTC time is completely lost (e.g. after a battery
replacement). The following sequence explains how the RTC can be manually set:
1. Select the manual ´sync´ method and set the current UTC time
2. Power on the device and wait a few seconds to allow the device to read the manually set time
3. Power off the device
4. Change the ´sync´ method to retain current time
0.4. Configuration 19
CANedge1 Docs, Release FW 01.06.04
Item secondaryport.power_schedule.item
From secondaryport.power_schedule.item.from
Power-on FROM time in format HH:MM. Shall be before power-on TO time. E.g. at midnight 00:00
Type Default
string 00:00
To secondaryport.power_schedule.item.to
Power-on TO time in format HH:MM. Shall be after power-on FROM time. E.g. at midday 12:00.
Type Default
string 00:00
Note: Power out scheduling has resolution of 1 min and 1 min tolerance
Note: Power out scheduling uses adjusted local time (as set in the configuration)
Example: Secondary port power is scheduled to be on daily in the interval 00:00-04:00 and
12:00-16:00. Secodary port configuration:
"secondaryport": {
"power_schedule": [
{
"from": "00:00",
"to": "04:00"
(continues on next page)
20 CONTENTS
CANedge1 Docs, Release FW 01.06.04
The power out is turned off when the time changes from 03:59 to 04:00 and 15:59 to 16:00.
0.4.5 CAN
0.4.5.1 General
Configuration explained
0.4.5.2 Physical
0.4. Configuration 21
CANedge1 Docs, Release FW 01.06.04
Configuration explained
Bit-rate configuration
The input clock to the CAN-bus controllers is set to 40MHz (480MHz prescaled by 12).
Bit-rate modes Auto-detect and Bit-rate (simple) support the following list of bit-rates1 :
1 All bit-rate configurations use a sample point (SP) of 80%
22 CONTENTS
CANedge1 Docs, Release FW 01.06.04
In Auto-detect mode, the device will attempt to determine the bit-rate from the list of detectable bit-
rates. Depending on factors such as data patterns, bit-rate deviation etc. it may not always be possible
to detect the bit-rate automatically.
In mode Bit-timing (advanced), the bit-rate timing can be set directly. The following equations can
be used to calculate the bit-timing fields:
480000000
• Input clock: 𝐶𝐿𝐾 = 12 = 40000000 = 40MHz
• Quanta: 𝑄 = 1 + 𝑆𝐸𝐺1 + 𝑆𝐸𝐺2
𝐶𝐿𝐾/𝐵𝑅𝑃
• Bit-rate: 𝐵𝑅 = 𝑄
1+𝑆𝐸𝐺1
• Sample point: 𝑆𝑃 = 100 · 𝑄
Example: Matching bit-timing settings based on different input clock frequency (CLK).
Settings to match (based on a 80MHz input clock):
• Bit-rate: 2M
• Quanta: 40
• SEG1: 29
• SEG2: 10
• Sample point: 75%
Above settings are based on an input clock with frequency:
The CANedge uses a 40MHz input clock. To obtain a bit-rate of 2M with a 40MHz input clock, the
number of quanta is calculated as:
𝐶𝐿𝐾/𝐵𝑅𝑃 40000000/1
𝑄= = = 20
𝐵𝑅 2000000
0.4. Configuration 23
CANedge1 Docs, Release FW 01.06.04
𝑆𝐸𝐺2 = 𝑄 − 𝑆𝐸𝐺1 − 1 = 20 − 14 − 1 = 5
The equivalent bit-timing settings using the 40 MHz input clock of the CANedge becomes:
• BRP: 1
• SEG1: 14
• SEG2: 5
0.4.5.3 Filter
ID filters can.filter.id
Filters are checked sequentially, execution stops with the first matching filter element. Max 128 11-bit
filters and 64 29-bit filters.
Item can.filter.id.item
Name can.filter.id.item.name
Optional filter name.
State can.filter.id.item.state
Disabled filters are ignored.
Type can.filter.id.item.type
24 CONTENTS
CANedge1 Docs, Release FW 01.06.04
ID format can.filter.id.item.id_format
Filter ID format. Filters apply to messages with matching ID format.
Configuration explained
Note: In the following, it is convenient to do some calculations using binary numbers (base 2). However,
the configuration file generally accepts either decimal or hexadecimal numbers.
Filter processing
The filter elements in the list of filters are processed sequentially starting from the first element. Pro-
cessing stops on the first filter match.
Example: A message matches filter element 3. Filter element 4 is not evaluated.
0.4. Configuration 25
CANedge1 Docs, Release FW 01.06.04
Messages matching no filters are rejected as default. Note that the default Configuration File has filters
that accept all incoming CAN messages (both standard/extended CAN IDs).
Filter state
The state of filter elements can be Enable or Disable. Disabled filter elements are ignored, as if they are
not in the list of filters. If there are no enabled filters in the list then all messages are rejected.
By disabling a filter element (instead of deleting the element) it can be easily enabled at a later time.
Filter types
Example: A message matches rejection filter 2. The following filters are not evaluated. The message is
rejected.
Example: A message does not match any filters. The message is rejected.
Filter method
Acceptance and Rejection filters can be defined by range or mask. In either case, both the message type
(standard / extended) and ID are compared to the filter.
With the Range method, the filter defines a range of IDs which are compared to the message ID. Message
IDs within the range (both start and end included) pass the filter.
Example: Standard ID filter with range from = 1, to = 10:
26 CONTENTS
CANedge1 Docs, Release FW 01.06.04
With the Mask method, the filter defines an ID and Mask which are compared to the message ID.
A message passes a mask filter if the following condition is true1 :
To test if the message passes the filter, we apply the filter mask to the message ID as given in (2). The
masked filter and the masked ID are equal - the message passes the filter.
Example: Filter configuration which accepts two message IDs:
• 200010 = 111110100002
• 200110 = 111110100012
Note that the two binary numbers are identical except for the rightmost bit. To design a filter which
accepts both IDs, we can use the mask field to mask out the rightmost bit - such that it is not considered
when the filter is applied. In (1) the mask is set such that the rightmost bit is not considered (indicated
by red color).
To test if the messages pass the filter, we apply the mask to the message ID 111110100012 as given in
(2). The masked filter and the masked ID are equal - the message passes the filter. Note that both
111110100002 and 111110100012 passes the filter, as the rightmost bit is not considered by the filter (the
rightmost bit is masked out).
Example: J1939 - filter configuration which accepts PGN 61444 (EEC1) messages.
J1939 message frames use 29-bit CAN-IDs. The Parameter Group Number (PGN) is defined by 18 of
the 29 bits. The remaining 11 bits define the priority and source address of the message. It is often
useful to configure a filter to accept a specific PGN regardless of the source address and the priority -
this can be done using the filter mask (to ignore the source and priority).
Below, the left red bits represent the 3-bit priority, the green bits the 18-bit PGN and the right red bits
the 8-bit source address of the 29-bit CAN-ID.
000111111111111111111000000002 = 3FFFF0016
1 & is used as the bitwise AND operation
0.4. Configuration 27
CANedge1 Docs, Release FW 01.06.04
Message ID bits in positions with zero bits in the filter mask are ignored. By using 3FFFF0016 as filter
mask, the source and priority are ignored.
To specifically accept PGN 61444 F00416 messages, the message ID is set to F0040016 - note the the
final 8-bit 0016 represents the source address which is ignored by the filter mask (these bits can be set
to any value).
Filter mask 3FFFF0016 can be used for all J1939 PGN messages. To accept specific PGNs, the message
ID is adjusted. To accept one specific PGN (as in the example above), the message ID is set to the
specific PGN with 0016 appended to represent the ignored source address field.
Below examples demonstrate how filters can be combined into a list of filters.
Example: The filter list is setup to accept standard messages with even IDs in range 50010 − 100010
(500, 502, . . . 998, 1000):
The following two filters are used to construct the wanted filter mechanism:
• Rejection filter which rejects all odd message IDs
• Acceptance filter which accepts all message IDs in range 50010 − 100010
The rejection filter is setup to reject all odd messages by using Mask filtering. The filter is
setup with:
• Filter ID: 110 = 000000000012
• Filter Mask: 110 = 000000000012
Above rejection filter rejects all messages with the rightmost bit set (all odd IDs).
The acceptance filter is setup to accept all messages in range 50010 − 100010 by using Range
filtering. The filter is setup with:
• Filter from: 50010
• Filter to: 100010
The filter list is constructed with the rejection filter first, followed by the acceptance filter.
Note that messages are first processed by the rejection filter (rejects all odd messages), then
proccessed by the acceptance filter (accepts all message in range). If none of the filters
pass/match, the default behavior is to reject the message. It is in this case important that
the rejection filter is placed before the acceptance filter in the list (processing stops on first
match).
Filter list test table:
28 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Message Prescaling
Message prescaling can be used to decrease the number of logged messages for a given message ID.
Prescaling is applied to the messages accepted by the associated filter. The list of filters can be assigned
a mixture of prescaler types.
Applying filters can dramatically reduce log file size, resulting in prolonged offline logging and reduced
data transfer time and size.
The prescaling type can be set to:
• None: Disables prescaling
• Count: Prescales based on the number of messages
• Time: Prescales based on message period time
• Data: Prescales based on changes in the message data payload
The first message with a given ID is always accepted regardless of prescaling type.
Note: A maximum of 100 unique message IDs can be prescaled for each CAN-bus channel (the first
100 IDs received by the device). Additional unique IDs are not prescaled
Count
Count prescaling reduces the number of messages with a specific ID by a constant factor (prescaling
value). A prescaling value of 2 accepts every 2nd message (with a specific ID), a value of 3 every 3rd
and so on up to 2562 .
Count prescaling applied to ID 60010 with a scaling value of 3
Time
Time prescaling sets a lower limit on time interval (period time) of a specific message ID. This is done
by rejecting messages until at least the prescaler time has elapsed3 . The prescaler timer is reset each
time a message is accepted. The prescaling value is set in milliseconds4 with a valid range 1-4194304
(0x400000).
This prescaler type is e.g. useful if a slowly changing signal (low frequency signal content) is broadcasted
on the CAN-bus at a high frequency5 .
Example: A slowly changing temperature measurement broadcasted every 10 ms (100Hz). Prescaled to
a minimum time interval of 100ms (prescaler value set to 100).
2 A scaling factor of 1 effectively disables prescaling
3 Note that messages are not resampled to a specific fixed period time
4 It is not possible to do sub-millisecond time prescaling
5 Higher frequency than needed to get a good representation of the signal content
0.4. Configuration 29
CANedge1 Docs, Release FW 01.06.04
Example: Time prescaling applied to ID 70010 with a time interval of 1000ms selected.
Data
Data prescaling can be used to only accept messages when the data payload changes. A mask can be
set to only consider changes in one or more specific data bytes. The mask works on a byte level. The
mask is entered in hex up to 8 bytes long (16 hex characters). Each byte contains 8 bits, allowing for
the mask to be applied to any of the maximum 64 data bytes (CAN FD).
This prescaler type is useful if only changes in data or parts of the data are to be logged.
Examples of data masks:
• "": A empty mask triggers on any data change (equivalent to mask value FFFFFFFFFFFFFFFF)
• 1: Triggers on changes to the first data byte (binary 1)
• 2: Triggers on changes to the second data byte (binary 10)
• 3: Triggers on changes to the first or second data byte (binary 11)
• 9: Triggers on changes to the first or fourth data byte (binary 1001)
• FF: Triggers on changes to any of the first 8 data bytes (binary 11111111)
• 100: Triggers on changes to the 9th data byte (binary 100000000)
If the data payload contains more data bytes than entered in the mask, then changes to the additional
bytes are ignored by the prescaler.
30 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Warning: Data prescaling assumes that a message with a specific ID always carries the same
number of data bytes
Example: A discretely changing signal is broadcasted every 100 ms (10Hz). A data prescaler is used
such that only changes in the signal are logged.
Example: Data prescaling applied to ID 80010 with empty mask (all changes considered). D0-D3 is a
4-byte payload (with D0 the first data byte).
ID (DEC) D0 D1 D2 D3 Result
80010 00 11 22 33 Accept
80010 00 11 22 33 Reject
80010 00 BB 22 33 Accept
80010 AA BB 22 33 Accept
80010 AA BB 22 DD Accept
80010 AA BB 22 DD Reject
Example: Data prescaling applied to ID 80010 with mask 1 (considering only changes to the 1st data
byte). D0-D3 is a 4-byte payload (with D0 the first data byte).
ID (DEC) D0 D1 D2 D3 Result
80010 00 11 22 33 Accept
80010 00 11 22 33 Reject
80010 00 BB 22 33 Reject
80010 AA BB 22 33 Accept
80010 AA BB 22 DD Reject
80010 AA BB 22 DD Reject
Example: Data prescaling applied to ID 80010 with mask 8 (considering only changes to the 4th data
byte). D0-D3 is a 4-byte payload (with D0 the first data byte).
ID (DEC) D0 D1 D2 D3 Result
80010 00 11 22 33 Accept
80010 00 11 22 33 Reject
80010 00 BB 22 33 Reject
80010 AA BB 22 33 Reject
80010 AA BB 22 DD Accept
80010 AA BB 22 DD Reject
0.4. Configuration 31
CANedge1 Docs, Release FW 01.06.04
Example: Data prescaling applied to ID 80010 with mask 9 (considering only changes to the 1st or 4th
data byte). D0-D3 is a 4-byte payload (with D0 the first data byte).
ID (DEC) D0 D1 D2 D3 Result
80010 00 11 22 33 Accept
80010 00 11 22 33 Reject
80010 00 BB 22 33 Reject
80010 AA BB 22 33 Accept
80010 AA BB 22 DD Accept
80010 AA BB 22 DD Reject
0.4.5.4 Transmit
Item can.transmit.item
Name can.transmit.item.name
Optional transmit message name.
State can.transmit.item.state
Disabled transmit messages are ignored.
ID Format can.transmit.item.id_format
ID format of the transmit message.
32 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Type Default
integer 0
Type
string
Configuration explained
If multiple transmit messages are defined, it is recommended to spread them in time by using delay. It
may not be possible to transmit all messages if they are to be transmitted simultaneously.
0.4. Configuration 33
CANedge1 Docs, Release FW 01.06.04
0.4.5.5 Heartbeat
ID Format can.heartbeat.id_format
ID format of heartbeat message.
ID (hex) can.heartbeat.id
ID of heartbeat message in hex. Example: 1FF.
Type Default
string 00435353
Configuration explained
Note: The heartbeat feature requires a CAN-bus physical mode supporting transmissions
Payload format
The device can transmit a 1-second periodic heartbeat signal. The signal payload contains logging state
(enabled/disabled), the device time and space left on the memory card in MB.
The interpretation of the 8-byte data payload of the heartbeat signal is given below:
34 CONTENTS
CANedge1 Docs, Release FW 01.06.04
– 0: RX disabled, TX disabled
– 1: RX enabled, TX disabled
– 2: RX disabled, TX enabled
– 3: RX enabled, TX enabled
Heartbeat with payload: AA 03 5D 78 FB 8B 1D 93
• Fixed: 0xAA
• State: RX and TX enabled
• Epoch time: 5D78FB8B16 = 156820980310 -> 11/09/2019 13:50:03
• Space left: 1D9316 = 757110 MB
Heartbeat with payload: AA 00 5D 78 FB 8B 00 00
• Fixed: 0xAA
• State: RX and TX disabled
• Epoch time: 5D78FB8B16 = 156820980310 -> 11/09/2019 13:50:03
• Space left: 000016 = 010 MB
0.4.5.6 Control
0.4. Configuration 35
CANedge1 Docs, Release FW 01.06.04
ID Format can.control.start.id_format
ID format of the control message.
Type Default
string 00435354
Type Default
string 1FFFFFFF
Type Default
string 00435354
36 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Type Default
string 1FFFFFFF
Configuration explained
Note: The control signal can only be used if accepted by the CAN-bus filter
Note: The control signal data byte fields must match in length vs. the message data
0.4. Configuration 37
CANedge1 Docs, Release FW 01.06.04
Warning: The start/stop ranges shall be mutual exclusive (cannot both occur at the same time)
Examples
Example: Start / stop on OBD speed response message. The OBD CAN-bus is connected to two
CAN-bus channels. Channel 1 is configured to start / stop message reception based on the OBD speed
response. Channel 2 does not use the control signal feature.
Start trigger:
• High: 03410DFF0000000016 ⇒ 255 km/h
• Low: 03410D0A0000000016 ⇒ 10 km/h
Stop trigger:
• High: 03410D050000000016 ⇒ 5 km/h
• Low: 03410D000000000016 ⇒ 0 km/h
"start": {
"id_format": 0,
"id": "7E8",
"id_mask": "7FF",
"data_mask": "FFFFFFFF00000000",
"data_high": "03410DFF00000000",
"data_low": "03410D0A00000000"
},
"stop": {
"id_format": 0,
"id": "7E8",
"id_mask": "7FF",
"data_mask": "FFFFFFFF00000000",
"data_high": "03410D0500000000",
"data_low": "03410D0000000000"
}
Below plot illustrates that Channel 1 message reception (and logging) starts when the speed signal goes
above 10 km/h and stops below 5 km/h. Channel 2 is shown for reference (no control signal).
38 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Example: Start / stop on simple discrete value. In this example the start / stop is controlled via a single
byte.
Start trigger:
• High: 0116 ⇒ on
• Low: 0116 ⇒ on
Stop trigger:
• High: 0016 ⇒ off
• Low: 0016 ⇒ off
"start": {
"id_format": 1,
"id": "00435354",
"id_mask": "1FFFFFFF",
"data_mask": "FF",
"data_high": "01",
"data_low": "01"
},
"stop": {
"id_format": 1,
"id": "00435354",
"id_mask": "1FFFFFFF",
"data_mask": "FF",
"data_high": "00",
"data_low": "00"
}
Example: Start / stop on J1939 broadcast speed. This can be used to start logging when a vehicle is
moving.
Start trigger:
• High: 000007000000000016 ⇒ 7 km/h
• Low: 000003000000000016 ⇒ 3 km/h
Stop trigger:
• High: 000001000000000016 ⇒ 1 km/h
0.4. Configuration 39
CANedge1 Docs, Release FW 01.06.04
"control": {
"start": {
"id_format": 1,
"id": "CFEF100",
"id_mask": "3FFFF00",
"data_mask": "0000FF0000000000",
"data_high": "0000070000000000",
"data_low": "0000030000000000"
},
"stop": {
"id_format": 1,
"id": "CFEF100",
"id_mask": "3FFFF00",
"data_mask": "0000FF0000000000",
"data_high": "0000010000000000",
"data_low": "0000000000000000"
}
}
The CANedge can detect and log errors on the CAN-bus if enabled in Logging configuration. The
detected errors are categorized as follows:
• Bit-stuffing error
• Form error
• CRC error
• Bit error
• Acknowledge error
In general, once a node on the CAN-bus has detected an error, it will raise an error frame internally.
Depending on the configuration and state of the node, this error frame may also be visible on the
CAN-bus. The node can be in one of three states:
1. Active
40 CONTENTS
CANedge1 Docs, Release FW 01.06.04
2. Passive
3. Off
The transitions between the states depends on the number of detected errors in a sliding window. In
the active state, the node is allowed to emit error frames onto the CAN-bus, while any detected error
frames are kept internal in the passive state. In the off state the node is no longer receiving from or
transmitting to the CAN-bus.
Note: The CANedge will return to the active state in case it ends in the off state.
With reference to the mode field, the following table of behavior is constructed for the CANedge:
The CANedge will log all errors it detects if error logging is enabled.
Note: The CANedge is not able to capture any additional CAN information once an error condition
has been detected. As such, all logged error frames have no information about the associated CAN frame
ID/flags/payload.
Bit-stuffing Errors
Under normal operation, no more than 5 consecutive bits of a frame may have the same value. If required,
the sending node will insert additional stuffing bits to avoid this scenario. If the node detects a violation
of this, a bit-stuffing error is raised.
All error frames emitted onto the CAN-bus are violations of the bit-stuffing rules. Thus, the true error
need not be a bit-stuffing error, but since another node has detected an error, it will signal this to the
rest of the bus by making the frame invalid.
Depending on whether the CANedge has detected the same error as the other node or not, a more
informative error message may be logged. See example under acknowledge errors.
Form Errors
Form errors denote that the node has detected a missing or an invalid value in a fixed part of the CAN
frame.
CRC Errors
If the node has calculated a different value for the cyclic redundancy check than the one embedded in
the frame on the CAN-bus, a CRC error will be raised.
0.4. Configuration 41
CANedge1 Docs, Release FW 01.06.04
Bit Errors
When a node is transmitting a frame onto the CAN-bus, it can simultaneously sense what the actual
value on the bus is. If the value differs from the expected value, a bit error is raised.
Acknowledge Errors
When the CANedge has transmitted a frame onto the CAN-bus, it expects another node on the bus to
acknowledge the reception by filling a part of the frame. If no acknowledge is detected, the device raises
an acknowledge error.
Example: If a node transmits a frame onto the bus and no other node acknowledges this via the ACK
segment of the frame, that node will detect a missing acknowledge error. As a response, it will emit an
error frame onto the bus, which causes the other nodes to detect a bit-stuffing error.
If the transmitting node had a transmission error counter of 0 before the transmission attempt, 16
error frames can be logged in rapid succession, as the node attempts to re-transmit the frame. After
16 attempts, the internal error counter of the transmitting node has reached 8 * 16 = 128, and the
node enters the passive error state. The transmitting node is still detecting an error, as no other node
acknowledges the transmitted frames, but it is no longer allowed to transmit active/dominant error bits.
As the original frame no longer is being destroyed by an error frame from the sender, the other nodes
on the bus will now log the intended message, even though it is in an erroneous state due to the lack of
acknowledgement.
0.4.6 LIN
0.4.6.1 Physical
Bit-rate lin.phy.properties.bit_rate
Configuration explained
42 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Configuration explained
Note: LIN frames satisfying the default expected configuration do not need to be inserted in the frame
table.
0.4.6.3 Transmit
0.4. Configuration 43
CANedge1 Docs, Release FW 01.06.04
State lin.transmit.items.state
Disabled transmit rules are ignored.
Configuration explained
Publisher mode
The number of bytes entered in the data field determines the interpretation of the transmission frame:
The transmit is a SUBSCRIBE frame, meaning that a Subscriber on the bus is expected to provide the
data payload (satisfying the frame table).
The transmit is a PUBLISH frame, meaning that the CANedge provides the data payload.
In Publisher mode, the CANedge schedules the frame transmissions configured by the period and delay.
Warning: Be aware that transmit uses period and delay to schedule transmissions. This is a
different concept than what is used by LDF files.
44 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Subscriber mode
In Subscriber mode, the CANedge awaits a SUBSCRIBE frame with a matching ID from the bus
Publisher node. The number of bytes provided shall satisfy the frame table.
Warning: If the transmit list contains multiple frames using the same ID, then only the first entry
is used.
0.4.6.4 Topology
A LIN-bus consists of a Publisher node and one or more Subscriber nodes. The Publisher controls
scheduling of messages on the LIN-bus, and the Subscriber nodes react to the emitted messages.
A message on the LIN-bus can either be a PUBLISH message, in which case Publisher node transmits
both the message ID and data, or a SUBSCRIBE message, where the Publisher node only emits the
message ID and one of the Subscriber nodes fill the data section of the message.
The configuration of the LIN network shall ensure that each message has one producer, such that each
PUBLISH message is filled with data by the Publisher, while each SUBSCRIBE message has a node
connected to the network which can provide the data for the message.
An example of the bus topology with the CANedge connected as a subscriber is illustrated below:
The CANedge is primarily intended to act as a Subscriber on the LIN-bus. In lieu of a Publisher node,
the CANedge can be configured to emulate a simple Publisher node. In this case, the scheduling of
messages on the network has to be done through the transmit configuration for the interface. Since only
static data can be entered in the configuration, the simple Publisher node emulation cannot perform
dynamic operations based on the LIN-bus activity.
Unless configured otherwise, the device assumes that the length of the LIN frame data payload is always
defined by the message ID (bits 5 and 6 of the identifier), as defined in the table below:
0.4.6.6 Checksum
Supports LIN 1.3 classic checksum and LIN 2.0 enhanced checksum format. By default, all frames except
ID 0x3C and 0x3D will use enhanced checksum. This can be overridden on a frame by frame basis in
0.4. Configuration 45
CANedge1 Docs, Release FW 01.06.04
The CANedge can detect and log errors on the LIN-bus if enabled in Logging configuration. The detected
errors are categorized as follows:
• Checksum errors
• Receive errors
• Synchronization errors
• Transmission errors
The amount of associated data depends on the type of error. E.g. synchronization errors cannot con-
tain information about the message ID, as it happens before that field is transmitted, and checksum
information is not embedded in other cases than the checksum error case.
Checksum Errors
Checksum errors denotes that the node has calculated a different checksum than the one embedded in
the LIN message on the bus. This can be an indicator of wrong configuration for the frame ID in the
CANedge frame table.
Example: In case no information is known about the LIN bus in advance, the default frame table can
be used with error logging enabled to help reverse engineer the actual frame table. Any message IDs
deviating from the standard table (and present on the LIN-bus) will get a logged entry. These IDs can
then be reconfigured in the CANedge frame table, in an attempt to find the correct settings.
Note that it can be necessary to change both message length and checksum model in order to get a valid
configuration.
Receive Errors
Receive errors are logged when a fixed part of the LIN message is not as expected, or that the node
detects a mismatch between the value being transmitted and the value sensed on the LIN-bus.
Synchronization Errors
Synchronization errors indicates an invalid synchronization field in the start of the LIN message, or that
there is a too large deviation between the configured bitrate for the node and the detected bitrate from
the synchronization field.
Transmission Errors
Transmission errors can only occur for IDs registered as SUBSCRIBER messages. If there is no node on
the LIN-bus responding to a SUBSCRIBER message, a transmission error is logged.
46 CONTENTS
CANedge1 Docs, Release FW 01.06.04
A Device File (device.json) is located in the root of the SD card with info on the device. The content
of the Device File is updated when the device powers on.
{
"id": "4F07A3C3",
"type": "0000001D",
"kpub": "l27UKi4ehjpxxEdmRstBk5UaqSGQYnfylzUNs9EOoJfDodvr/
˓→PqNnMrz61IxzrBfFTmuhw2K2cJ4q60iFiYM8w==",
"fw_ver": "01.01.02",
"hw_ver": "00.01",
"cfg_ver": "01.01",
"cfg_name": "config-01.01.json",
"cfg_crc32": "9ECC0C10",
"sch_name": "schema-01.01.json",
"log_meta": "Truck1",
"space_used_mb": "36/7572",
"sd_info": "000353445341303847801349A26A0153",
"sd_used_lifespan": "2"
}
Fields explained
This page documents the log files stored on the device SD-card.
0.6.1 Organization
File extension
The default extension is MF4. With compression/encryption enabled the extension changes:
With both compression and encryption enabled, the data is first compressed, then encrypted.
For details on compression and encryption, see the Logging Configuration section.
Path example
0.6.2 MDF
The CANedge logs data in the industry standard MDF4 format, standardized by ASAM. MDF4 is a
binary format which allows compact storage of huge amounts of measurement data. It is specifically
designed for bus frame logging across e.g. CAN-bus, LIN-bus and Ethernet. MDF4 is widely adopted
by the industry and supported by many existing tools.
Specifically, the CANedge uses MDF version 4.11 (file extension: *.MF4).
1 The session number is also increased by one if the number of splits in one session exceeds 256
48 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Timestamps
The CANedge stores log files as unfinalized and unsorted to enable power safety. Finalization3 and
sorting4 can be done as a post-processing step to speed up work with the files.
Note: It may be necessary to finalize/sort a log file before it is loaded into some MDF tools
Additional metadata about the device is captured in the files, including many of the fields exposed in
the device file.
• serial number: Device unique ID number
• device type: Device type (CANedge1 = 0000001D, CANedge2 = 0000001F)
• firmware version: Firmware version
• hardware version: Hardware version
• config crc32 checksum: Configuration File checksum
• storage total: The SD-card total space in MB
• storage free: The SD-card free space in MB
• storage id: The SD-card identifier
• session: File session number
• split: File split number
• comment: Configurable device string (e.g. application name)
Data from the CAN bus are stored in three distinct channels in the MDF log files:
• Data in CAN_DataFrame
• Remote requests in CAN_RemoteFrame
• Errors in CAN_ErrorFrame
Some fields are common among all the channels while others are unique to a specific channel, as visualized
by the table below.
3 The MDF file header includes information on how to finalize the MDF file before use
4 Sorting refers to an organization of the log records which enable fast indexing. It is not related to sorting of timestamps.
For all messages in CAN_RemoteFrame, it is implied that the RTR flag is set.
If enabled, detected errors on the CAN bus can be logged alongside the other entries. These are devoid
of data, and only contain an error code denoting the type of error detected:
0. Unknown error
1. Bit error
2. Form error
3. Bit-stuffing error
4. CRC error
5. Missing acknowledge for a message sent by the device
For more information on CAN-bus errors, see CAN configuration.
Data from the LIN bus are stored in five distinct channels in the MDF log files:
• Checksum errors in LIN_ChecksumError
• Data in LIN_Frame
• Receive errors in LIN_ReceiveError
• Synchronization errors in LIN_SynchronizationError
• Transmission errors in LIN_TransmissionError
Some fields are common among all the channels while others are unique to a specific channel, as visualized
by the table below. It is possible, though unlikely, for the same LIN frame to trigger multiple errors.
50 CONTENTS
CANedge1 Docs, Release FW 01.06.04
For checksum errors, the logged checksum is the one received on the LIN bus. The non-matching
calculated checksum can be derived from the logged data and checksum model.
For more information on LIN-bus errors, see LIN configuration.
While plain MDF files are saved as MF4, encryption and/or compression uses a custom header to identify
and store relevant information for the files. All file headers consist of a generic 20 byte header, followed
by any specialized fields.
The generic header starts with an identifying sequence of the ASCII code for Generic File5 . Following
are information of the versioning scheme as major and minor numbers, file type and file sub-type. Finally,
the device ID is stored. All numbers stored in the generic header are unsigned and big endian formatted.
If required, a generic file may contain a footer as well, as specified by the format.
Encrypted files will have a file type of 0x11. The device supports AES encryption in Galois Counter
Mode (GCM), with a file sub-type of 0x01. The current version of the format is 0x00 for both major
and minor. The encrypted file header stores three additional fields:
• The 12 bytes long initialization vector
• The number of hashing iterations for the key, stored as a 32 bit unsigned number in big endian
format
• 16 bytes of salt data for the hashing of the key
5 Generic File maps to 12 bytes of ASCII, with no zero termination of the string.
The encrypted file contains an additional footer. This stores the 16 byte tag generated when AES runs
in GCM mode. When decrypting, this tag should be checked to ensure the validity of the decrypted
data. There is no alignment requirement for the footer.
Compressed file will have a file type of 0x22. At present, the only supported compression format is
heatshrink based. This is denoted by a file sub-type of 0x01. The current version of the format is 0x00
for both major and minor. The additional header data are two unsigned 32 bit numbers: Lookahead
and window sizes.
If the file is both encrypted and compressed, it has been processed in two steps/streams. First the data
is piped through a compression step, next it is piped through an encryption step.
Various software/API tools for the CANedge enable easy decryption/decompression of log files.
52 CONTENTS
CANedge1 Docs, Release FW 01.06.04
0.7.1 Network
The CANedge supports wireless connectivity over WiFi. The WiFi specifications are given here.
0.7.1.1 WiFi
Warning: Make sure that firewalls allow S3 (e.g. port 9000) and NTP (port 123) traffic.
A local network topology is illustrated below. With the local topology, the device does not require
internet access as the server is located in the same local network1 .
A remote network topology is illustrated below. With the remote topology, the device and server are
located at two separate networks. Internet connection is used to connect the two local networks and
allow the device to connect to the server.
0.7.2 Server
1 Make sure to use a local NTP server if RTC auto sync is enabled
Table of Contents
• Server
– Server types
∗ Local
∗ Dedicated
∗ Cloud
– Transfer throughput
Local
Dedicated
Like with the local server setup, the S3 compatible server can be installed on a dedicated server.
Typical use cases:
• Devices connect to the server over an external network (WAN)
• It is preferred to store data on a company controlled server
• Users wish to avoid signing cloud service subscription plans
Cloud
The S3 can be run in the cloud with Amazon (AWS) or any other S3 compatible provider.
Typical use cases:
• It is preferred to outsource server hosting
• Users wish to combine data storage with other services (e.g. cloud computing)
54 CONTENTS
CANedge1 Docs, Release FW 01.06.04
If multiple servers are available (such as regional cloud server endpoints), make sure to select a server
with low device-to-server latency.
This section covers how the CANedge interfaces to an S3 server and how to manage devices.
0.7.3.1 Buckets
Each CANedge device is associated with a specific S3 bucket name. The device will (depending on the
configuration) e.g. push files and look for configuration updates within that specific bucket.
Note: The device is not able to create a bucket. Buckets must be created on the server before the
device is connected
0.7.3.2 Device ID
Each CANedge device carries a globally unique 4-byte device ID (e.g. A1B2C3D4). The device ID is used
in the communication with S3 so that multiple devices connected to the same bucket do not conflict.
The root path of a given device is given by the Bucket name and the unique ID:
[BUCKET_NAME]/[DEVICE_ID]
The device uploads closed log files to the S3 server. When a log file has been successfully uploaded, it is
deleted on the SD-card. Log files pushed to the server are named according to the following pattern:
[BUCKET_NAME]/[DEVICE_ID]/[SESSION_NUMBER]/[SPLIT_NUMBER]-[EPOCH_TIME].[EXT]
• EPOCH_TIME: Epoch upload time in HEX (e.g. 2020/01/01 00:00:00 becomes 5E0BE100)
• EXT: one of the possible file extensions supported by the device.
Note: Upload of many small log files has a higher network overhead and will result in lower throughput.
Select a higher log file split_size (refer the Logging Configuration Section) for better throughput if the
network stability allows it. For reliable networks, aim for at least 10 MB files.
Note: If the server-to-device confirmation that a log file has been uploaded successfully is lost (e.g.
due to network problems), the device will upload the log file again. This can result in multiple identical
log files with different EPOCH_TIME timestamps. Copies of the same log file (same SESSION_NUMBER and
SPLIT_NUMBER) should be ignored or removed.
Note: If log file time splitting is used (rather than file size based splitting), consider to use the
split_time_offset to avoid that all devices upload new log files to the server at the same time. For
more information, refer the Logging Configuration Section.
Meta data
S3 allows additional meta data to be attached to each file. The device adds below S3 meta data:
• X-Amz-Meta-Hw: The device hardware revision
• X-Amz-Meta-Fw: The device firmware revision
• X-Amz-Meta-Ssid: The WiFi SSID which was used to upload the file/object
• X-Amz-Meta-Timestamp: The last-modified local time timestamp of the file/object in format
YYYYMMDDTHHMMSS
• X-Amz-Meta-Put-Index: S3 PUT operation counter
The device can be configured to periodically push a Heartbeat object (Device File) to the server:
[BUCKET_NAME]/[DEVICE_ID]/device.json
The device configuration can be managed directly from the S3 server. Both the Rule Schema and the
Configuration File are synchronised with the S3 Server if OTA (over-the-air) is enabled.
Rule Schema
The Rule Schema is automatically uploaded once for each power cycle. This ensures that the server always
knows the configuration rules of a specific device. If the firmware is updated, the device automatically
uploads the Rule Schema matching the new firmware.
The Rule Schema is placed in the device root path and named as below:
[BUCKET_NAME]/[DEVICE_ID]/schema-01.02.json
Configuration File
The device periodically checks the S3 Bucket for updates to the Configuration File. If the Configuraton
File is updated on the server it is automatically downloaded and applied by the device (causing a power
cycle). If no Configuration File is located on the server it is automatically uploaded by the device.
The Configuration File is placed in the device root path and named as below:
[BUCKET_NAME]/[DEVICE_ID]/config-01.02.json
Warning: Configuration changes made via the SD card will be overwritten if a Configuration File
is on the server. To apply local changes, first remove the server Configuration File
The device periodically checks the S3 bucket for firmware updates if OTA (over-the-air) is enabled.
Updating firmware over-the-air works similarly to updating firmware via the SD card. The Firmware
File is placed in the device S3 root path and named firmware.bin:
[BUCKET_NAME]/[DEVICE_ID]/firmware.bin
If a valid Firmware File is added to this path, the device downloads and stores it on the SD. If the new
firmware is a MAJOR or MINOR upgrade, an updated Configuration File must also be provided.
56 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Note: Upgrading to a new MAJOR or MINOR version requires an updated and compatible Configu-
ration File. If this is not found, the update is aborted
The device periodically checks S3 for server certificate updates if OTA (over-the-air) is enabled.
Updating server certificates over-the-air works similarly to Local installation of certificate(s). The Server
Certificate Bundle is placed in the S3 device root path and named certs_server.p7b:
[BUCKET_NAME]/[DEVICE_ID]/certs_server.p7b
If a valid Server Certificate Bundle file is added to this path, the device downloads and stores it on the
SD and reboots. Refer to Prepare certificate(s) on how to prepare a Server Certificate Bundle.
Warning: When updating the Server Certificate Bundle over-the-air, special care must be taken to
ensure that the device can access a server both before and after the update. It is recommended to
always include both the current and new certificates in the bundle while any transition is performed.
Below provides recommended Server Certificate Bundle update sequences. Refer to Device file for infor-
mation on how to verify loaded certificates (used in the sequences below).
Replace a soon-to-expire-certificate
1. Generate a Server Certificate Bundle (certs_server.p7b) with both certificate(s) (the soon-to-
expire and the new).
2. Upload the Server Certificate Bundle to the S3 server
3. Wait for the device file to show that both certificates have been loaded
4. Generate a new Server Certificate Bundle without the soon-to-expire certificate and repeat step 2
and 3.
Warning: Above sequence assumes that both certificates are valid during the process.
1. Generate a Server Certificate Bundle (certs_server.p7b) with the current and new certificate(s)
2. Upload the Server Certificate Bundle to both the current and new S3 servers
3. Wait for the device file to show that both certificates have been loaded
4. Upload the new configuration file to both the current server with the updated server information
(pointen to the new server)
5. Wait for the device to connect to the new server (monitor either if the configuration file or device.
json is uploaded)
6. Generate a Server Certificate Bundle (certs_server.p7b) with only the new certificate(s)
7. Upload the Server Certificate Bundle to new S3 server
8. Wait for the device file to show that only the new bundle has been loaded
0.7.4 Security
This page describes how to create a secure connection between the CANedge and the S3 server.
The following describes three Server Security Modes. It is recommended to start using the Low Security
Mode and migrate to the Medium Security Mode or High Security Mode before the system goes live.
Medium Security Mode and High Security Mode use HTTPS (Transport Layer Security, TLS v1.2).
Below is an overview of the security modes:
58 CONTENTS
CANedge1 Docs, Release FW 01.06.04
API credentials
The device uses the server S3 credentials (AccessKey and SecretKey) to calculate an authentication
signature for each request. Upon reception, the server verifies the signature (see the S3 REST API for
details). Only devices with a valid AccessKey and SecretKey pair can gain access to the S3 storage.
Warning: The AccessKey and SecretKey pair is shared amongst all nodes in the network
Warning: Data transmissions between the device and server are in plain text
Installation requirements
Devices are pre-configured with the server S3 API credentials (AccessKey and SecretKey).
API credentials
Transport security
HTTPS (TLS) is used to encrypt data between the device and the server. The device supports a limited
set of ciphers for communicating with the remote server.
HTTPS (TLS) is used to authenticate the server certificate. This ensures that devices only allow con-
nections to trusted servers.
Server certificate authentication sequence:
Installation requirements
Same as Low Security Mode. Additionally, devices are pre-loaded with the CA certificate used to issue
the server certificate - see the installation details further below.
0.7.4.2 TLS/HTTPS
The CANedge uses TLS v1.2 for secure communication12 , providing the following mechanisms:
• Encryption of data transmissions
• Server identity authentication (using certificates)
• Device identity authentication (using certificates)
The CANedge supports the following ciphers for handshaking and encrypting the communication with
the remote server:
1
The device is not compatible with servers that only support DSA certificates.
2
512, 1024, 2048 bit key sizers are supported. 2048 bit key size is recommended, see https://knowledge.digicert.com/
generalinformation/INFO1684.html
60 CONTENTS
CANedge1 Docs, Release FW 01.06.04
These are divided into 3 groups, with each group containing a larger set of supported ciphers. Connections
will initially be attempted with only group 1. In case the connection attempt fails, the CANedge will
attempt with the next group, until only group 3 will be used for connections.
TLS uses a chain of certificates for establishing trust. At the top of the chain is the root certificate
authority (CA). At the button is the user (application) certificate. In this specific case, the user certificate
is used to identify either the server or the client (device).
In order to trust the user certificate, one of the certificates above it in the trust chain must be trusted.
Warning: Be aware that certificates have an expiration date. An expired certificate is not trusted
This section explains how to enable TLS/HTTPS server identity authentication on the CANedge.
When server identity authentication is used (Medium Security Mode and High Security Mode), the server
must provide a trusted certificate proving its identity in order for the CANedge to accept the connection.
The server certificate is trusted if the device is configured to trust one of the certificates above it in the
trust chain. Self-signed certificates are used directly, as these do not form a trust chain.
Prepare certificate(s)
Trusted certificates are stored in a single file (/certs_server.p7b) on the device. The flow chart below
shows how to prepare the certificate bundle depending on the number of certificates to install:
62 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Prepare multiple certificates by creating a PKCS#7 bundle containing all the certificates.
Generation of certificate bundles requires a tool, such as the free OpenSSL library4
1. Acquire the trusted certificates (e.g. root certificates) in a supported format
2. Copy all the certificates into a single folder
3. Open a console/command prompt in the folder
4. Run openssl crl2pkcs7 -nocrl -certfile certificate_1.pem -certfile certificate_2.
pem -out certs_server.p7b with the filenames of the certificates replacing certificate_1,
certificate_2 etc. If more than 2 certificates are to be stored, insert additional -certfile
certificate_n clauses5
The certificate bundle can be installed on the device by placing it in the root of the SD-card.
1. Copy the certificate file certs_server.p7b to the root folder of the device SD card
2. Update the device Configuration File to use the https:// endpoint and the correct port
3. Confirm that a hash of the loaded certificate is written to the device.json file on startup
4. Verify that data is uploaded correctly via HTTPS
The certificate bundle can be installed on the device by placing it on S3. For more information refer to
Server certificates over-the-air.
If device identity authentication is used (High Security Mode), the device must provide a trusted certifi-
cate proving its identity in order for the server to accept the connection. The device certificate is trusted
if the server is configured to trust one of the certificates above it in the trust chain.
4 Linux: Check the package manager for the distribution, Mac OS: Homebrew, Windows: Available as a part of pre-
packaged git
5 The input certificate format must be PEM/base64 encoded DER
0.8 Firmware
See the online documentation for the latest Firmware Files and changelog.
Some upgrade steps are mandatory and cannot be skipped. Skipping mandatory update steps can result
in unexpected behavior. The mandatory update sequence is illustrated below.
Warning: Firmware upgrade from 00.07.XX to 01.02.XX includes a one-time boot migration step.
The migration step formats the SD-card resulting in loss of existing log files. The configuration and
certificates are copied back to the card after migration
Note: The firmware upgrade process is power safe (tolerates power failures). However, it is recom-
mended to ensure that the process completes
64 CONTENTS
CANedge1 Docs, Release FW 01.06.04
Upgrading initiates when the device is powered and has been prepared with a new Firmware File:
1. Power is applied to device
2. The green LED comes on
3. If the firmware is valid, the green LED blinks 5 times, else the red LED blinks 5 times
4. The green LED remains solid while the firmware is upgraded (~20 sec)
5. If the upgrade succeeds, the green LED blinks 5 times, else the red LED blinks 5 times
6. The upgraded firmware is started
Note: The green LED comes on later than usual when a firmware upgrade is initiated
Note: The device automatically removes any Firmware Files (firmware.bin or firmware_wifi.bin)
when the upgrade has completed. Firmware Files should never be manually deleted during the upgrade
process.
If a device is updated to a firmware version with a different MAJOR or MINOR number, then the Configu-
ration File also needs updating (i.e. with an updated name and structure matching the new firmware).
The Configuration File is named as described in the Configuration section. A default Configuration File
and corresponding Rule Schema are contained in the firmware download zip.
To modify an existing Configuration File, it can be useful to load the new Rule Schema in an edi-
tor together with the old Configuration File. After making the necessary updates, save the modified
Configuration File with a name matching the new version.
Note: The firmware can be upgraded without providing a new compatible Configuration File. In this
case, the device will create a default Configuration File on the SD card
The firmware can be upgraded by placing a Firmware File on the SD and powering the device:
1. Download the firmware zip (Firmware File + Configuration File + Rule Schema)
2. Place the firmware.bin file on the SD card (root directory)
3. If MAJOR/MINOR is different, update the Configuration File and place it on the SD card root
4. Power on the device and wait for the upgrade process to complete
Note: An incompatible firmware image is deleted and does not break the device
0.8. Firmware 65
CANedge1 Docs, Release FW 01.06.04
66 CONTENTS