.. _os-supported-hardware: ################## Supported Hardware ################## OrchestraOS hardware support is provided by the ``meta-orchestraos-bsp`` layer. The layer currently provides machine configurations for the following targets: .. list-table:: Supported hardware targets :header-rows: 1 * - Name - MACHINE - CPU - Link - Picture * - EIG-M (Edge IoT Gateway M) - ``eigm`` - NXP i.MX8M Plus - https://cthings.co/products/edge-iot-gateways - .. image:: /chapters/orchestra-os/images/eigm.png :alt: EIG-M :height: 110px :width: 160px :align: center :target: https://cthings.co/products/edge-iot-gateways * - EIG-M-DIN (Edge IoT Gateway M DIN Rail Version) - ``eigmdin`` - NXP i.MX8M Plus - https://cthings.co/products/edge-iot-gateways - .. image:: /chapters/orchestra-os/images/eigmdin.png :alt: EIG-M-DIN :width: 80px :align: center :target: https://cthings.co/products/edge-iot-gateways * - EIG-MA (Edge IoT Gateway MA) - ``eigma`` - NXP i.MX8M Quad - https://cthings.co/hardware/asusiot - .. image:: /chapters/orchestra-os/images/eigma.png :alt: EIG-MA :width: 160px :align: center :target: https://cthings.co/hardware/asusiot * - EIG-XS (Edge IoT Gateway XS) - ``eigxs`` - NXP i.MX93 - https://cthings.co/products/edge-iot-gateways - .. image:: /chapters/orchestra-os/images/eigxs.png :alt: EIG-XS :width: 220px :align: center :target: https://cthings.co/products/edge-iot-gateways The machine configuration files are stored under ``layers/meta-orchestraos-bsp/conf/machine``. Hardware-specific kernel, bootloader, firmware, and signing integration live in the same ``meta-orchestraos-bsp`` layer. .. _os-platform-integration-details: Platform Integration Details ============================ Kernel And Bootloader Sources ----------------------------- All four EIG machine configurations explicitly select ``linux-fslc-imx`` as the preferred virtual kernel provider. They retain the NXP BSP selection for other platform components. The common kernel recipe applies machine-specific Compulab or ASUS support on top of the selected community kernel revision. U-Boot remains ``u-boot-imx`` 2024.04 with vendor sources and board patches. .. list-table:: EIG platform sources :header-rows: 1 * - MACHINE - Kernel provider and board support - Bootloader source / branch * - ``eigm`` - ``linux-fslc-imx``; Compulab patches and ``eigm_def_config``. - Compulab ``u-boot-compulab_v2024.04-2.2.0``. * - ``eigmdin`` - ``linux-fslc-imx``; shared EIG-M integration and DIN device tree. - Compulab ``u-boot-compulab_v2024.04-2.2.0``. * - ``eigma`` - ``linux-fslc-imx``; ASUS patches and ``eigma_def_config``. - ASUS ``yocto-5.0-imx_8m``. * - ``eigxs`` - ``linux-fslc-imx``; Compulab patches and ``eigxs_def_config``. - Compulab ``u-boot-compulab_v2024.04``. The EIG BSP selects Linux 6.6.157. Use the selected BSP revision and image inventory to identify the exact source revision and applied board patches. Board Firmware and Memory Variants ---------------------------------- EIG-M and EIG-M-DIN include Ethernet PHY/RGMII timing fixes in both kernel and U-Boot integration. EIG-M-DIN adds NXP 88W8997 Wi-Fi/Bluetooth firmware. EIGXS includes the Sona Wi-Fi firmware and board-specific wireless module, SIMCom modem configuration, and Ethos-U firmware. These selections describe software enablement; a peripheral must also be fitted and enabled by the board configuration. The EIG-M family supplies U-Boot configurations ``sd-d1``, ``sd-d2``, ``sd-d4``, and ``sd-d8``. Use the configuration matching the gateway's memory when choosing UUU scripts. RAUC bootloader variants use corresponding normalized names such as ``sd_d2`` and ``sd_d4``; the EIG-M system-info handler selects the variant from detected memory size. Secure Boot Type ---------------- Secure-boot signing is enabled through machine features. The supported BSP machines append both ``imx-boot-signature`` and ``linux-imx-signature`` to ``MACHINE_FEATURES``. Those features select signed bootloader and signed kernel artifacts during the build. .. list-table:: Secure boot family :header-rows: 1 * - MACHINE - SoC family - Secure boot type - Signing features * - ``eigm`` - i.MX8M Plus - HAB4 - ``imx-boot-signature``, ``linux-imx-signature`` * - ``eigmdin`` - i.MX8M Plus - HAB4 - ``imx-boot-signature``, ``linux-imx-signature`` * - ``eigma`` - i.MX8M Quad - HAB4 - ``imx-boot-signature``, ``linux-imx-signature`` * - ``eigxs`` - i.MX93 - AHAB - ``imx-boot-signature``, ``linux-imx-signature`` The HAB4/AHAB selection follows the NXP SoC family. i.MX8M-family targets use HAB4, while i.MX93 targets use AHAB. For key generation and signing-data layout, see :ref:`os-signing-keys`. Device Tree Selection --------------------- Each machine defines a ``KERNEL_DEVICETREE_BASENAME`` and installs the device trees needed by that machine. The common ``eig.inc`` include derives ``KERNEL_DEVICETREE_DEFAULT`` from: .. code-block:: text ${KERNEL_DEVICETREE_BASENAME}${KERNEL_DEVICETREE_SUFFIX} For most machines, the suffix is empty and the base device tree is selected. The EIG-M machine also supports add-on-module based selection through ``MACHINE_FEATURES``: .. list-table:: EIG-M device-tree suffix selection :header-rows: 1 * - MACHINE_FEATURES - KERNEL_DEVICETREE_SUFFIX - Selected default device tree * - ``m2tpm-module-present`` - ``-m2tpm`` - ``compulab/iot-gate-imx8plus-m2tpm.dtb`` * - ``usbdev-module-present`` - ``-usbdev`` - ``compulab/iot-gate-imx8plus-usbdev.dtb`` * - neither feature present - empty - ``compulab/iot-gate-imx8plus.dtb`` If both EIG-M module features are present, ``m2tpm-module-present`` takes priority because it is checked first in ``eigm.conf``. Other machines currently use fixed default device trees: .. list-table:: Fixed default device trees :header-rows: 1 * - MACHINE - Default device tree * - ``eigmdin`` - ``compulab/iotdin-imx8p.dtb`` * - ``eigma`` - ``freescale/imx8mq-pe100a.dtb`` * - ``eigxs`` - ``compulab/iot-link.dtb``