Zero 3W Camera 8M doesn’t work

Hello everyone!
Has anyone managed to start the camera on the Radxa 3W board?
I am testing on Debian b6
with an update via rsetup (after the update, overlays from radxa 8M appear)
I have 4 GB RAM 32 eMMC
I am testing the following cameras:
Original RADXA 8M, rspb camera 1.3, rspb camera 2
When switching cameras, I select the corresponding overlay.
When connected, the radxa 3w board starts to heat up a lot (much hotter if the camera is not connected). Is this normal or a defect?
And sometimes the Radxa 3W does not start at all with the camera connected.
I try to test the camera via cheese, via rsetup
by starting the RTSP server via the link
https://docs.radxa.com/en/zero/zero3/app-development/rtsp
I used different device addresses: video0 video-camera0 etc.
Errors and other things are everywhere.
Maybe someone has encountered and solved the problem? or I have a defect in the Radxa 3W itself.

can you send a picture how it is connected, right now I guess you have a radxa zero3w version which has the wrong connector

yes, this one is inverted, either you let them refund you or you search for a cable with inverted pins.

It’s a wrong connector on the pcb it should be flipped :

1 Like

Ok, thanks for the clarification.
Now when ordering I will specify what type of connector.
I will use this board for other purposes.
I think it will be difficult to find an FPC with an inverted connection.
However, it would be nice to indicate the revision on the board, so that it is clear what you are ordering.

it’s not an revision, but a manufacturing defect

I ordered a second board, it came with the same defect, I will try to arrange a return,
I noticed that the packaging has an indication of the revision,
revision from 1.120 my connector turned out to be defective.
Are there revision numbers where the defect was fixed? so that I can immediately write to the seller

Or you can send me the correct part number of the connector, I will order it and resolder it

I’ve managed to make Radxa Camera 8M 219 work. My approach is probably far from the optimal one, but it works. Image used: radxa-zero3_debian_bullseye_xfce_b6

  1. sudo rsetup -> System -> System Update
  2. cd /lib/linux-image-5.10.160-26-rk356x/rockchip/overlays/
  3. sudo cp radxa-zero3-rpi-camera-v2.dtbo /boot/dtbo/
  4. sudo u-boot-update
  5. Change default to l1 from l0 in /boot/extlinux/extlinux.conf. l1 target should point to linux image 5.10.160-26-rk356x instead of 5.10.160-38-rk356x.
  6. sudo reboot
  7. Check kernel version with uname -r it should be 5.10.160-26-rk356x
  8. sudo rsetup -> Hardware -> Video capture devices -> vide-camera0 -> Show live video

Remarks:

  • This approach could fail if FPC cable is not connected properly OR FPC wiggles inside MIPI CSI and connection is loose.
  • All of my cameras on Radxa Zero 3 work only on kernel 5.10.160-26. The list contains only cameras with sensor IMX219 - Overlay RPi Camera v2.0 and OV5647 - Overlay RPi Camera v1.3)
1 Like

Can you send a photo of the CSI port on the board?

Ok, sure.

I have flipped upside down black plastic holder inside MIPI CSI connector for better contact of the FPC cable to the connector contacts. When my project will be ready I am going to glue FPC to the port with silicon glue for more motion-proof connection.

1 Like

yes, I managed to do it with a defective connector
You need to turn the wire over, turn the gray clamp over
and according to the instructions from moonLighter above, the camera worked

1 Like

Did you manage to launch the RTSP server on the old kernel?
I followed the instructions
https://docs.radxa.com/en/zero/zero3/app-development/rtsp
Ffmpeg does not work correctly, the picture does not update in real time, Gstreamer did not work.

As far as I remember I’ve managed to make RTSP work. Here is my test code for Radxa Zero 3W:

import gi
import sys
import socket
import fcntl
import struct
gi.require_version('Gst', '1.0')
gi.require_version('GstRtspServer', '1.0')
from gi.repository import GObject, Gst, GstRtspServer


def get_wlan0_ip():
    """
    Get the IP address of the 'wlan0' interface on Unix-like systems.

    Returns:
        str: IP address of 'wlan0' interface, or None if not found.
    """
    iface = 'wlan0'
    try:
        # Create a socket to perform network operations
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # Interface name must be a bytes object of max length 15
        iface_bytes = iface.encode('utf-8')[:15]
        # Perform an ioctl system call to get the IP address
        # SIOCGIFADDR is the IOCTL command to get the address
        # 0x8915 is the standard code for SIOCGIFADDR
        ip_addr = fcntl.ioctl(
            sock.fileno(),
            0x8915,  # SIOCGIFADDR
            struct.pack('256s', iface_bytes + b'\x00' * (256 - len(iface_bytes)))
        )[20:24]
        # Convert the binary IP address to a human-readable string
        return socket.inet_ntoa(ip_addr)
    except OSError:
        # If the interface is not found or another OS error occurs
        return None

class RTSP_Server:
    def __init__(self, ip_add : str = None):
        Gst.init(None)

        self.ip_add = ip_add
        self.server = GstRtspServer.RTSPServer()
        self.server.set_service("8554")  # RTSP port

        factory = GstRtspServer.RTSPMediaFactory()
        factory.set_launch(
            '( v4l2src device=/dev/video0 ! '
            'video/x-raw,width=640,height=480,framerate=30/1 ! '
            'x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! '
            'rtph264pay name=pay0 pt=96 )'
        )
        factory.set_shared(True)
        mount_points = self.server.get_mount_points()
        mount_points.add_factory("/test", factory)

        self.server.attach(None)
        print(f"RTSP Server is running at rtsp://{self.ip_add}:8554/test")

if __name__ == '__main__':
    # ip_add = str(get_wlan0_ip()) # Get IP address of wlan0 interface
    ip_add = "eth0_ip_address"

    s = RTSP_Server(ip_add)
    loop = GObject.MainLoop()
    try:
        loop.run()
    except:
        pass

Change IP if you need in ip_add variable. Run this code without virtual environment. Had issues with gi lib when tried to execute inside conda env. But it’s possible with virtualenv, just create env with system packages option.

I installed Android and the camera worked (Radxa 8M) without any problems with the kernels. If anyone needs a working external Wi-Fi antenna in Android, the neighboring thread describes how to activate it.
I took IP Webcam Pro as an RTSP server, it connects via the ONVIF protocol, everything works, but I encountered a limitation at 720p of 30 frames, but I need 60. According to the camera specification, it can do 720p 60 frames, and the hardware H.264 encoder can also do 60 frames at 720p (the specification says 1080p @ 60 fps, I think it should also be able to do 60 frames at 720p)
Apparently, there is some kind of limitation in DTS, I’ll have to look at the Android source code.
Maybe someone has encountered this?

Hey, can u link the android img that u used for this purposes?

Original Image

Update where external wifi antenna is enabled (Installed over the existing one)
https://mega.nz/file/Qj5zCYCQ#We27FOyQDs2p1MMmzuRL1m-TGjtPL037w_L4jTHaDE4

Instructions with explanations for compiling android

Original instructions for compiling android

Has anyone got the 8M camera working on Armbian?

Problem description

Hello,

could you specify a side by side comparison of correct/wrong MIPI connectors for the camera? I believe that I have a inverted one, but I don’t have a control. Thank you