Skip to content

📌 Issue: IMX708 sensor detected on Radxa Zero 3W, but ISP pipeline cannot start (VIDIOC_STREAMON → -ENODEV) #501

@techromaio-lgtm

Description

@techromaio-lgtm

Hello,
I am working on getting the Sony IMX708 (Raspberry Pi Camera Module 3) running on Radxa Zero 3W (RK3566).

I have already completed the following steps:
✔️ 1. IMX708 kernel driver successfully ported from Raspberry Pi kernel

The original RPi driver was adapted and fixed to build on Radxa’s kernel:

missing headers (linux/unaligned.h → asm/unaligned.h)

V4L2 API differences (v4l2_subdev_state_get_format, _get_crop, etc.)

probe signature differences (imx708_probe(client, id))

I compiled the module externally and loaded it successfully:

imx708: loading out-of-tree module taints kernel.
imx708 2-001a: camera module ID 0x0381

So the sensor initializes correctly over I²C.

✔️ 2. Device-tree overlay created and loaded successfully

I modified the radxa-zero3-rpi-camera-v2 overlay to match IMX708:

compatible = "sony,imx708"

reg = <0x1a>

clock-names = "inclk"

added required:

link-frequencies = /bits/ 64 <450000000>;

After loading the overlay, the IMX708 probe works fully (no clock or DT errors).

✔️ 3. The sensor appears on I²C and responds properly

i2cdetect -y 2:

0x1a

Kernel:

imx708 2-001a: camera module ID 0x0381

✔️ 4. The ISP (rkisp) and CSI links are initialized

media-ctl -d /dev/media0 --print-topology shows:

rockchip-csi2-dphy0

rkisp-csi-subdev

rkisp-isp-subdev

rkisp_mainpath, rkisp_selfpath, etc.

All CSI/ISP internal links are in ENABLED state.

❌ Problem

Although the sensor probes successfully, it does not appear as a media entity.
/dev/media0 contains only ISP and CSI nodes, but no entity for IMX708.

As a result, when attempting to start streaming:

v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=1

I get:

VIDIOC_STREAMON returned -1 (No such device)

This indicates the ISP pipeline has no active upstream video source because the IMX708 sensor was never registered into the media graph.

❓ What I believe is missing

The IMX708 driver I ported is written for Raspberry Pi’s Unicam pipeline, not for Rockchip’s rkisp_v5 media architecture.

Therefore it does not implement the Rockchip-specific media entity structure, pad definitions, and routing links needed for:

IMX708 → MIPI-CSI2 → rkisp-csi-subdev → rkisp-isp-subdev → rkisp_mainpath (/dev/video0)

Without being registered as a media entity, the ISP cannot pull frames from the sensor.

🙏 What I need help with

I am looking for guidance or examples on:

1️⃣ How to properly integrate a new sensor driver (IMX708) into the RK3566 rkisp_v5 media pipeline

entity initialization

pad formats

links to rockchip-csi2-dphy and rkisp-csi-subdev

correct integration via v4l2_subdev and media controller API

2️⃣ Reference Rockchip sensor drivers for RK3566

(For example: IMX219 or OV5647 drivers customized by Radxa/Rockchip.)

3️⃣ Any existing work or patches adding IMX708 to Rockchip platforms
🧩 Additional details

Board: Radxa Zero 3W (AIC8800W WiFi)

Kernel: 6.1.84-10-rk2410-nocsf

Only /dev/media0 exists; /dev/media1 is absent.

Schematic: Sensor appears on I²C2 (address 0x1a), CSI2 interface, DPHY0.

💬 Summary

The IMX708 is fully detected and initialized by the driver, but it is not registered as a media entity in the Rockchip ISP graph, so streaming cannot start.

I would appreciate guidance on how to properly adapt/extend the driver so that rkisp_v5 recognizes IMX708 as a valid upstream source.

Thank you!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions