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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions