Line 1: |
Line 1: |
− | = How to use VEYE and CS series cameras on Firefly's RK35XX board (Ubuntu) =
| + | '''<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. |
| | | |
− | === Upgrade Firefly Ubuntu system === | + | ==== 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]] |
| | | |
− | === Check system status === | + | ==== 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]] |
| | | |
− | === Samples === | + | ==== 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]] |
| | | |
− | ==== v4l2-ctl ==== | + | ==== 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_firefly |
| | | |
− | ==== yavta ====
| + | includes: |
| | | |
− | ==== gstreamer ====
| + | * driver source code |
| + | * i2c toolkits |
| + | * application demo |
| | | |
− | ==== Import to OpenCV ====
| + | 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> |
| + | |
| + | ====== 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> |
| + | |
| + | ===== yavta ===== |
| + | <code>git clone <nowiki>https://github.com/veyeimaging/yavta.git</nowiki></code> |
| + | |
| + | <code>cd yavta;make</code> |
| + | |
| + | <code>./yavta -c1 -Fnv12-1920x1080.yuv --skip 0 -f NV12 -s 1920x1080 /dev/video0</code> |
| + | |
| + | ===== 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. |
| + | |
| + | ===== Import to OpenCV ===== |
| + | First install OpenCV: |
| + | |
| + | <code>sudo apt install python3-opencv</code> |
| + | |
| + | We provide several routines to import camera data into opencv. See the [https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/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 |
| + | |
| + | 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 |
| | | |
− | === Compile drivers and dtb from source code === | + | === 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 252: |
| | | |
| 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 262: |
| | | |
| === 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. |