From 00d454eb3713aa566c207e773f680ba6c5a14a3d Mon Sep 17 00:00:00 2001 From: "Khai Wen, Ng" Date: Wed, 12 Aug 2026 11:59:37 +0800 Subject: [PATCH 1/5] Doc Refactor: Improve README.md Added symbols for easier viewing. Added information and new sections on ACPI ASL solution. Added anchors and links to navigate within documents. Added anchors and links to navigate to sensor documents and files. Signed-off-by: Khai Wen, Ng --- README.md | 290 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 221 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index 76fdc5cc..43ee673f 100644 --- a/README.md +++ b/README.md @@ -9,15 +9,16 @@ This repository contains reference drivers and configurations for Intel MIPI CSI
  • Supported Sensors
  • Supported Ubuntu and Kernel Version
  • Directory Structure
  • -
  • Getting Started Guide
  • -
  • Software Dependencies
  • -
  • - Setup Procedure +
  • Setup Procedure
  • Contributing
  • @@ -27,94 +28,208 @@ This repository contains reference drivers and configurations for Intel MIPI CSI + ## Supported Sensors -| Sensor | Sensor Type | Vendor | IPU Version | -|-----------------|-------------|-----------------|----------------------------------| -| AR0233+GW5300 | GMSL | Sensing | IPU6EPMTL, IPU75XA | -| AR0234 | GMSL | D3 Embedded | IPU6EPMTL, IPU75XA, IPU8 | -| AR0234 | MIPI CSI-2 | D3 Embedded | IPU6EPMTL, IPU75XA, IPU8 | -| AR0820+GW5300 | GMSL | Sensing | IPU6EPMTL, IPU75XA | -| AR0830+AP1302 | MIPI CSI-2 | Leopard Imaging | IPU6EPMTL, IPU75XA | -| ISX031 | GMSL | D3 Embedded | IPU6EP, IPU6EPMTL, IPU75XA, IPU8 | -| ISX031 | GMSL | Leopard Imaging | IPU6EP, IPU6EPMTL, IPU75XA, IPU8 | -| ISX031 | GMSL | Sensing | IPU6EP, IPU6EPMTL, IPU75XA | -| ISX031 | MIPI CSI-2 | D3 Embedded | IPU6EP, IPU6EPMTL, IPU75XA, IPU8 | -| ISX031 | MIPI CSI-2 | Sensing | IPU6EP, IPU6EPMTL, IPU75XA | -| IMX415 | MIPI CSI-2 | Leopard Imaging | IPU6EPMTL | -| IMX586 | MIPI CSI-2 | Leopard Imaging | IPU6EPMTL | -| OV13B10 | MIPI CSI-2 | Leopard Imaging | IPU8 | +| GMSL Sensor | User Guide | Vendor | IPU6EP | IPU6EPMTL | IPU75XA | IPU8 | +|---------------------------------------------|---------------------------------------------|-----------------|:------:|:---------:|:-------:|:----:| +| [AR0233+GW5300](doc/ar0233/kernelspace.md) | [User Guide](doc/ar0233/userspace-gmsl.md) | Sensing |❌ |✅|✅|❌| +| [AR0234](doc/ar0234/kernelspace.md) | [User Guide](doc/ar0234/userspace-gmsl.md) | D3 Embedded |✅*|✅|✅|✅| +| [AR0820+GW5300](doc/ar0820/kernelspace.md) | [User Guide](doc/ar0820/userspace-gmsl.md) | Sensing |❌ |✅|✅|❌| +| D457 | [User Guide](doc/d4xx/userspace-gmsl.md) | RealSense |❌ |✅|✅|✅| +| [ISX031](doc/isx031/kernelspace.md) | [User Guide](doc/isx031/userspace-gmsl.md) | D3 Embedded |✅*|✅|✅|✅| +| [ISX031](doc/isx031/kernelspace.md) | [User Guide](doc/isx031/userspace-gmsl.md) | Leopard Imaging |✅*|✅|✅|✅| +| [ISX031](doc/isx031/kernelspace.md) | [User Guide](doc/isx031/userspace-gmsl.md) | Sensing |✅*|✅|✅|✅| + + +| MIPI Sensor | User Guide | Vendor | IPU6EP | IPU6EPMTL | IPU75XA | IPU8 | +|---------------------------------------------|---------------------------------------------|-----------------|:------:|:---------:|:-------:|:----:| +| [AR0234](doc/ar0234/kernelspace.md) | [User Guide](doc/ar0234/userspace-mipi.md) | D3 Embedded |✅*|✅ |✅ |✅| +| [AR0830+AP1302](doc/ar0830/kernelspace.md) | [User Guide](doc/ar0830/userspace-mipi.md) | Leopard Imaging |❌ |✅*|✅*|❌| +| IMX415 | [User Guide](doc/imx415/userspace-mipi.md) | Leopard Imaging |❌ |✅*|❌ |❌| +| [IMX586](doc/imx586/kernelspace.md) | [User Guide](doc/imx586/userspace-mipi.md) | Leopard Imaging |❌ |✅*|❌ |❌| +| [ISX031](doc/isx031/kernelspace.md) | [User Guide](doc/isx031/userspace-mipi.md) | D3 Embedded |✅*|✅ |✅ |✅| +| [ISX031](doc/isx031/kernelspace.md) | [User Guide](doc/isx031/userspace-mipi.md) | Sensing |✅*|✅*|✅*|❌| +| OV13B10 | [User Guide](doc/ov13b10/userspace-mipi.md) | Leopard Imaging |❌ |❌ |✅ |✅| > **Note:** \ -IPU6EP represents ADL, TWL, ASL and RPL platforms; \ +> Items marked with ✅ are enabled by BIOS and ASL method. \ +> Items marked with ✅* are enabled by BIOS method ONLY.\ +> Items marked with ❌ are not enabled by BIOS or ASL method. + + +> **Note:** \ +IPU6EP represents TWL platforms; \ IPU6EPMTL represents MTL and ARL platforms; \ IPU75XA represents PTL platforms; \ IPU8 represents NVL platforms. +--- ## Supported Ubuntu and Kernel Version -| IPU Version | Ubuntu Version | Kernel Version | -|--------------------|-----------------|-----------------| -| IPU6EP / IPU6EPMTL | 24.04.4 | 6.12 Intel BKC | -| | 24.04.4 | 6.17 Canonical | -| | 26.04 | 7.0 Canonical | -| IPU75XA | 24.04.4 | 6.17 Intel BKC | -| | 24.04.4 | 6.17 Canonical | -| | 24.04.4 | 6.18 Intel BKC | -| | 26.04 | 7.0 Canonical | -| IPU8 | 24.04.4 | 6.18 Intel BKC | -| | 24.04.4 | 7.0 IOT Next | +| IPU Version | Ubuntu Version | Intel Kernel Overlay | Canonical Kernel | BIOS support | ASL support | +|:-----------:|-----------------|:--------------------:|:----------------:|:------------:|:-----------:| +| IPU6EP | 24.04.4 | 6.12 | |✅|❌| +| | 24.04.4 | 6.18 (BKC) | 6.17 |✅|❌| +| | 26.04 | 6.18 | 7.0 |✅|❌| +| IPU6EPMTL | 24.04.4 | 6.12 | |✅|❌| +| | 24.04.4 | 6.18 (BKC) | 6.17 |✅|✅*| +| | 26.04 | 6.18 | 7.0 |✅|✅*| +| IPU75XA | 24.04.4 | 6.17 | |✅|❌| +| | 24.04.4 | 6.18 (BKC) | 6.17 |✅|✅*| +| | 26.04 | 6.18 | 7.0 |✅|✅*| +| IPU8 | 24.04.4 | 7.0 | |✅|✅| +| | 26.04 | 7.0 | |✅|✅| +> **Note:** \ +> ✅* indicates that ASL support is **NOT AVAILABLE** for 6.18 (BKC) **by default**. Please rebuild the 6.18 Kernel Overlay with ASL support enabled. For more details, please refer to [doc/acpi/kernelspace.md](doc/acpi/kernelspace.md).\ +> To use Intel BKC, please refer [here](#intel-bkc-using-getting-started-guide-gsg) for more details. + +--- ## Directory Structure -| Directory | Description | -|-----------|-------------| -| [drivers/](drivers) | Host Linux kernel drivers for supported sensors | -| [config/](config) | Host middleware configuration files | -| [doc/](doc) | Documentation guide for kernelspace and userspace configuration | -| [include/](include) | Header files for driver compilation | +| Directory | Description | +|---------------------|-------------| | [acpi/](acpi) | Host ASL source files for different configurations | +| [config/](config) | Host middleware configuration files | +| [drivers/](drivers) | Host Linux kernel drivers for supported sensors | +| [doc/](doc) | Host Documentation guide for kernelspace and userspace configuration | +| [include/](include) | Host Header files for driver compilation | +| [script/](script) | Host Utility scripts | + +--- +## Setup Procedure + +1. Find your desired target platform and desired Ubuntu/Kernel from the table [above](#supported-ubuntu-and-kernel-version). + +2. Setup your target platform. Follow section [below](#software-setup---ubuntu-and-kernel). + > To use **Intel BKC**, Follow section [below](#intel-bkc-using-getting-started-guide-gsg). + +3. DKMS build your kernel drivers. Follow section [below](#software-setup---kernel-driver-dkms-build). + +4. Install required software dependencies on your target platform. Follow section [below](#software-setup---userspace). + +5. Setup your Hardware. Follow section [below](#hardware-setup). + +6. Configure ACPI to match with Hardware setup. -## Getting Started Guide + > For **BIOS Configuration** method, go to [BIOS Configuration](#acpi-setup---bios-configuration). -1. Download `Getting Started Guide` (table below), and setup according to your target `Platform`. -2. Inside the guide, follow all instructions under section `Getting Started with Ubuntu with Kernel Overlay`. -3. Under section `Auto Script Installation`, download and use `Ubuntu Kernel Overlay Auto Installar Script` from platform-respective Software Packages. + > For **ACPI ASL Configuration** method, go to [ACPI ASL Configuration](#acpi-setup---asl-configuration). -> **Note:** All collaterals belows can be downloaded in [rdc.intel.com](https://www.intel.com/content/www/us/en/resources-documentation/developer.html) with proper granted access. +7. Boot and verify the setup using `media-ctl`. Go to [Setup Verification](#setup-verification). + +8. Enjoy your camera stream! Go to [Stream Verification](#stream-verification). + +--- +
    +Expand to show detailed setup steps + +--- +### Software Setup - Ubuntu and Kernel + +#### Intel BKC using Getting Started Guide (GSG) +
    + Show details + +> **Note:** GSG requires granted access to Intel® RDC portal. Please contact your Intel representative for access. + +> **Skip this section** if you do not have access. Use default Canonical Kernel version that comes with the Ubuntu Image instead. + +1. Download **Getting Started Guide** from table below and setup according to your target **Platform**. +2. Under section **Getting Started with Ubuntu with Kernel Overlay**, follow **ALL** instructions to avoid missing dependencies. +3. Under section **Auto Script Installation**, download `Ubuntu Kernel Overlay Auto Installer Script` from platform-respective Software Packages. +4. Run installer script to install Intel Kernel Overlay and Intel BKC on your target platform. + +> **Reminder:** All collaterals below can be downloaded in [rdc.intel.com](https://www.intel.com/content/www/us/en/resources-documentation/developer.html) with proper granted access. | Platform | Getting Started Guide | Software Package | -|---|---|---| +|:---:|:---:|:---:| | ARL | [828853](https://www.intel.com/content/www/us/en/secure/content-details/828853/ubuntu-with-kernel-overlay-on-intel-core-ultra-200u-and-200h-series-processors-code-named-arrow-lake-u-h-for-edge-platforms-get-started-guide.html?DocID=828853) | [831484](https://www.intel.com/content/www/us/en/secure/design/confidential/software-kits/kit-details.html?kitId=831484) | | MTL | [779460](https://www.intel.com/content/www/us/en/secure/content-details/779460/ubuntu-with-kernel-overlay-on-intel-core-mobile-processors-code-named-meteor-lake-u-h-for-edge-platforms-get-started-guide.html?DocID=779460) | [790840](https://www.intel.com/content/www/us/en/secure/content-details/790840/meteor-lake-ps-ubuntu-with-kernel-overlay-software-packages.html?DocID=790840) | | TWL | [793827](https://www.intel.com/content/www/us/en/secure/content-details/793827/ubuntu-with-kernel-overlay-intel-atom-x7000re-x7000c-x7000fe-processor-series-intel-processor-n150-n250-intel-core-3-processor-n355-for-edge-applications-get-started-guide-amston-lake-mr5-amston-lake-fusa-pv-twin-lake-mr2.html?DocID=793827) | [803960](https://www.intel.com/content/www/us/en/secure/design/confidential/software-kits/kit-details.html?kitId=803960) | -| PTL | [858119](https://edc.intel.com/content/www/us/en/secure/design/confidential/products-and-solutions/processors-and-chipsets/panther-lake-h/with-linux-os-get-started-guide-for-edge-compute-applications/) | [871556](https://www.intel.com/content/www/us/en/secure/design/confidential/software-kits/kit-details.html?kitId=860689) | +| PTL | [858119](https://edc.intel.com/content/www/us/en/secure/design/confidential/products-and-solutions/processors-and-chipsets/panther-lake-h/with-linux-os-get-started-guide-for-edge-compute-applications/) | [860689](https://www.intel.com/content/www/us/en/secure/design/confidential/software-kits/kit-details.html?kitId=860689) | Reference: [Intel® IPU6 Enabling Partners Technical Collaterals Advisory](https://www.intel.com/content/www/us/en/secure/content-details/817101/intel-ipu6-enabling-partners-technical-collaterals-advisory.html?DocID=817101) -## Software Dependencies +

    (Back to Setup Procedure)

    -Install these software dependencies in your target system: +
    + +#### Canonical Kernel + +Canonical Kernel version comes with the Ubuntu Image by default. Make sure the kernel version is supported [here](#supported-ubuntu-and-kernel-version). + +

    (Back to Setup Procedure)

    + +--- +### Software Setup - Userspace + +Build and install these software dependencies in your target system: + +#### Utility Tools + +
    + Show details -- ipu-camera-bins (E.g. [ipu6-camera-bins](https://github.com/intel/ipu6-camera-bins/tree/iotg_ipu6) / [ipu7-camera-bins](https://github.com/intel/ipu7-camera-bins)) -- ipu-camera-hal (E.g. [ipu6-camera-hal](https://github.com/intel/ipu6-camera-hal/tree/iotg_ipu6) / [ipu7-camera-hal](https://github.com/intel/ipu7-camera-hal)) +> v4l-utils with version >= 1.30 is **mandatory** for GMSL setup. \ +> acpica with version >= 20260408 is **mandatory** for ACPI ASL setup. + +| Tool | Repository | Tag | Steps to setup | +|------|------------|---------| -----| +| v4l-utils | [v4l-utils](https://github.com/gjasny/v4l-utils) | stable-1.30 | Build from repo | +| acpica | [acpica](https://github.com/open-acpica/acpica.git) | 20260408 | Refer [here](doc/acpi/kernelspace.md#compile-and-load) | + +
    + +#### Intel IPU Camera Software Stack + +
    +Show details + +- ipu-camera-bins (E.g. [IPU6EP, IPU6EPMTL](https://github.com/intel/ipu6-camera-bins/tree/iotg_ipu6) / [IPU75XA, IPU8](https://github.com/intel/ipu7-camera-bins)) +- ipu-camera-hal (E.g. [IPU6EP, IPU6EPMTL](https://github.com/intel/ipu6-camera-hal/tree/iotg_ipu6) / [IPU75XA, IPU8](https://github.com/intel/ipu7-camera-hal)) - [icamerasrc](https://github.com/intel/icamerasrc/tree/icamerasrc_slim_api) -| IPU Version | ipu-camera-bins | ipu-camera-hal | icamerasrc | -|-------------|------------------------------------------|------------------------------------------|------------------------------------------| -| IPU6 | d9421fef539f24fc80c27002d5da753e193b0670 | f93eec544a5234bf0b610b3f76d64c8fa711c364 | 867c5b6ab7925c9b69b8374873a832266d97d7e5 | -| IPU7 | cead7320d84ee9ade4f60d74e935b16b5a760945 | ef30767553685b83034e42325992a2442c5fcb2c | 867c5b6ab7925c9b69b8374873a832266d97d7e5 | -| IPU8 | adf55525ab9d370828723b1ff8bee76ed7a492e8 | fd1efb6f2ef25fd24775a303cc71af6139d797eb | 867c5b6ab7925c9b69b8374873a832266d97d7e5 | +| IPU Version | ipu-camera-bins | ipu-camera-hal | icamerasrc | +|-------------------|------------------------------------------|------------------------------------------|------------------------------------------| +| IPU6EP, IPU6EPMTL | d9421fef539f24fc80c27002d5da753e193b0670 | 5aa9a3bd3d5582667915d93b0128a02953adbbbc | 7517af78f49a18dde6de86042055aa14ebe6d184 | +| IPU75XA | cead7320d84ee9ade4f60d74e935b16b5a760945 | ef30767553685b83034e42325992a2442c5fcb2c | 7517af78f49a18dde6de86042055aa14ebe6d184 | +| IPU8 | adf55525ab9d370828723b1ff8bee76ed7a492e8 | fd1efb6f2ef25fd24775a303cc71af6139d797eb | 7517af78f49a18dde6de86042055aa14ebe6d184 | -## Setup Procedure +
    + +#### Media Driver + +> **Note:** \ +> Build from source only if you are using **Canonical Kernel with PTL**. \ +> Skip this step if you are using **Intel BKC**. + +> **RECOMMENDED** if you want to have **DMABuf** support. + +
    +Show List + +| Component | Repository | Tag | Build Step | +|--------------|------------|---------|------------| +| libva | [libva](https://github.com/intel/libva) | 2.23.0 | Follow build steps in repo | +| gmmlib | [gmmlib](https://github.com/intel/gmmlib) | intel-gmmlib-22.10.0 | Follow build steps in repo | +| media-driver | [media-driver](https://github.com/intel/media-driver) | intel-media-26.1.5 | Follow build steps in repo | + +
    +

    (back to Setup Procedure)

    -### Kernel Driver DKMS Build +--- +### Software Setup - Kernel Driver DKMS Build -Initialize and update current repository recursively to ensure all dependencies are correctly fetched. +**Initialize** and update current repository recursively to ensure all dependencies are correctly fetched. git checkout main git submodule update --init --recursive -> **Note:** Workaround required for IPU7/IPU8 RAW sensor due to tuning dependency. +
    + Workaround for IPU7/IPU8 AR0234 RAW sensor + +> **Note:** Workaround required for IPU7/IPU8 **RAW sensor** due to tuning dependency. By default, `ipu7-drivers` submodule tracks the tip of its `main` branch. For IPU75XA, @@ -129,7 +244,9 @@ For IPU8, git checkout bed9b71d5be56d0e24c771c7a6ec83fd0a9db433 cd .. -Build and install modules using DKMS +
    + +**Build and install** modules using DKMS sudo dkms remove ipu-camera-sensor/0.1 sudo rm -rf /usr/src/ipu-camera-sensor-0.1/ @@ -138,23 +255,58 @@ Build and install modules using DKMS sudo dkms build -m ipu-camera-sensor -v 0.1 sudo dkms install -m ipu-camera-sensor -v 0.1 --force -### BIOS Configuration +

    (back to Setup Procedure)

    + +--- +### Hardware Setup + +1. Reference Hardware setup can be found in [doc/{sensor}](doc/) and respective `userspace.md` files. + - Hardware Connection for [Common GMSL setup](doc/isx031/userspace-gmsl.md#hardware-connection) + +

    (back to Setup Procedure)

    + +--- +### ACPI Setup - BIOS Configuration 1. Power cycle target system with sensors connected. -2. Import sensor profile into BIOS, under section `BIOS Configuration Table` in recommended userspace.md. - - E.g. ISX031 GMSL using [userspace-gmsl.md](doc/isx031/userspace-gmsl.md) - - E.g. AR0234 MIPI using [userspace-mipi.md](doc/ar0234/userspace-mipi.md) +2. Import sensor profile into BIOS, under section `BIOS Configuration Table` in respective userspace.md. + - E.g. ISX031 GMSL using [userspace-gmsl.md](doc/isx031/userspace-gmsl.md#acpi-setup---bios-configuration) + - E.g. AR0234 MIPI using [userspace-mipi.md](doc/ar0234/userspace-mipi.md#bios-configuration-table) + +

    (back to Setup Procedure)

    -### Camera Configuration File Setup +--- +### ACPI Setup - ASL Configuration -Setup camera configuration file under section `Camera Configuration File Setup` in recommended userspace.md. +ASL Configuration is added since release/26Q2.1. +1. Turn off all Camera related BIOS setting. +2. Create own ASL source file using reference ASL source file in `../../acpi/{ipu}`. Follow section [here](doc/acpi/kernelspace.md#reference-asl-source-files). +3. Compile and load ASL source into GRUB. Follow section [here](doc/acpi/kernelspace.md#compile-and-load) + +

    (back to Setup Procedure)

    + +--- ### Setup Verification -Verify sensor setup using `media-ctl`. +> **Note:** Minimum media-ctl version required = ([1.30](https://github.com/gjasny/v4l-utils/tree/stable-1.30)) + +1. Verify sensor setup using `media-ctl -p`. + +

    (back to Setup Procedure)

    -> **Note:** Minimum version required = ([1.30](https://github.com/gjasny/v4l-utils/tree/stable-1.30)) +--- +### Stream Verification + +1. Reference stream verification for different sensor setup can be found in [doc/{sensor}](doc/) and respective userspace.md files. + - E.g. ISX031 GMSL using [userspace-gmsl.md](doc/isx031/userspace-gmsl.md#stream-verification) + - E.g. AR0234 MIPI using [userspace-mipi.md](doc/ar0234/userspace-mipi.md#sample-userspace-command) + +

    (back to Setup Procedure)

    + +
    +--- ## Contributing Please read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on contributing to this project. From 17cd1f380652ab8fc79fccea225451352e6fcf09 Mon Sep 17 00:00:00 2001 From: "Khai Wen, Ng" Date: Thu, 13 Aug 2026 00:41:04 +0800 Subject: [PATCH 2/5] doc: isx031: Improve userspace-gmsl.md Added navigation within documents. Added navigation to other documents. Added ASL configuration information. Added collapse and expand feature. Added Supported Configuration. Added Highest Bandwdith Configuration. Signed-off-by: Khai Wen, Ng --- doc/isx031/userspace-gmsl.md | 541 +++++++++++++++++++++++++++-------- 1 file changed, 414 insertions(+), 127 deletions(-) diff --git a/doc/isx031/userspace-gmsl.md b/doc/isx031/userspace-gmsl.md index a6ad7432..837b24d2 100644 --- a/doc/isx031/userspace-gmsl.md +++ b/doc/isx031/userspace-gmsl.md @@ -6,36 +6,39 @@ This document details the configuration settings for the ISX031 GMSL sensor, pro - [Hardware Connection](#hardware-connection) - [MAX9296 (REV B) Connection](#max9296-rev-b-connection) - - [MAX96724 AIC (REV A) Connection](#max96724-aic-rev-a-connection) - - [MAX96724 AIC (D-PHY) (REV B) Connection](#max96724-aic-d-phy-rev-b-connection) + - [MAX96724 AIC (C-PHY) (REV A) Connection](#max96724-aic-c-phy-rev-a-connection) - [MAX96724 AIC (C-PHY) (REV B) Connection](#max96724-aic-c-phy-rev-b-connection) + - [MAX96724 AIC (D-PHY) (REV B) Connection](#max96724-aic-d-phy-rev-b-connection) - [MAX96724 AIC (C-PHY to D-PHY Adapter) (REV B) Connection](#max96724-aic-c-phy-to-d-phy-adapter-rev-b-connection) -- [BIOS Configuration Table](#bios-configuration-table) +- [ACPI Setup - BIOS Configuration](#acpi-setup---bios-configuration) - [Disable C States](#disable-c-states) - [Sensor ACPI HID](#sensor-acpi-hid) - - [MIPI Camera Configuration for IPU6EP](#mipi-camera-configuration-for-ipu6ep) - - [MIPI Camera Configuration for IPU6EPMTL](#mipi-camera-configuration-for-ipu6epmtl) - - [Connected to MAX9296 AIC](#connected-to-max9296-aic) - - [Connected to D-PHY of MAX96724 AIC (REV B)](#connected-to-d-phy-of-max96724-aic-rev-b) - - [MIPI Camera Configuration for IPU75XA](#mipi-camera-configuration-for-ipu75xa) - - [Connected to C-PHY of MAX96724 AIC (REV B)](#connected-to-c-phy-of-max96724-aic-rev-b) - - [Connected to D-PHY of MAX96724 AIC (REV B) (via C-to-D-PHY adapter)](#connected-to-d-phy-of-max96724-aic-rev-b-via-c-to-d-phy-adapter) - - [MIPI Camera Configuration for IPU8](#mipi-camera-configuration-for-ipu8) - - [Connected to C-PHY of MAX96724 AIC (REV A)](#connected-to-c-phy-of-max96724-aic-rev-a) -- [Camera Configuration File Setup](#camera-configuration-file-setup) - - [Setup for IPU6EP](#setup-for-ipu6ep) - - [Setup for IPU6EPMTL](#setup-for-ipu6epmtl) - - [Setup for IPU75XA](#setup-for-ipu75xa) -- [Environment Setup](#environment-setup) + - [BIOS Settings for IPU6EP](#bios-settings-for-ipu6ep) + - [BIOS Settings for IPU6EPMTL](#bios-settings-for-ipu6epmtl) + - [BIOS Settings for IPU75XA](#bios-settings-for-ipu75xa) + - [BIOS Settings for IPU8](#bios-settings-for-ipu8) +- [ACPI Setup - ASL Configuration](#acpi-setup---asl-configuration) + - [ASL Configuration for IPU6EPMTL](#asl-configuration-for-ipu6epmtl) + - [ASL Configuration for IPU75XA](#asl-configuration-for-ipu75xa) + - [ASL Configuration for IPU8](#asl-configuration-for-ipu8) +- [Libcamhal Configuration File Setup (BIOS configured systems)](#libcamhal-configuration-file-setup-bios-configured-systems) + - [Libcamhal Config for IPU6EP](#libcamhal-config-for-ipu6ep) + - [Libcamhal Config for IPU6EPMTL](#libcamhal-config-for-ipu6epmtl) + - [Libcamhal Config for IPU75XA](#libcamhal-config-for-ipu75xa) + - [Libcamhal Config for IPU8](#libcamhal-config-for-ipu8) - [Sensor Verification](#sensor-verification) -- [Sample Userspace Command](#sample-userspace-command) - - [Sensor Device Selection](#sensor-device-selection) - - [How to relate Sensor Number with AIC Link Port](#how-to-relate-sensor-number-with-aic-link-port) - - [Frame Buffer Memory Type (IO Mode) Selection](#frame-buffer-memory-type-io-mode-selection) - - [Sensor Resolution Selection](#sensor-resolution-selection) - - [Sensor Format Selection](#sensor-format-selection) - - [Number of Stream (Single Stream / Multi Stream) Selection](#number-of-stream-single-stream--multi-stream-selection) +- [Supported Configurations](#supported-configurations) +- [Stream Verification](#stream-verification) + - [Environment Setup](#environment-setup) + - [Stream with GStreamer icamerasrc](#stream-with-gstreamer-icamerasrc) + - [device-name Selection](#device-name-selection) + - [io-mode Selection](#io-mode-selection) + - [Sensor Resolution Selection](#sensor-resolution-selection) + - [Sensor Format Selection](#sensor-format-selection) + - [Number of Streams (Single-Stream / Multi-Stream) Selection](#number-of-streams-single-stream--multi-stream-selection) - [Streaming Result](#streaming-result) + - [Highest Bandwidth Configuration](#highest-bandwidth-configuration) + ## Hardware Connection @@ -57,7 +60,7 @@ This section describes the physical AIC (Add-In Card) hardware setup, including > **Note:** The MAX96724 AIC (REV B) supports both C-PHY and D-PHY connections, selectable via the J14 jumper. -Image below shows the C-PHY setup. +The image below shows the C-PHY setup. ![link-port](../images/max96724-fabb-cphy.png) @@ -65,47 +68,58 @@ Image below shows the C-PHY setup. > **Note:** Ensure the J14 jumper pins are oriented toward the D-PHY connector, as shown in the image below. -Image below shows the D-PHY setup. +The image below shows the D-PHY setup. ![link-port](../images/max96724-fabb-dphy.png) ### MAX96724 AIC (C-PHY to D-PHY Adapter) (REV B) Connection -Image below shows the C-PHY to D-PHY adapter setup. +The image below shows the C-PHY to D-PHY adapter setup. ![link-port](../images/max96724-fabb-cphy-dphy.png) -## BIOS Configuration Table +The following sections show the BIOS settings for each platform. Configure the BIOS for the platform in use. -> **Note:** No External Clock required. +>**Note:** If you want to configure ACPI using ASL, please refer to the [ASL configuration](#acpi-setup---asl-configuration) section below. + +--- +## ACPI Setup - BIOS Configuration + +Using the BIOS configuration exercises the [ipu-acpi](../../drivers/media/platform/intel/) and [max9x](../../drivers/media/i2c/max9x/) drivers. ### Disable C States -Config path: `Intel Advanced Menu`->`Power & Performance`->`CPU - Power Management Control` +Disabling C-states prevents the system from entering low-power states, helping maintain consistent performance and reduce latency during camera operation. -| | Options | -|--- |--- | -| C states | Disabled | +> **Note:** This option applies only to IPU6EP platforms. -> **Note:** : This option is only applicable for IPU6EP platforms (ADL, TWL, ASL and RPL). +>**BIOS path**: `Intel Advanced Menu`->`Power & Performance`->`CPU - Power Management Control` -> C states -> **Disabled** +--- ### Sensor ACPI HID -| Vendor | Sensor ACPI HID | -|--- |--- | -| D3 Embedded | INTC031M | -| Leopard Imaging | INTC031L | -| Otobrite | INTC031O | -| Sensing | INTC031S | - -> **Note:** Sensor ACPI HID value will be used for `MIPI Camera Configuration`. +Use the sensor ACPI HID in the **Custom HID** field. -### MIPI Camera Configuration for IPU6EP +| Vendor | Sensor ACPI HID | +|-----------------|:---------------:| +| D3 Embedded | INTC031M | +| Leopard Imaging | INTC031L | +| Otobrite | INTC031O | +| Sensing | INTC031S | -Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` +--- +### BIOS Settings for IPU6EP
    -Click to expand BIOS camera link options + MAX9296 DPHY + 4x ISX031 +

    (Back to Hardware Setup)

    +> **Note:** No control logic or external clock is required. + +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 1` -> **Enabled** + +>**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 2` -> **Enabled** | | Camera1 Link options | Camera2 Link Options | |--- |--- | --- | @@ -142,15 +156,25 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam | Flash Driver Selection | Disabled | Disabled |
    +

    (Go to Libcamhal Config)

    -### MIPI Camera Configuration for IPU6EPMTL +--- +### BIOS Settings for IPU6EPMTL -Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` +
    +MAX9296 DPHY + 4x ISX031 +

    (Back to Hardware Setup)

    -#### Connected to MAX9296 AIC +>**Connection:**\ + Refer to [MAX9296 (REV B) Connection](#max9296-rev-b-connection) for hardware connection and jumper setup. -
    -Click to expand BIOS camera link options +> **Note:** No control logic or external clock is required. + +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 1` -> **Enabled** + +>**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 2` -> **Enabled** | | Camera1 Link options | Camera2 Link Options | |--- |--- | --- | @@ -190,12 +214,15 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam
    -#### Connected to D-PHY of MAX96724 AIC (REV B) +
    +MAX96724 DPHY + 8x ISX031 +

    (Back to Hardware Setup)

    -> **Note:** Refer to [MAX96724 AIC (D-PHY) (REV B) Connection](#max96724-aic-d-phy-rev-b-connection) for hardware connection and jumper setup. +>**Connection:**\ + Refer to [MAX96724 AIC (D-PHY) (REV B) Connection](#max96724-aic-d-phy-rev-b-connection) for hardware connection and jumper setup. -
    -Click to expand BIOS camera link options +>**BIOS path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` | | Camera1 Link options | Camera2 Link Options | |--- |--- | --- | @@ -235,16 +262,25 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam
    -### MIPI Camera Configuration for IPU75XA +

    (Go to Libcamhal Config)

    -Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` +--- +### BIOS Settings for IPU75XA -#### Connected to C-PHY of MAX96724 AIC (REV B) +
    +MAX96724 CPHY + 8x ISX031 +

    (Back to Hardware Setup)

    -> **Note:** Refer to [MAX96724 AIC (C-PHY) (REV B) Connection](#max96724-aic-c-phy-rev-b-connection) for hardware connection and jumper setup. +>**Connection:**\ + Refer to [MAX96724 AIC (C-PHY) (REV B) Connection](#max96724-aic-c-phy-rev-b-connection) for hardware connection and jumper setup. -
    -Click to expand BIOS camera link options +> **Note:** No control logic or external clock is required. + +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 1` -> **Enabled** + +>**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 2` -> **Enabled** | | Camera1 Link options | Camera2 Link Options | |--- |--- | --- | @@ -286,9 +322,15 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam
    -#### Connected to D-PHY of MAX96724 AIC (REV B) (via C-to-D-PHY adapter) +
    +MAX96724 DPHY (via C-to-D-PHY adapter) + 6x ISX031 +

    (Back to Hardware Setup)

    + +>**Connection:**\ + Refer to [MAX96724 AIC DPHY (via C-PHY to D-PHY Adapter) (REV B) Connection](#max96724-aic-c-phy-to-d-phy-adapter-rev-b-connection) for hardware connection and jumper setup. -> **Note:** Refer to [MAX96724 AIC (C-PHY to D-PHY Adapter) (REV B) Connection](#max96724-aic-c-phy-to-d-phy-adapter-rev-b-connection) for hardware connection and jumper setup. +>**BIOS path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration`
    Click to expand BIOS camera link options @@ -331,19 +373,28 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam | Customize Device ID Number | 19 | 19 | | Flash Driver Selection | Disabled | Disabled | +
    +

    (Go to Libcamhal Config)

    -### MIPI Camera Configuration for IPU8 +--- +### BIOS Settings for IPU8 -Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` +
    +MAX96724 CPHY + 8x ISX031 +

    (Back to Hardware Setup)

    -#### Connected to C-PHY of MAX96724 AIC (REV A) +>**Connection:**\ + Refer to [MAX96724 AIC (C-PHY) (REV A) Connection](#max96724-aic-c-phy-rev-a-connection) for hardware connection and jumper setup. -> **Note:** Refer to [MAX96724 AIC (REV A) Connection](#max96724-aic-rev-a-connection) for hardware connection. +> **Note:** No control logic or external clock is required. -
    -Click to expand BIOS camera link options +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 1` -> **Enabled** + +>**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 2` -> **Enabled** | | Camera1 Link options | Camera2 Link Options | |--- |--- | --- | @@ -385,58 +436,278 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam
    -## Camera Configuration File Setup +

    (Go to Libcamhal Config)

    + +--- +## ACPI Setup - ASL Configuration + +

    IMPORTANT: Turn off the BIOS setting to use the ASL method.

    + +Using the ASL configuration exercises the [maxim-serdes](../../drivers/media/i2c/maxim-serdes/) drivers. + +To compile ASL and load an SSDT overlay image, refer to [acpi/kernelspace.md](../acpi/kernelspace.md#compile-and-load). + +--- +### ASL Configuration for IPU6EPMTL + +
    + MAX9296 DPHY + 4x D3 ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    + +>**ASL:** [max9296_d3_isx031.asl](../../acpi/ipu6/max9296_d3_isx031.asl)\ + +
    + +
    + MAX9296 DPHY + 1x LI ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    -#### Setup for IPU6EP +>**ASL:** [max9296_li_isx031.asl](../../acpi/ipu6/max9296_li_isx031.asl)\ -Replace target system with recommended [ipu6ep](../../config/isx031/ipu6ep) setting +
    + +
    + MAX9296 DPHY + 1x Sensing ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    -> **Note:** Add config below only if using x1 GMSL sensor. +>**ASL:** [max9296_sensing_isx031.asl](../../acpi/ipu6/max9296_sensing_isx031.asl)\ + +
    + +
    + MAX96724 DPHY + 8x D3 ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    + +>**ASL:** [max96724_dphy_d3_isx031.asl](../../acpi/ipu6/max96724_dphy_d3_isx031.asl)\ + +
    + +

    (Go to Pipeline Configuration)

    + +--- +### ASL Configuration for IPU75XA + +
    + MAX96724 CPHY + 8x D3 ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    + +>**ASL:** [max96724_d3_isx031.asl](../../acpi/ipu7/max96724_d3_isx031.asl)\ + +
    + +
    + MAX96724 CPHY + 1x LI ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    + +>**ASL:** [max96724_li_isx031.asl](../../acpi/ipu7/max96724_li_isx031.asl)\ + +
    + +
    + MAX96724 CPHY + 1x Sensing ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    + +>**ASL:** [max96724_sensing_isx031.asl](../../acpi/ipu7/max96724_sensing_isx031.asl)\ + +
    + +
    + MAX96724 DPHY + 6x D3 ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    + +>**ASL:** [max96724_dphy_d3_isx031.asl](../../acpi/ipu7/max96724_dphy_d3_isx031.asl)\ + +
    + +

    (Go to Pipeline Configuration)

    + +--- +### ASL Configuration for IPU8 + +
    + MAX96724 CPHY + 8x D3 ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    + +>**ASL:** [max96724_d3_isx031.asl](../../acpi/ipu8/max96724_d3_isx031.asl)\ + +
    + +
    + MAX96724 CPHY + 1x LI ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    + +>**ASL:** [max96724_li_isx031.asl](../../acpi/ipu8/max96724_li_isx031.asl)\ + +
    + +
    + MAX96724 CPHY + 1x Sensing ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    + +>**ASL:** [max96724_sensing_isx031.asl](../../acpi/ipu8/max96724_sensing_isx031.asl)\ + +
    + +
    + MAX96724 DPHY + 6x D3 ISX031 GMSL sensor use case +

    (Back to Hardware Setup)

    + +>**ASL:** [max96724_dphy_d3_isx031.asl](../../acpi/ipu8/max96724_dphy_d3_isx031.asl)\ + +
    + +

    (Go to Pipeline Configuration)

    + +--- +## Libcamhal Configuration File Setup (BIOS-Configured Systems) + +**Note:**\ +For ASL-configured systems, refer to [acpi/userspace-gmsl.md](../acpi/userspace-gmsl.md#stream-verification) for the libcamhal configuration file setup. + +#### Libcamhal Config for IPU6EP + +
    +1x GMSL sensor use case + +Please use recommended config from [ipu6ep](../../config/isx031/ipu6ep). + +> **Note:** Add config below only if using 1x GMSL sensor. sudo cp -r ../../config/isx031/ipu6ep /etc/camera sudo sed -i '/availableSensors/c\ ' /etc/camera/ipu6ep/libcamhal_profile.xml -> **Note:** Add config below only if using x4 GMSL sensors. +
    + +
    +4x GMSL sensor use case + +**BIOS configuration:** [IPU6EP 4x GMSL sensor use case](#bios-settings-for-ipu6ep) Please use config from [VTG ipu6ep](https://github.com/intel/ipu6-camera-hal/tree/iotg_ipu6/config/linux/ipu6ep). +
    -#### Setup for IPU6EPMTL +

    (Go to Sensor Verification)

    +

    (Go to Stream Verification)

    -Replace target system with recommended [ipu6epmtl](../../config/isx031/ipu6epmtl) setting +--- +#### Libcamhal Config for IPU6EPMTL -> **Note:** Add config below only if using x1 GMSL sensor. +
    +1x GMSL sensor use case + +Please use config from [ipu6epmtl](../../config/isx031/ipu6epmtl). + +> **Note:** Add config below only if using 1x GMSL sensor. sudo cp -r ../../config/isx031/ipu6epmtl /etc/camera sudo sed -i '/availableSensors/c\ ' /etc/camera/ipu6epmtl/libcamhal_profile.xml -> **Note:** Add config below only if using x4 GMSL sensors. +
    + +
    +4x GMSL sensor use case Please use config from [VTG ipu6epmtl](https://github.com/intel/ipu6-camera-hal/tree/iotg_ipu6/config/linux/ipu6epmtl). -> **Note:** Add config below only if using x8 GMSL sensors. +
    + +
    +8x GMSL sensor use case + +Please use config from [ipu6epmtl](../../config/isx031/ipu6epmtl). + +> **Note:** Add config below only if using 8x GMSL sensors. sudo cp -r ../../config/isx031/ipu6epmtl /etc/camera sudo sed -i '/availableSensors/c\ ' /etc/camera/ipu6epmtl/libcamhal_profile.xml +
    -#### Setup for IPU75XA +

    (Go to Sensor Verification)

    +

    (Go to Stream Verification)

    -Replace target system with recommended [ipu75xa](../../config/isx031/ipu75xa) setting +--- +#### Libcamhal Config for IPU75XA -> **Note:** Add config below only if using x1 GMSL sensor. +
    +1x GMSL sensor use case + +Please use recommended config from [ipu75xa](../../config/isx031/ipu75xa). + +> **Note:** Add config below only if using 1x GMSL sensor. sudo cp -r ../../config/isx031/ipu75xa /etc/camera sudo sed -i '/"availableSensors"/c\ "availableSensors": ["isx031-1-0"],' /etc/camera/ipu75xa/libcamhal_configs.json -> **Note:** Add config below only if using x8 GMSL sensors. +
    + +
    +8x GMSL sensor use case + +> **Note:** Add config below only if using 8x GMSL sensors. Please use config from [VTG ipu75xa](https://github.com/intel/ipu7-camera-hal/tree/main/config/linux/ipu75xa). - sudo sed -i '/"availableSensors"/c\ "availableSensors": ["isx031-1-0","isx031-2-0","isx031-3-0","isx031-4-0","isx031-5-2","isx031-6-2","isx031-7-2","isx031-8-2",' /etc/camera/ipu75xa/libcamhal_configs.json +
    + +

    (Go to Sensor Verification)

    +

    (Go to Stream Verification)

    + +--- +#### Libcamhal Config for IPU8 -## Environment Setup +
    +1x GMSL sensor use case + +Please use recommended config from [ipu8](../../config/isx031/ipu8). + +> **Note:** Add config below only if using 1x GMSL sensor. + + sudo cp -r ../../config/isx031/ipu8 /etc/camera + sudo sed -i '/"availableSensors"/c\ "availableSensors": ["isx031-1-0"],' /etc/camera/ipu8/libcamhal_configs.json + +
    + +
    +8x GMSL sensor use case + +> **Note:** Add config below only if using 8x GMSL sensors. + +Please use config from [VTG ipu8](https://github.com/intel/ipu7-camera-hal/tree/main/config/linux/ipu8). + +
    + +

    (Go to Sensor Verification)

    +

    (Go to Stream Verification)

    + +--- +## Sensor Verification + +After completing the setup, verify that the sensor is probed and registered with the V4L2 framework: + + media-ctl -p + +When using the BIOS configuration, the output for a single camera should look like the example below. +![media-ctl output](img-entity-isx031-gmsl.png) + +--- +## Supported Configurations + +| Format | Resolution | Frame Rate | +|---|---|---| +| UYVY8_1X16 | 1920x1536 | 60, 30 | +| | 1920x1080 | 60, 30 (default) | +| | 1280x720 | 30 | -Export environment variables below +--- +## Stream Verification + +> **Note:** \ +> For an ASL-configured system, refer to [acpi/userspace-gmsl.md](../acpi/userspace-gmsl.md) for pipeline setup and stream verification commands. + +### Environment Setup + +Export the environment variables below: unset XDG_RUNTIME_DIR export DISPLAY=:0; xhost + @@ -450,82 +721,98 @@ Export environment variables below export logSink=terminal rm -rf ~/.cache/gstreamer-1.0 -(Required for IPU6 only) Configure isys_freq value +For IPU6 only, configure the `isys_freq` value: sudo bash -c 'echo "options intel-ipu6 isys_freq_override=475" >> /etc/modprobe.d/ipu.conf' -## Sensor Verification - -Upon setup completion, verify sensor with: +--- +### Stream with GStreamer icamerasrc - media-ctl -p +#### device-name Selection -![media-ctl output](img-entity-isx031-gmsl.png) - -## Sample Userspace Command - -#### Sensor Device Selection - -| Sensor Number | Command Pipeline | -|---|---| -| 1 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +| AIC Link | Supported Device-name | Command Pipeline | +|:--------:|:---------------------:|------------------| +| A | isx031-1 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +| B | isx031-2 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +| C | isx031-3 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-3 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +| D | isx031-4 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-4 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +| E | isx031-5 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-5 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +| F | isx031-6 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-6 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +| G | isx031-7 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-7 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +| H | isx031-8 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-8 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | -> **Note**: Refer to icamerasrc device-name property for more sensor details. +> **Note:** Link ports E, F, G, and H apply only to the MAX96724 AIC. -##### How to relate Sensor Number with AIC Link Port +> **Note:** Refer to the icamerasrc `device-name` property for more sensor details. -| AIC Link Port | Sensor Number | -|--- |--- | -| A | 1 | -| B | 2 | -| C | 3 | -| D | 4 | - -> **Note:** Link ports C and D are only applicable for MAX96724 AIC. - -Refer to [MAX9296 (REV B) Connection](#max9296-rev-b-connection) or [MAX96724 AIC (REV A) Connection](#max96724-aic-rev-a-connection) under Hardware Connection for the physical link port layout. - -#### Frame Buffer Memory Type (IO Mode) Selection +--- +#### io-mode Selection | IO Mode | Command Pipeline | |---|---| | MMAP | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-1 printfps=true io-mode=mmap ! 'video/x-raw,format=UYVY,width=1920,height=1536' ! glimagesink sync=false | | DMA MODE | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | -> **Note**: Refer to icamerasrc io-mode property for more sensor details. +> **Note:** Refer to the icamerasrc `io-mode` property for more sensor details. +--- #### Sensor Resolution Selection | Resolution | Command Pipeline | |---|---| | 1920x1536 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +| 1920x1080 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1080' ! glimagesink sync=false | +| 1280x720 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1280,height=720' ! glimagesink sync=false | +

    (Back to Supported Configurations)

    +--- #### Sensor Format Selection | Format | Command Pipeline | |---|---| | UYVY | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | -#### Number of Stream (Single Stream / Multi Stream) Selection +

    (Back to Supported Configurations)

    + +--- +#### Number of Streams (Single-Stream / Multi-Stream) Selection | Number of Stream | Command Pipeline | |---|---| | x1 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | | x2 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=2 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=2 scene-mode=normal device-name=isx031-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | | x4 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=4 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=4 scene-mode=normal device-name=isx031-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=4 scene-mode=normal device-name=isx031-3 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=4 scene-mode=normal device-name=isx031-4 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +| x6 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=6 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=6 scene-mode=normal device-name=isx031-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=6 scene-mode=normal device-name=isx031-3 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=6 scene-mode=normal device-name=isx031-4 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=6 scene-mode=normal device-name=isx031-5 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=6 scene-mode=normal device-name=isx031-6 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | | x8 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=8 scene-mode=normal device-name=isx031-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=8 scene-mode=normal device-name=isx031-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=8 scene-mode=normal device-name=isx031-3 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=8 scene-mode=normal device-name=isx031-4 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=8 scene-mode=normal device-name=isx031-5 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=8 scene-mode=normal device-name=isx031-6 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=8 scene-mode=normal device-name=isx031-7 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=8 scene-mode=normal device-name=isx031-8 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | ## Streaming Result -| Number of Stream | IO Mode | FPS Result | -|--- |--- |--- | -| x1 | MMAP | 30 | -| x2 | MMAP | 30 | -| x4 | MMAP | 30 | -| x8 | MMAP | 30 | -| x1 | DMA MODE | 30 | -| x2 | DMA MODE | 30 | -| x4 | DMA MODE | 30 | -| x8 | DMA MODE | 30 | - -> **Note:** Please ensure your system enable support for specified number of stream before test. +| Number of Stream | IO Mode | FPS Result |ipu6ep|ipu6epmtl|ipu75xa|ipu8| +|:----------------:|:--------:|:----------:|:----:|:-------:|:-----:|:--:| +| x1 | MMAP | 30 |✅|✅|✅|✅| +| x2 | MMAP | 30 |✅|✅|✅|✅| +| x4 | MMAP | 30 |✅|✅|✅|✅| +| x6 | DMA MODE | 30 |❌|❌|✅|✅| +| x8 | MMAP | 30 |❌|✅|✅|✅| +| x1 | DMA MODE | 30 |✅|✅|✅|✅| +| x2 | DMA MODE | 30 |✅|✅|✅|✅| +| x4 | DMA MODE | 30 |✅|✅|✅|✅| +| x6 | DMA MODE | 30 |❌|❌|✅|✅| +| x8 | DMA MODE | 30 |❌|✅|✅|✅| + +> **Note:** Ensure that the system supports the specified number of streams before testing. + +### Highest Bandwidth Configuration + +The highest-bandwidth configurations tested are listed below. + + 1. DPHY 4-lane per MIPI Port + - 4x 1920x1536 @ 30fps (default) + - 3x 1920x1536 @ 60fps + + 2. DPHY 2-lane per MIPI Port + - 2x 1920x1536 @ 30fps (default) + + 3. CPHY 2-trio per MIPI Port + - 4x 1920x1536 @ 30fps (default) + - 3x 1920x1536 @ 60fps From f68cdce2e97c566680f4f5fd4c1339a7e92433f3 Mon Sep 17 00:00:00 2001 From: "Khai Wen, Ng" Date: Mon, 17 Aug 2026 00:56:39 +0800 Subject: [PATCH 3/5] doc: acpi: Update kernelspace.md Add table of content. Add collapse and expand feature for easier readability. Updated table for easier readability. Signed-off-by: Khai Wen, Ng --- doc/acpi/kernelspace.md | 328 ++++++++++++++++++++++++++++++++-------- 1 file changed, 262 insertions(+), 66 deletions(-) diff --git a/doc/acpi/kernelspace.md b/doc/acpi/kernelspace.md index 241f0efd..8b722a44 100644 --- a/doc/acpi/kernelspace.md +++ b/doc/acpi/kernelspace.md @@ -1,113 +1,296 @@ -## User Guide for ACPI SSDT ASL Compilation and Loading for Imaging Sensors - ## Description -This document contains information of imaging specific ACPI SSDT ASL sources compilation and loading. It also contains information of how to construct media-ctl pipeline for imaging sensors described in ACPI SSDT, and how to verify the streaming of sensors. +This document contains information of imaging specific ACPI SSDT ASL sources compilation and loading. -## Create ACPI ASL Source Files +## Table of Contents -ASL source file needs to be created based on current hardware setup using reference ASL source file in ../../acpi/{ipu}. -Below sections describe the common ASL source files for different use cases and IPU generations, and the required defines in ASL source file for deserializer, serializer and camera sensor. + +
    + Table of Contents +
      +
    1. ACPI Configuration for Camera Imaging
    2. +
    3. Legacy BIOS Method
    4. +
    5. SSDT ASL Method
    6. +
    7. Advantage of SSDT ASL Method
    8. +
    9. Requirement to use SSDT ASL method
    10. +
    11. What are ACPI ASL Source Files?
    12. +
    13. Reference ASL Source Files
    14. +
    15. ASL Source Files for Different Use Cases
    16. +
    17. Compile and Load ACPI ASL Source Files
    18. +
    +
    + -### Common ASL to be shared across different use cases and IPU generations -These ASL source files should be able to be reused for different use cases. +## ACPI Configuration for Camera Imaging -> **Note:** If there is a need to be modify common ASL, make sure the changes are generic enough to be reused for different use cases. +The ACPI namespace is a hierarchical representation of platform devices and resources exposed by the BIOS firmware, enabling the operating system to discover, configure, and manage hardware. -> **Note:** These ASL source files are **NOT** meant to be compiled into AML file directly. They should be included by use case specific ASL source files. +Both [Legacy BIOS method](#legacy-bios-method) and [SSDT ASL method](#ssdt-asl-method) create ACPI devices for camera imaging. There can be conflicts if both methods are used simultaneously, so it is recommended to use only one method at a time. -| ASL source file | Description | Usage | -| --- | --- | --- | -| _des_common_max96724.asl | Common ASL for MAX96724 deserializer | Included by caller ASL source file for each MAX96724 deserializer | -| _des_ch_common_isx031.asl | Common ASL for single Deserializer Channel / Link with ISX031 2D camera sensor | Included by caller ASL source file for each link with ISX031 sensor | -| _des_ch_common_d457.asl | Common ASL for single Deserializer Channel / Link with D457 3D camera sensor | Included by caller ASL source file for each link with D457 sensor | -| _ser_common_max9295.asl | Common ASL for MAX9295 serializer | Included by _des_ch_common_*.asl | -| _cam_common_isx031.asl | Common ASL for ISX031 2D camera sensor | Included by _des_ch_common_isx031.asl | -| _cam_common_d457.asl | Common ASL for D457 3D camera sensor | Included by _des_ch_common_d457.asl | +### Legacy BIOS method + +Using Legacy BIOS method, the camera imaging configuration is done through BIOS settings. BIOS has pre-defined fields and methods to store the configuration done on the BIOS menu page, which primarily caters to MIPI Direct camera setups. + +For the MIPI Direct case, the `ipu-bridge` driver will read the BIOS settings and create an FWnode for each camera ACPI device. The sensor is then probed through the ACPI framework and registered into the V4L2 subdev framework. + +For the GMSL case, the `ipu-acpi` driver will read the BIOS settings and create a static I2C platform data structure. The `ipu-driver` will then use the I2C platform data to probe `max9x` GMSL drivers and then sensor drivers through the I2C framework. The SerDes and sensors are then registered into the V4L2 subdev framework. + +Limitations: +This method primarily caters to MIPI Direct camera setups ONLY +To properly describe GMSL setup, existing fields are not sufficient and some fields need to be repurposed. +The mechanism for creating the I2C platform data structure is fixed in `ipu-acpi`, it can **ONLY** populate multiple **SAME sensors** on a single deserializer. + +### SSDT ASL method + +Using SSDT ASL method, the camera imaging configuration is done through ACPI ASL source files. The ASL source files describe the hardware configuration of the system. They are compiled into SSDT binary, packaged into an early initramfs image, and loaded by the kernel during boot as an ACPI table **override**. + +ASL files already have macros that describe the FWnode and I2C information for each camera device. The kernel `drivers/acpi/mipi-disco-img.c` will handle the FWnode creation. Sensor drivers and/or GMSL drivers will be probed through the ACPI framework and registered into the V4L2 subdev framework. + +

    IMPORTANT: DISABLE all camera related BIOS settings when using SSDT ASL method

    + +### Advantage of SSDT ASL method + +- Offers flexibility: ASL source files are configurable according to the current hardware setup. +- Advanced configuration: Supports mix-and-match configurations of different GMSL sensors on a single deserializer. +- Modularity: Users do not need to recompile the `ipu-acpi` driver to add new sensors. Removes the dependency on BIOS. + +### Requirement to use SSDT ASL method +- To compile ASL source files, you need to install `acpica` tools version 20260408 or later. Refer to [Compile and Load](#compile-and-load) section for details. +- GMSL setup enabled through this method requires **CONFIG_I2C_ATR** turned on in base kernel. If you are using Intel BKC, you might want to rebuild the kernel overlay with this config enabled. + +## What are ACPI ASL Source Files? + +ASL (ACPI Source Language) source files are used to describe the hardware configuration of the system to the operating system. In the context of imaging, these ASL source files define the configuration of camera sensors, (deserializers, serializers for GMSL setups), and their connections to the system's MIPI CSI ports. + +The ASL source files are compiled into AML (ACPI Machine Language) binary tables, which are then loaded by the operating system during boot. These tables provide the necessary information for the OS to correctly initialize and manage the imaging hardware. + +

    IMPORTANT: ASL source file must match or be subset of actual hardware setup. +Any mismatch between the ASL source files and the actual hardware can lead to failures in device registration and streaming.

    -### ASL source file for different use cases +The ASL source files are specific to the hardware configuration of the system. The common description of the hardware includes: +- PHY type +- MIPI Port +- Lane configuration +- I2C information (using I2cSerialBusV2) +- GPIO resource allocation (using GpioIo) +- FWnode linkage (using CSI2Bus) -The reference ASL source files are located in ../../acpi/{ipu}. Make sure below ASL source files is at least **subset** of your current hardware setup. -If you connect 4x 2D sensor with max96724, the ASL source file can have 1/2/3/4 channels. -If you only connect 1x 2D sensor with max96724, the ASL source file can only have 1 channel. +For GMSL setups, the description includes the number of sensors, and extended I2C information and FWnode between deserializers and each serializer-sensor module. -> **WARNING**: If ASL specified more than actual Hardware connection, or there is probe failure in any one of the links, the whole v4l2 subdev registration will fail, and subsequent streaming will not be able to work. +## Reference ASL Source Files -> There are ../../acpi/ipu6 , ../../acpi/ipu7 , ../../acpi/ipu8 folders. The files are mostly similar across different IPU generations, but with minor difference such as CPHY/DPHY for deserializer, or IPU MIPI port. Make sure to pick the right reference ASL source file based on your IPU generation. +The ASL source files in [acpi/](../../acpi/) are provided as a starting point for creating your own ASL source files based on your specific hardware setup. -| Use case | Reference ASL source file | +

    You should use these reference files to understand the structure and required defines, and then create your own ASL source files that accurately reflect your hardware configuration.

    + +
    + Hierarchy + +The hierarchy of the ASL Source Files for MIPI setup looks like this: + + Parent MIPI.asl (e.g. mipi_isx031.asl) + ├── _ipu.asl + └── _mipi_cam_common_*.asl + +The hierarchy of the ASL Source Files for GMSL setup looks like this: + + Parent GMSL.asl (e.g. max96724_*.asl) + ├── _ipu.asl + └── _des_common_*.asl + ├── _des_ch_common_*.asl + │ ├── _ser_common_*.asl + │ └── _cam_common_*.asl + └── _des_ch_common_*.asl + ├── _ser_common_*.asl + └── _cam_common_*.asl + +
    + +
    + Common ASL + +These Common ASL source files should be shared and reused across different use cases and IPU generations. They are **NOT** meant to be compiled into AML file directly and are included by parent ASL source files. They contain common definitions and methods that can be used by multiple ASL source files, reducing redundancy and improving maintainability. + +> **Note:** If there is a need to modify common ASL, make sure the changes are generic to be reused for different use cases. + +Future enhancements will further reduce redundancy and improve maintainability. + +| Common ASL | Description | | --- | --- | -| 1x 2D sensor | max96724_li_isx031.asl, max96724_sensing_isx031.asl | -| Nx 2D sensor | max96724_d3_isx031.asl, max96724_dphy_d3_isx031.asl, max9296_d3_isx031.asl | -| Nx 3D sensor | max96724_rs_d457.asl, max9296_rs_d457.asl | -| Nx 2D sensors and 3D sensor | max96724_mixed.asl, max9296_mixed.asl | +| _cam_common_ar0234.asl | Common ASL for AR0234 2D camera sensor | +| _cam_common_d457.asl | Common ASL for D457 3D GMSL camera sensor | +| _cam_common_isx031.asl | Common ASL for ISX031 2D GMSL camera sensor | +| _des_ch_common_ar0234.asl | Common ASL for single GMSL Link / Channel with AR0234 2D GMSL camera sensor | +| _des_ch_common_isx031.asl | Common ASL for single GMSL Link / Channel with ISX031 2D GMSL camera sensor | +| _des_ch_common_d457.asl | Common ASL for single GMSL Link / Channel with D457 3D camera sensor | +| _des_common_max96724.asl | Common ASL for MAX96724 deserializer | +| _des_common_max9296.asl | Common ASL for MAX9296 deserializer | +| _ipu.asl | Common ASL for IPU | +| _mipi_cam_common_isx031.asl | Common ASL for ISX031 2D MIPI camera sensor | +| _ser_common_max9295.asl | Common ASL for MAX9295 serializer | + +
    + +
    + ASL defines -### Deserializer Specific Defines in ASL +This section is purely informative to describe the ASL defines used in the reference ASL source files. The defines are expected to be defined in the caller ASL source file, and will be used by the common ASL source files. The defines are grouped into 4 categories: Deserializer specific, Channel specific, Serializer specific, and Sensor specific. -Deserializer specific defines are used to describe the Connection to Board and SOC. These defines are expected to be defined in the caller ASL source file for each deserializer, and will be used by the common ASL source files. Below table describes the required defines for deserializer, and the correlation to legacy BIOS setting if applicable. +
    +Deserializer Specific Defines + +### Deserializer Specific Defines + +Deserializer-specific defines are used to describe the connection to the board and SOC. These defines are expected to be defined in the caller ASL source file for each deserializer and will be used by the common ASL source files. The table below describes the required defines for a deserializer and the correlation to the legacy BIOS setting, if applicable. | Deserializer Define | Description | Value | Correlate to legacy BIOS setting | | --- | --- | --- | --- | -| DES_PHY_TYPE | PHY connection to Board | 0 for CPHY, 1 for DPHY | PhyConfiguration | -| DES_I2C_ADDR | I2C address of the deserializer | 0x0027 for MAX96724, 0x0048 for MAX9296 | I2C Device 0 | -| DES_LANES | Number of lanes used by the deserializer | 2 or 4 depending on use case | Ppr Value | -| DES_INTERNAL_PHY | Internal PHY + 4 | 4/5/6/7 for PHY0/1/2/3 | Rotation (Rotation/90 + 4) | -| DES_TO_MIPI_PORT | Connected to MIPI port of SOC | 0/1/2/3/4/5 based on SOC and Hardware design | MIPI Port | -| DES_I2C_BUS | I2C bus number for deserializer | "\\_SB.PC00.I2Cx" | I2C Channel | -| DES_PATH | ACPI Path for Deserializer | "\\_SB.PC00.DESx" | - | -| DES_REF | ACPI Reference for Deserializer | \_SB.PC00.DESx | - | +| DES_PHY_TYPE | PHY connection to Board | 0 for CPHY, 1 for DPHY | PhyConfiguration | +| DES_I2C_ADDR | I2C address of the deserializer | 0x0027 for MAX96724, 0x0048 for MAX9296 | I2C Device 0 | +| DES_LANES | Number of lanes used by the deserializer | 2 or 4 depending on use case | Ppr Value | +| DES_INTERNAL_PHY | Internal PHY + 4 | 4/5/6/7 for PHY0/1/2/3 | Rotation (Rotation/90 + 4) | +| DES_TO_MIPI_PORT | Connected to MIPI port of SOC | 0/1/2/3/4/5 based on SOC and Hardware design | MIPI Port | +| DES_I2C_BUS | I2C bus number for deserializer | "\\_SB.PC00.I2Cx" | I2C Channel | +| DES_PATH | ACPI Path for Deserializer | "\\_SB.PC00.DESx" | - | +| DES_REF | ACPI Reference for Deserializer | \_SB.PC00.DESx | - | | DES_PIPE_STR_AUTOSELECT | (Optional) Setting for MAX96724 to configure pipe, useful for 3D camera | 0 to disable fixed pipe, 1 to enable fixed pipe (default) | - | -### Channel Specific Defines in ASL +
    + +
    +Channel Specific Defines + +### Channel Specific Defines -Channel specific defines are common for all links, with index increment. For example, if there are 4 deserializer links, the ASL source file should have 4 sets of channel specific defines with link number from 0 to 3. These defines are expected to be defined in the caller ASL source file for each link, and will be used by the common ASL source files. Below table describes the required defines for each channel. +Channel-specific defines are common for all links, with an incrementing index. For example, if there are four deserializer links, the ASL source file should have four sets of channel-specific defines with link numbers from 0 to 3. These defines are expected to be defined in the caller ASL source file for each link and will be used by the common ASL source files. The table below describes the required defines for each channel. | Channel Define | Description | Value | | --- | --- | --- | -| DESCH_LINK_NUM | Link number for current channel | 0/1/2/3 | -| DESCH_CH | Channel Device for current link | CH00/CH01/CH02/CH03 | -| DESCH_SER | Serializer Device for current link | SER0/SER1/SER2/SER3 | -| DESCH_CAM | Camera Device for current link | CAM0/CAM1/CAM2/CAM3 | -| DESCH_CH_PATH | ACPI Path for Channel Device | "\\_SB.PC00.DESx.CH0x" | -| DESCH_SER_PATH | ACPI Path for Serializer Device | "\\_SB.PC00.DESx.SER0/1/2/3" | -| DESCH_SER_REF | ACPI Reference for Serializer Device | \_SB.PC00.DESx.SER0/1/2/3 | +| DESCH_LINK_NUM | Link number for current channel | 0/1/2/3 | +| DESCH_CH | Channel Device for current link | CH00/CH01/CH02/CH03 | +| DESCH_SER | Serializer Device for current link | SER0/SER1/SER2/SER3 | +| DESCH_CAM | Camera Device for current link | CAM0/CAM1/CAM2/CAM3 | +| DESCH_CH_PATH | ACPI Path for Channel Device | "\\_SB.PC00.DESx.CH0x" | +| DESCH_SER_PATH | ACPI Path for Serializer Device | "\\_SB.PC00.DESx.SER0/1/2/3" | +| DESCH_SER_REF | ACPI Reference for Serializer Device | \_SB.PC00.DESx.SER0/1/2/3 | | DESCH_SER_GPIOREF | ACPI Reference for Serializer GPIO | ^^SER0/1/2/3 | -| CAM_ALIAS | Sensor Alias address | 0x54/0x55/0x56/0x57 depends on hardware design. | +| CAM_ALIAS | Sensor Alias address | 0x54/0x55/0x56/0x57 depends on hardware design. | -### Serializer Specific Defines in ASL +
    -Serializer Specific Defines in ASL is used to specify the configuration for serializer. These defines are expected to be defined in the channel specific ASL source file for each link with serializer, and will be used by the common serializer ASL source file. Below table describes the required defines for serializer, and the correlation to legacy setup if applicable. +
    +Serializer Specific Defines + +### Serializer Specific Defines + +Serializer-specific defines in ASL are used to specify the serializer configuration. These defines are expected to be defined in the channel-specific ASL source file for each link with a serializer and will be used by the common serializer ASL source file. The table below describes the required defines for a serializer and the correlation to the legacy setup, if applicable. | Serializer Define | Description | Value | Correlate to legacy setup | | --- | --- | --- | --- | -| DESCH_SER_I2C | I2C address of the serializer | 0x40 or 0x62 based on MAX9295 design | ser_physical_addr in ipu-acpi.c | +| DESCH_SER_I2C | I2C address of the serializer | 0x40 or 0x62 based on MAX9295 design | ser_physical_addr in ipu-acpi.c | | DESCH_SER_EXTRA_GPIO_PIN | (Optional) Extra MFP pin to be configured in Serializer | 1-11 for for mfp1-11 in max9295 | ser_gpio.chip_hwnum in ipu-acpi.c | -| DESCH_SER_X_VC | (Optional) Setting for max9295 serializer to configure VC filter for Pipe X | Package () { 0/1/2/3 } for VC0/1/2/3 on Pipe X | - | -| DESCH_SER_Y_VC | (Optional) Setting for max9295 serializer to configure VC filter for Pipe Y | Package () { 0/1/2/3 } for VC0/1/2/3 on Pipe Y | - | -| DESCH_SER_Z_VC | (Optional) Setting for max9295 serializer to configure VC filter for Pipe Z | Package () { 0/1/2/3 } for VC0/1/2/3 on Pipe Z | - | -| DESCH_SER_U_VC | (Optional) Setting for max9295 serializer to configure VC filter for Pipe U | Package () { 0/1/2/3 } for VC0/1/2/3 on Pipe U | - | +| DESCH_SER_X_VC | (Optional) Setting for max9295 serializer to configure VC filter for Pipe X | Package () { 0/1/2/3 } for VC0/1/2/3 on Pipe X | - | +| DESCH_SER_Y_VC | (Optional) Setting for max9295 serializer to configure VC filter for Pipe Y | Package () { 0/1/2/3 } for VC0/1/2/3 on Pipe Y | - | +| DESCH_SER_Z_VC | (Optional) Setting for max9295 serializer to configure VC filter for Pipe Z | Package () { 0/1/2/3 } for VC0/1/2/3 on Pipe Z | - | +| DESCH_SER_U_VC | (Optional) Setting for max9295 serializer to configure VC filter for Pipe U | Package () { 0/1/2/3 } for VC0/1/2/3 on Pipe U | - | + +
    -### Sensor Specific Defines in ASL +
    +Sensor Specific Defines + +### Sensor Specific Defines | Sensor Define | Description | Value | Correlate to legacy setup | | --- | --- | --- | --- | -| CAM_LANES | Number of lanes used by the camera sensor | 2 or 4 depending on use case | LaneUsed in BIOS | +| CAM_LANES | Number of lanes used by the camera sensor | 2 or 4 depending on use case | LaneUsed in BIOS | | EXTERNAL_FRAME_SYNC | (Optional) Use of FSIN GPIO. Requires an external pulse supplied to deserializer MFP pin | 1 if needed (DESCH_SER_EXTRA_GPIO_PIN and DES_FSIN_GPIO_PIN should also be defined in this case), 0 (default) | - | -#### Sample values for different models of sensors +#### Sample values for different sensor models | Sensor Model | DESCH_SER_I2C | DESCH_SER_EXTRA_GPIO_PIN | EXTERNAL_FRAME_SYNC | CAM_LANES | DESCH_SER_X/Y/Z/U_VC | | --- | --- | --- | --- | --- | --- | | D3 ISX031 | 0x40 | - | - | 4 | - | | LI ISX031 | 0x62 | - | - | 4 | - | | Sensing ISX031| 0x40 | 7 | 1 | 4 | - | -| RS D457 | 0x40 | - | - | 2 | Package () { 0/1/2/3 } for VC0/1/2/3 on Pipe X/Y/Z/U | +| RS D457 | 0x40 | - | - | 2 | Package () { 0 } for VC0 on Pipe X
    Package () { 1 } for VC1 on Pipe Y
    Package () { 2 } for VC2 on Pipe Z
    Package () { 3 } for VC3 on Pipe U | + +
    + +
    + +## ASL Source Files for Different Use Cases + +The reference ASL source files are located in [../../acpi/](../../acpi/) and are grouped according to the platform. The files only have minor differences such as PHY type and MIPI port. + +Make sure the below ASL source files are at least a **subset** of your current hardware setup. + +> Example 1: If you connected sensors on all 4 links with max96724, the ASL source file can have any 1/2/3/4 channels. + +> Example 2: If you only connected on 1 link with max96724, the ASL source file can have only 1 channel, and must be that specific channel. + +> **WARNING**: \ +> If ASL specified more than actual Hardware connection, or there is probe failure in any one of the links, the whole v4l2 subdev registration will fail, and subsequent streaming will not be able to work. + +
    + IPU6EPMTL + +- [ISX031 MIPI YUV](../../acpi/ipu6/mipi_isx031.asl) +- [AR0234 GMSL RAW on MAX9296](../../acpi/ipu6/max9296_d3_ar0234.asl) +- [ISX031 GMSL YUV on MAX9296](../../acpi/ipu6/max9296_d3_isx031.asl) +- [ISX031 GMSL YUV on MAX96724 DPHY](../../acpi/ipu6/max96724_dphy_d3_isx031.asl) +- [D457 GMSL 3D on MAX9296](../../acpi/ipu6/max9296_rs_d457.asl) +- [LI ISX031 GMSL on MAX9296](../../acpi/ipu6/max9296_li_isx031.asl) +- [Sensing ISX031 GMSL on MAX9296](../../acpi/ipu6/max9296_sensing_isx031.asl) +- [2D+2D, 2D+3D GMSL mix-and-match on MAX9296](../../acpi/ipu6/max9296_mixed.asl) + +

    (Go to Compile and Load)

    + +
    + +
    + IPU75XA +- [ISX031 MIPI YUV](../../acpi/ipu7/mipi_isx031.asl) +- [AR0234 GMSL RAW on MAX96724](../../acpi/ipu7/max96724_d3_ar0234.asl) +- [ISX031 GMSL YUV on MAX96724](../../acpi/ipu7/max96724_d3_isx031.asl) +- [ISX031 GMSL YUV on MAX96724 DPHY](../../acpi/ipu7/max96724_dphy_d3_isx031.asl) +- [D457 GMSL 3D on MAX96724](../../acpi/ipu7/max96724_rs_d457.asl) +- [LI ISX031 GMSL on MAX96724](../../acpi/ipu7/max96724_li_isx031.asl) +- [Sensing ISX031 GMSL on MAX96724](../../acpi/ipu7/max96724_sensing_isx031.asl) +- [2D+2D, 2D+3D GMSL mix-and-match on MAX96724](../../acpi/ipu7/max96724_mixed.asl) +- [FrameSync on MAX96724](../../acpi/ipu7/max96724_sensing_isx031_fs.asl) + +

    (Go to Compile and Load)

    + +
    + +
    + IPU8 + +- [ISX031 MIPI YUV](../../acpi/ipu8/mipi_isx031.asl) +- [AR0234 GMSL RAW on MAX96724](../../acpi/ipu8/max96724_d3_ar0234.asl) +- [ISX031 GMSL YUV on MAX96724](../../acpi/ipu8/max96724_d3_isx031.asl) +- [ISX031 GMSL YUV on MAX96724 DPHY](../../acpi/ipu8/max96724_dphy_d3_isx031.asl) +- [D457 GMSL 3D on MAX96724](../../acpi/ipu8/max96724_rs_d457.asl) +- [LI ISX031 GMSL on MAX96724](../../acpi/ipu8/max96724_li_isx031.asl) +- [Sensing ISX031 GMSL on MAX96724](../../acpi/ipu8/max96724_sensing_isx031.asl) +- [2D+2D, 2D+3D GMSL mix-and-match on MAX96724](../../acpi/ipu8/max96724_mixed.asl) + +

    (Go to Compile and Load)

    + +
    + +

    (Go to Compile and Load)

    + +## Compile and Load + +This section contains steps to compile your ASL source files into AML binary tables, and load them into the kernel during boot. The steps are as follows: + +### Prerequisite on Canonical Ubuntu 24.04 or 26.04: -### Compile and Load ACPI ASL source on Canonical Ubuntu 24.04 or 26.04 -Pre-requisite: sudo apt-get install flex bison -Install acpica tools version 20260408 https://github.com/acpica/acpica/releases/tag/20260408 +Install acpica tools version [20260408](https://github.com/acpica/acpica/releases/tag/20260408) wget https://github.com/acpica/acpica/releases/download/20260408/acpica-unix-20260408.tar.gz tar zxf ./acpica-unix-20260408.tar.gz @@ -115,22 +298,30 @@ Install acpica tools version 20260408 https://github.com/acpica/acpica/releases/ make sudo make install +### Compile ASL source file + Run helper script to generate initramfs image from ASL source file and copy to /boot - ../../script/gen_ssdt.sh ../../acpi/{ipu}/sensor.asl + ../../script/gen_ssdt.sh ../../acpi/{create-your-own.asl} -Add following line to /etc/default/grub for GRUB to load SSDT initramfs. Update and reboot. Make sure all camera related BIOS setting are disabled. +### Load SSDT initramfs + +Add the following line to /etc/default/grub for GRUB to load the SSDT initramfs. Update and reboot. Make sure all camera-related BIOS settings are disabled. echo 'GRUB_EARLY_INITRD_LINUX_CUSTOM="img_ssdt.img"' | sudo tee -a /etc/default/grub sudo update-grub sudo reboot ->To revert back to Legacy setup using BIOS and ipu-acpi, remove below line from in /etc/default/grub, update-grub and reboot. +#### Unload SSDT initramfs + +To revert to the legacy setup using BIOS and ipu-acpi, remove the line below from /etc/default/grub, run update-grub, and reboot. sudo sed -i '/GRUB_EARLY_INITRD_LINUX_CUSTOM/d' /etc/default/grub sudo update-grub sudo reboot +### SSDT Verification + Inspect loading of SSDT in kernel dmesg dmesg | grep SSDT @@ -141,3 +332,8 @@ You should see log similar to below: ... [ 0.009609] ACPI: Table Upgrade: install [SSDT- - IMG_IPU] [ 0.009611] ACPI: SSDT 0x00000000678E6000 00143D (v02 IMG_IPU 20260513 INTL 20250404) + + +[Proceed to userspace-gmsl.md](userspace-gmsl.md) for media-ctl pipeline construction and sensor streaming verification. + +

    (back to top)

    From 3545474f341f4c3bceeadea6a7928c97e22a3f5b Mon Sep 17 00:00:00 2001 From: "Khai Wen, Ng" Date: Tue, 18 Aug 2026 09:16:43 +0800 Subject: [PATCH 4/5] doc: acpi: userspace-gmsl.md Added mc-setup commands and respective outputs for different use cases. Signed-off-by: Khai Wen, Ng --- doc/acpi/userspace-gmsl.md | 800 ++++++++++++++++++++++++++++++++++--- 1 file changed, 734 insertions(+), 66 deletions(-) diff --git a/doc/acpi/userspace-gmsl.md b/doc/acpi/userspace-gmsl.md index d62c34fe..e5144e61 100644 --- a/doc/acpi/userspace-gmsl.md +++ b/doc/acpi/userspace-gmsl.md @@ -4,88 +4,685 @@ This document details the steps to validate ACPI-enumerated GMSL sensors, provid For Kernel space ASL source file creation and compilation, please refer to [kernelspace.md](./kernelspace.md). -## Construct pipeline using mc-setup.sh +## Table of Contents -Instead of using XML or JSON file to describe the media-ctl pipeline, and let libcamhal to perform the configuration, mc-setup script is provided to directly construct media-ctl pipeline based on the current ACPI enumeration based on ASL source file. This way, libcamhal config files (xml or json) can be generic without the naming and topology dependency, and can be reused for different hardware setup as long as mc-setup is maintained properly and extended when there is new hardware or configuration need. +- [Introduction to ASL configured system](#introduction-to-asl-configured-system) + - [new mc-setup script](#new-mc-setup-script) + - [new libcamhal configuration files](#new-libcamhal-configuration-files) +- [How to use mc-setup.sh](#how-to-use-mc-setupsh) + - [Construct pipeline](#construct-pipeline) + - [Sample Commands](#sample-commands) + - [Advanced - Per stream Configuration](#advanced---per-stream-configuration) +- [Stream verification](#stream-verification) + - [Sanity Streaming Test using v4l2-ctl](#sanity-streaming-test-using-v4l2-ctl) + - [GStreamer streaming using v4l2src](#gstreamer-streaming-using-v4l2src) + - [GStreamer streaming using icamerasrc](#gstreamer-streaming-using-icamerasrc) -Currently mc-setup only supports d4xx and isx031 GMSL sensors, max9295a serializer, max96724 and max9296 deserializer. Feel free to extend mc-setup.sh for other sensors or different use case based on current implementation. The script is located in ../../script/acpi/mc-setup.sh. Please refer to the script for more details of the implementation and usage. Below sections describe how to construct media-ctl pipeline for 2D YUV sensors and 3D sensors, and how to verify the streaming of sensors. +## Introduction to ASL configured system -Provided that ACPI enumeration is successful, just run below command to construct media-ctl pipeline for all available links on all available deserializers. +### new mc-setup script +When using an ASL-configured system, the I2C bus enumerated by the GMSL drivers is dynamic and can differ on every boot. If the legacy method of creating a static media-ctl pipeline in the libcamhal configuration is used, the pipeline will not be valid on every boot and sensor streaming will fail. To address this issue, a new script called **mc-setup.sh** is introduced to dynamically construct the media-ctl pipeline based on the current ACPI enumeration. mc-setup.sh uses the ACPI path of each hardware component (deserializer, serializer, sensor) to construct the media-ctl pipeline. + +> 2D sensors refer to sensors that only have single stream, such as ISX031 (YUV), AR0234 (RAW Bayer). + +> 3D sensors refer to sensors that have multiple streams, such as D457 (Depth, RGB, IR, IMU). + +
    + Default Stream for 2D and 3D sensors + +| Sensor | Default Stream | +| --- | --- | +| AR0234 | Single | +| D457 | Depth+RGB | +| ISX031 | Single | + +The script can be used for MIPI and GMSL sensors. There are default streams for each sensor type. For 2D sensors, the default stream is the only stream available; for 3D sensors, the default stream is Depth+RGB. + +
    + +
    + Supported Sensors + +GMSL Deserializers: MAX9296A, MAX96724 +GMSL Serializers: MAX9295A +GMSL 2D RAW sensors: AR0234 +GMSL 2D YUV sensors: ISX031 +GMSL 3D YUV sensors: D457 + +MIPI 2D YUV sensors: ISX031 +MIPI 2D RAW sensors: OV13B10 + +
    + +

    ( How to use mc-setup.sh)

    + +### new libcamhal configuration files + +> 2D YUV sensors (e.g. ISX031 GMSL) : acpi.xml or acpi.json + +A new libcamhal configuration file called **acpi.xml or acpi.json** is created. It is designed to be sensor agnostic so it can be reused for different 2D YUV sensors, provided that mc-setup is maintained properly and extended when new hardware or configuration needs arise. + +> 2D RAW sensors (e.g. AR0234 GMSL) : [ar0234.xml](../../config/ar0234/ipu6epmtl/sensors/ar0234.xml) + +For 2D RAW sensor that requires 3A and PSYS support, it will require dedicated Graph Setting and Tuning Files, hence a dedicated libcamhal config file is needed instead of sharing acpi.xml or acpi.json with YUV sensors. + +> 3D YUV sensors (e.g. D457 GMSL) : d4xx.xml or d4xx.json + +A new libcamhal configuration file called **d4xx.xml or d4xx.json** is created. It is **NOT** sensor agnostic as 3D sensors might have different subdev and streams supported. + +## How to use mc-setup.sh + +Prerequisites: + +1. ACPI ASL created correctly. +2. ACPI ASL loaded correctly. +3. Kernel driver probed successfully. + +### Construct pipeline + +Before elaborating, here are some definitions of 2D and 3D sensors and the kinds of configurations that mc-setup.sh can support. + +2D sensors are sensors that only have single stream, such as ISX031 (YUV), AR0234 (RAW Bayer). \ +3D sensors are sensors that have multiple streams, such as D457 (Depth, RGB, IR, IMU). \ +Default streams for 3D sensors are **Depth+RGB** unless specified. + +There are **limitations** of only having 4 internal pipes for deserializer, for both MAX9296 and MAX96724. Hence, **total streams cannot exceed 4 streams per deserializer**. This limitation will be observed when there are 3D sensors involved in one of the links. + +Examples below will use MAX96724 as example. + +**2D setup** + +- DES{N} + - Link 0 - 2D sensor (model A) + - Link 1 - 2D sensor (model A) + - Link 2 - 2D sensor (model A) + - Link 3 - 2D sensor (model A) + +**3D setup** + +- DES{N} + - Link 0 - 3D sensor (model A) + - Link 1 - 3D sensor (model A) + +**2D+2D setup (mix-and-match)** + +- DES{N} + - Link 0 - 2D sensor (model A) + - Link 1 - 2D sensor (model B) + - Link 2 - 2D sensor (model C) + - Link 3 - 2D sensor (model D) + +**2D+3D setup (mix-and-match)** + +- DES{N} + - Link 0 - 2D sensor (model A) + - Link 1 - 2D sensor (model B) + - Link 2 - 3D sensor (model C) + +#### Sample Commands + +
    + All default streams + +### Command ../../script/acpi/mc-setup.sh -### Construct pipeline for 2D YUV sensors +### Output + +>2D setup + + Configuration summary: + DES0 LINK0 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video0 + DES0 LINK1 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video1 + DES0 LINK2 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video2 + DES0 LINK3 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video3 + +>3D setup + + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video4 + DES0 LINK1 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video1 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video5 + DES1 LINK0 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video16 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video20 + DES1 LINK1 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video17 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video21 + +>2D+2D setup + + Configuration summary: + DES0 LINK0 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video0 + DES0 LINK1 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video1 + DES0 LINK2 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video2 + DES0 LINK3 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video3 + +>2D+3D setup + + Configuration summary: + DES1 LINK0 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video16 + DES1 LINK1 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video17 + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video22 + +
    + +
    + Selected Deserializer + +### Command + +> command 1: \ +DES0, all links, default streams + + ../../script/acpi/mc-setup.sh des=0 + +> command 2: \ +DES1, all links, default streams + + ../../script/acpi/mc-setup.sh des=1 + +### Output + +> DES0 2D+2D, DES1 2D+3D setup + + # command 1 + Configuration summary: + DES0 LINK0 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video0 + DES0 LINK1 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video1 + DES0 LINK2 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video2 + DES0 LINK3 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video3 + + # command 2 + Configuration summary: + DES1 LINK0 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video16 + DES1 LINK1 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video17 + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video22 + + +
    + +
    + Selected links (default stream) + +### Command + +> command 1: \ +DES0, \ +link 0 + + ../../script/acpi/mc-setup.sh des=0,link=0 + +> command 2: \ +DES0, \ +link 1 \ +link 2 + + ../../script/acpi/mc-setup.sh des=0,link=1 des=0,link=2 + +> command 3: \ +DES0, \ +link 2 \ +DES1, \ +link 2 + + ../../script/acpi/mc-setup.sh des=0,link=2 des=1,link=2 + +### Output + +> DES0 2D+2D, \ +DES1 2D+3D setup + + # command 1: + Configuration Summary: + DES0 LINK0 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video0 + + # command 2 + Configuration Summary: + DES0 LINK1 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video1 + DES0 LINK2 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video2 + + # command 3 + Configuration Summary: + DES0 LINK2 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video2 + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video22 + +
    + +
    + Selected Stream from Selected Link - 3D ONLY + +### Command + +> command 1: \ +DES1, \ +link 2 (3D ONLY), \ +\- Depth + + ../../script/acpi/mc-setup.sh des=1,link=2,stream=depth + +> command 2: \ +DES1, \ +link 2 (3D ONLY), \ +\- Depth \ +\- RGB + + ../../script/acpi/mc-setup.sh des=1,link=2,stream=depth,rgb + +> command 3: \ +DES1, \ +link 2 (3D ONLY), \ +\- Depth \ +\- RGB \ +\- IR \ +\- IMU + + ../../script/acpi/mc-setup.sh des=1,link=2,stream=depth,rgb,ir,imu + +> command 4: \ +DES1, \ +link 0 (2D), \ +\- YUV \ +link 2 (3D ONLY), \ +\- Depth \ +\- RGB \ +\- IR + + ../../script/acpi/mc-setup.sh des=1,link=0 des=1,link=2,stream=depth,rgb,ir + +### Output +> DES1 2D+3D setup + + # command 1: + Configuration summary: + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + + # command 2: + Configuration summary: + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video22 + + # command 3: + Configuration summary: + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video22 + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video20 + Stream [imu] 38x1 Y8_1X8 50.000 FPS --> /dev/video16 + + # command 4: + Configuration summary: + DES1 LINK0 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video16 + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video22 + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video20 + +
    + +### Advanced - Per stream Configuration + +>**IMPORTANT**: \ +Make sure you are familiar with how to select different links and/or streams from the previous section. This section only focus on how to configure the streams for selected link(s) and/or stream(s). + +
    + Change Resolution + +>IMPORTANT: For supported resolution and format, please refer to ../{sensor}/userspace-{interface}.md for each sensor if applicable. + +Commands in this section only change the resolution of the stream, if applicable. + +### Command + +> command 1: \ +DES0, \ +link 0 (2D) -> 1280x720 + + ../../script/acpi/mc-setup.sh des=0,link=0,res=1280x720 + +> command 2: \ +DES0, \ +link 0 (2D) -> 1280x720 \ +link 1 (2D) -> reuse current + + ../../script/acpi/mc-setup.sh des=0,link=0,res=1280x720 des=0,link=1 + +> command 3: \ +DES1, \ +link 2 (3D ONLY), \ +\- Depth stream -> 1280x720 \ +\- RGB stream -> reuse current \ +\- IR stream -> 1280x720. + + ../../script/acpi/mc-setup.sh des=1,link=2,stream=[depth,res=1280x720],[rgb],[ir,res=1280x720] + +> command 4: \ +DES1, \ +link 1 (2D) -> 1920x1080 \ +link 2 (3D ONLY), \ +\- Depth stream -> 1280x720 \ +\- RGB stream -> default \ +\- IR stream -> 1280x720 + + ../../script/acpi/mc-setup.sh \ + des=1,link=1,res=1920x1080 \ + des=1,link=2,stream=[depth,res=1280x720],[rgb],[ir,res=1280x720] + +### Output + +> DES0 2D+2D, \ +DES1 2D+3D setup + + # command 1: + Configuration summary: + DES0 LINK0 Sensor model isx031 + Stream [single] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + + # command 2: + Configuration summary: + DES0 LINK0 Sensor model isx031 + Stream [single] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + DES0 LINK1 Sensor model isx031 + Stream [single] 1920x1536 UYVY8_1X16 30.000 FPS --> /dev/video1 + + # command 3: + Configuration summary: + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video22 + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video20 + + # command 4: + Configuration summary: + DES1 LINK1 Sensor model isx031 + Stream [single] 1920x1080 UYVY8_1X16 60.000 FPS --> /dev/video17 + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video22 + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video20 + +
    + +
    + Change Format -| Use Case | Sample command | -| --- | --- | -| all streams on all available links on all available DES | ../../script/acpi/mc-setup.sh | -| all streams on all available links on particular DES | DES_BUSADDR=2-0027 ../../script/acpi/mc-setup.sh | -| single stream on single link on DES0 | ../../script/acpi/mc-setup.sh des=0,link=0,stream=yuv | +Commands in this section only change the format of the stream, if applicable. -### Construct pipeline for 3D sensors +### Command -| Use Case | Sample command | -|--- | --- | -| Depth+RGB on all available links on all available DES | ../../script/acpi/mc-setup.sh | -| Depth+RGB on all available links on particular DES | DES_BUSADDR=2-0027 ../../script/acpi/mc-setup.sh | -| Depth+RGB on single link on DES0 | ../../script/acpi/mc-setup.sh des=0,link=0,stream=depth,rgb | -| all streams on single link on DES0 | ../../script/acpi/mc-setup.sh des=0,link=0,stream=depth,rgb,ir,imu | -| 2x RGB streams on link0,link1 on DES0 | ../../script/acpi/mc-setup.sh des=0,link=0,stream=rgb des=0,link=1,stream=rgb | -| 4x RGB stream on link0,link1 on DES0,DES1 | ../../script/acpi/mc-setup.sh des=0,link=0,stream=rgb des=0,link=1,stream=rgb des=1,link=0,stream=rgb des=1,link=1,stream=rgb | +> command 1: \ +DES0, \ +link 0 -> UYVY8_1X16 ->**Note:** MAX96724 only supports 4 active routing (matching with 4 internal pipes) at the same time, so maximum only 4 streams can be enabled on each DES, and by default it is 2 streams (Depth+RGB) from each D457 (assuming 2x D457 connected on each DES). + ../../script/acpi/mc-setup.sh des=0,link=0,format=UYVY8_1X16 -Below is the sample output of mc-setup.sh for 2x D457 sensors on DES0, 2x D457 sensors on DES1. -From there it shows that which stream from the sensor can be captured from which /dev/videoX node, which user can get the frames using v4l2-ctl, v4l2src, icamerasrc or any other v4l2 compatible application. +> command 2: \ +DES1, \ +link 1 (2D), -> reuse current \ +link 2 (3D ONLY), \ +\- Depth -> FIXED -![mc-setup.sh output](../d4xx/mc-setup-output.png) + ../../script/acpi/mc-setup.sh des=1,link=1 \ + des=1,link=2,stream=depth,format=FIXED -## Sensor stream verification +> command 3: \ +DES1, \ +link 2 (3D ONLY), \ +\- Depth stream -> UYVY8_1X16 \ +\- RGB stream -> YUYV8_1X16 \ +\- IR stream -> Y8_1X8 \ +\- IMU stream -> Y8_1X8 + + ../../script/acpi/mc-setup.sh des=1,link=2,stream=[depth,format=UYVY8_1X16],[rgb,format=YUYV8_1X16],[ir,format=Y8_1X8],[imu,format=Y8_1X8] + +### Output + +> DES1 2D+3D setup + + # command 1: + Configuration summary: + DES0 LINK0 Sensor model isx031 + Stream [single] 1280x720 UYVY8_1X16 n/a FPS --> /dev/video0 + + # command 2: + Configuration summary: + DES1 LINK1 Sensor model isx031 + Stream [single] 1920x1080 UYVY8_1X16 60.000 FPS --> /dev/video17 + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 FIXED 30.000 FPS --> /dev/video18 + + # command 3: + Configuration summary: + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video22 + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video20 + Stream [imu] 38x1 Y8_1X8 400.000 FPS --> /dev/video16 + +
    + +
    + Change FPS + +Commands in this section only change the FPS of the stream, if applicable. + +### Command + +> command 1: \ +DES1, \ +link 0 -> 60fps + + ../../script/acpi/mc-setup.sh des=1,link=0,fps=60 + +> command 2: \ +DES1, \ +link 1 (2D), -> reuse current \ +link 2 (3D ONLY), \ +\- Depth -> 5fps + + ../../script/acpi/mc-setup.sh des=1,link=1 \ + des=1,link=2,stream=depth,fps=5 + +> command 3: \ +DES1, \ +link 2 (3D ONLY), \ +\- Depth stream -> 30fps \ +\- RGB stream -> 5fps \ +\- IR stream -> 30fps \ +\- IMU stream -> 400fps + + ../../script/acpi/mc-setup.sh des=1,link=2,stream=[depth,fps=30],[rgb,fps=5],[ir,fps=30],[imu,fps=400] + +### Output + +> 2D+3D setup + + # command 1: + Configuration summary: + DES1 LINK0 Sensor model isx031 + Stream [single] 1920x1080 UYVY8_1X16 60.000 FPS --> /dev/video16 + + # command 2: + Configuration summary: + DES1 LINK1 Sensor model isx031 + Stream [single] 1920x1080 UYVY8_1X16 60.000 FPS --> /dev/video17 + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 5.000 FPS --> /dev/video18 + + # command 3: + Configuration summary: + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 5.000 FPS --> /dev/video22 + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video20 + Stream [imu] 38x1 Y8_1X8 400.000 FPS --> /dev/video16 + +
    + +
    + Mixed Combination to configure Resolution, Format and FPS + +Commands in this section show mixed combinations for configuring resolution, format, and FPS. +The commands **combine the tokens** from the previous sections into the same command. + +### Command + +> command 1: \ +DES1, \ +link 0 -> 1920x1080 @ 60fps + + ../../script/acpi/mc-setup.sh des=1,link=0,res=1920x1080,fps=60 + +> command 2: \ +DES1, \ +link 1 (2D), -> UYVY8_1X16, 1920x1080 @ 60fps \ +link 2 (3D ONLY), \ +\- Depth -> FIXED, 1280x720 @ 5fps + + ../../script/acpi/mc-setup.sh des=1,link=1,format=UYVY8_1X16,res=1920x1080,fps=60 \ + des=1,link=2,stream=depth,format=FIXED,res=1280x720,fps=5 + +> command 3: \ +DES1, \ +link 2 (3D ONLY), \ +\- Depth stream -> UYVY8_1X16, 1280x720 @ 30fps \ +\- RGB stream -> YUYV8_1X16, 1280x800 @ 30fps \ +\- IR stream -> Y8_1X8, 1280x720 @ 30fps \ +\- IMU stream -> Y8_1X8, 38x1 @ 400fps + + ../../script/acpi/mc-setup.sh des=1,link=2,stream=[depth,format=UYVY8_1X16,res=1280x720,fps=30],[rgb,format=YUYV8_1X16,res=1280x800,fps=30],[ir,format=Y8_1X8,res=1280x720,fps=30],[imu,format=Y8_1X8,res=38x1,fps=400] + +### Output + +> DES1 2D+3D setup + + # command 1: + Configuration summary: + DES1 LINK0 Sensor model isx031 + Stream [single] 1920x1080 UYVY8_1X16 60.000 FPS --> /dev/video16 + + # command 2: + Configuration summary: + DES1 LINK1 Sensor model isx031 + Stream [single] 1920x1080 UYVY8_1X16 60.000 FPS --> /dev/video17 + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 FIXED 5.000 FPS --> /dev/video18 + + # command 3: + Configuration summary: + DES1 LINK2 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video18 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video22 + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video20 + Stream [imu] 38x1 Y8_1X8 400.000 FPS --> /dev/video16 + +
    + +
    + +--- +## Stream verification ### Sanity Streaming Test using v4l2-ctl ->Pro: v4l2-ctl can be used directly once mc-setup is completed; it is also more lightweight than v4l2src since it does not require GStreamer. +>**Pro:** \ +v4l2-ctl can be used directly once mc-setup is completed; it is also more lightweight than v4l2src since it does not require GStreamer. + +>**Con:** \ +no preview window; it only shows streaming status in terminal. + +#### Sample Command ->Con: no preview window; it only shows streaming status in terminal. + v4l2-ctl -d /dev/video{X} --stream-mmap --stream-count=150 -#### Sample Command for v4l2-ctl +#### Sample output -v4l2-ctl -d /dev/video{X} --stream-mmap + v4l2-ctl -d /dev/video5 --stream-mmap --stream-count=150 + <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 29.99 fps + <<<<<<<<<<<<<<<<<<<<<<<<<<<< 29.99 fps + <<<<<<<<<<<<<<<<<<<<<<<<<<<< 29.99 fps + <<<<<<<<<<<<<<<<<<<<<<<<<<<< 29.99 fps + <<<<<<<<<<<<<<<<<<<<<<<<<<<< 29.99 fps + <<<<<<<<<<<<<<<<<<<<<<<<<<<< -You should see something like ![v4l2-ctl-stream-output](./v4l2-ctl-stream-output.png) in terminal, which means the stream is working properly. +--- +### GStreamer streaming using v4l2src -### Gstreamer streaming using v4l2src +>**Pro:**\ +v4l2src can directly be used once mc-setup is completed without any libcamhal configuration files setup. ->Pro: v4l2src can directly be used once mc-setup is completed without any libcamhal configuration files setup. +>**Con:**\ +v4l2src does not support DMABuf which might hit some performance issue. ->Con: v4l2src does not support DMABuf which might hit some performance issue. +#### Sample Command -#### Sample Command for v4l2src + gst-launch-1.0 v4l2src device=/dev/video{X} ! 'video/x-raw,format={FORMAT},width={WIDTH},height={HEIGHT},framerate={FPS}/1,pixel-aspect-ratio=1/1' ! glimagesink -| Sensor | Link Number | Command Pipeline | -| --- | --- | --- | -| isx031 | des0 link 0 | gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,format=UYVY,width=1920,height=1536,framerate=30/1,pixel-aspect-ratio=1/1' ! glimagesink | -| isx031 | des0 link 1 | gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,format=UYVY,width=1920,height=1536,framerate=30/1,pixel-aspect-ratio=1/1' ! glimagesink | -| d457 depth | des0 link 0 | gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,format=UYVY,width=640,height=480,framerate=30/1,pixel-aspect-ratio=1/1' ! glimagesink | -| d457 depth | des0 link 1 | gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,format=UYVY,width=640,height=480,framerate=30/1,pixel-aspect-ratio=1/1' ! glimagesink | -| d457 rgb | des0 link 0 | gst-launch-1.0 v4l2src device=/dev/video4 ! 'video/x-raw,format=YUY2,width=640,height=480,framerate=30/1,pixel-aspect-ratio=1/1' ! glimagesink | -| d457 rgb | des0 link 1 | gst-launch-1.0 v4l2src device=/dev/video5 ! 'video/x-raw,format=YUY2,width=640,height=480,framerate=30/1,pixel-aspect-ratio=1/1' ! glimagesink | +#### Sample Output -### Gstreamer streaming using icamerasrc + Setting pipeline to PAUSED ... + Pipeline is live and does not need PREROLL ... + Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0"; + Pipeline is PREROLLED ... + Setting pipeline to PLAYING ... + New clock: GstSystemClock + Redistribute latency... + Got EOS from element "pipeline0". + Execution ended after 0:00:05.426540632 + Setting pipeline to NULL ... + Freeing pipeline ... ->Pro: icamerasrc support DMABuf which can have better performance. +--- +### GStreamer streaming using icamerasrc ->Con: Have dependency on [ipu7-camera-hal PR44](https://github.com/intel/ipu7-camera-hal/pull/44) +>**Pro:** \ +icamerasrc supports DMABuf which offers better performance. -Pre-requisite: +>**Con:** \ +Have dependency on [ipu7-camera-hal PR64](https://github.com/intel/ipu7-camera-hal/pull/64) ->**ipu7-camera-hal already cloned and compiled previously** +Prerequisites: + +**ipu7-camera-hal already cloned and compiled previously** cd ipu7-camera-hal - git fetch origin pull/44/head:pr-44 - git checkout pr-44 + git fetch origin pull/64/head:pr-64 + git checkout pr-64 -**Rebuild and Reinstall** ipu7-camera-hal + # Rebuild and Reinstall ipu7-camera-hal Export environment variables below @@ -101,25 +698,96 @@ Export environment variables below export logSink=terminal rm -rf ~/.cache/gstreamer-1.0 -#### Sample Command for icamerasrc +#### Sample Command for 2D GMSL YUV sensor + +Replace the device-name, format, width and height with the correct values for the sensor. + +DMA Command + + gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=acpi-{X} printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format={FORMAT},width={WIDTH},height={HEIGHT}' ! glimagesink sync=false + +MMAP Command + + gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=acpi-{X} printfps=true io-mode=mmap ! 'video/x-raw,format={FORMAT},width={WIDTH},height={HEIGHT}' ! glimagesink sync=false + + + +
    + device-name + +|Link| device-name | +|:---:|:---: | +|0/A| acpi-1 | +|1/B| acpi-2 | +|2/C| acpi-3 | +|3/D| acpi-4 | +|4/E| acpi-5 | +|5/F| acpi-6 | +|6/G| acpi-7 | +|7/H| acpi-8 | + +
    + +
    + io-mode + +|use case| io-mode | caps | +|:---:|:---: |---| +|DMA| dma_mode | 'video/x-raw(memory:DMABuf),drm-format={},width={},height={}' | +|MMAP| mmap | 'video/x-raw,format={},width={},height={}' | + +
    + +
    + num-vc + +num-vc property is used to start the stream concurrently. +For multi-streaming case, it is possible to set num-vc=1 and start the stream one by one. + +|use case| num-vc | +|:---:|:---: | +|1x stream | 1 | +|2x stream | 2 | +|3x stream | 3 | +|4x stream | 4 | +|5x stream | 5 | +|6x stream | 6 | +|7x stream | 7 | +|8x stream | 8 | + +
    + +
    + configuration + +| Format | Resolution | +| :---: |:---: | +| UYVY8_1X16 | 1280x720, 1920x1080, 1920x1536 | + +
    + +
    + +#### Sample Command for 2D GMSL RAW sensor + +- (e.g.) AR0234 GMSL refer to [../ar0234/userspace-gmsl.md](../ar0234/userspace-gmsl.md#sensor-verification). + + +#### Sample Command for 3D GMSL YUV sensor + +- (e.g.) D457 GMSL refer to [../d4xx/userspace-gmsl.md](../d4xx/userspace-gmsl.md#sensor-verification). + -The list below keeps track of the validated sensor and their respective configuration for icamerasrc. -3D sensors require separate config file, and can be found in their respective directories, i.e. d4xx sensor config file is located in ../../config/d4xx/ . +#### Sample Command for Mix-and-Match 2D+3D GMSL YUV sensor -| Sensor | drm-format | width | height | -| --- | --- | --- | --- | -| isx031 | UYVY | 1920 | 1536 | +
    + link 0 (2D) + link 2 (3D, Depth+RGB streams) -Replace the drm-format, width, height in the command pipeline below based on the supported sensor configuration above. + gst-launch-1.0 \ + icamerasrc num-buffers=-1 num-vc=3 scene-mode=normal device-name=acpi-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format={FORMAT},width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=3 scene-mode=normal device-name=d4xx-3-depth printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format={FORMAT},width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=3 scene-mode=normal device-name=d4xx-3-rgb printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format={FORMAT},width={WIDTH},height={HEIGHT}' ! glimagesink sync=false -| Link Number | Sample Command Pipeline | -| --- | --- | -| link 0 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=acpi-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | -| link 1 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=acpi-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | -| link 2 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=acpi-3 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | -| link 3 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=acpi-4 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | -| link 4 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=acpi-5 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | -| link 5 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=acpi-6 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | -| link 6 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=acpi-7 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | -| link 7 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=acpi-8 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width=1920,height=1536' ! glimagesink sync=false | +
    +

    (back to top)

    From 8e90fdc2dcf32d755acb39b45417a92a31a1e9a5 Mon Sep 17 00:00:00 2001 From: "Khai Wen, Ng" Date: Tue, 18 Aug 2026 09:17:44 +0800 Subject: [PATCH 5/5] doc: d4xx: userspace-gmsl.md Add mc-setup details. Add supported configuration. Signed-off-by: Khai Wen, Ng --- doc/d4xx/{ => image}/img-entity-d4xx-gmsl.png | Bin .../{ => image}/realsense-viewer-output.png | Bin doc/d4xx/{ => image}/rs-color-output.png | Bin doc/d4xx/{ => image}/rs-depth-output.png | Bin doc/d4xx/{ => image}/rs-multicam-output.png | Bin doc/d4xx/mc-setup-media-ctl-output.png | Bin 208639 -> 0 bytes doc/d4xx/mc-setup-output.png | Bin 96272 -> 0 bytes doc/d4xx/userspace-gmsl.md | 716 +++++++++++++++--- 8 files changed, 611 insertions(+), 105 deletions(-) rename doc/d4xx/{ => image}/img-entity-d4xx-gmsl.png (100%) rename doc/d4xx/{ => image}/realsense-viewer-output.png (100%) rename doc/d4xx/{ => image}/rs-color-output.png (100%) rename doc/d4xx/{ => image}/rs-depth-output.png (100%) rename doc/d4xx/{ => image}/rs-multicam-output.png (100%) delete mode 100644 doc/d4xx/mc-setup-media-ctl-output.png delete mode 100644 doc/d4xx/mc-setup-output.png diff --git a/doc/d4xx/img-entity-d4xx-gmsl.png b/doc/d4xx/image/img-entity-d4xx-gmsl.png similarity index 100% rename from doc/d4xx/img-entity-d4xx-gmsl.png rename to doc/d4xx/image/img-entity-d4xx-gmsl.png diff --git a/doc/d4xx/realsense-viewer-output.png b/doc/d4xx/image/realsense-viewer-output.png similarity index 100% rename from doc/d4xx/realsense-viewer-output.png rename to doc/d4xx/image/realsense-viewer-output.png diff --git a/doc/d4xx/rs-color-output.png b/doc/d4xx/image/rs-color-output.png similarity index 100% rename from doc/d4xx/rs-color-output.png rename to doc/d4xx/image/rs-color-output.png diff --git a/doc/d4xx/rs-depth-output.png b/doc/d4xx/image/rs-depth-output.png similarity index 100% rename from doc/d4xx/rs-depth-output.png rename to doc/d4xx/image/rs-depth-output.png diff --git a/doc/d4xx/rs-multicam-output.png b/doc/d4xx/image/rs-multicam-output.png similarity index 100% rename from doc/d4xx/rs-multicam-output.png rename to doc/d4xx/image/rs-multicam-output.png diff --git a/doc/d4xx/mc-setup-media-ctl-output.png b/doc/d4xx/mc-setup-media-ctl-output.png deleted file mode 100644 index 8495061ca17526f0065e1f845fdd2fe4de6be0d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208639 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

    QNNj0+wBB#%e_>0Gug8&&L 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 U^)13b83Y`PvMS&b8KbxV1JN~>*#H0l diff --git a/doc/d4xx/userspace-gmsl.md b/doc/d4xx/userspace-gmsl.md index 1068ed45..669a3f8e 100644 --- a/doc/d4xx/userspace-gmsl.md +++ b/doc/d4xx/userspace-gmsl.md @@ -1,79 +1,458 @@ ## Description -This document provides details of the configuration settings for the D457 GMSL sensor using maxim-serdes driver. +This document describes the configuration settings for the D457 GMSL sensor using the maxim-serdes driver. Before going through this document, make sure you have completed the prerequisites, fully understand the ASL configurations, and know how to use mc-setup.sh. ->**Note:** Before going through this document, please make sure you have gone through [../acpi/kernelspace.md](../acpi/kernelspace.md) and [../acpi/userspace-gmsl.md](../acpi/userspace-gmsl.md) to understand the ACPI enumeration and userspace configuration for GMSL sensors. +> Prerequisites:\ +> [acpi/kernelspace.md](../acpi/kernelspace.md) \ +> [acpi/userspace-gmsl.md](../acpi/userspace-gmsl.md) -## Compile ACPI ASL file based on use case +--- +## ACPI Setup - ASL Configuration -### SSDT for 2x + 2x D457 on MAX96724 for IPU75XA +

    IMPORTANT: BIOS setting needs to be turned OFF if using ASL method

    -Currently we only provide [SSDT](../../acpi/ipu7/max96724_rs_d457.asl) for 2x + 2x D457 use case on MAX96724 for IPU75XA. If you want to have different connection, please modify the SSDT before compiling. +ASL source files provided are for **reference only**. ->**Note:** MAX96724 only has 4 pipes, and for now only legacy mode is supported, which means only 4 streams can be streamed at the same time per deserializer. This is why we only provide SSDT for 2x on each DES use case. +> **NOTE:** \ +> Always make sure ASL configuration matches actual hardware connection. -> Follow [This section in ../acpi/kernelspace.md](../acpi/kernelspace.md#compile-and-load-acpi-asl-source-on-canonical-ubuntu-2404-or-2604) to compile and load the ASL source file into kernel. +--- +### ASL Configuration for IPU6EPMTL -## Configure pipeline using mc-setup.sh +
    + MAX9296 DPHY + 4x D457 GMSL sensor use case -Run `../../script/acpi/mc-setup.sh` or refer to [Configure pipeline for 3D sensors](../acpi/userspace-gmsl.md#construct-pipeline-for-3d-sensors) for configuring the streams separately. +- DES0 (MAX9296) + - Link 0: D457 + - Link 1: D457 +- DES1 (MAX9296) + - Link 0: D457 + - Link 1: D457 -After configuring the pipeline, it is recommended to run [sanity streaming test using v4l2-ctl](./userspace-gmsl.md#sanity-streaming-test-using-v4l2-ctl) on each node based on the output of mc-setup.sh. +>**ASL:** [max9296_rs_d457.asl](../../acpi/ipu6/max9296_rs_d457.asl)\ +For compilation and loading, please refer to [kernelspace.md](../acpi/kernelspace.md#compile-and-load). ->**Note:** MAX96724 only supports 4 active routing (matching with 4 internal pipes) at the same time, so maximum only 4 streams can be enabled on each DES, and by default it is 2 streams (Depth+RGB) from each D457 (assuming 2x D457 connected on each DES). +
    +

    (Go to Advanced Pipeline Configuration)

    + +--- +### ASL Configuration for IPU75XA + +
    + MAX96724 CPHY + 4x D457 GMSL sensor use case + +- DES0 (MAX96724) + - Link 0: D457 + - Link 1: D457 +- DES1 (MAX96724) + - Link 0: D457 + - Link 1: D457 + +>**ASL:** [max96724_rs_d457.asl](../../acpi/ipu7/max96724_rs_d457.asl)\ +For compilation and loading, please refer to [kernelspace.md](../acpi/kernelspace.md#compile-and-load). + +
    + +

    (Go to Advanced Pipeline Configuration)

    + +--- +### ASL Configuration for IPU8 + +
    + MAX96724 CPHY + 4x D457 GMSL sensor use case + +- DES0 (MAX96724) + - Link 0: D457 + - Link 1: D457 +- DES1 (MAX96724) + - Link 0: D457 + - Link 1: D457 + +>**ASL:** [max96724_rs_d457.asl](../../acpi/ipu8/max96724_rs_d457.asl)\ +For compilation and loading, please refer to [kernelspace.md](../acpi/kernelspace.md#compile-and-load). + +
    + +

    (Go to Advanced Pipeline Configuration)

    + +--- ## Sensor Verification Each of the entity should have their own subdev node. If there is mismatch in the ASL and actual hardware connection (hardware is less, or probe failed), all of the sensor subdev node will not be created and mc-setup script will fail to execute. -Upon Bootup, run `media-ctl -p` command should show +After boot, running `media-ctl -p` should show: -![media-ctl output](img-entity-d4xx-gmsl.png) +![media-ctl output](image/img-entity-d4xx-gmsl.png) -Upon running mc-setup script, `media-ctl -p` command should show +--- +## Supported Configuration for Each Stream -![media-ctl output after mc-setup](mc-setup-media-ctl-output.png) +| Stream | Format | Resolution | FPS | +| --- | --- | --- | --- | +| Depth | FIXED* , UYVY8_1X16 | 1280x720 | 30, 15, 5 | +| | | 848x480 | 90, 60, 30, 15, 5 | +| | | 848x100 | 100 | +| | | 640x480* | 90, 60, 30*, 15, 5 | +| | | 848x360 | 90, 60, 30, 15, 5 | +| | | 480x270 | 90, 60, 30, 15, 5 | +| | | 424x240 | 90, 60, 30, 15, 5 | +| | | 256x144 | 90 | +| RGB | YUYV8_1X16* | 1280x800 | 30, 15, 10, 5 | +| | | 1280x720 | 30, 15, 10, 5 | +| | | 848x480 | 60, 30, 15, 5 | +| | | 640x480* | 60, 30*, 15, 5 | +| | | 640x360 | 90, 60, 30, 15, 5 | +| | | 480x270 | 90, 60, 30, 15, 5 | +| | | 424x240 | 90, 60, 30, 15, 5 | +| IR | Y8_1X8* , VYUY8_1X16 | 1280x720 | 30, 15, 5 | +| | | 848x480 | 90, 60, 30, 15, 5 | +| | | 640x480* | 90, 60, 30*, 15, 5 | +| | | 640x360 | 90, 60, 30, 15, 5 | +| | | 480x270 | 90, 60, 30, 15, 5 | +| | | 424x240 | 90, 60, 30, 15, 5 | +| | RGB888_1X24 | 1280x800 | 30, 15 | +| IMU | Y8_1X8* | 38x1* | 400, 200, 100, 50* | -## Sensor stream verification +>**Note:** The format, resolution, and FPS marked with * are the default configuration for each stream after a power cycle. Reboot keeps the configuration from the previous session. -### Sanity Streaming Test using v4l2-ctl +## Advanced Pipeline Configuration - Per-Stream Configuration + +>Prerequisites: \ +> Go through [how to use mc-setup.sh](../acpi/userspace-gmsl.md#how-to-use-mc-setupsh) \ +> Go through [Advanced Pipeline Configuration](../acpi/userspace-gmsl.md#advanced---per-stream-configuration) + +This section will provide more stream combinations other than default streams. +The combinations are based on [IPU7 ASL](#asl-configuration-for-ipu75xa). + +

    Please modify the commands accordingly to fit your use case.

    + +
    + 1x Depth Stream + +#### Command for GStreamer streaming + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[depth,format=UYVY8_1X16,res=1280x720,fps=30] + +#### Output + + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + +

    (Go to Sensor Stream Verification)

    + +#### Command for RealSense SDK use + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[depth,format=FIXED,res=1280x720,fps=30] + +#### Output + + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + +> FIXED format is mapped as UYVY8_1X16 in the pipeline, but Video Node is configured as 'Z16 '. + +

    (Go to Sensor Stream Verification)

    + +
    + +
    + 1x RGB Stream + +#### Command for GStreamer streaming and RealSense SDK use + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[rgb,format=YUYV8_1X16,res=1280x800,fps=30] + +#### Output + + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video4 + +

    (Go to Sensor Stream Verification)

    + +
    + +
    + 1x IR Stream + +#### Command 1 for GStreamer streaming + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[ir,format=Y8_1X8,res=1280x720,fps=30] + +#### Command 2 for GStreamer streaming + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[ir,format=RGB888_1X24,res=1280x800,fps=30] + +#### Output + + # Output for Command 1 + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video6 + + # Output for Command 2 + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [ir] 1280x800 RGB888_1X24 30.000 FPS --> /dev/video6 + +

    (Go to Sensor Stream Verification)

    + + +#### Command for RealSense SDK streaming + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[ir,format=VYUY8_1X16,res=1280x720,fps=30] + +#### Output + + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [ir] 1280x720 VYUY8_1X16 30.000 FPS --> /dev/video6 + +

    (Go to Sensor Stream Verification)

    + +
    + +
    + 1x IMU Stream + +#### Command for GStreamer and RealSense SDK streaming + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[imu,format=Y8_1X8,res=38x1,fps=400] + +#### Output + + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [imu] 38x1 Y8_1X8 400.000 FPS --> /dev/video2 + +

    (Go to Sensor Stream Verification)

    + +
    + +
    + 1 D457 with all 4 streams (4 current configuration) + +#### Command for GStreamer + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[depth],[rgb],[ir],[imu] + + # or + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=depth,rgb,ir,imu + +#### Output + + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video4 + Stream [ir] 1280x720 VYUY8_1X16 30.000 FPS --> /dev/video6 + Stream [imu] 38x1 Y8_1X8 400.000 FPS --> /dev/video2 + +#### Command for RealSense SDK streaming + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[depth,format=FIXED],[rgb],[ir],[imu] + +#### Output + + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video4 + Stream [ir] 1280x720 VYUY8_1X16 30.000 FPS --> /dev/video6 + Stream [imu] 38x1 Y8_1X8 400.000 FPS --> /dev/video2 + +> FIXED format is mapped as UYVY8_1X16 in the pipeline, but Video Node is configured as 'Z16 '. + +

    (Go to Sensor Stream Verification)

    + +
    -Follow [Sanity Streaming Test using v4l2-ctl](../acpi/userspace-gmsl.md#sanity-streaming-test-using-v4l2-ctl) according to mc-setup.sh output. +
    + 1 D457 with all 4 streams (2 current configuration, 2 update configuration) -#### Sample Command for v4l2-ctl +#### Command for GStreamer ->Note: Please use the respective video node that is shown in the output of mc-setup.sh. + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[depth,format=UYVY8_1X16,res=1280x720,fps=30],\ + [rgb],\ + [ir,format=Y8_1X8,res=1280x720,fps=30],\ + [imu] -| Stream | Link Number | Command Pipeline | -| --- | --- | --- | -| depth | des0 link 0 | v4l2-ctl -d /dev/video0 --stream-mmap | -| depth | des0 link 1 | v4l2-ctl -d /dev/video1 --stream-mmap | -| rgb | des0 link 0 | v4l2-ctl -d /dev/video4 --stream-mmap | -| rgb | des0 link 1 | v4l2-ctl -d /dev/video5 --stream-mmap | +#### Output -### Gstreamer streaming using v4l2src + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video4 + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video6 + Stream [imu] 38x1 Y8_1X8 400.000 FPS --> /dev/video2 -Follow [Gstreamer streaming using v4l2src](../acpi/userspace-gmsl.md#gstreamer-streaming-using-v4l2src) according to mc-setup.sh output. +#### Command for RealSense SDK streaming -#### Sample Command for v4l2src + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[depth,format=FIXED,res=1280x720,fps=30],\ + [rgb],\ + [ir,format=Y8_1X8,res=1280x720,fps=30],\ + [imu] ->Note: Please use the respective video node that is shown in the output of mc-setup.sh. +#### Output -| Stream | Link Number | Command Pipeline | + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video4 + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video6 + Stream [imu] 38x1 Y8_1X8 400.000 FPS --> /dev/video2 + +> FIXED format is mapped as UYVY8_1X16 in the pipeline, but Video Node is configured as 'Z16 '. + +

    (Go to Sensor Stream Verification)

    + +
    + +
    + 1 D457 with 3 streams (2 current configuration, 1 update configuration) + +#### Command + + ../../script/acpi/mc-setup.sh des=0,\ + link=0,stream=[depth],\ + [rgb,format=YUYV8_1X16,res=1280x800,fps=30],\ + [ir] + +#### Output + + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video4 + Stream [ir] 1280x720 Y8_1X8 30.000 FPS --> /dev/video6 + +

    (Go to Sensor Stream Verification)

    + +
    + +
    + 2 D457 with 2 streams (4 update configuration) + +#### Command + + ../../script/acpi/mc-setup.sh \ + des=0,link=0,stream=[depth,format=UYVY8_1X16,res=1280x720,fps=30],\ + [rgb,format=YUYV8_1X16,res=1280x800,fps=30] \ + des=0,link=1,stream=[depth,format=UYVY8_1X16,res=640x480,fps=90],\ + [rgb,format=YUYV8_1X16,res=424x240,fps=5] + +#### Output + + Configuration summary: + DES0 LINK0 Sensor model d4xx + Stream [depth] 1280x720 UYVY8_1X16 30.000 FPS --> /dev/video0 + Stream [rgb] 1280x800 YUYV8_1X16 30.000 FPS --> /dev/video4 + DES0 LINK1 Sensor model d4xx + Stream [depth] 640x480 UYVY8_1X16 90.000 FPS --> /dev/video1 + Stream [rgb] 424x240 YUYV8_1X16 5.000 FPS --> /dev/video5 + +

    (Go to Sensor Stream Verification)

    + +
    + +## Stream Verification + +Below are the sample Device Node mapping for each stream for 4 D457 on a single Deserializer. + +| Link Number | Stream | device | | --- | --- | --- | -| depth | des0 link 0 | gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,format=UYVY,width=640,height=480,framerate=30/1,pixel-aspect-ratio=1/1' ! glimagesink | -| depth | des0 link 1 | gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,format=UYVY,width=640,height=480,framerate=30/1,pixel-aspect-ratio=1/1' ! glimagesink | -| rgb | des0 link 0 | gst-launch-1.0 v4l2src device=/dev/video4 ! 'video/x-raw,format=YUY2,width=640,height=480,framerate=30/1,pixel-aspect-ratio=1/1' ! glimagesink | -| rgb | des0 link 1 | gst-launch-1.0 v4l2src device=/dev/video5 ! 'video/x-raw,format=YUY2,width=640,height=480,framerate=30/1,pixel-aspect-ratio=1/1' ! glimagesink | +| DES0 Link 0 | depth | video0 | +| DES0 Link 1 | depth | video1 | +| DES0 Link 2 | depth | video2 | +| DES0 Link 3 | depth | video3 | +| DES0 Link 0 | rgb | video4 | +| DES0 Link 1 | rgb | video5 | +| DES0 Link 2 | rgb | video6 | +| DES0 Link 3 | rgb | video7 | +| DES0 Link 0 | ir | video6 | +| DES0 Link 1 | ir | video7 | +| DES0 Link 2 | ir | video4 | +| DES0 Link 3 | ir | video5 | +| DES0 Link 0 | imu | video2 | +| DES0 Link 1 | imu | video3 | +| DES0 Link 2 | imu | video0 | +| DES0 Link 3 | imu | video1 | + +Note that there are conflicting video nodes for IR and RGB streams, and IMU and Depth streams. +The limiting factors that result in this design are: +1. V4L2_FRAME_DESC_ENTRY_MAX is FIXED to 8, so ACTIVE routing is limited to 8 streams. +2. MAX96724 legacy mode only supports MAXIMUM 4 pipes. + +>FUTURE TODO: +>1. Add support for dynamic routing to include active and disabled routes. +>2. Increase Intel IPU Video Node per MIPI port to 16. +>3. Add Intel IPU Extended Virtual Channel support. +>4. Add MAX96724 Extended Virtual Channel support. + +--- +### Sanity Streaming Test using v4l2-ctl + +Follow [Sanity Streaming Test using v4l2-ctl](#sanity-streaming-test-using-v4l2-ctl) according to the mc-setup.sh output. + +Sample Command + + v4l2-ctl -d /dev/video{X} --stream-mmap --stream-count=150 + +--- +### GStreamer streaming using v4l2src + +>**IMPORTANT**: The video node varies depending on the hardware board design and the ASL configuration. + +Please refer to the output of mc-setup.sh for the correct video node to use. + +#### Sample Command -### Gstreamer streaming using icamerasrc + # DEPTH (UYVY8_1X16) + gst-launch-1.0 v4l2src device=/dev/video{X} ! 'video/x-raw,format=UYVY,width={WIDTH},height={HEIGHT},framerate={FPS}/1,pixel-aspect-ratio=1/1' ! glimagesink ->Pro: icamerasrc support DMABuf which can have better performance. + # RGB (YUYV8_1X16) + gst-launch-1.0 v4l2src device=/dev/video{X} ! 'video/x-raw,format=YUY2,width={WIDTH},height={HEIGHT},framerate={FPS}/1,pixel-aspect-ratio=1/1' ! glimagesink ->Con: Have dependency on [ipu7-camera-hal PR](https://github.com/intel/ipu7-camera-hal/pull/44) + # IR (Y8_1X8) + gst-launch-1.0 v4l2src device=/dev/video{X} ! 'video/x-raw,format=GRAY8,width={WIDTH},height={HEIGHT},framerate={FPS}/1,pixel-aspect-ratio=1/1' ! glimagesink -Follow section [Camera Configuration File Setup for IPU75XA](./userspace-gmsl.md#camera-configuration-file-setup-for-ipu75xa) to setup config file for icamerasrc. + # IR (RGB888_1X24) + gst-launch-1.0 v4l2src device=/dev/video{X} ! 'video/x-raw,format=BGR,width={WIDTH},height={HEIGHT},framerate={FPS}/1,pixel-aspect-ratio=1/1' ! glimagesink + # IMU (Y8_1X8) + NOT SUPPORTED BY V4L2SRC. + +--- +### GStreamer streaming using icamerasrc + +>Pro: icamerasrc supports DMABuf, which can have better performance. + +>Con: +>1. IPU75XA and IPU8 depend on [ipu7-camera-hal pull request #64](https://github.com/intel/ipu7-camera-hal/pull/64) +>2. IPU6EPMTL depends on [ipu6-camera-hal pull request #175](https://github.com/intel/ipu6-camera-hal/pull/175) + +> Note: icamerasrc now enables all Depth, RGB, IR, and IMU streams.\ +> The Depth stream still requires additional conversion to produce meaningful data. Please refer to the [RealSense SDK section](#verify-stream-using-realsense-sdk) for more details. + +Follow the [Libcamhal Configuration File Setup](#libcamhal-configuration-file-setup) section to set up the config file for icamerasrc. + +--- #### Environment Setup Export environment variables below @@ -90,90 +469,201 @@ Export environment variables below export logSink=terminal rm -rf ~/.cache/gstreamer-1.0 +--- +## Libcamhal Configuration File Setup + +#### Libcamhal Config for IPU6EPMTL + +Rebuild [ipu6-camera-hal](https://github.com/intel/ipu6-camera-hal) with pull request [#175](https://github.com/intel/ipu6-camera-hal/pull/175) + +--- +#### Libcamhal Config for IPU75XA + +Rebuild [ipu7-camera-hal](https://github.com/intel/ipu7-camera-hal) with pull request [#64](https://github.com/intel/ipu7-camera-hal/pull/64) + +--- +#### Libcamhal Config for IPU8 + +Rebuild [ipu7-camera-hal](https://github.com/intel/ipu7-camera-hal) with pull request [#64](https://github.com/intel/ipu7-camera-hal/pull/64) + +--- #### Sample Command for icamerasrc -> Note: Icamerasrc and libcamhal config only enabled RGB stream from a D457 sensor, since only RGB stream is human-viewable frame. The Depth stream requires additional conversion to be meaningful data. Please refer to [Realsense SDK section](./userspace-gmsl.md#verify-stream-using-realsense-sdk) for more details. +Make sure to run mc-setup.sh to configure the pipeline before running the command below. Refer to [Pipeline Configuration](#advanced-pipeline-configuration---per-stream-configuration) for more details. -##### Sensor Device Selection +DMA Command -| Link Number | Command Pipeline | -|---|---| -| des0 link 0 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | -| des0 link 1 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | -| des0 link 2 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-3 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | -| des0 link 3 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-4 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | -| des1 link 0 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-5 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | -| des1 link 1 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-6 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | -| des1 link 2 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-7 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | -| des1 link 3 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-8 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | + # DEPTH (UYVY8_1X16) + gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-{X}-depth printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false -> **Note**: Refer to icamerasrc device-name property for more sensor details. + # RGB (YUYV8_1X16) + gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-{X}-rgb printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false -###### How to relate Sensor Number with AIC Link Port +MMAP Command -| AIC Link Port | Sensor Number | -|--- |--- | -| A | 1 | -| B | 2 | -| C | 3 | -| D | 4 | + # DEPTH (UYVY8_1X16) + gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-{X}-depth printfps=true io-mode=mmap ! 'video/x-raw,format=UYVY,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false -For AIC MAX96724 + # RGB (YUYV8_1X16) + gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-{X}-rgb printfps=true io-mode=mmap ! 'video/x-raw,format=YUYV,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false -![link-port](../images/max96724-faba-cphy.png) + # IR (Y8_1X8) + gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-{X}-ir printfps=true io-mode=mmap ! 'video/x-raw,format=GRAY8,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false -##### Frame Buffer Memory Type (IO Mode) Selection + # IR (RGB888_1X24) + gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-{X}-ir printfps=true io-mode=mmap ! 'video/x-raw,format=BGR,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false -| Stream | IO Mode | Command Pipeline | -|---|---|---| -| RGB | MMAP | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-1 printfps=true io-mode=mmap ! 'video/x-raw,format=YUY2,width=640,height=480' ! glimagesink sync=false | -| RGB | DMABUF | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | + # IMU (Y8_1X8) + gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-{X}-imu printfps=true io-mode=mmap ! 'video/x-raw,format=GRAY8,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false -> **Note**: Refer to icamerasrc io-mode property for more sensor details. +>NOTE: Y8_1X8 (GRAY8), RGB888_1X24 (BGR3) are not supported in DMA mode. -##### Sensor Resolution Selection +
    +device-name -| Stream| Resolution | Command Pipeline | -| --- | --- | --- | -| RGB | 640x480 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | +| AIC Link | Stream | device-name | +| A or DES0 Link 0 | Depth | d4xx-1-depth | +| A or DES0 Link 0 | RGB | d4xx-1-rgb | +| A or DES0 Link 0 | IR | d4xx-1-ir | +| A or DES0 Link 0 | IMU | d4xx-1-imu | +| B or DES0 Link 1 | Depth | d4xx-2-depth | +| B or DES0 Link 1 | RGB | d4xx-2-rgb | +| B or DES0 Link 1 | IR | d4xx-2-ir | +| B or DES0 Link 1 | IMU | d4xx-2-imu | +| N | Depth | d4xx-N-depth | +| N | RGB | d4xx-N-rgb | +| N | IR | d4xx-N-ir | +| N | IMU | d4xx-N-imu | -##### Sensor Format Selection +For more details, please refer to icamerasrc device-name property for more details. -| Stream | Format | Command Pipeline | +
    + +
    + io-mode + +| use case | io-mode | caps | | --- | --- | --- | -| RGB | YUYV | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | +| DMA | dma_mode | 'video/x-raw(memory:DMABuf),drm-format={},width={},height={}' | +| MMAP | mmap | 'video/x-raw,format={},width={},height={}' | + +
    -##### Number of Stream (Single Stream / Multi Stream) Selection +
    + num-vc -| Stream | Number of Stream | Command Pipeline | +| use case | num-vc | | --- | --- | --- | -| RGB | x1 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 device-name=d4xx-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | -| RGB | x2 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=2 device-name=d4xx-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=2 device-name=d4xx-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | -| RGB | x4 (x2 + x2) | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-5 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-6 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width=640,height=480' ! glimagesink sync=false | +| 1x stream | 1 | +| 2x stream | 2 | +| 3x stream | 3 | +| 4x stream | 4 | +| 5x stream | 5 | +| 6x stream | 6 | +| 7x stream | 7 | +| 8x stream | 8 | + +>Note: this num-vc is total number across 2 MIPI ports. Single MAX96724 currently only supports 4 pipes, so the maximum num-vc is 4 per MIPI port. + +
    + +--- +## Sample Use cases + +
    + DEPTH + RGB + IR from 1 D457 + +>**IMPORTANT**: Depth and IR must be configured to the same resolution, otherwise streaming will fail. The FPS will be the same and will take the lower configured value. + +> MAX9296 does not support more than 2 streams per link yet. This will be implemented in the future. + +#### Command + + gst-launch-1.0 \ + icamerasrc num-buffers=-1 num-vc=3 device-name=d4xx-{X}-depth printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=3 device-name=d4xx-{X}-ir printfps=true io-mode=mmap ! 'video/x-raw,format=GRAY8,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=3 device-name=d4xx-{X}-rgb printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false + +
    + +
    + DEPTH + RGB + IMU from 1 D457 + +> MAX9296 does not support more than 2 streams per link yet. This will be implemented in the future. -### Verify stream using RealSense SDK +#### Command -Pre-requisite: + gst-launch-1.0 \ + icamerasrc num-buffers=-1 num-vc=3 device-name=d4xx-{X}-depth printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=3 device-name=d4xx-{X}-rgb printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=3 device-name=d4xx-{X}-imu printfps=true io-mode=mmap ! 'video/x-raw,format=GRAY8,width=38,height=1' ! glimagesink sync=false --Completed [Pipeline Configuration](./userspace-gmsl.md#configure-pipeline-using-mc-setupsh) +
    --Completed [Symlinks Creation](./userspace-gmsl.md#create-symlinks-using-upstream-rs-enumsh) +
    + DEPTH + RGB + IR + IMU from 1 D457 --Completed [librealsense SDK compilation](./userspace-gmsl.md#compile-librealsense-sdk-from-source) +>**IMPORTANT**: Depth and IR must be configured to the same resolution, otherwise streaming will fail. The FPS will be the same and will take the lower configured value. -#### Create symlinks using upstream-rs-enum.sh +> MAX9296 does not support more than 3 streams per link yet. This will be implemented in the future. ->**Note:** This step is only necessary to stream with RealSense SDK. If you are using v4l2src or v4l2-ctl, you can skip this step and use the video device directly. +#### Command -By running the script below, it creates symlinks for video devices that will be used for streaming with RealSense SDK. Symlink that is created will need to be used with librealsense PR [#15007](https://github.com/IntelRealSense/librealsense/pull/15007). + gst-launch-1.0 \ + icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-{X}-depth printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=UYVY,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-{X}-rgb printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-{X}-ir printfps=true io-mode=mmap ! 'video/x-raw,format=GRAY8,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-{X}-imu printfps=true io-mode=mmap ! 'video/x-raw,format=GRAY8,width=38,height=1' ! glimagesink sync=false + +
    + +
    + 4x RGB from 4 D457 + +#### Command + + gst-launch-1.0 \ + icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-1-rgb printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-2-rgb printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-3-rgb printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false \ + icamerasrc num-buffers=-1 num-vc=4 device-name=d4xx-4-rgb printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=YUYV,width={WIDTH},height={HEIGHT}' ! glimagesink sync=false + +
    + +--- +### Verify Stream Using RealSense SDK + +>Prerequisites:\ +>1. Completed [Pipeline Configuration](./userspace-gmsl.md#configure-pipeline-using-mc-setupsh)\ +>2. Completed [Symlinks Creation](./userspace-gmsl.md#create-symlinks-using-upstream-rs-enumsh)\ +>3. Completed [librealsense SDK compilation](./userspace-gmsl.md#compile-librealsense-sdk-from-source) + +>IMPORTANT: RealSense SDK requires streams to be configured to the expected format to be recognized. \ + +|Stream | Format | +| --- | --- | +| Depth | Z16 | +| RGB | YUYV8_1X16 | +| IR | VYUY8_1X16 | +| IMU | Y8_1X8 | + +> Z16 is MEDIA_BUS_FMT_FIXED, but IPU only recognize Z16 as UYVY8_1X16. \ +Hence, pipeline will be configured as UYVY8_1X16 for Depth stream, but Video Node is configured as Z16 for RealSense SDK to recognize the Depth stream. + +--- +#### Create Symlinks Using upstream-rs-enum.sh + +>**Note:** This step is only necessary when streaming with the RealSense SDK. If you are using v4l2src or v4l2-ctl, you can skip it and use the video device directly. + +Running the script below creates symlinks for the video devices used by the RealSense SDK. The symlink must be used with librealsense pull request [#15007](https://github.com/IntelRealSense/librealsense/pull/15007). sudo ../../script/d4xx/upstream-rs-enum.sh ##### Sample Video Node Symlink -The symlink for capture node should be the same as the output of mc-setup.sh command. The syntax looks like video-rs-{stream-type}-{index}, and the stream type can be depth, color, ir or imu. The index starts from 0 for link 0 on DES0, then incremented by 1 for link 1, link 2 and link 3. +The capture-node symlink should match the output of the mc-setup.sh command. The syntax is video-rs-{stream-type}-{index}, and the stream type can be depth, color, ir, or imu. The index starts at 0 for link 0 on DES0 and increments by 1 for link 1, link 2, and link 3. -For example, if Depth and RGB stream from Link 0 on DES0 are enabled, the symlink for Depth stream will be video-rs-depth-0 and the symlink for RGB stream will be video-rs-color-0, and both of them will point to the corresponding video node allocated by kernel. +For example, if the Depth and RGB streams from link 0 on DES0 are enabled, the Depth symlink will be video-rs-depth-0 and the RGB symlink will be video-rs-color-0. Both point to the corresponding video node allocated by the kernel. | Sample Capture Node | Sample symlink | | --- | --- | @@ -182,7 +672,7 @@ For example, if Depth and RGB stream from Link 0 on DES0 are enabled, the symlin ##### Sample Subdev Symlink -The subdev symlink is created with syntax video-rs-{stream-type}-sd-{index}, and the stream type and index follow the same rule as capture node symlink, except that it is pointing to the subdev node instead of video capture node. The subdev node is used for configuration of the sensor, and it is required to be used with librealsense PR [#15007](https://github.com/IntelRealSense/librealsense/pull/15007). +The subdev symlink uses the syntax video-rs-{stream-type}-sd-{index}. The stream type and index follow the same rule as the capture-node symlink, except that the target is the subdev node instead of the video capture node. The subdev node is used to configure the sensor, and it is required for librealsense pull request [#15007](https://github.com/IntelRealSense/librealsense/pull/15007). | Sample Entity | Sample symlink | | --- | --- | @@ -191,9 +681,10 @@ The subdev symlink is created with syntax video-rs-{stream-type}-sd-{index}, and | D4XX rgb 19-0010 | /dev/video-rs-color-sd-0 -> /dev/v4l-subdev12 | | D4XX imu 19-0010 | /dev/video-rs-imu-sd-0 -> /dev/v4l-subdev13 | -#### Compile librealsense SDK from source +--- +#### Compile librealsense SDK From Source -There are changes in SDK to support Intel IPU that is currently in review. +There are SDK changes to support Intel IPU that are currently under review. git clone https://github.com/realsenseai/librealsense.git cd librealsense @@ -204,44 +695,59 @@ There are changes in SDK to support Intel IPU that is currently in review. make -j2 cd Release -#### Sample Tools from Realsense SDK +--- +#### Sample Tools From RealSense SDK + +

    DISCLAIMER: Current driver might not be able to support D457 control update through RealSense Viewer. Only stream viewing is tested.

    -Verify stream using realsense-viewer (output in graphical interface). +> TODO: Work In Progress to add support. + +Verify a stream using realsense-viewer (output appears in the graphical interface). ./realsense-viewer +Make sure the resolution and format match the configuration in mc-setup.sh. +A mismatch will cause the stream to fail to start. + +Changing the resolution or format can only be done in mc-setup.sh for now. +Resolution and format selection in RealSense Viewer will not be reflected in the pipeline configuration. + Sample Output as shown below -![realsense-viewer output](realsense-viewer-output.png) +![realsense-viewer output](image/realsense-viewer-output.png) -Verify multiple streams using rs-multicam (output in graphical interface) +Verify multiple streams using rs-multicam (output appears in the graphical interface). ./rs-multicam Sample Output as shown below -![rs-multicam output](rs-multicam-output.png) +![rs-multicam output](image/rs-multicam-output.png) -Verify single Depth Stream using rs-depth (only Terminal output) +Verify a single Depth stream using rs-depth (terminal output only). ./rs-depth Sample Output as shown below -![rs-depth output](rs-depth-output.png) +![rs-depth output](image/rs-depth-output.png) -Verify single Color Stream using rs-color (only Terminal output) +Verify a single Color stream using rs-color (terminal output only). ./rs-color Sample Output as shown below -![rs-color output](rs-color-output.png) +![rs-color output](image/rs-color-output.png) +--- ## Known Issue -1. RGB stream can only be streamed one time if no Depth stream is configured and streamed. - Workaround: To start RGB stream repetitively, you need to reconfigure pipeline using ../../script/acpi/mc-setup.sh with Depth stream enabled, then you need to start & stop Depth stream first before any stream can work properly. +1. The RGB stream can only be started once if no Depth stream is configured and running. \ + **Workaround**: To start the RGB stream repeatedly, reconfigure the pipeline with ../../script/acpi/mc-setup.sh and enable the Depth stream first. Then start and stop the Depth stream before starting any other stream. + +2. D457 may hit an unrecoverable I2C error (-121). Rebooting will not resolve the issue. \ + **Workaround**: Specify I2C_SPEED as 100000 in ASL. Power Cycle the sensor to recover from the error. -2. D457 might hit unrecoverable I2C error over long period of read/write. Reboot will not resolve the issue. - Workaround: Power Cycle the sensor. +3. There are conflicting video nodes for IR and RGB streams, and for IMU and Depth streams. \ + **Workaround**: Do not run streams with conflicting video nodes at the same time. For example, the Link 0 RGB stream and the Link 2 IR stream cannot run at the same time because they share the same video node. Please refer to [Video Node Reference](#stream-verification) for more details.