Line 1:
Line 1:
−
'''<big>How to use VEYE and CS series cameras on Firefly's RK35XX board (Ubuntu)</big>'''
+
'''<big>How to use VEYE and CS series cameras on Firefly's RK35XX board</big>'''
+
+
[[VEYE CS Camera on Firfly Boards/zh|查看中文]]
=== Overview ===
=== Overview ===
+
VEYE series and CS series cameras are the video streaming mode MIPI cameras we designed. This article takes Firefly's ROC-RK3566-PC and ROC-RK3588S-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.
+
+
==== Camera Module List ====
+
{| class="wikitable"
+
!Series
+
!Model
+
!Status
+
|-
+
|VEYE Series
+
|VEYE-MIPI-IMX327S
+
|Done
+
|-
+
|VEYE Series
+
|VEYE-MIPI-IMX462
+
|Done
+
|-
+
|VEYE Series
+
|VEYE-MIPI-IMX385
+
|Done
+
|}
+
In addition, the driver for the Fpdlink connection mode has been finished on the Ubuntu system.
=== Hardware Setup ===
=== 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-RK35xx-PC board.
+
+
==== 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.
+
[[File:VEYE-MIPI-327S-ADP-Tfirefly 06.jpg|link=http://wiki.veye.cc/index.php/File:VEYE-MIPI-327S-ADP-Tfirefly%2006.jpg|center|thumb|800x800px|VEYE camera connect to ADP-Tfirefly]]
+
+
==== 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.
+
[[File:VEYE-MIPI-327S-ADP-Tfirefly 05.jpg|link=http://wiki.veye.cc/index.php/File:VEYE-MIPI-327S-ADP-Tfirefly%2005.jpg|center|thumb|800x800px|ADP-Tfirefly connect to Firefly board]]
+
+
==== Overall connection ====
+
[[File:VEYE-MIPI-327S-ADP-Tfirefly 04.jpg|link=http://wiki.veye.cc/index.php/File:VEYE-MIPI-327S-ADP-Tfirefly%2004.jpg|center|thumb|800x800px|Firefly Board and VEYE camera overall]]
+
+
==== FPD-Link III Camera Connection Diagram ====
+
[[File:FPDLINK Camera to RK3588S.png|center|thumb|800x800px|FPDLINK Camera to RK3588S]]
+
<br />
+
=== Introduction to github repositories ===
+
https://github.com/veyeimaging/rk35xx_veye_bsp
+
+
https://github.com/veyeimaging/rk35xx_firefly
+
+
includes:
+
+
* driver source code
+
* i2c toolkits
+
* application demo
+
+
In addition, a compiled linux kernel installation package and Android image is provided in the [https://github.com/veyeimaging/rk356x_firefly/releases releases].
+
+
=== Ubuntu ===
+
+
==== Upgrade Firefly Ubuntu system(RK356x) ====
+
+
===== Overview =====
+
This section describes how to update the RK35xx system to support our camera modules.
+
+
For the kernel version 4.19, we provide a deb installation package that can be installed directly.
+
+
For the kernel version 5.10, we provide a burning image.
+
+
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.
+
+
===== kernel version 5.10 =====
+
For the ROC-RK3588S-PC, we have provided an image of the release system.
+
+
Download the latest released image file corresponding to the camera model you are using from https://github.com/veyeimaging/rk35xx_firefly/releases/ .
+
+
Refer to the [https://wiki.t-firefly.com/en/ROC-RK3566-PC/03-upgrade_firmware.html Firefly documentation] to burn in a standard system.
+
+
===== kernel version 4.19 =====
+
+
======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.
+
======Using prebuilt Image and dtb file======
+
Using the compiled debain installation package
+
+
On the RK35xx board,
+
+
Download the latest rk356x_firefly_ubuntu.tar.gz from https://github.com/veyeimaging/rk35xx_firefly/releases/ .
+
+
<code>tar -xavf rk356x_firefly.tar.gz</code>
+
+
<code>cd rk356x_firefly/released_images/ROC-RK3566-PC/ubuntu/</code>
+
+
<code>sudo dpkg -i linux-image-4.19.232_4.19.232-21_arm64.deb</code>
+
+
If the version does not match, it needs to be compiled from the source code.
+
+
==== Upgrade Firefly Ubuntu system(RK358x) ====
+
For the ROC-RK3588S-PC, we have provided an image of the release system.
+
+
Download the latest released image file corresponding to the camera model you are using from https://github.com/veyeimaging/rk35xx_firefly/releases/ .
+
+
Refer to the [https://wiki.t-firefly.com/en/ROC-RK3588S-PC/upgrade_bootmode.html Firefly documentation] to burn in a standard system.
+
+
==== Check system status ====
+
Run the following command to confirm whether the camera is probed.
+
+
* VEYE-MIPI-XXX
+
+
<code>dmesg | grep veye</code>
+
+
The output message appears as shown below:
+
+
<code>veyecam2m 4-003b: camera id is veyecam2m</code>
+
+
<code>veyecam2m 4-003b: sensor is IMX327</code>
+
+
* Run the following command to check the presence of video node.
+
+
<code>ls /dev/video0</code>
+
+
The output message appears as shown below.
+
+
<code>video0</code>
+
+
For ROC-RK3566-PC, the camera is connected to i2c-4, for ROC-RK3588S-PC to i2c-7.
+
+
==== Application examples ====
+
+
===== v4l2-ctl =====
+
+
====== Install v4l2-utils ======
+
<code>sudo apt-get install v4l-utils</code>
+
+
====== List the data formats supported by the camera ======
+
<code>v4l2-ctl --list-formats-ext</code>
+
+
====== Snap YUV picture ======
+
<code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap --stream-count=100 --stream-to=nv12-1920x1080.yuv</code>
+
+
For RK3566, also:
+
+
<code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-1920x1080.yuv</code>
+
+
Play YUV picture
+
+
<code>ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 nv12-1920x1080.yuv</code>
−
=== Upgrade Firefly Ubuntu system ===
+
====== 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>
−
=== Check system status ===
+
===== yavta =====
+
<code>git clone <nowiki>https://github.com/veyeimaging/yavta.git</nowiki></code>
−
=== Samples ===
+
<code>cd yavta;make</code>
−
==== v4l2-ctl ====
+
<code>./yavta -c1 -Fnv12-1920x1080.yuv --skip 0 -f NV12 -s 1920x1080 /dev/video0</code>
−
==== yavta ====
+
===== gstreamer =====
+
We provide several gstreamer routines that implement the preview, capture, and video recording functions. See the [https://github.com/veyeimaging/rk35xx_veye_bsp/tree/main/samples samples] directory on github for details.
−
==== gstreamer ====
+
===== Import to OpenCV =====
+
First install OpenCV:
−
==== Import to OpenCV ====
+
<code>sudo apt install python3-opencv</code>
+
We provide several routines to import camera data into opencv. See the [https://github.com/veyeimaging/rk35xx_veye_bsp/tree/main/samples samples] directory on github for details.
+
+
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 ====
+
+
* RK356x
+
+
https://github.com/veyeimaging/rk35xx_firefly/tree/main/linux/drivers/rk356x
+
+
* RK358x
+
+
https://github.com/veyeimaging/rk35xx_firefly/tree/main/linux/drivers/rk358x
=== i2c script for parameter configuration ===
=== 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/rk35xx_firefly/tree/main/i2c_cmd
+
+
using -b option to identify which bus you want to use.
+
+
*VEYE series
−
=== Compile drivers and dtb from source code ===
+
Video Control Toolkits Manual :[[VEYE-MIPI-290/327 i2c/|VEYE-MIPI-327 I2C]]
+
+
*CS series
+
+
Video Control Toolkits Manual :[[CS-MIPI-X i2c|CS-MIPI-X I2C]]
+
+
=== Android ===
+
+
==== Update Android system ====
+
+
* ROC-RK3566-PC
+
+
Download the latest rk356x_firefly_android.tar.gz from https://github.com/veyeimaging/rk35xx_firefly/releases/
+
+
*ROC-RK3588S-PC
+
+
Download the latest rk358x_firefly_android.tar.gz from https://github.com/veyeimaging/rk35xx_firefly/releases/
+
+
Burn the system refer to firefly's documentation.
+
+
==== Check system status ====
+
Login system via ADB, then run the following command to confirm whether the camera is probed.
+
+
* VEYE-MIPI-XXX
+
+
<code>dmesg | grep veye</code>
+
+
The output message appears as shown below:
+
+
<code>veyecam2m 4-003b: camera id is veyecam2m</code>
+
+
<code>veyecam2m 4-003b: sensor is IMX327</code>
+
+
* Run the following command to check the presence of video node.
+
+
<code>ls /dev/video0</code>
+
+
The output message appears as shown below.
+
+
<code>video0</code>
+
+
The camera can be seen connected to the i2c-4.
+
+
==== Application example ====
+
The camera can be opened using the camera program that comes with the system.
+
+
====Compile system from source code====
+
+
* RK356x
+
+
https://github.com/veyeimaging/rk35xx_firefly/tree/main/android/rk356x/drivers
+
+
* RK358x
+
+
https://github.com/veyeimaging/rk35xx_firefly/tree/main/android/rk358x/drivers
+
+
=== Known issues ===
+
+
# The VICAP module of RK3588 does not support outputting the UYVY format, so please use the NV12 format instead.
=== References ===
=== References ===
Line 28:
Line 254:
https://wiki.t-firefly.com/en/ROC-RK3566-PC/
https://wiki.t-firefly.com/en/ROC-RK3566-PC/
+
+
*ROC-RK3588S-PC Manual
+
+
https://wiki.t-firefly.com/en/ROC-RK3588S-PC/
* Firefly Linux User Guide
* Firefly Linux User Guide
Line 34:
Line 264:
=== Document History ===
=== Document History ===
+
+
* 2024-04-17
+
+
Support kernel v5.10 on RK3566.
+
+
* 2023-05-22
+
+
Support Fpdlink-III on ubuntu system.
+
+
*2022-12-28
+
+
Add support for RK358x.
+
+
* 2022-12-06
+
+
Support Android system.
* 2022-10-22
* 2022-10-22
Release 1st version.
Release 1st version.