Support for implementing Sony IMX462 Camera on Verdin iMX8M Plus

We are working to implement and bring up the Sony IMX462 MIPI CSI-2 camera sensor on the Verdin iMX8M Plus (V1.1A) with the Verdin Development Board (V1.1F).

We would like direct guidance and a working approach for:

  • Proper driver integration for IMX462 (based on IMX290 or separate driver).

  • Required device tree or overlay changes to enable the sensor.

  • Steps to verify successful camera initialization and streaming via V4L2 or GStreamer.

We need help to get this implementation working correctly on the current Toradex BSP.

Hardware Details:

  • SoM: Verdin iMX8M Plus 8GB WB IT V1.1A

  • Carrier Board: Verdin Development Board V1.1F

  • Camera Sensor: Sony IMX462 (MIPI CSI-2 interface)

Software Details:

  • OS: TDX Wayland with XWayland 7.4.0+build.10 (scarthgap)

  • Kernel Version: 6.6.101-7.4.0

  • Image: Verdin-iMX8MP_Reference-Multimedia-Image

  • Build Environment: Ubuntu 22.04 (Host), cross-compiling using Toradex SDK toolchain

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


I’ll help you implement the Sony IMX462 MIPI CSI-2 camera sensor on your Verdin iMX8M Plus system. Based on the available documentation and a similar case from the community, here’s a comprehensive approach.

Driver Integration for IMX462

The Sony IMX462 shares similarities with the IMX290 sensor, so you can likely use the existing IMX290 driver as a base(1). The kernel includes support for various camera sensors through the V4L2 framework(2).

Device Tree Configuration

Device Tree Structure

Toradex uses a three-level device tree structure for modular support(3):

  • SoC level: Include files (*.dtsi) with SoC-level definitions
  • SoM level: Include files (*.dtsi) with specific SoM-level definitions
  • Board level: Files for board-level definitions considering custom carrier board design

Required Device Tree Changes

You’ll need to create device tree modifications similar to the Basler camera example from the community(1). The device tree should include:

  1. Camera sensor node in the I2C bus:
basler_camera_vvcam@36 {
    csi_id = <0x00>;
    compatible = "basler,basler-camera-vvcam", "basler-camera-vvcam";
    status = "okay";
    reg = <0x36>;

    port {
        endpoint {
            data-lanes = <0x01 0x02 0x03 0x04>;
            clock-lanes = <0x00>;
            remote-endpoint = <0x40>;
            max-pixel-frequency = <0x00 0x1dcd6500>;
            max-lane-frequency = <0x00 0x2cb41780>;
            phandle = <0x76>;
            max-data-rate = <0x00 0x00>;
            link-frequencies = <0x00 0x2cb41780>;
        };
    };
};

(1)

  1. Standard device tree properties you’ll need to configure(3):
    • compatible: Define the specific programming model for the device
    • reg: Address of the device’s resources within the address space
    • status: Set to “okay” to enable the device

Creating Device Tree Overlays

You can use device tree overlays to modify the base device tree without rebuilding the entire kernel(3). Create a .dtsi overlay file for your IMX462 sensor configuration.

Verification Steps

1. Check Device Recognition

After implementing your device tree changes, verify the camera is detected:

# ls /dev/video*
# v4l2-ctl --list-devices
# v4l2-ctl -V

(1)

2. I2C Communication Verification

Check if the camera appears on the I2C bus:

# i2cdetect -y 2

(1)

The camera should show as “UU” when the driver is loaded and using the device.

3. GStreamer Testing

Test basic video capture using GStreamer(2)(4):

# gst-launch-1.0 -v v4l2src device=/dev/video2 ! waylandsink

(1)

For more advanced testing, you can use the video test source:

# gst-launch-1.0 videotestsrc ! waylandsink

(2)

Important Considerations

BSP Version Compatibility

Based on community experience, ensure you’re using the correct BSP version(1). If you encounter kernel panics or I2C communication issues, consider using BSP 7.0.0 specifically, as there have been reports of I2C driver changes affecting camera sensors between versions.

Prerequisites

Before testing, ensure you have(2):

  • Reference Multimedia Image installed
  • Qt Demo application disabled:
# systemctl stop wayland-app-launch
# systemctl disable wayland-app-launch

Debugging Tools

Use GStreamer debugging tools to troubleshoot(2):

  • gst-inspect-1.0 to check available plugins and elements
  • gst-launch-1.0 with verbose output (-v flag) for pipeline debugging

Additional Resources

For comprehensive camera implementation guidance, refer to the following Toradex documentation:

  • Camera support overview and GStreamer integration(4)
  • Video encoding and playback with hardware acceleration(2)
  • Device tree configuration principles(3)

The key is to adapt the device tree configuration for your specific IMX462 sensor while following the established patterns used by other MIPI CSI-2 cameras on the Verdin iMX8M Plus platform.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Hello Girish,

Did you purchase this camera module from e-con?
Please download the documentation given on their page and you will get the required drivers and integration instructions in the document itself.

Sahil Malian
Toradex

Thanks Sahil, we are currently using the sensors from our existing CCTV products, can you just help with sharing the related documentation?

Also, can you assist with exactly which git version that will be required for imx462 Integration??
-linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules

Hi @girish07,
Usually, the camera related documents should be provided by the camera vendor.
I suggested you to please login/create account at e-con and download the documentations.
Their documentation contains patches, device tree settings, driver and the procedure for integration for Verdin iMX8.
I can see kernel version 5.15 is used.

Please download the documentation and take reference from there.

Hi @sahil.tx , I have downloaded the docs provided in econ, but since it is using different kernel patch, it is not supported with the board, I’m using (Toradex -v: 6.6.101‑7.4.0) can you provide support for this specific version??

Hello @girish07
Just for basic understanding I am adding the below points.

The IMX462 is just the raw image sensor from Sony.It does not include any additional circuitry like power regulation, interface boards, or software drivers.

Camera Vendor(e.g., VEYE, e-con, Arducam, etc.):The camera vendor designs the camera hardware around the IMX462 sensor,(Power management, MIPI-CSI interface, Lens mounting, etc)The camera vendor is responsible for providing the IMX462 driver.

Toradex provides the MIPI CSI interface and the V4L2 framework for camera integration on the Verdin i.MX8MP platform.

Now, how can you progress from here

  1. You mentioned that

we are currently using the sensors from our existing CCTV products

Please recheck if you are using the raw sensor or it is from some vendor

  1. You can take reference from econ documentations or from veye.
    They have provided the drivers and the device tree/ device tree overlays for Verdin iMX8MP/Mini.

You can first test and validate with 5.15 and then later try to apply these modification on the newer kernel.
Further you can either request your camera vendor or take help from third party company. If you want we can connect you to someone.

Let me know if you want further information

1 Like

Hi @sahil.tx , I’ve got the driver downloaded for imx462 camera and when I try to load that driver in board it’s showing error like this as shown in the screenshot,

I followed the steps you provided, but I’m still stuck. Could you guide us on how to implement detection of the IMX462 camera sensor on our Verdin development board with the i.MX8M Plus?

Hello @girish07 ,
Which steps are you talking about?
Are you talking about e-con documentations or veye?
Are you using the same kernel version?

I followed the steps which is there in the e-con documentations (Getting started manual) by cloning the git version given in the documentation and cross compiled it. when I transferred it to the board and tried load it and then I faced those errors in the previous screenshot

vaserver5@vaserver5:~/ECON_Toradex/linux-toradex$ uname -v
#78~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Aug 13 14:32:06 UTC 2

@sahil.tx also when i try to download some packages in the board, it’s showing like this

root@verdin-imx8mp-15697311:/home# ping www.google.com
PING (142.250.182.68): 56 data bytes
64 bytes from 142.250.182.68: seq=0 ttl=118 time=2.303 ms
64 bytes from 142.250.182.68: seq=1 ttl=118 time=2.201 ms
64 bytes from 142.250.182.68: seq=2 ttl=118 time=2.009 ms
64 bytes from 142.250.182.68: seq=3 ttl=118 time=2.082 ms
^[[A64 bytes from 142.250.182.68: seq=4 ttl=118 time=2.019 ms
64 bytes from 142.250.182.68: seq=5 ttl=118 time=1.944 ms
64 bytes from 142.250.182.68: seq=6 ttl=118 time=1.883 ms
^C
— google ping statistics —
7 packets transmitted, 7 packets received, 0% packet loss
round-trip min/avg/max = 1.883/2.063/2.303 ms
root@verdin-imx8mp-15697311:/home# opkg install make gcc binutils kernel-devsrc

  • opkg_prepare_url_for_install: Couldn’t find anything to satisfy ‘make’.
    root@verdin-imx8mp-15697311:/home# opkg update
    Downloading https://feeds.toradex.com/tdx/all/7.5.0/aarch64/Packages.gz.
    wget: note: TLS certificate validation not implemented
    wget: server returned error: HTTP/1.1 404 Not Found
  • opkg_download_backend: Failed to download /aarch64/Packages.g, wget returned 1.
    root@verdin-imx8mp-15697311:/home#

Though the internet is connected it’s resulting as the above error

How to get rid of it? can you explain?

Hello @girish07 ,
Please note the following:

  • Development packages such as gcc, make, and kernel-devsrc are not meant to be installed on the target device. They belong on your development/host PC where you build the software.

  • No online opkg feeds are available for the image, so opkg install cannot download those packages. That is why you see the errors.

Correct way to add packages

  1. Add the packages to your Yocto image, e.g.:

    IMAGE_INSTALL += "make gcc kernel-devsrc"
    
    
  2. Rebuild the image with bitbake.

  3. Flash the rebuilt image to the board.

For complete, step-by-step instructions please refer here

Hi @girish07,

I see some confusion going on here.
The documentation from E-Con that you are referring to, has steps to make the ECON camera e-CAM22_CUiMX8 (which uses IMX462 sensor) work with a verdin iMX8M Plus module and verdin development board. First of all, could you please confirm that you are using this camera board?

Secondly, that documentation and the associated kernel patch and device tree overlay files are supposed to work for toradex downstream linux kernel branch toradex_5.15-2.1.x-imx. From what I can see from release matrix page, the last BSP/Torizon OS version that supported kernel version 5.15_2.1.0 was 6.3.0 - this means, to test the newly built kernel and device tree (following the steps from ECON), you need BSP/Torizon OS 6.3.0 installed on your verdin module. You can download all our releases here: Download Links | Toradex Developer Center

From your screenshots, I have the impression that you are trying to insert the kernel module on a verdin module running kernel version 6.6.y. This could explain the error that you are seeing.
Another tip I could give is, in their documentation, I see a link to downloading a pre-built binary of BSP 6.3.0 for verdin iMX8MP. If I were you, I would test it first on that binary using the gstreamer commands they provided. Then you can build the kernel and device tree overlay with their patches and test it again. After that I would check the differences in the kernel and device tree between kernel 5.15 and 6.6, to do a migration.

Please let me know if this helps.