iMX6 TinyRex Camera
Jump to navigation
Jump to search
This example uses Raspberry Pi Camera Rev 1.3 (build on OV5647 MIPI sensor) as a test device for CSI Interface. On this page OV5647 sensor integration, settings and usage on i.MX6 processors are shown.
Note: There is an issue concerning Raspberry Pi 1.3 cameras and its I2C detected. There might be some models that does not get identified.
Device detection
Kernel 4.1
... camera ov5647_mipi is found ...
Kernel 3.14
... camera ov5647_mipi is found mxc_v4l2_master_attach: ipu(0:0)/csi(1:0)/mipi(1:0) doesn't match mxc_v4l2_master_attach: ipu0:/csi1 mipi attached ov5647_mipi:mxc_v4l2_cap1 ERROR: v4l2 capture: slave not found! ...
I2C detect
CSI connector uses I2C2 to communicate with cameras. OV5647 sensor is located at 0x36 address:
root@imx6s-tinyrex:~# i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- UU -- -- -- 3a -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
GPIO control
GPIO pins are controlled by the camera driver and access to these pins is blocked. Power on GPIO is 74, LED GPIO has number 54.
root@imx6s-tinyrex:~# modprobe -r ov5647_camera_mipi root@imx6s-tinyrex:~# echo 54 > /sys/class/gpio/export root@imx6s-tinyrex:~# echo out > /sys/class/gpio/gpio54/direction root@imx6s-tinyrex:~# echo 1 > /sys/class/gpio/gpio54/value root@imx6s-tinyrex:~# echo 0 > /sys/class/gpio/gpio54/value root@imx6s-tinyrex:~# echo 54 > /sys/class/gpio/unexport root@imx6s-tinyrex:~# modprobe ov5647_camera_mipi
Modules
Kernel 4.1
root@imx6-tinyrexmax:~# lsmod Module Size Used by mxc_v4l2_capture 27624 2 ipu_bg_overlay_sdc 5385 1 mxc_v4l2_capture ipu_still 2331 1 mxc_v4l2_capture ipu_prp_enc 5903 1 mxc_v4l2_capture ipu_csi_enc 3904 1 mxc_v4l2_capture ipu_fg_overlay_sdc 6130 1 mxc_v4l2_capture ov5647_camera_mipi_int 30566 0 adv7610_video 6373 0 v4l2_int_device 2872 4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture mxc_dcic 6528 0
Kernel 3.14
root@imx6s-tinyrex:~# lsmod Module Size Used by mxc_v4l2_capture 28532 1 ipu_bg_overlay_sdc 5401 1 mxc_v4l2_capture ipu_still 2528 1 mxc_v4l2_capture ipu_prp_enc 5943 1 mxc_v4l2_capture ipu_csi_enc 3863 1 mxc_v4l2_capture ipu_fg_overlay_sdc 6217 1 mxc_v4l2_capture ov5647_camera_mipi 30906 0 v4l2_int_device 2930 2 ov5647_camera_mipi,mxc_v4l2_capture mxc_dcic 6569 0 evbug 1875 0
Resolution change
1280x960
echo 0 > /sys/bus/i2c/devices/1-0036/ov5647_mode
1280x720
echo 1 > /sys/bus/i2c/devices/1-0036/ov5647_mode
1920x1080
echo 2 > /sys/bus/i2c/devices/1-0036/ov5647_mode
640x480
echo 3 > /sys/bus/i2c/devices/1-0036/ov5647_mode
1024x768 (default)
echo 4 > /sys/bus/i2c/devices/1-0036/ov5647_mode
960x720
echo 5 > /sys/bus/i2c/devices/1-0036/ov5647_mode
=== 640x480 (narrow angle of view)
echo 6 > /sys/bus/i2c/devices/1-0036/ov5647_mode
Gstreamer
Capture single JPEG picture
echo 2 > /sys/bus/i2c/devices/1-0036/ov5647_mode gst-launch-1.0 v4l2src device="/dev/video1" num-buffers=1 ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! bayer2rgb ! videoconvert ! jpegenc ! filesink location=sample_1920_1080.jpeg
Video preview
echo 2 > /sys/bus/i2c/devices/1-0036/ov5647_mode gst-launch-1.0 v4l2src device="/dev/video1" ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsin
echo 3 > /sys/bus/i2c/devices/1-0036/ov5647_mode gst-launch-1.0 v4l2src device="/dev/video1" ! video/x-bayer,width=640,height=480,framerate=15/1 ! bayer2rgb ! videoconvert ! fbdevsink