Difference between revisions of "VEYE CS Camera on Firfly Boards"
Line 51: | Line 51: | ||
In addition, a compiled linux kernel installation package and Android image is provided in the [https://github.com/veyeimaging/rk356x_firefly/releases releases]. | In addition, a compiled linux kernel installation package and Android image is provided in the [https://github.com/veyeimaging/rk356x_firefly/releases releases]. | ||
− | === | + | === Ubuntu === |
− | ==== Overview ==== | + | ==== Upgrade Firefly Ubuntu system ==== |
+ | |||
+ | ===== Overview ===== | ||
This section describes how to update the RK35xx system to support our camera modules. | This section describes how to update the RK35xx system to support our camera modules. | ||
Line 60: | Line 62: | ||
Although we are now using Ubuntu system as an example to introduce, other Linux distributions can also refer to this article. | Although we are now using Ubuntu system as an example to introduce, other Linux distributions can also refer to this article. | ||
− | ====Burn Firefly standard system==== | + | =====Burn Firefly standard system===== |
Refer to the [https://wiki.t-firefly.com/en/ROC-RK3566-PC/01-bootmode.html Firefly documentation] to burn in a standard system. | Refer to the [https://wiki.t-firefly.com/en/ROC-RK3566-PC/01-bootmode.html Firefly documentation] to burn in a standard system. | ||
− | ====Using prebuilt Image and dtb file==== | + | =====Using prebuilt Image and dtb file===== |
Using the compiled debain installation package | Using the compiled debain installation package | ||
Line 77: | Line 79: | ||
If the version does not match, it needs to be compiled from the source code. | If the version does not match, it needs to be compiled from the source code. | ||
− | === Check system status === | + | ==== Check system status ==== |
Run the following command to confirm whether the camera is probed. | Run the following command to confirm whether the camera is probed. | ||
Line 100: | Line 102: | ||
The camera can be seen connected to the i2c-4. | The camera can be seen connected to the i2c-4. | ||
− | === Samples === | + | ==== Samples ==== |
− | ==== v4l2-ctl ==== | + | ===== v4l2-ctl ===== |
− | ===== Install v4l2-utils ===== | + | ====== Install v4l2-utils ====== |
<code>sudo apt-get install v4l-utils</code> | <code>sudo apt-get install v4l-utils</code> | ||
− | ===== List the data formats supported by the camera ===== | + | ====== List the data formats supported by the camera ====== |
<code>v4l2-ctl --list-formats-ext</code> | <code>v4l2-ctl --list-formats-ext</code> | ||
− | ===== Snap YUV picture ===== | + | ====== Snap YUV picture ====== |
<code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-1920x1080.yuv</code> | <code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-1920x1080.yuv</code> | ||
Line 119: | Line 121: | ||
<code>ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 nv12-1920x1080.yuv</code> | <code>ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 nv12-1920x1080.yuv</code> | ||
− | ===== Check frame rate ===== | + | ====== Check frame rate ====== |
<code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=-1 --stream-to=/dev/null</code> | <code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=-1 --stream-to=/dev/null</code> | ||
− | ==== yavta ==== | + | ===== yavta ===== |
<code>git clone <nowiki>https://github.com/veyeimaging/yavta.git</nowiki></code> | <code>git clone <nowiki>https://github.com/veyeimaging/yavta.git</nowiki></code> | ||
Line 129: | Line 131: | ||
<code>./yavta -c1 -Fuyvy-1920x1080.yuv --skip 0 -f UYVY -s 1920x1080 /dev/video0</code> | <code>./yavta -c1 -Fuyvy-1920x1080.yuv --skip 0 -f UYVY -s 1920x1080 /dev/video0</code> | ||
− | ==== gstreamer ==== | + | ===== gstreamer ===== |
We provide several gstreamer routines that implement the preview, capture, and video recording functions. See the [https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/samples samples] directory on github for details. | We provide several gstreamer routines that implement the preview, capture, and video recording functions. See the [https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/samples samples] directory on github for details. | ||
− | ==== Import to OpenCV ==== | + | ===== Import to OpenCV ===== |
First install OpenCV: | First install OpenCV: | ||
Line 140: | Line 142: | ||
In addition, this [https://wiki.t-firefly.com/en/Firefly-Linux-Guide/demo_OpenCV_support.html page] from Firefly has some reference value. | In addition, this [https://wiki.t-firefly.com/en/Firefly-Linux-Guide/demo_OpenCV_support.html page] from Firefly has some reference value. | ||
+ | ==== Compile drivers and dtb from source code ==== | ||
+ | https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/drivers | ||
=== i2c script for parameter configuration === | === i2c script for parameter configuration === | ||
Line 155: | Line 159: | ||
Video Control Toolkits Manual :[[CS-MIPI-X i2c|CS-MIPI-X I2C]] | Video Control Toolkits Manual :[[CS-MIPI-X i2c|CS-MIPI-X I2C]] | ||
− | === | + | |
− | + | === Android === | |
=== References === | === References === |
Revision as of 09:38, 6 December 2022
How to use VEYE and CS series cameras on Firefly's RK35XX board
1 Overview
VEYE series and CS series cameras are the video streaming mode MIPI cameras we designed. This article takes Firefly's ROC-RK3566-PC board as an example to introduce how to connect VEYE and CS series cameras to RK3566/RK3568/RK3588 system.
We provide drivers for both Linux(Ubuntu) and Android.
1.1 Camera Module List
Series | Model | Status |
---|---|---|
VEYE Series | VEYE-MIPI-IMX327S | Done |
VEYE Series | VEYE-MIPI-IMX462 | Done |
VEYE Series | VEYE-MIPI-IMX385 | Done |
2 Hardware Setup
VEYE series and CS series cameras are provided with Raspberry Pi compatible 15Pin FFC connector. An ADP-Tfirefly adapter board is required to adapt to the ROC-RK3566-PC board.
2.1 Connection of camera and ADP-Tfirefly
The two are connected using 1.0 mm pitch*15P FFC cable with opposite direction. The cable must be inserted with the silver contacts facing outside.
2.2 Connection of ADP-Tfirefly and Firefly Board
The two are connected using 0.5 mm pitch*30P FFC cable with same direction. The cable must be inserted with the silver contacts facing inside.
2.3 Overall connection
3 Introduction to github repositories
https://github.com/veyeimaging/rk356x_firefly
includes:
- driver source code
- i2c toolkits
- application demo
In addition, a compiled linux kernel installation package and Android image is provided in the releases.
4 Ubuntu
4.1 Upgrade Firefly Ubuntu system
4.1.1 Overview
This section describes how to update the RK35xx system to support our camera modules.
For some versions, we provide a deb installer that can be installed directly. For versions where no installer is provided, you will need to refer to later chapters to compile from the driver source code.
Although we are now using Ubuntu system as an example to introduce, other Linux distributions can also refer to this article.
4.1.2 Burn Firefly standard system
Refer to the Firefly documentation to burn in a standard system.
4.1.3 Using prebuilt Image and dtb file
Using the compiled debain installation package
On the RK35xx board, execute :
wget https://github.com/veyeimaging/rk356x_firefly/releases/latest/download/rk356x_firefly.tar.gz
tar -xavf rk356x_firefly.tar.gz
cd cd rk356x_firefly/released_images/ROC-RK3566-PC/ubuntu/
sudo dpkg -i linux-image-4.19.232_4.19.232-21_arm64.deb
If the version does not match, it needs to be compiled from the source code.
4.2 Check system status
Run the following command to confirm whether the camera is probed.
- VEYE-MIPI-XXX
dmesg | grep veye
The output message appears as shown below:
veyecam2m 4-003b: camera id is veyecam2m
veyecam2m 4-003b: sensor is IMX327
- Run the following command to check the presence of video node.
ls /dev/video0
The output message appears as shown below.
video0
The camera can be seen connected to the i2c-4.
4.3 Samples
4.3.1 v4l2-ctl
4.3.1.1 Install v4l2-utils
sudo apt-get install v4l-utils
4.3.1.2 List the data formats supported by the camera
v4l2-ctl --list-formats-ext
4.3.1.3 Snap YUV picture
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-1920x1080.yuv
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap --stream-count=100 --stream-to=nv12-1920x1080.yuv
Play YUV picture
ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 nv12-1920x1080.yuv
4.3.1.4 Check frame rate
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=-1 --stream-to=/dev/null
4.3.2 yavta
git clone https://github.com/veyeimaging/yavta.git
cd yavta;make
./yavta -c1 -Fuyvy-1920x1080.yuv --skip 0 -f UYVY -s 1920x1080 /dev/video0
4.3.3 gstreamer
We provide several gstreamer routines that implement the preview, capture, and video recording functions. See the samples directory on github for details.
4.3.4 Import to OpenCV
First install OpenCV:
sudo apt install python3-opencv
We provide several routines to import camera data into opencv. See the samples directory on github for details.
In addition, this page from Firefly has some reference value.
4.4 Compile drivers and dtb from source code
https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/drivers
5 i2c script for parameter configuration
Because of the high degree of freedom of our camera parameters, we do not use V4L2 parameters to control, but use scripts to configure parameters.
https://github.com/veyeimaging/rk356x_firefly/tree/main/i2c_cmd
using -b option to identify which bus you want to use.
- VEYE series
Video Control Toolkits Manual :VEYE-MIPI-327 I2C
- CS series
Video Control Toolkits Manual :CS-MIPI-X I2C
6 Android
7 References
- ROC-RK3566-PC Manual
https://wiki.t-firefly.com/en/ROC-RK3566-PC/
- Firefly Linux User Guide
https://wiki.t-firefly.com/en/Firefly-Linux-Guide/index.html
8 Document History
- 2022-10-22
Release 1st version.