Add mediamtx tool for camera test. ./mediamtx mediamtx.yml And then open rtsp://YOUR_IP:8554/cam with VLC or other rtsp clients. |
||
|---|---|---|
| .gitignore | ||
| Makefile | ||
| README.md | ||
| mediamtx | ||
| mediamtx.yml | ||
| sc235hai.c | ||
| sc235hai.dts | ||
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:
- Install build dependencies.
- Download or copy the SC235HAI driver source.
- Build and install the kernel module and device-tree overlay.
- Configure boot-time autoload.
- 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-headersis required to build the kernel module.device-tree-compileris required to buildsc235hai.dtbo.v4l-utils,libcamera-apps, andffmpegare 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.kois an out-of-tree loadable kernel module, not built directly into the kernel image.sc235hai.dtbois 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=0disables Raspberry Pi camera auto-detection so the custom sensor setup is not overridden.dtparam=i2c_vc=onenables the camera-side I2C bus.gpio=4=op,dhdrives GPIO 4 high as an output.gpio=40=op,dhdrives GPIO 40 high as an output.dtoverlay=sc235hailoads 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:
lsmodshould showsc235hai.dmesgshould not show a probe failure.- 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:
dmesg | grep -i sc235libcamera-hello --list-camerastail -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
8554is 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:
sc235haiis 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.