Extended Birth Certificate

ESF 7 introduces some changes to the Birth Certificate message, in particular the following new metrics have been introduced:

  • cpu_version: Reports version information about the CPU
  • modem_firmware_version: Reports modem firmware version information, usually obtained running the AT+GMR command.
  • extended_properties: Provides additional information about the gateway, the value of this metric is a string that contains a JSON object (see below).

Starting from ESF 7, the content of the following metrics may be obtained from EL commands, the reported value might change after and upgrade from ESF 6.2 to ESF 7.

  • model_id
  • model_name
  • serial_number
  • bios_version
  • firmware_version
  • os_version
  • os_arch

Starting from ESF 7.4, the following properties have been introduced:

  • jvm_vendor: A String representing the Java Virtual Machine implementation vendor that is currently being used.
  • jdk_vendor_version: A String representing the Java System property jdk.vendor.version, if present on the system.

Birth Certificate extended properties

The JSON object serialized in the extended_properties metric value has the following fields:

  • version:

    type: string

    description: The version of the extended properties object.

    required true

  • properties:

    type: object

    description: Contains the actual extended properties, organized in named named groups represented by the properties of this object. The group name is the JSON property key and the value is a JSON object.

    required true

    The following group names are defined in version 1.0:

    • Os Info:

      type: object

      description: Provides additional system information. Currently it reports the output of the eurotech_versions command.

      required false can be missing if the eurotech_versions command fails.

    • Modems:

      type: object

      description: Provides information on the modem devices connected to the gateway.

      required: false can be missing if no modems are detected by the system.

    • Installed Addons Info:
      type: object
      description: Provides information on the bundles that are currently installed through OSGI's DeploymentAdmin.
      required: false, this group will be missing if no addons are installed.

    The following groups are included by the current implementation but are not fully defined yet:

    • Security Info:

      type: object

      required: TBD

      description: TBD

    • Origination Info:

      type: object

      required: TBD

      description: TBD

Property groups defined in version 1.0

Os Info

This group contains the following property:

  • eurotech_versions:

    type: string

    required true

    description: The raw output of the eurotech_versions command

Modems

This field contains a property for each detected modem, the property key is either the modem USB path (e.g. 1-1.3) or the modem PPP interface (e.g. ppp0).

For each modem, the property value is a string with the following format:

imei=${imei}, imsi=${imsi}, iccid=${iccid}, rssi=${rssi}, firmware_version=${firmware_version}

where ${imei}, ${imsi}, ${iccid}, ${rssi} and ${firmware_version} are possibly empty strings.

Security Info

This group contains the following properties:

  • esf_operation_mode:

    type: string

    required true

    description: Its values are either Development mode or Production mode.

  • el_operation_mode:

    type: string

    required: TBD

    description:TBD

  • maintenance_mode:

    type: string

    required: TBD

    description:TBD

  • boot_state:

    type: string

    required: TBD

    description:TBD

  • tamper_status:

    type: string

    required: true

    description: Reports the current device tamper status. The possible values are the following:

    • UNSUPPORTED: No TamperDetectionService instances are registered on the system.
    • TAMPERED: At least one TamperDetectionService instance reports that the device is tampered.
    • NOT_TAMPERED: All TamperDetectionService instances report that the device is not tampered.

Device Management Info

This section reports to the cloud the status of the device management verification performed on control messages received from the cloud platform. Once enabled, for example after device provisioning, the gateway will require device management messages received to be signed and will verify such signature before accepting and processing the received message.

In addition to a status report, the section notifies the cloud platform of the name of the keystore used to maintain the verification certificates and the actual aliases of the certificates used for message signing verification.

  • dm_keystore_name:

    type: string

    required: true

    description: Reports the service pid of the keystore used for message signing verification

  • dm_signature_verification:

    type: string

    required: true

    description: Reports the message signature verification status. Possible values are:

    • ENABLED: The message signature verification is enabled and the system will verify every control message received.
    • DISABLED: The message signature verification is disabled. The system will not check the signatures in the control messages received.
  • dm_keystore_entries:

    type: string

    required: false

    description: When the dm_signature_verification is enabled this field is populated and will report, as a comma separated list, the aliases of the certificates that are available in the dm_keystore_name for message signature verification. Each alias is associated with the corresponding certificate signature in braces. The corresponding string is the following: alias-1 (signature-1)[, alias-2 (signature-2)]*

Origination Info

  • device_id:

    type: string

    required: TBD

    description:TBD

Installed Addons Info

  • Installed Bundles:
    type: string
    required: true
    description: A String of comma-separated values without whitespaces. This string represents the symbolic names of all bundles that are installed through OSGI's DeploymentAdmin. Each value of this list follows the format <bundle-name>_<bundle-version>. See example below.

Example

{
  "version": "1.0",
  "properties": {
    "Os Info": {
      "eurotech_versions": "eth_name_bsp .......... Reliagate 10-11\neth_vers_bsp .......... 20.2.0\neth_date_bsp .......... 201905081137\neth_serial_number ..... R116J1C0077\neth_model ............. reliagate-10-11-33\neth_release ........... STDXX_20190508_1\neth_vers_cpu .......... ARMv7 Processor rev 2 (v7l)\neth_arch_bsp .......... armv7l\neth_installer ......... 20.2.0_1\neth_vers_esf .......... ESF_7.0.0-SNAPSHOT\neth_vers_java ......... OpenJDK Runtime Environment (Zulu8.36.0.152-SA-linux_aarch32hf) (build 1.8.0_202-b152)\neth_vers_uboot ........ U-Boot 2014.07 (May 07 2019 - 18:22:39)"
    },
    "Modems": {
      "1-1.3": "imei=357178070112720, imsi=, iccid=, rssi=-113, firmware_version=12.00.006"
    },
    "Security Info": {
      "boot_state": "Unimplemented",
      "maintenance_mode": "Unimplemented",
      "esf_operation_mode": "Development mode",
      "el_operation_mode": "Unimplemented"
    },
    "Origination Info": {
      "device_id": "Unimplemented"
    },
    "Installed Addons Info": {
      "Installed Bundles": "org.eclipse.kura.wire.devel.component.provider_1.3.0,org.eclipse.kura.wire.script.filter.provider_1.3.0"
    }
  }
}