GMSL Sensor Guide#

GMSL (Gigabit Multimedia Serial Link) is a high-speed serial interface designed for transmitting uncompressed video, audio, and control data over long distances. It is commonly used in automotive applications for connecting cameras and other multimedia devices to the central processing unit.

GMSL supports data rates of up to 6 Gbps, allowing for high-resolution video transmission with low latency. It uses a differential signaling method to ensure signal integrity and reduce electromagnetic interference (EMI). GMSL also includes features such as error correction and power management to enhance reliability and efficiency.

In the context of robotics and autonomous mobile robots, GMSL sensors are often used for vision-based applications, such as object detection, lane keeping, and obstacle avoidance. These sensors can provide high-quality video feeds that are essential for the perception systems of autonomous vehicles.

When integrating GMSL sensors into a robotics system, it is important to consider factors such as compatibility with the processing unit, power requirements, and the physical layout of the system. Proper configuration and calibration of GMSL sensors are also crucial to ensure optimal performance and accurate data capture.

Intel GMSL cameras uses Image Processor Unit (IPU) to process the video data captured by the camera. The IPU is responsible for tasks such as image enhancement, noise reduction, and color correction, which are essential for improving the quality of the video feed before it is used for further processing in the autonomous mobile robot’s perception system.

It is crucial to understand the SerDes i2c connectivity specific to each ODM/OEM motherboards, Add-in-Cards (AIC) and GMSL2 Camera modules. Illustrated below are all details a user need to learn about I2C communication between a BDF (Bit-Definition File) Linux i2c adapter and GMSL2 i2c devices for the Intel® Core™ Ultra Series 1 and 2 (Arrow Lake-U/H) and 12th/13th/14th Gen Intel® Core™ to detect and configure GMSL capability. (see SerDes i2c mapping for further details)

../../../../../_images/GMSL-overview2.png

Brief GMSL Add-in-Card design overview#

A GMSL product design based Intel® Core™ Ultra Series 1 and 2 (Arrow Lake-U/H) or 12th/13th/14th Gen Intel® Core™ products can be illustrated as followed :

../../../../../_images/GMSL-overview.png
  • The GMSL2 Camera modules, designed by 3rd Party GMSL2 Camera vendors, combine a Camera Sensor and GMSL2 Serializer (ex. MAX9295)

  • The Add-in-Card (AIC), designed by either ODM/OEMs or 3rd Party GMSL2 Camera vendors, provide multiple GMSL2 Derializer (ex. MAX9296A)

  • The |Intel|-based Motherboad, designed by ODM/OEMs, provide Mobile Industry Processor Interface (MIPI) Camera Serial Interface (CSI) interface exposed by Intel® Core™ Ultra Series 1 and 2 (Arrow Lake-U/H) and 12th/13th/14th Gen Intel® Core™ products.

There are two design approaches for GMSL Add-in-Card (AIC) :

It is crucial to understand the SerDes i2c connectivity specific to each ODM/OEM motherboards, Add-in-Cards (AIC) and GMSL2 Camera modules. Illustrated below are all details a user need to learn about I2C communication between a BDF (Bit-Definition File) Linux i2c adapter and GMSL2 i2c devices for the Intel® Core™ Ultra Series 1 and 2 (Arrow Lake-U/H) and 12th/13th/14th Gen Intel® Core™ to detect and configure GMSL capability. (see SerDes i2c mapping for further details)

../../../../../_images/GMSL-overview2.png

More details about Mobile Industry Processor Interface (MIPI) Camera Serial Interface (CSI) Gigabit Multimedia Serial Link (GMSL) Add-in Card (AIC) Schematic

HOW TO detect in i2c bus to GMSL2 Deserializer and Serializer ACPI devices mapping#

The best way to detect i2c bus to GMSL2 Deserializer and Serializer ACPI devices mapping is by using i2cdetect command line tool from i2c-tools package on Linux OS.

i2cdetect -y <i2c_bus_number>

where <i2c_bus_number> is the i2c bus number assigned to GMSL2 Deserializer and Serializer ACPI devices.

here is an example output of i2cdetect command line tool for GMSL2 Deserializer and Serializer ACPI devices mapping:

i2cdetect -r -y 0 0x20 0x6f
       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  00:
  10:             -- -- -- -- -- -- 1a -- -- -- -- --
  20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- --
  30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  50: -- -- -- -- 54 -- -- -- -- -- -- -- 5c -- -- --
  60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  70:
i2cdetect -r -y 1 0x20 0x6f
      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  00:
  10:             -- -- -- -- -- -- -- -- -- -- -- --
  20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  70:

As you can see my devices are on ITC i2c bus 0 with address 0x1a, 0x27, 0x40 and 0x54, which are corresponding to GMSL2 Deserializer and Serializer ACPI devices configured on my system.

GMSL2 Driver#

Prerequisite for gmsl driver can be found on ECI apt repo:

follow the guide in ref:Set up ECI APT Repository <set-up-eci-apt-repository>:

Once ECI APT repository is set up, you can install gmsl driver by running the following command:

sudo apt-get update
sudo apt-get install intel-mipi-gmsl-dkms

Select max929x or max967xx deserializer to compile certain linux v4l2 i2c sensors driver with.

Reboot the system and enter into the BIOS/UEFI settings. Navigate to the ACPI configuration section and verify that the GMSL SerDes device is listed and enabled. If it is not present, you may need to update your system firmware or consult your hardware vendor for support.

Go into UEFI Advanced setting.

../../../../../_images/UEFI-Advanced.png

Navigate to System Agent (SA)

../../../../../_images/UEFI-SA.png

Navigate to MIPI Configuration

../../../../../_images/UEFI-MIPI-Config.png

Ensure GMSL SerDes is enabled.

../../../../../_images/UEFI-Enable-Camera.png

After enabling the GMSL SerDes device in the UEFI settings, click on ‘link options’ to adjust the settings for the GMSL SerDes link.

Boot the system into the OS

Configure Intel® GMSL SerDes ACPI devices#

To enable multiple GMSL Cameras for same or different vendors, user need define MIPI Cameras ACPI device from UEFI/BIOS settings.

  1. Review Intel® enabled GMSL2 camera module with its corresponding ACPI devices custom HID:

    ACPI custom HID

    ACPI Camera module label

    Sensor Type

    GMSL2 Serializer

    Max Resolution

    Vendor URL

    INTC10CD

    d4xx

    OV9782 + D450 Depth

    MAX9295

    2x (1280x720)

    Intel RealSense™ Depth Camera D457

    D3000004

    D3CMCXXX-115-084

    ISX031

    MAX9295

    1920x1536

    D3 Embedded® sensor Linux drivers package available upon sales@d3embedded.com camera purchase

    D3000005

    D3CMCXXX-106-084

    IMX390

    MAX9295

    1920x1080

    D3000006

    D3CMCXXX-089-084

    AR0234

    MAX9295

    1280x960

    OTOC1031

    otocam

    ISX031

    MAX9295

    1920x1536

    oToBrite® sensor Linux drivers package available upon sales@otobrite.com camera purchase

    OTOC1021

    otocam

    ISX021

    MAX9295

    1920x1280

  2. Review the Brief GMSL Add-in-Card design overview, if not already done.

    Please refer to each tabs below to understand ODM hardware distinct ACPI Camera device configuration table :

    The Advantech GMSL Input Module Card for AFE-R360 series and ASR-A502 series may provide up to 6x GMSL camera interface (FAKRA universal type).

    Below an ACPI devices configure example for GMSL2 Intel® RealSense™ Depth Camera D457 :

    Aggregated-link SerDes CSI-2 port 0 and 4 and I2C settings for GMSL Add-in-Card (AIC)#

    UEFI Custom Sensor

    Camera 1

    Camera 2

    Camera 3

    Camera 4

    GMSL Camera suffix

    a

    g

    e

    k

    Custom HID

    INTC10CD

    INTC10CD

    INTC10CD

    INTC10CD

    PPR Value

    2

    2

    2

    2

    PPR Unit

    1

    1

    1

    1

    Camera module label

    d4xx

    d4xx

    d4xx

    d4xx

    MIPI Port (Index)

    0

    0

    4

    4

    LaneUsed

    x2

    x2

    x2

    x2

    Number of I2C

    3

    3

    3

    3

    I2C Channel

    I2C1

    I2C1

    I2C2

    I2C2

    Device0 I2C Address

    12

    14

    12

    14

    Device1 I2C Address

    42

    44

    42

    44

    Device2 I2C Address

    48

    48

    48

    48

    ../../../../../_images/gmsl-adv-mioe.png

    Another example below illustrates how to configure ACPI devices 6x Intel® RealSense™ Depth Camera D457 GMSL2 module :

    Aggregated-link SerDes CSI-2 port 0, 4 and 5 and I2C settings for GMSL Add-in-Card (AIC)#

    UEFI Custom Sensor

    Camera 1

    Camera 2

    Camera 3

    Camera 4

    Camera 5 or N/A 1

    Camera 6 or N/A 1

    GMSL Camera suffix

    a

    g

    e

    f

    k

    l

    Custom HID

    INTC10CD

    INTC10CD

    INTC10CD

    INTC10CD

    INTC10CD

    INTC10CD

    PPR Value

    2

    2

    2

    2

    2

    2

    PPR Unit

    1

    1

    1

    1

    1

    1

    Camera module label

    d4xx

    d4xx

    d4xx

    d4xx

    d4xx

    d4xx

    MIPI Port (Index)

    0

    0

    4

    5

    4

    5

    LaneUsed

    x2

    x2

    x2

    x2

    x2

    x2

    Number of I2C

    3

    3

    3

    3

    3

    3

    I2C Channel

    I2C1

    I2C1

    I2C2

    I2C2

    I2C2

    I2C2

    Device0 I2C Address

    12

    14

    16

    18

    12

    14

    Device1 I2C Address

    42

    44

    62

    42

    64

    44

    Device2 I2C Address

    48

    48

    48

    4a

    48

    4a

    Attention

    For the time being each GMSL2 Aggregated-link Deserializer (e.g. MAX9296A) on the same I2C Channel shall set identical Custom HID and Camera module label tuple matching with GMSL2 Serializer and Camera Sensor devices type.

    The Advantech GMSL Input Module Card for AFE-R360 series I2C1 Channel (ex. INTC10CD) Aggregated-link Deserializer (e.g. MAX9296A) i2c device 0x48 shall set Custom HID (ex. INTC10CD) and Camera module label (ex d4xx) tuple for both GMSL Camera suffix a and g, where the other Aggregated-link Deserializer (e.g. MAX9296A) i2c device 0x4a could have a different Custom HID (ex INTC1031) and Camera module label (ex isx031) tuple on both GMSL Camera suffix e and k.