Skip to main content
Version: AT3 v1.0

Configuration

This section describes the current AT3 configuration parameters. It relies on the configuration service, which supports different types of parameters (integer, float, ASCII string and byte array).

Note: The configuration service does not support parameter names (parameters only have a numeric identifier) or value ranges. In AT3 it is the application which provides parameter names as well as acceptable ranges for each parameter identifier. If the user tries to set parameter that is out of range, its value is not written.

Parameter identifiers and groups

The configuration parameters are grouped per functionality domain. This eases management, particularly when a configuration change affects a single group: Registered software components against the configuration change can decide if the modified parameter group affects them or not.

The parameter identifiers are unique across the entire configuration. These unique identifiers, called full-identifiers, are built from the group identifier and the local identifier. The local identifier is unique only inside a group. The full-identifier is a 16 bits value built with the most significant byte being the group identifier and the local-identifier as the least significant byte.

Full identifier
Bits[15..8]Bits[7.0]
Group identifierLocal identifier

Note that in the rest of the document the acronym LID refers to the Local Identifier within a group and FID refers to the Full identifier.

There are 4 types of parameters:

  • I: 32-bit signed integer
  • F: 32-bit floating-point number
  • S: String, Null-terminated, ASCII encoded, Max 32 chars including Null
  • B: Byte array, Max 32 Bytes

Currently, the following groups and parameters are defined. Note that the parameter identifiers and names can be subject to change before the first release.

Internal group

This group is specific because it contains the internal system variables that need to be preserved across power down and reset. The system reads from and writes to these variables.

Group 0. Internal

FIDLIDTypeNameMinMaxDfltUComments
0x00000Isys_highest_temperature-100100-1000°CHighest temperature reached
0x00011Isys_lowest_temperature-100100+1000°CLowest temperature reached
0x00022Isys_power_consumption0-0mAhTotal power consumed

To reset the values of the sys_highest_temperature, sys_lowest_temperature or sys_power_consumption, just write the desired values. The internal parameter sys_power_consumption is applicable only to trackers equipped with primary batteries. When replacing these batteries with new batteries, reset the value to 0. For trackers with rechargeable batteries, this parameter should not be modified.

The CLI config erase command has the following behavior:

  • config erase: The internal parameter group is backed up before the flash is erased and then restored afterward.
  • config erase all: When the all keyword is specified, the internal group is not backed up and instead resets to its factory default values.

System core group

The core group contains the configuration parameters of the system.

Group 1. System core

FIDLIDTypeNameMinMaxDfltUComments
0x01000Icore_monitoring_period15-300sDevice monitoring period.
0x01011Icore_status_period0-3600sStatus reporting period.
0x01022Bcore_notif_enable{0..}{ff..}See note-Notification enable bit map class 1 - 4
0x01033Icore_temp_high_threshold-10010060°CHighest temperature detection threshold.
0x01044Icore_temp_low_threshold-1001000°CLowest temperature detection threshold.
0x01055Icore_temp_hysteresis-1001005°CTemperature hysteresis.
0x01066Icore_button1_map0maxSee note-Button 1 mapping.
0x01077Icore_button2_map0max0-Button 2 mapping.
0x01088Icore_buttons_timingSee notemax--Button timers (press, long press, debounce).
0x01099Bcore_led0_map--{0}-LED 0 mapping.
0x010A10Bcore_led1_map--{0}-LED 1 mapping.
0x010B11Bcore_buzzer_map--See note-Buzzer mapping.
0x010C12Icore_almanac_validity7365120daysNumber of days for which the GNSS almanac is considered valid.
0x010D13Icore_almanac_outdated_ratio0100100%Percentage of outdated GNSS almanac entries that trigger network update requests. A value of 100% disables the network requests. Applicable for both LR11xx and MT33xx GNSS devices.
0x010E14Icore_cli_password0max123-User password for CLI access

core_monitoring_period: Period at which the device manager measures and manages the system variables such as the temperature, the battery level and so on. Refer to section device and power management for more details.

core_status_period: Period at which the status notification is sent. This notification plays the role of the LoRa live uplink in AT2. See also section notifications on notification uplinks.

core_notif_enable: This byte-array configures the uplink notification classes and types to be sent via the network. The index of the array represents the class while the value is a bitmap indicating the notification types inside the class to be sent. The value is so coded as the sum of 2^x^, where x are the types. Example, Notifications to be sent:

  • tamper: Class 0, type 3. Value: 2^3^ = 8.
  • SOS: class 1, type 0 and 1 (SOS on, SOS off). Value: 2^0^ + 2^1^ = 3
  • Temperature high: class 2, type 0. Value: 2^0^ = 1

The byte-array will be set to {08,03,02,00,00,00}

Default value: Enable Status, Low battery , Tamper, Temperature (all), Motion start/end notofications: {0B,00,07,03,00,00}

Refer to the section notifications for classes and types.

core_button1_map and core_button2_map: Define the events generated by the button action. Each event type is coded on 4 bits.

Map:

  • Bit 0-3: Event generated on a button press.
  • Bit 4-7: Event generated on a button long press.
  • Bit 8-11: Event generated on a button single click.
  • Bit 12-15: Event generated on a button double click.
  • Bit 16-19: Event generated on a button triple click or above.
  • Bit 20-23: Event generated on a button simple sequence
  • Bit 24-31: RFU

Type of events:

  • 0 -- No action
  • 1 -- Display battery level on the LED
  • 2 -- Start/Stop the SOS
  • 3 -- Request a position on demand (POD)
  • 4 -- Force an uplink system status notification transmission
  • 5 -- Start device
  • 6 -- Stop device
  • 7 -- Start only SOS
  • 8 -- Start BLE advertising for connectivity
  • 9..15 - RFU

Default values:

  • core_button1_map : 0x00000380 (click → position on demand, long press → start BLE advertising)
  • core_button2_map : 0x0

core_buttons_timing: Define the buttons timing parameters. Each part of the bitmap is coded as below.

Map:

  • Bit 0-3: Duration of the button press, measured in half-seconds.
  • Bit 4-7: Extra press duration required to detect a long press, measured in half-seconds.
  • Bit 8-15: Debounce duration for button 1, measured in milliseconds.
  • Bit 16-23: Debounce duration for button 2, measured in milliseconds.
  • Bit 24-31: RFU

Notes

  • The button press and long press timer values are the same for the two buttons.
  • If the event start device is not mapped on either core_button1_map or core_button2_map, the device automatically starts after the startup procedure (skips the off mode)
  • If the event stop device is not mapped on either core_button1_map or core_button2_map, the device cannot move to the off state.
  • core_buttons_timing : the min value for these parameters is set to 0x000A0A21 and the default value is 0x003232A2.
    • Button press: min duration is 0.5 seconds, default duration is 3 seconds
    • Button long press: default delay is 5s, leasing to a total duration of 6s
    • Button debounce on button 1 and 2: min duration is 10ms, default duration is 50ms
  • The duration of the button press cannot be equal or greater than long press.
  • The button simple sequence is a hard coded sequence that could be used without starting the special button sequence (with a 14 second press), the simple sequence is as below:
    • Button press for button press duration (by default 3s)
    • Button release for button press duration (by default 3s)
    • Button press for button press duration (by default 3s)

core_led0_map and core_led1_map: Define the LED patterns to be displayed upon given events.

The byte array is split in 10 slices of 3 bytes each. Each slice configures a pattern for a system event.

The parameter is defined as:

Slice 1

Slice 2

...

Slice 10

Byte 0

Byte 1

Byte 2

Byte 0

Byte 1

Byte 2

 

Byte 0

Byte 1

Byte 2

ext/cls

type

pattern

ext/cls

type

pattern

 

ext/cls

type

pattern

Where

  • ext/cls: Pattern extension and system event class.
    • bit 0..4: System event class. Refer to the Event manager section.
    • bit 5..6: Pattern loop extension (Most significant bits).
    • bit 7: Pattern inversion:
      • 0 -- The pattern is played as defined.
      • 1 -- The pattern is inverted.
  • type: System event type. Refer to the Event manager section.
  • pattern: Pattern configuration:
    • bit 0..3. Pattern identifier:
      • 0 -- None. Not configured
      • 1 -- LED off. Pattern duration: Infinite
      • 2 -- LED on. Pattern duration: 1s.
      • 3 -- Fade in. Pattern duration: 2.5s. Usually used for device power on.
      • 4 -- Fade out. Pattern duration: 2.5s. Usually used for device power off.
      • 5 -- Blink slow: On: 1000ms, Off: 1000ms. Pattern duration: 2s.
      • 6 -- Blink medium: On: 500ms, Off: 500ms. Pattern duration: 1s.
      • 7 -- Blink fast: On: 250 ms. Off: 250 ms. Pattern duration: 0.5s
      • 8 -- Flash slow: On: 100ms, Off: 2s. Pattern duration: 2.1s.
      • 9 -- Flash fast: On: 100ms, Off: 1s. Pattern duration: 1.1s. Usually used for SOS
      • 10 -- Heart: On: 100ms, Off: 250s, On: 100ms, Off: 1s. Pattern duration: 1.35s.
    • bit 4..7. Pattern loop (Least significant bits): Number of times the pattern is displayed. Used in combination with the Pattern loop extension. A combined value of 0 means infinite.

For more details, refer to the section LED.

core_buzzer_map: Define the buzzer melodies to be played upon given events.

The byte array is split in 10 slices of 3 bytes each. Each slice configures a melody for a system event.

The parameter is defined as:

Slice 1

Slice 2

...

Slice 10

Byte 0

Byte 1

Byte 2

Byte 0

Byte 1

Byte 2

 

Byte 0

Byte 1

Byte 2

ext/cls

type

melody

ext/cls

type

melody

 

ext/cls

type

melody

Where

  • ext/cls: Melody extension and system event class.

    • bit 0..4: System event class. Refer to the Event manager section.
    • bit 5..7: Melody count extension (Most significant bits).
  • type: System event type. Refer to the Event manager section.

  • melody: Melody configuration:

    • bit 0..4. Melody identifier:
      • 0 -- None. No configured
      • 1 -- Melody 1: Off. Melody duration: Infinite
      • 2 -- Melody 2
      • 3 -- Melody 3
      • 4 -- Melody 4
    • Bit 5..7. (Least significant bits): Number of times the pattern is displayed. Used in combination with the Pattern count extension. A combined value of 0 means infinite.

Default value:

{09,03,24,09,01,25,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00}

Buzzer plays melody 4 when tracker is running an plays the melody 5 when moving to OFF mode.

Geolocation engine group

This group configures the geolocation engine local processing.

Group 2. GEOLOC

FIDLIDTypeNameMinMaxDfltUComments
0x02000Igeoloc_motion_period1086400300sPosition acquisition period while in motion
0x02011Igeoloc_static_period10864003600sPosition acquisition period while static
0x02022Igeoloc_sos_period108640060sPosition acquisition period while in SOS
0x02033Igeoloc_nb_start0101-Number of acquisitions on motion start event
0x02044Igeoloc_nb_stop0101-Number of acquisitions on motion stop event
0x02055Igeoloc_start_stop_period1086400120sInterval between position acquisitions while acquiring consecutive positions on motion start or stop
0x02066Igeoloc_gnss_hold_on_mode040-Select the GNSS hold on mode. Value:
0: Disabled
1: Always. Hold-on mode always set. Only controlled by the timer.
2: techno: If the gnss is actually used (meaning GNSS techno not skipped).
3: moving: Hold-mode set while moving.
4: techno and moving: if the gnss is actually used and tracker is moving.
In modes 2 and 4, the GNSS is immediately stopped if another location technology (e.g. BLE) has been successful and the GNSS technology is configured to be skipped.
0x02077Igeoloc_gnss_hold_on_timeout0864000sGNSS hold on mode timeout, applicable to all hold-on modes except Disabled. 0 disables the Hold-on mode.
0x02088Igeoloc_profile0_triggers00xFFFFFFFF0x3D-Geolocation event triggers 0
0x02099Igeoloc_profile1_triggers00xFFFFFFFF1-Geolocation event triggers 1
0x020A10Igeoloc_profile2_triggers00xFFFFFFFF1-Geolocation event triggers 2
0x020B11Bgeoloc_gbe_profile0_techno---Technologies to schedule using the basic engine for events in triggers 0
0x020C12Bgeoloc_gbe_profile1_techno----Technologies to schedule using the basic engine for events in triggers 1
0x020D13Bgeoloc_gbe_profile2_techno----Technologies to schedule using the basic engine for events in triggers 2
  • geoloc_profileX_triggers : the set bits select the events that will be handled according to profile0 (i.e. the sequence of technologies defined in geoloc_gbe_profileX_techno):
    • bit 0: geo_trigger_pod: Geoloc triggered on Position-on-demand via downlink or via button.
    • bit 1: geo_trigger_sos: SOS started
    • bit 2: geo_trigger_motion_start: Geoloc triggered on motion start event
      • Require the configuration of geoloc_motion_nb_start and geo_start_stop_period
    • bit 3: geo_trigger_motion_stop: Geoloc triggered on motion stop event
      • Require the configuration of geoloc_motion_nb_stop and geo_start_stop_period
    • bit 4: geo_trigger_in_motion: Periodic geoloc while the tracker is in motion
      • Require the configuration of geo_motion_period.
    • bit 5: geo_trigger_in_static: Periodic geoloc running while the tracker is static
      • Require the configuration of geo_static_period.
    • bit 6: geo_trigger_shock: Geoloc triggered on shock action
      • Require the shock detection configured (accelerometer)
    • bit 7: geo_trigger_temp_high_threshold: Geoloc triggered on temperature high.
    • bit 8: geo_trigger_temp_low_threshold: Geoloc triggered on temperature low.
    • bit 9: geo_trigger_geozoning: Geoloc stopped while in monitored area. Enabled when leaving the monitored area.

gbe_profileX_techno

Each byte represents a technology to schedule, coded as follow:

  • Bit 7: Action Identifier
  • Bits [6..0]: Technology Identifier, encoded as a 6-bit unsigned integer.

Available actions are:

IdentifierAction
0Skip_On_Success
1Always_Enabled
  • Always_Enabled : the technology must be always scheduled regardless of the success or failure of previous technologies.
  • Skip_On_Success: The technology should be scheduled only if all previous technologies failed to acquire a position, i.e. it will be skipped if any of them succeded.

Available technologies are:

IdentifierTechnology
0None
1LR11xx_A_GNSS
2WIFI
3BLE scan 1
4BLE scan 2
5aided_GNSS
6GNSS

See also section Geolocation manager for details on the geolocation manager and configuration examples.

Default value for profile 0 (GNSS only): {06, 00, 00, 00, 00,00}

GNSS group

This group configures the MT3333 GNSS.

Group 3. gnss

FIDLIDNameMinMaxDfltUComments
0x03000gnss_constellation062-GNSS constellations to be used. Supported values:
- 0. GPS only
- 1. GLONASS only
- 2. GPS and GLONASS
- 3. GPS and GALILEO
- 4. GPS, GLONASS and GALILEO
- 5. BEIDOU only
- 6. BEIDOU and GPS
0x03011gnss_max_time30300300sGNSS max acquisition time.
0x03022gnss_t0_timeout_static030030sMax time to acquire at least one satellite when the tracker is static.
0x03033gnss_ehpe_static010020mExpected Estimated horizontal position error; used when the tracker is static.
0x03044gnss_convergence_static030020sExtra-time after a first fix to refine the fix. Used when the tracker is static.
0x03055gnss_t0_timeout_motion030030sMax time to acquire at least one satellite when the tracker is in motion.
0x03066gnss_ehpe_motion010030mExpected Estimated horizontal position error; used when the tracker is in motion.
0x03077gnss_convergence_motion030020sExtra-time after a first fix to refine the fix. Used when the tracker is in motion.
0x03088gnss_standby0-604800sMax time to let the device in standby mode.
0x03099gnss_agnss_max_time1524045sAided GNSS max acquisition time.
0x030A10gnss_t1_timeout03000sExtra time allowed in Aided GNSS mode to try doing a fix.

LR11xx group

This group configures the LR1110 GNSS.

Group 4. LR1110

FIDLIDTypeNameMinMaxDfltUComments
0x04000Ilr_constellation166-GNSS constellations to be used.
0x04011Ilr_scan_mode121-(NAV1 / NAV2)
0x04022Ilr_nb_scans142-Number of scans for one position acquisition
0x04033Ilr_inter_scan_time0155sTime to wait between the scans for a position.
0x04044Ilr_wifi_report_nb_bssid1324-Max number of WIFI BSSID per scan.
0x04055Ilr_wifi_min_nb_bssid1103-Minimum number of BSSID to consider the scan as success (solvable). Below this value the result will be considered not-solvable. Must be less or equal to lr_wifi_report_nb_bssid.
0x04066Ilr_wifi_min_rssi-10000-Minimum RSSI to consider the BSSID. A null value disables the filter.
0x04077Ilr_wifi_bssid_mac_type021-MAC administration type of the BSSID to report.

lr_constellation values

  • 0. GPS only
  • 5. BEIDOU only
  • 6. BEIDOU and GPS

lr_scan_mode values

The LR11xx GNSS firmware implements several variants called "NAV<X>", not all maybe available depending on the loaded firmware:

  • 1. NAV1 scan
  • 2. NAV2 scan

lr_wifi_bssid_mac_type

  • 0. All BSSID administration types (universally and locally administered).
  • 1. Universally administered BSSID only.
  • 2. Locally administered BSSID only.

BLE scan group

There are 2 groups to configure two different BLE scans. Each scan has its own parameter set. Filters are available which are defined as masks references to the beginning of the Advertising payload (ADV). Refer to section payload manager for details, including offset zero reference for each type of beacon.

Group 5. BLE_SCAN1
Group 6. BLE SCAN2

FIDLIDTypeNameMinMaxDfltUComments
0x0500
0x0600
0Ible_scan_duration50614403000msTotal time for a BLE scan
0x0501
0x0601
1Ible_scan_window310240120msScan window
0x0502
0x0602
2Ible_scan_interval110240130msScan interval
0x0503
0x0603
3Ible_scan_type070-Type of beacons to scan
0x0504
0x0604
4Ible_scan_min_rssi-1200-80dBMin RSSI to consider the beacon
0x0505
0x0605
5Ible_scan_min_nb_beacons1201-Min number of beacons to consider the scan as success (solvable). Below this value the result will be considered not-solvable. Must be less or equal to ble_scan_nb_beacons.
0x0506
0x0606
6Bble_scan_filter1_mask--{0}-Mask (10 bytes) to be applied to the ADV frame
0x0507
0x0607
7Bble_scan_filter1_value--{0}-Comparison value (10 bytes) belonging to filter1
0x0508
0x0608
8Ible_scan_filter1_offset0210-Offset in the ADV from which we apply the filter1
0x0509
0x0609
9Bble_scan_filter2_mask--{0}-Mask (10 bytes) to be applied to the ADV frame
0x050A
0x060A
10Bble_scan_filter2_value--{0}-Comparison value (10 bytes) belonging to filter2
0x050B
0x060B
11Ible_scan_filter2_offset0210-Offset in the ADV from which we apply the filter2
0x050C
0x060C
12Ible_scan_nb_beacons1204-Number of beacons to report
0x050D
0x060D
13Ible_scan_report_type020-Scan report type
0x050E
0x060E
14Ible_scan_report_id_ofs0254-Offset in ADV to extract the beacon identifier

Note: ADV means BLE advertisement frame

ble_scan_type values

  • 0. All beacons.
  • 1. Eddystone UUID beacons only.
  • 2. Eddystone URL beacons only.
  • 3. All Eddystone beacons.
  • 4. iBeacon beacons only
  • 5. AltBeacon beacons only
  • 6. Custom (only based on filters)
  • 7. Exposure advertisement

ble_scan_report_type values

  • 0. MAC address
  • 1. Beacon identifier in short format (2 bytes)
  • 2. Beacon identifier in long format (16 bytes).

Refer to the Geolocation manager for the configuration.

Accelerometer group

This group configures the accelerometer.

Group 7. Accelerometer

| FID | LID | Type | Name | Min | Max | Dflt | U | Comments | |--------|-----|---------------------------|-----|------|------|-----|--------------------------------------------| | 0x0700 | 0 | I | accelero_motion_sensi | 1 | 96 | 1 | steps | Motion sensitivity. Resolution: 31 mg per step. | | 0x0701 | 1 | I | accelero_motion_duration | 10 | 3600 | 120 | s | Motion duration. | | 0x0702 | 2 | I | accelero_full_scale | 0 | 3 | 3 | - | Scale use (2,4,8,16 g). Default 16g for shock detection. | | 0x0703 | 3 | I | accelero_output_data_rate | 0 | 4 | 0 | - | Output data rate (12.5, 25, 50, 100, 200 Hz)| | 0x0704 | 4 | I | accelero_shock_threshold | 0 | 128 | 0 | mg | Shock threshold. Increments of 63 mg. |

accelero_full_scale

Acceptable values:

  • 0. Scale 2g (preferred for tilt sensing)
  • 1. Scale 4g
  • 2. Scale 8g
  • 3. Scale 16g (preferred for shock detection)

accelero_output_data_rate

Acceptable values:

  • 0. 12.5 Hz
  • 1. 25 Hz
  • 2. 50 Hz
  • 3. 100 Hz
  • 4. 200 Hz

Notes

  • For shock detection, there is no filtering on GADD index level, only on shock level. The back-end application needs to filter based on GADD index value.
  • The low pass filter is set to ODR/20 for 2G full scale as 2G scale is used for tilt sensing and required elimination of hign frequency vibrations. It is set to ODR/2 for the other scales in order to maximize sensitivity to small vibrations. The sensitivity is capped to 63 for 2G full scale.

Network group

This group configures the general networking. Refer to section Networking for more details on the AT3 network manager and how it uses these parameters.

Group 8. Network

FIDLIDTypeNameMinMaxDfltUComments
0x08000Inet_selection040-Define the networking type:
0: LoRaWAN only
1: Cellular only
2: LoRaWAN fallback cellular
3: Cellular fallback LoRaWAN
0x08011Inet_reconnection_spacing0Max int600s- When both primary and backup networks are down : The interval between connection retry attempts.
- LoRAWAN only operation: interval between the a Join fail or network down detection and a new Join attempt.
- Cellular only operation: interval between an attach fail or the network down detection and the reconnection.
0x08022Inet_main_probe_timeout120Max int600sThe interval between connection retry attempts to the primary network when operating on the backup network.
Parameter available only for the Combo Compact Tracker.

A typical use case for net_selection policy 2 (LoRaWAN with cellular back-up) is for devices that are usually in a country or campus with a LoRaWAN network, and occasionally may go out of coverage. Vehicle or Asset theft trackers use this configuration to maximize battery life while under LoRaWAN coverage.

A typical use case for net_selection policy 3 (cellular with LoRaWAN back-up) is for devices that are usually out of LoRaWAN coverage, but may occasionally park or be stored in well-known areas without cellular coverage (e.g. underground parking, isolated areas), which are equipped with a LoRaWAN network.

When LoRaWAN is primary (net_selection=2):

  • The network manager will try to Join a LoRAWAN network for up to lorawan_cnx_timeout seconds
  • in case of failure it will activate the backup cellular network
    • if successfully connected to the cellular network, the network manager will attempt to Re-join a LoRaWAN network every net_main_probe_timeout seconds
    • if unsuccessful (no network), it will startover with an attempt to connect to the primary LoRaWAN network (step 1) after et_reconnection_spacing seconds.

When Cellular is primary (net_selection=3):

  • The network manager will try to Join a cellular network for up to cell_cnx_timeout_static/cell_cnx_timeout_motion seconds (depending on motion state)
  • in case of failure it will attempt to join a backup LoRaWAN network
    • if successfully connected to the LoRaWAN network, the network manager will attempt to Re-join a cellular network every net_main_probe_timeout seconds
    • if unsuccessful (no network), it will startover with an attempt to connect to the primary cellular network (step 1) after et_reconnection_spacing seconds.

LoRaWAN group

This group configures the LoRaWAN networking. Refer to the documentation of the LoRaWAN networking manager for more details on the AT3 LoRaWAN manager and how it uses these parameters.

Only LoRaWAN OTA mode is supported in firmware version AT3 (ABP is not as secure and generally considered obsolete). A join is triggered upon initial boot if LoRaWAN is the primary network, or every time LoRaWAN is activated as secondary network. It is also triggered after detection of network loss after failure of lorawan_probe_max_attempts number of link-checks, which are sent only if no downlink message has been received for lorawan_probe_period. All Joins are randomized (the randomization is managed by the LBM stack).

Group 9. LoRaWAN

FIDLIDTypeNameMinMaxDfltUComments
0x09000Ilorawan_cnx_timeout0Max int0-Use only on dual network configurations. Max time to wait for joining the network including all retries (timeout triggers a switch to the back-up network). On LoRaWAN-only configurations, use value 0 to disable this timer
0x09011Ilorawan_dl_trigger_period0Max int600sPeriod at which an empty uplink is sent to trigger a Rx window for downlinks (if no uplink has been sent within this period). 0 disables the function.
0x09022Ilorawan_probe_max_attempts0104-Number of failed link-checks before declaring the network as lost
0x09033Ilorawan_probe_period120Max int43200sTime between link-check requests, or since last downlink activity
0x09044Blorawan_confirm_notif_map{0}{FF}{0}-Map enabling the LoRaWAN confirmed message for notifications
0x09055Ilorawan_confirm_notif_retry0150-Number of retries for confirmed messages. Value 0: the number of TX follow ADR.
0x09066Ilorawan_s1_tx_strategy1-0x7380E-Socket 1. Transmission strategy
0x09077Ilorawan_s1_ul_port125219-Socket 1. Uplink port
0x09088Ilorawan_s1_dl_port12523-Socket 1. Downlink port

TX strategy

The parameter lorawan_s1_tx_strategy is a bit-field on 3 bytes providing the LoRa transmission strategy.

The bitfield is defined as follows:

Byte #2
Datarates for the 2nd TX
Byte #1
Datarates for the 1st TX
Byte #0
Control
x x x x x x x xx x x x x x x x0 0 0 0 D M S A

Byte #0 -- Control

  • Bit #0 (A). Set to enable LoRaWAN network ADR control when the tracker is static. Reset to disable the network ADR control regardless the motion state of the tracker.
  • Bit #1 (S). Control the dual transmission when the tracker is static. Set to enable the dual transmission in static state. Reset to disable it.
  • Bit #2 (M). Control the dual transmission when the tracker is in motion. Set to enable the dual transmission in motion state. Reset to disable it in motion state.
  • Bit #3 (D). Control the DR (Datarate) modification for over-sized messages. Set to allow AOS to increase the DR for messages not fitting the allowed maximum LoRaWAN payload size for a given datarate. Reset this flag to prevent sending of over-sized messages.
  • Bit #4-7: Unused.

Byte #1 -- Datarates enabled for the first transmission.

  • Bit #0. Enable datarate DR0. When set, the datarate is enabled.
  • Bit #1. Enable datarate DR1. When set, the datarate is enabled.
  • ...
  • Bit #7. Enable datarate DR7. When set, the datarate is enabled.

Byte #2 -- Datarates enabled for the second transmission.

  • Bit #0. Enable datarate DR0. When set, the datarate is enabled.
  • Bit #1. Enable datarate DR1. When set, the datarate is enabled.
  • ...
  • Bit #7. Enable datarate DR7. When set, the datarate is enabled.

Default: Double transmit for motion and static. TX1: DR3,4,5, TX2: DR0, DR1, DR2.

Confirm_notif_map.

This byte-array configures the notification classes and uplink types to be sent as LoRaWAN confirmed uplinks. Use confirmed uplinks with care as downlink capacity is limited over LoRaWAN. The index of the array represents the class while the value is a bitmap indicating the notification types inside the class to be acknowledged. The value is so coded as the sum of 2x, where x are the types. Example, Notifications to be acknowledged:

  • tamper: Class 0, type 3. Value: 23 = 8.

  • SOS:class 1, type 0 and 1 (SOS on, SOS off). Value: 20 + 21 = 3

  • Temperature high: class 2, type 0. Value: 20 = 1

The byte-array will be set to: {08,03,02,00,00,00}

Default value: {00,00,00,00,00,00}

Cellular group

This group configures the cellular network. Refer to the documentation of the cellular networking manager for more details on the AT3 cellular manager and how it uses these parameters.

Group 10. Cellular

FIDLIDNameMinMaxDfltUComments
0x0A000cell_sim_interface030-SIM interface
0: SIM0 (0),
1: e-SIM,
2: reserved for future use.
3: reserved for future use.
0x0A011cell_network_type121-Network type.
· 0: Cellular not used
· 1: LTE-M
· 2: NB-IOT
0x0A022cell_search_bands0See noteSee noteRadio frequency bands scanned to search a cell. See note.
0x0A033cell_cnx_timeout_static186900180sMaximum search duration for a cellular network. Applicable when the tracker is static.
0x0A044cell_cnx_timeout_motion186900300sMaximum search duration for a cellular network. Applicable when the tracker is in motion.
0x0A055cell_cnx_nw_lost_timeout090060SInterval between reconnection attempts. There are no retries for an administrative disconnect reason, otherwise there are up to cell_cnx_max_attempts retries. After this the network manager will attempt to use the fallback technology if any, and try to reconnect to the primary technology with interval net_reconnection_spacing, which is expected to be larger than cell_cnx_nw_lost_timeout.
0x0A066cell_cnx_max_attempts1103-Maximum number of times the network search may be repeated before shutting down the modem and passing control to the network manager.
0x0A076cell_access_point_name--""-String (max 32 bytes) providing the service access point name (APN). If not provided, this information is retrieved from the SIM.
0x0A088cell_operator_sim_slot_0--""-Cellular operator name when using SIM0
0x0A099cell_operator_sim_slot_1--""-Cellular operator name when using SIM1 (E.SIM).
0x0A0A10cell_low_power_mode030-Low power mode:
· 0: disabled.
· 1: PSM
· 2: eDRX
· 3. both PSM and eDRX.
0x0A0B11cell_psm_tau_period0255254-Bit-field giving the requested TAU period.
0x0A0C12cell_psm_active_time02552-Bit-field giving the requested active time.
0x0A0D13cell_edrx_pcl01515-Requested paging cycle length
0x0A0E14cell_edrx_ptw0153-Requested paging time window
0x0A0F15cell_rai_timeout010000500msRAI (Release Assistance Indication) timeout. A null value disables the feature. Use only with UDP protocol.
0x0A1016cell_probe_max_attempts0100Number of failed echo-request probes before declaring the network as lost. 0 disables the feature.
0x0A1117cell_probe_period120Max int600sThe time interval between echo requests or since the most recent downlink activity. It is advisable to set this value higher than the aggregation timer.
0x0A1218cell_s1_transport_proto011-Socket 1 transport protocol:
· 0: TCP
· 1: UDP
0x0A1319cell_s1_ip_url_addr--""-Socket 1 remote IP address or FQDN in string format (max 32 bytes)
0x0A1420cell_s1_dst_ip_port0655350-Socket 1 destination UDP/TCP port number.
0x0A1521cell_s1_src_ip_port0655350-Socket 1 local UDP/TCP port number. Value 0 means that the modem will choose one.
0x0A1622cell_s1_tx_aggr_time03600120sDuration in second for which the messages are buffered in the socket 1 transmit queue before being transmitted.

cell_s1_ip_url_addr and cell_s1_dst_ip_port Depending on your platform, you can use one of the following FQDNs as destination for AT3 UDP packets. The tracker will be managed by ThingPark X Location Engine (TPX-LE) and you will be able to use the Abeeway Device Manager tool.

  • Community platform: udp-eco.thingpark.com
  • EU SaaS: udp-eu.thingpark.com
  • US SaaS: udp-us.thingpark.com
  • AU SaaS: udp-au.thingpark.com

The destination port is 5007 for all platforms.

Search bands

This byte array parameter contains the list of cellular bands (encoded in hexadecimal form, e.g. band 28 is coded as 0x18) to scan to find an appropriate cell.

Notes

  • Filling this array to 0 instructs the modem to scan all possible bands.
  • The array must end by a null value
  • Default value:
    • {01,03,08,13,14,1C,00,00,00,00,00,00,00,00,00,00,00,00,00}
  • Supported bands
    • {01,02,03,04,05,08,0C,0D,0E,11,12,13,15,19,1A,1C,42,47,55}

Active time bit-field

Bits 4 to 0 represent the binary coded timer value and bits 5 to 7 the timer value unit .

B7B6B5Timer value unit
000Value is incremented in multiples of 2 seconds
001Value is incremented in multiples of 1 minute
010Value is incremented in multiples of deci-hours
111Value indicates that the timer is deactivated.

TAU Time bit-field

Bits 4 to 0 represent the binary coded timer value and bits 5 to 7 the timer value unit.

B7B6B5Timer value unit
000Value is incremented in multiples of 10 minutes
001Value is incremented in multiples of 1 hour
010Value is incremented in multiples of 10 hours
011Value is incremented in multiples of 2 seconds
100Value is incremented in multiples of 30 seconds
101Value is incremented in multiples of 1 minute
110Value is incremented in multiples of 320 hours
111Value indicates that the timer is deactivated

eDRX PCL and PTW bit-field

The eDRX parameters PCL (Paging Cycle Length) and PTW (Paging Transmission Window) are each encoded on 4 bits.

B3‍B2B1B0PCL duration in secondsWB-S1 (LTE-M) PTW value in secondsNB-S1 (Nb-IoT) PTW value in seconds
0‍0005.12 (see note 1)1.282.56
0‍00110.24 (see note 1)2.565.12
0‍01020.483.847.68
0‍01140.965.1210.24
0‍10061.44 (see note 2)6.4012.80
0‍10181.927.6815.36
0‍110102.40 (see note 2)8.9617.92
0‍111122.88 (see note 2)10.2420.48
‍1‍000143.36 (see note 2)11.5223.04
‍1‍001163.8412.8025.60
‍1‍010327.6814.0828.16
‍1‍011655.3615.3630.72
‍1‍1001310.7216.6433.28
‍1‍1012621.4417.9235.84
‍1‍1105242.88 (see note 3)19.2038.40
‍1‍11110485.76 (see note 3)20.4840.96

Notes:

  • 1: The value is applicable only in WB-S1 (LTE-M) mode. If used in NB-S1 (NB-IoT) mode, it will cause the modem to fail.
  • 2: The value is applicable only in WB-S1 (LTE-M) mode. If used in NB-S1 (NB-IoT) mode, it is interpreted as “0010”, equivalent to 20.48 seconds.
  • 3: The value is applicable only in NB-S1 (NB-IoT) mode. If used in WB-S1 (LTE-M) mode, it is interpreted as “1101”, equivalent to 2621.44 seconds.

BLE group

This group configures the BLE parameters.

Group 11. BLE

FIDLIDTypeNameMinMaxDfltUComments
0x0B000Ible_cnx_tx_power03119-BLE Tx power level, see table below.
0x0B011Ible_cnx_adv_duration30Max int60sTime to wait before stopping advertising or switching to slow advertising.
0x0B022Ible_cnx_behavior041-The connectivity configuration.
0x0B030Ible_beacon_tx_power03119dBmBLE Tx power level for beaconing.
0x0B041Ible_beacon_type050-Beacon Type to start.
0x0B052Bble_beacon_identifier----BLE beaconing ID parameter, array of 16 to 24 bytes depending on beacon type.
0x0B063Ible_beacon_fast_adv_interval2010240333msBLE beacon fast advertising interval.
0x0B074Ible_beacon_slow_adv_interval20102401000msBLE beacon slow advertising interval.

cnx tx power level

The user can specify the desired TX power via the ble_cnx_tx_power parameter, representing the TX level as defined by ST microelectronics for the STM32WB55, the correspondence between TX power level and TX power dBm is as follows:

LeveldBmLeveldBmLeveldBmLeveldBmLeveldBmLeveldBm
0x00-400x06-15.250x0C-8.850x12-3.150x18-0.150x1E+5
0x01-20.850x07-14.10x0D-7.80x13-2.450x1900X1F+6
0x02-19.750x08-13.150x0E-6.90x14-1.80x1A+1
0x03-18.850x09-12.050x0F-5.90x15-1.30x1B+2
0x04-17.60x0A-10.90x10-4.950x16-0.850x1C+3
0x05-16.50x0B-9.90x11-40x17-0.50x1D+4

cnx adv duration

This parameter defines the duration of the fast advertising timer. When the device initiates connectivity, it starts with fast advertising parameters, with the fast advertising interval set to 500ms.

When the device is connected to a mobile app, the fast advertising timer is stopped, and a new timer (ble_timer) is started for 60 seconds to allow the mobile app to proceed with the bonding procedure. If the ble_timer expires, the device will disconnect and restart fast advertising.

After the fast advertising timer expires, depending on the configuration and the BLE bonding status, the device either switches to slow advertising or stops BLE connectivity.

ble_cnx_init_configBond existNo bond
enable_no_passkeySwitch to slow advertisingConnectivity stopped
enable_passkey
enable_no_passkey_no_slow_advConnectivity stopped
enable_passkey_no_slow_adv

Slow advertising interval is set to 2 seconds.

cnx behavior

This parameter is used to define the behavior of the connectivity in terms of passkey usage and the actions to take after the fast advertising timer is triggered.

ble_cnx_init_configValueComment
Disable0- BLE connectivity not started when the device is turned ON
enable_no_passkey1- BLE connectivity started when the device is turned ON
- No passkey needed to establish a secure connection
enable_passkey2- BLE connectivity started when the device is turned ON
- Passkey needed to establish a secure connection
enable_no_passkey_no_slow_adv3- BLE connectivity started when the device is turned ON
- No passkey needed to establish a secure connection
- Switch to BLE Idle state when the fast advertising timer is triggered (Slow advertising disabled)
enable_passkey_no_slow_adv4- BLE connectivity started when the device is turned ON
- Passkey needed to establish a secure connection
- Switch to BLE Idle state when the fast advertising timer is triggered (Slow advertising disabled)

When using a passkey, the PIN code will be derived from the Unique Device Number value modulo 1000000, resulting in a PIN code between 000000 and 999999.

Beacon tx power level

Beaconing Tx power level, same as cnx tx power level.

Beacon type

Beacon typeValueComment
Disabled0Beaconing disabled
Eddystone UID1Eddystone UUID beacon emulation
I-Beacon2I-Beacon beacon emulation
AltBeacon3AltBeacon beacon emulation
QUUPPA4QUUPPA beacon emulation
Exposure5Exposure beacon emulation

Beacon identifier

This parameter will host the data to advertise in beaconing mode, the maximum size of this parameter is 24 bytes and minimum size is 16 bytes.

The data to advertise and the data size depends on the beacon type:

  • Eddystone UID: 10 bytes of namespace followed by 6 bytes of instance.
  • Ibeacon: 16 bytes for company UUID followed by 2 bytes for major number and 2 bytes for minor number.
  • Altbeacon: 4 bytes for manufacturer ID followed by 20 bytes for beacon ID.
  • QUUPPA: 1 byte for compensated Tx power followed by 6 bytes for identifier.
  • Exposure: 16 bytes for random public identifier followed by 4 bytes for meta data.

By default the data is set to 0.

Beacon fast advertising interval

The fast advertising interval is used when the device is in motion state.

Beacon slow advertising interval

The slow advertising interval is used when the device is in static state.

Configuration parameter checksums (CRCs)

CRC algorithm

The CRC algorithm is provided in C code.

#define CFG_INIT_CRC 0xFFFFFFFA
static uint32_t _cfg_do_crc(uint32_t crc, uint8_t* buf, int len )
{
while( len-- > 0 ) {
crc = crc ^ *buf++;
for( int i = 0; i < 8; i++ ) {
uint32_t mask = -( crc & 1 );
crc = ( crc >> 1 ) ^ ( 0xEDB88320 & mask );
}
}
return ~crc + 3;
}

Note that before calling the function, the CRC parameter should be initialized to the value CFG_INIT_CRC.

Calculating the CRC for a parameter

A configuration parameter contains a descriptor and the value defined as follows:

/*!
* \brief Value of a parameter
*/
typedef union {
int32_t integer; //!< Signed integer
float decimal; //!< Floating point
char* ascii; //!< Pointer to an ASII char (NULL terminated)
uint8_t* barray; //!< Pointer to an array of bytes
} srv_config_param_value_t;

/*!
* \brief Parameter descriptor
*
* \warning Do not change the order
*/
typedef struct {
struct {
uint16_t identifier; //!< Unique parameter identifier
uint8_t type; //!< Value type refer to srv_config_param_type_t
uint8_t length; //!< string length of the barray value
} descriptor; //!< Descriptor associated to the parameter
srv_config_param_value_t value; //!< Parameter value
} __attribute__((__packed__)) srv_config_param_descriptor_t;

The CRC of a parameter is calculated over:

  • The full descriptor (srv_config_param_descriptor_t) for integer and floating point types.
  • The descriptor length is set to 0 for all parameter types except for byte array.
  • The descriptor only (descriptor) followed by the value pointed by the value field for barray and string types. The byte array size is given by the length field of the descriptor.
  • The CRC for a string includes the null char (C string termination). The length should be determined (strlen() + 1) and not extracted from the descriptor.

Calculating the CRC for a single group

A parameter group CRC is calculated over all parameters belonging to the group. Note that the CRC must be initialized only once before starting the CRC calculation of all parameters.

Notes

  • The parameter ordering must be respected.
  • A missing parameter must be skipped for the CRC calculation.

Calculating the global CRC

The global CRC is calculated over all parameter groups except the internal one. Note that the CRC must be initialized only once before starting the CRC calculation of all groups. Notes

  • The parameter group ordering must be respected.
  • A non-existent group must be skipped for the calculation (e.g. For non combo-compact tracker, the cellular group does not exist).

Configuration file

Overview

AT3 supports a configuration file appended to the firmware binary. The configuration file contains:

  • A header including the keyword CONFIGURATION followed by the VERSION keyword and its version number.
  • The list of the parameters that differs from the hard-coded ones.
  • A trailer indicating the end of the configuration

Each parameter is addressed by its full identifier coded in hexadecimal and prefixed with the letter P. The full identifier must contains all 4 digits.

Examples

  • P0102 is a valid identifier (parameter group 1, local identifier 2), while P102, P12 are not a valid. .

P0000 is a valid identifier (parameter group 0, local identifier 0), while any other writing for this parameter identifier is invalid.

Important notes

  • All keywords as well as the parameter identifier prefix must be in upper case.
  • There can be only one keyword per line.
  • There can be only one parameter per line
  • Each line is ended by a CR or LF or both.

Version format

The configuration version starts on a single line starting with the keyword VERSION followed by a space and the version number.

The number contains 4 fields separated by a dot.The general format is Major.minor.iteration.user.

Example

VERSION 1.0.0.1

The meaning and the management of the version is described hereafter in section Configuration management.

Parameter format

There is a single parameter setting per line. The line is composed by:

  • The parameter full identifier prefixed by the letter P
  • The equal sign, separating the identifier from its value
  • The desired value of the parameter

Note that spaces may be inserted before and after the equal sign.

AT3 uses several parameter types. They are automatically discovered based on the value syntax:

  • An integer value type is detected if it contains only numerical digits [0..9].

Examples: 123, 0141, 1234 are valid integer numbers.

  • An hexadecimal value is detected if the value starts with 0x and numerical digits [0..9] or letters [a..f] or [A..F] only follows the 0x prefix.

Examples: 0x12aa, 0x45678, 0xFF123 are valid.

  • A decimal number must contain a dot. Ie value 1 must be configured as "1.0."

Examples: 1.23, 11234.0, 12345 are valid.

  • An ASCII string must be enclosed by the double quote ("). A string cannot include a double quote and cannot exceed 31 characters. Empty strings are supported.

Examples: "abeeway", "Hello word", "" are valid.

  • A byte array must start with the opening bracket ({) and end with the closing bracket (}). Each value is expressed in hexadecimal on 2 digits and separated by a comma (,). No space are allowed between the 2 brackets. The hexadecimal value is not prefixed with 0x.

Examples: {00, 01,aa,ff,BB,1C} is valid.

Configuration file example

In this example, we modify the parameters core_status_period (0x0102), geoloc_motion_period (0x0200), geoloc_static_period (0x0201), geoloc_start_stop_period (0x0205) and geoloc_gbe_profile0_techno (0x020b).

CONFIGURATION

VERSION 1.0.0.1

P0102=900

P0200= 800

P0201 =300

P0205 = 0x125

P020b = {02,85,00,00,00}

END

Configuration management

Overview

The versioning control field of a configuration allows to check its compatibility with the firmware, and also provides indications for the intended use.

The versioning control field is coded as follows:

<Major>.<Minor>.<Iteration>.<User>

<Major>.<Minor> reflect the first (oldest) firmware version compatible with this configuration. Firmware with the same major version and same or higher minor versions will also be compatible with this configuration as Abeeway ensures upward compatibility within a given major version. A change of major version may break such compatibility (for example it may change the type of a parameter).

<Iteration> is intended to capture the serial number of configurations, and it is expected that it will be incremented at each change.

<User> is a free field, but the intended use is to identify a specific use case or context, and allow the people in charge of device management to rapidly check whether a configuration was designed for the specific use case. Abeeway will use <User>=0 for its generic product configurations out of factory.

Firmware upgrade behavior:

  • FW1/ If the new firmware major version is the same as the current configuration stored in flash memory, and the minor version of the firmware is the same or higher, the flash configuration is valid and will be used. Configuration defined values will replace the default values of the firmware.

  • The flash configuration <Minor> will be updated  to match the one of the new firmware (as the new firmware may update a parameter, we can no longer guarantee the compatibility of the configuration with the previous firmware).

  • FW2/ In all other cases, the current flash configuration is erased, and the firmware will use the default new firmware configuration. Implicitly the versioning control field of this default configuration is <FW_Major>.<MW.Minor>.0.0

Configuration update behavior

  • The following must be both true:

    • The new configuration <Major> must be identical to the flash configuration >Major> (which itself always matches the running firmware Major due to rule FW2).

    • The new configuration <Minor> must be lower or equal to the flash configuration <Minor>, which itself always matches the running firmware Minor due to rule FW1).

If it is not the case, the configuration is rejected, as a firmware upgrade is required first to ensure compatibility with the configuration.

If both checks pass the configuration is accepted.

  • If the configuration command flag is "replace" then the flash configuration is first erased and replaced with the new parameters. Parameters not specified in the new configuration return to their firmware-defined default values.

  • If the configuration command flag is "patch" and either <Iteration> or <User> differ from the current configuration, then the configuration is updated with the new parameters,

  • The flash <Iteration> and <User> elements are updated to match the new configuration.

Note that in the case of FUOTA FW upgrade which may also include a configuration, the order of execution is the following:

1/ Firmware upgrade and merge of current config with rules FW1 and FW2

2/ Configuration upgrade (and therefore at the time, the running firmware version is the new FUOTA upgraded firmware).

Configuration commands and actions

The configuration in flash can be reset to the default values at any time. This action can be done via the CLI command, the network command or the bootloader:

  • The networking integrates a command, which clears and resets the tracker (refer to the downlink commands).
  • The Bootloader includes the command ABWe, which erases the flash segment containing the configuration. Once reset, this flash section will be recreated by the application.
  • The CLI commands config erase and system reset, respectively erase and reformat the flash and reset the device.