Go to file
qjyu 616af22128 mediamtx is a rtsp server tool.
Add mediamtx tool for camera test.
./mediamtx mediamtx.yml
And then open rtsp://YOUR_IP:8554/cam with VLC or other rtsp clients.
2026-05-28 12:56:32 +08:00
.gitignore mediamtx is a rtsp server tool. 2026-05-28 12:56:32 +08:00
Makefile Initial commit: SC235HAI/SC231AI camera driver for Raspberry Pi Zero 2W 2026-04-14 15:28:44 +08:00
README.md Update README and remove the script not used 2026-05-28 08:59:21 +08:00
mediamtx mediamtx is a rtsp server tool. 2026-05-28 12:56:32 +08:00
mediamtx.yml Update mediamtx config file 2026-05-28 12:55:09 +08:00
sc235hai.c Add V4L2 controls (EXPOSURE/GAIN/VBLANK/HBLANK/PIXEL_RATE/LINK_FREQ) and libcamera support 2026-04-19 14:17:12 +08:00
sc235hai.dts Initial commit: SC235HAI/SC231AI camera driver for Raspberry Pi Zero 2W 2026-04-14 15:28:44 +08:00

README.md

SC235HAI Zero 2W Installation and RTSP Testing Guide

This guide covers the full workflow for a clean Raspberry Pi Zero 2W system after first boot:

  1. Install build dependencies.
  2. Download or copy the SC235HAI driver source.
  3. Build and install the kernel module and device-tree overlay.
  4. Configure boot-time autoload.
  5. Start MediaMTX directly and verify RTSP streaming.

Assumptions:

  • The board is connected to the network.
  • You can reach it over SSH, for example ssh root@<board-ip>.
  • Replace <board-ip> with the actual IP address of your Zero 2W.

1. Prerequisites

1.1 Connect to the board

ssh root@<board-ip>

If your image does not use root directly, log in with the default user first and then switch to the account you use for deployment.

1.2 Update the system and install dependencies

Run the following on the Zero 2W:

apt update
apt install -y \
  git \
  build-essential \
  raspberrypi-kernel-headers \
  device-tree-compiler \
  v4l-utils \
  libcamera-apps \
  ffmpeg \
  curl \
  ca-certificates

Notes:

  • raspberrypi-kernel-headers is required to build the kernel module.
  • device-tree-compiler is required to build sc235hai.dtbo.
  • v4l-utils, libcamera-apps, and ffmpeg are used for verification and testing.

1.3 Copy the driver source to the board

If the source code is still on your PC, copy it to the board:

scp -r sc235hai_driver root@<board-ip>:/root/

If the source is already present on the board, skip this step.


2. Build the SC235HAI driver

Change into the driver directory:

cd /root/sc235hai_driver

2.1 Build the kernel module

make

This should produce sc235hai.ko.

2.2 Build the device-tree overlay

dtc -@ -I dts -O dtb -o sc235hai.dtbo sc235hai.dts

This should produce sc235hai.dtbo.

2.3 Install the built artifacts

cp sc235hai.ko /lib/modules/$(uname -r)/extra/
cp sc235hai.dtbo /boot/firmware/overlays/
depmod -a

Explanation:

  • sc235hai.ko is an out-of-tree loadable kernel module, not built directly into the kernel image.
  • sc235hai.dtbo is the overlay that adds the sensor node to the system.

2.4 Load the module manually for a quick test

modprobe sc235hai

Then confirm it loaded:

lsmod | grep -i sc235hai
dmesg | grep -i sc235

If sc235hai appears in the output, the module itself is working.


3. Enable boot-time autoload

Edit /boot/firmware/config.txt:

nano /boot/firmware/config.txt

Make sure the following lines are present:

camera_auto_detect=0
dtparam=i2c_vc=on
gpio=4=op,dh
gpio=40=op,dh
dtoverlay=sc235hai

Meaning of the settings:

  • camera_auto_detect=0 disables Raspberry Pi camera auto-detection so the custom sensor setup is not overridden.
  • dtparam=i2c_vc=on enables the camera-side I2C bus.
  • gpio=4=op,dh drives GPIO 4 high as an output.
  • gpio=40=op,dh drives GPIO 40 high as an output.
  • dtoverlay=sc235hai loads the SC235HAI overlay during boot.

Save the file and reboot:

reboot

4. Verify the driver after reboot

After the board comes back, reconnect over SSH and run:

lsmod | grep -i sc235hai
dmesg | grep -i sc235
media-ctl -p
ls /dev/video*
ls /dev/media*

What to check:

  1. lsmod should show sc235hai.
  2. dmesg should not show a probe failure.
  3. Video and media device nodes should exist.

To confirm libcamera sees the sensor:

libcamera-hello --list-cameras

If the camera appears in the output, the system-side detection is working.


5. Start MediaMTX for RTSP streaming

This workflow does not use the deployment script. It starts mediamtx directly.

5.1 Check that MediaMTX files are present

ls -l /root/mediamtx /root/mediamtx.yml

If the files are missing, copy them to /root/ first.

5.2 Stop any old instance

pkill -f mediamtx 2>/dev/null || true

5.3 Start MediaMTX directly

setsid /root/mediamtx /root/mediamtx.yml >/var/log/mediamtx.log 2>&1 </dev/null &

This runs MediaMTX in the background and writes logs to /var/log/mediamtx.log.

5.4 Check the process and logs

pgrep -af mediamtx
tail -n 50 /var/log/mediamtx.log

If everything is working, you should see something similar to:

path cam ... ready

That means the RTSP path is available.


6. Play and verify the RTSP stream

The RTSP URL is usually:

rtsp://<board-ip>:8554/cam

6.1 VLC

Open:

rtsp://<board-ip>:8554/cam

6.2 ffplay

ffplay "rtsp://<board-ip>:8554/cam"

6.3 OpenCV

import cv2

cap = cv2.VideoCapture("rtsp://<board-ip>:8554/cam")
while True:
    ret, frame = cap.read()
    if ret:
        cv2.imshow("SC235HAI", frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

cap.release()
cv2.destroyAllWindows()

If the image displays correctly, the driver, sensor, MediaMTX, and network path are all working.


7. Common issues

7.1 modprobe sc235hai cannot find the module

Check whether the module is installed for the current kernel:

find /lib/modules/$(uname -r) -name 'sc235hai.ko*'

If nothing is found, rebuild and reinstall:

cd /root/sc235hai_driver
make
cp sc235hai.ko /lib/modules/$(uname -r)/extra/
depmod -a

7.2 lsmod does not show sc235hai

Check whether config.txt contains:

dtoverlay=sc235hai

Then reboot again.

7.3 MediaMTX starts but there is no image

Check these in order:

  1. dmesg | grep -i sc235
  2. libcamera-hello --list-cameras
  3. tail -n 50 /var/log/mediamtx.log

If libcamera cannot see the camera, the problem is usually in the driver, overlay, or hardware connection, not in MediaMTX.

7.4 RTSP playback errors

Make sure:

  • The board and the client are on the same network.
  • Port 8554 is not blocked by a firewall.
  • The MediaMTX log does not show a startup failure.

8. One-shot command sequence

If the source is already in /root/sc235hai_driver, you can run the whole sequence like this:

apt update
apt install -y git build-essential raspberrypi-kernel-headers device-tree-compiler v4l-utils libcamera-apps ffmpeg curl ca-certificates
cd /root/sc235hai_driver
make
dtc -@ -I dts -O dtb -o sc235hai.dtbo sc235hai.dts
cp sc235hai.ko /lib/modules/$(uname -r)/extra/
cp sc235hai.dtbo /boot/firmware/overlays/
depmod -a
nano /boot/firmware/config.txt
reboot

After reboot:

ssh root@<board-ip>
lsmod | grep -i sc235hai
setsid /root/mediamtx /root/mediamtx.yml >/var/log/mediamtx.log 2>&1 </dev/null &
tail -n 50 /var/log/mediamtx.log

On your client machine, open:

rtsp://<board-ip>:8554/cam

9. Summary

The key points are:

  • sc235hai is installed as an out-of-tree kernel module, not compiled into the kernel itself.
  • The device-tree overlay is loaded at boot using dtoverlay=sc235hai.
  • MediaMTX can be started directly on the board for RTSP testing.

If you want, I can also turn this into a shorter field checklist or a troubleshooting-only version.