Hello everyone!
I need some help with Radxa CM3 and rpi camera v2.1
- We bought a radxa cm3 sodimm(with rk3566) and plugged it into our board(before that, we used this board for raspberry pi cm3+)
- Installed the bootloader and the image bullseye_cli_b27 from here https://github.com/radxa-build/radxa-cm3-sodimm-io/releases, and it works! But…
I want to connect a Raspberry Pi Camera v2.1, for this I activated radxa-cm3s-io-csi1-rpi-camera-v2.dtbo and rk3568-i2c2-m1.dtbo (camera on pins 3 and 5) through rsetup, and I’m trying to take a photo using the
gst-launch1.0 v4l2src num-buffers=1 ! filesink location=1.jpg
but it doesn’t work
I went to recompiled and edit radxa-cm3s-io-csi1-rpi-camera-v2.dtbo, but got a little confused about it
Checking with an oscilloscope showed that from the point of view of physical connection everything is organized correctly;
It also bothers me that i2cdetect give me this answer:
sudo i2cdetect -y 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- 64 -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
I think the camera should respond to two addresses: 10 and 64, but i see only 1 address
then I noticed that when I boot the system I get these kind of errors:
[ 7.107641] imx219 2-0010: Error -5 setting default controls
I’m guessing that changing radxa-cm3s-io-csi1-rpi-camera-v2.dts correctly should solve the problem
this is my radxa-cm3s-io-csi1-rpi-camera-v2.dts:
/dts-v1/;
/plugin/;
/ {
metadata {
title = "Enable Raspberry Pi Camera v2 on CSI1";
compatible = "radxa,cm3s-io\0radxa,radxa-cm3-sodimm-io";
category = "camera";
exclusive = "csi2_dphy2";
description = "Enable Raspberry Pi Camera v2 on CSI1.";
};
fragment@0 {
target-path = [2f 00];
__overlay__ {
ext-cam-clk-imx219-1 {
status = "okay";
compatible = "fixed-clock";
clock-frequency = <0x16e3600>;
clock-output-names = "ext_cam_clk_imx219_1";
#clock-cells = <0x00>;
phandle = <0x01>;
};
camera-pwdn-gpio {
status = "okay";
compatible = "regulator-fixed";
regulator-name = "camera_pwdn_gpio";
regulator-always-on;
regulator-boot-on;
enable-active-high;
gpio = <0xffffffff 0x00 0x00>;
phandle = <0x06>;
};
};
};
fragment@1 {
target = <&i2c2>;
__overlay__ {
status = "okay";
#address-cells = <0x01>;
#size-cells = <0x00>;
imx219@10 {
status = "okay";
compatible = "sony,imx219";
reg = <0x10>;
clocks = <0x01>;
clock-names = "ext_cam_clk_imx219_1";
rockchip,camera-module-index = <0x01>;
rockchip,camera-module-facing = "front";
rockchip,camera-module-name = "rpi-camera-v2";
rockchip,camera-module-lens-name = "default";
phandle = <0x07>;
port {
endpoint {
remote-endpoint = <0x02>;
data-lanes = <0x01 0x02>;
phandle = <0x03>;
};
};
};
};
};
fragment@2 {
target = <&csi2_dphy_hw>;
__overlay__ {
status = "okay";
};
};
fragment@3 {
target = <&csi2_dphy1>;
__overlay__ {
status = "okay";
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
reg = <0x00>;
#address-cells = <0x01>;
#size-cells = <0x00>;
endpoint@1 {
reg = <0x01>;
remote-endpoint = <0x03>;
data-lanes = <0x01 0x02>;
phandle = <0x02>;
};
};
port@1 {
reg = <0x01>;
#address-cells = <0x01>;
#size-cells = <0x00>;
endpoint@1 {
reg = <0x01>;
remote-endpoint = <0x04>;
phandle = <0x05>;
};
};
};
};
};
fragment@4 {
target = <&rkisp_vir0>;
__overlay__ {
status = "okay";
#address-cells = <0x01>;
#size-cells = <0x00>;
port {
reg = <0x00>;
#address-cells = <0x01>;
#size-cells = <0x00>;
endpoint@0 {
reg = <0x00>;
remote-endpoint = <0x05>;
phandle = <0x04>;
};
};
};
};
fragment@5 {
target = <&rkisp>;
__overlay__ {
status = "okay";
};
};
fragment@6 {
target = <&rkisp_mmu>;
__overlay__ {
status = "okay";
};
};
fragment@7 {
target = <&rkcif_mmu>;
__overlay__ {
status = "okay";
};
};
fragment@8 {
target = <&rkcif>;
__overlay__ {
status = "okay";
};
};
__symbols__ {
ext_cam_clk_imx219_1 = "/fragment@0/__overlay__/ext-cam-clk-imx219-1";
camera_pwdn_gpio = "/fragment@0/__overlay__/camera-pwdn-gpio";
imx219_2 = "/fragment@1/__overlay__/imx219@10";
imx219_2_out = "/fragment@1/__overlay__/imx219@10/port/endpoint";
csi2dphy2_ucam1 = "/fragment@3/__overlay__/ports/port@0/endpoint@1";
csi2dphy2_out = "/fragment@3/__overlay__/ports/port@1/endpoint@1";
isp1_in = "/fragment@4/__overlay__/port/endpoint@0";
};
__fixups__ {
gpio4 = "/fragment@0/__overlay__/camera-pwdn-gpio:gpio:0";
i2c3 = "/fragment@1:target:0";
csi2_dphy_hw = "/fragment@2:target:0";
csi2_dphy2 = "/fragment@3:target:0";
rkisp_vir1 = "/fragment@4:target:0";
rkisp = "/fragment@5:target:0";
rkisp_mmu = "/fragment@6:target:0";
rkcif_mmu = "/fragment@7:target:0";
rkcif = "/fragment@8:target:0";
};
__local_fixups__ {
fragment@1 {
__overlay__ {
imx219@10 {
clocks = <0x00>;
port {
endpoint {
remote-endpoint = <0x00>;
};
};
};
};
};
fragment@3 {
__overlay__ {
ports {
port@0 {
endpoint@1 {
remote-endpoint = <0x00>;
};
};
port@1 {
endpoint@1 {
remote-endpoint = <0x00>;
};
};
};
};
};
fragment@4 {
__overlay__ {
port {
endpoint@0 {
remote-endpoint = <0x00>;
};
};
};
};
};
};
Thank you!