Difference between revisions of "GX Camera on Firfly Boards"

From wiki_veye
Jump to navigation Jump to search
(保存文档)
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[MV Camera on Firfly Boards/zh|查看中文]]
+
[[GX Camera on Firfly Boards/zh|查看中文]]
  
=== Overview ===
+
'''<big>How to use the GX series cameras on the Firefly board</big>'''
The GX series cameras are designed for AI applications in the industrial field. They use the MIPI CSI-2 interface and are particularly suitable for embedded computing platforms. They feature a wide range of data formats and triggering capabilities, extremely low latency, high bandwidth, and reliable stability.
 
  
This article takes the Firefly's ROC-RK3588S-PC, ROC-RK3576-PC and ROC-RK3566-PC motherboards as examples to introduce how to connect GX series cameras to the RK3566/RK3568, RK3576 and RK3588S/RK3588 systems.  
+
===Overview===
 +
The GX series cameras are designed for embedded AI applications. They offer high-performance ISP capabilities, support multiple operating modes, provide a wide range of configurable features, and are built with a robust and reliable design. The cameras use the MIPI CSI-2 interface and are well suited for embedded computing platforms.  
  
We provide drivers for the Linux operating system (taking Ubuntu as an example).
+
This article uses the Firefly ROC-RK3588S-PC, ROC-RK3576-PC, and ROC-RK3566-PC boards as examples to describe how to connect GX series cameras to RK3566/RK3568, RK3576, and RK3588S/RK3588-based systems.
  
==== Camera Module List ====
+
Linux drivers are provided for the GX series cameras, with Ubuntu used as the reference operating system.
 +
 
 +
====Camera Module List====
 
{| class="wikitable"
 
{| class="wikitable"
 
!Series
 
!Series
Line 18: Line 20:
 
|Done
 
|Done
 
|}
 
|}
In addition, the driver for the V-by-One HS connection mode has been finished on the Ubuntu system.
 
  
=== Hardware Setup ===
+
====Supported boards====
The GX series and RAW series cameras require an [[ADP-MV2 Adapter Board Data Sheet/zh|ADP-MV2]] adapter board to connect to the ROC-RK35xx-PC motherboard.
 
 
 
==== Connection of  new ADP-MV2 ====
 
 
 
=====Connection of GX series camera and ADP-MV2=====
 
The two are connected using 0.5 mm pitch*30P FFC cable with opposite-side contacts. The cable must be inserted with the silver contacts facing outside.
 
 
{| class="wikitable"
 
{| class="wikitable"
!TOP
+
!manufacturers
!BOTTOM
+
!model
 +
!status
 
|-
 
|-
|[[File:ADP-MV2-V2 to MV-MIPI-X.jpg|alt=|center|thumb|600x600px|ADP-MV2 to MV-MIPI-X|link=http://wiki.veye.cc/index.php/File:ADP-MV2-V2_to_MV-MIPI-X.jpg]]
+
|Firefly
|[[File:ADP-MV2-V2 to MV-MIPI-X No.2.jpg|alt=|center|thumb|600x600px|ADP-MV2 to MV-MIPI-X|link=http://wiki.veye.cc/index.php/File:ADP-MV2-V2_to_MV-MIPI-X_No.2.jpg]]
+
|ROC-RK3588S-PC
|}
+
|Done
 
 
===== Connection of RAW-MIPI-SC132M and ADP-MV2 =====
 
The two are connected using 1.0 mm pitch*15P FFC cable with opposite-side contacts. The cable must be inserted with the silver contacts facing outside.
 
{| class="wikitable"
 
! TOP
 
!BOTTOM
 
 
|-
 
|-
|[[File:ADP-MV2 to RAW-MIPI-SC132M.jpg|alt=|center|thumb|600x600px|ADP-MV2 to RAW-MIPI-SC132M|link=http://wiki.veye.cc/index.php/File:ADP-MV2_to_RAW-MIPI-SC132M.jpg]]
+
|Firefly
|[[File:ADP-MV2 to RAW-MIPI-SC132M No.2.jpg|alt=ADP-MV2 to RAW-MIPI-SC132M|center|thumb|600x600px|ADP-MV2 to RAW-MIPI-SC132M|link=http://wiki.veye.cc/index.php/File:ADP-MV2_to_RAW-MIPI-SC132M_No.2.jpg]]
+
|ROC-RK3576-PC
|}
+
|TBD
===== Connection of  other RAW series camera and ADP-MV2 =====
 
The two are connected using 0.5 mm pitch*pin FFC cable with opposite-side contacts. The cable must be inserted with the silver contacts facing outside.
 
{| class="wikitable"
 
!TOP
 
!BOTTOM
 
 
|-
 
|-
|[[File:ADP-MV2 to RAW series camera.jpg|alt=|center|thumb|600x600px|ADP-MV2 to RAW series camera|link=http://wiki.veye.cc/index.php/File:ADP-MV2_to_RAW_series_camera.jpg]]
+
|Firefly
|[[File:ADP-MV2 to RAW series camera No.2.jpg|alt=ADP-MV2 to RAW series camera No.2|center|thumb|600x600px|ADP-MV2 to RAW series camera|link=http://wiki.veye.cc/index.php/File:ADP-MV2_to_RAW_series_camera_No.2.jpg]]
+
|ROC-RK3566-PC
 +
|TBD<br />
 
|}
 
|}
=====Connection with Main board using ADP-MV2=====
 
The two are connected using 0.5mm pitch * 30P FFC coaxial wires, paying attention to the direction of the contact surfaces, silver contacts facing outside on the ADP-MV2 and facing inside on the RK board.
 
<br />[[File:RK-ADP-MV2-V2-RAW-MIPI 02.jpg|alt=|center|thumb|800x800px|RK to ADP-MV2 and MV cam|link=http://wiki.veye.cc/index.php/File:RK-ADP-MV2-V2-RAW-MIPI_02.jpg]]
 
  
==== V-by-One-HS-KIT Camera Connection Diagram ====
+
===Hardware Setup===
[[File:VBYONE connection with rk3588.jpg|center|thumb|800x800px|VBYONE connection with rk3588]]
+
Firefly boards use a 30-pin camera connector, while GX series cameras feature a 22-pin interface and require an independent 5 V power supply. Therefore, a dedicated FFC adapter cable and a separate power cable have been designed to support proper connection and power delivery.
 +
 
 +
=====Connection Diagram=====
 +
<br />[[File:Gx to firfly.png|alt=GX Camera to Firfly|center|thumb|800x800px|GX Camera to Firfly]]
 
<br />
 
<br />
===Introduction to github repositories===
+
 
 +
===Introduction to the GitHub Repos===
 +
====General part of the Rockchip platform====
 
https://github.com/veyeimaging/rk35xx_veye_bsp
 
https://github.com/veyeimaging/rk35xx_veye_bsp
 
https://github.com/veyeimaging/rk35xx_firefly
 
  
 
includes:
 
includes:
Line 71: Line 57:
 
*application demo
 
*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].
+
====Firefly Board–Related Resources====
 +
https://github.com/veyeimaging/rk35xx_firefly
  
=== Upgrade Firefly Ubuntu system ===
+
This repository mainly includes the following contents:
For the ROC-RK3566-PC,ROC-RK3576-PC and ROC-RK3588S-PC, we have provided an image of the release system.
 
  
Download the latest Ubuntu imge from https://github.com/veyeimaging/rk35xx_firefly/releases/ .
+
*Device Tree Source (DTS) files and compiled DTB files
 +
*Driver compilation and build instructions
  
Refer to the Firefly documentation [https://wiki.t-firefly.com/en/ROC-RK3588S-PC/upgrade_bootmode.html ROC-RK3588S-PC] [https://wiki.t-firefly.com/en/ROC-RK3566-PC/03-upgrade_firmware.html ROC-RK3566-PC] [https://wiki.t-firefly.com/en/ROC-RK3576-PC/03-upgrade_firmware.html ROC-RK3576-PC] to burn in a standard system.
+
====Board Image Flashing====
===Check system status===
+
Precompiled Linux system images are provided in the [https://github.com/veyeimaging/rk356x_firefly/releases GitHub ''Releases'' section].  
 +
 
 +
===Upgrade Firefly Ubuntu system===
 +
For the ROC-RK3566-PC, ROC-RK3576-PC, and ROC-RK3588S-PC boards, we provide release-version system images for flashing.
 +
 
 +
Please locate the system image corresponding to your specific board that includes support for GX series cameras from the previously mentioned download paths.
  
==== Whether the camera is correctly recognized ====
+
Refer to the official Firefly documentation ([https://wiki.t-firefly.com/en/ROC-RK3588S-PC/upgrade_bootmode.html ROC-RK3588S-PC] [https://wiki.t-firefly.com/en/ROC-RK3566-PC/03-upgrade_firmware.html ROC-RK3566-PC] [https://wiki.t-firefly.com/en/ROC-RK3576-PC/upgrade_bootmode.html ROC-RK3576-PC]) for detailed instructions on flashing the system image.
After system update, reboot the main board.
 
  
Execute the following command on the main board to check if the camera is properly connected.
+
===Check system status===
  
<code>dmesg | grep gxcam</code>
+
====Camera Detection====
 +
After completing the system installation and connecting the camera hardware, power on the system. On the Firefly board, execute the following command to verify whether the camera has been detected correctly:
  
You can see the camera model and the camera version number probed.
+
<code>$ dmesg | grep gxcam</code>
  
A prompt as below indicates that the GX-MIPI-IMX662 camera is detected on the i2c-7 bus.
+
There should be similar prompts like the following:
  
 
<code>[6.667547] gxcam 7-003b: veye gx series camera driver version: 01.00.01</code>
 
<code>[6.667547] gxcam 7-003b: veye gx series camera driver version: 01.00.01</code>
Line 102: Line 94:
 
<code>[6.891209] rockchip-csi2-dphy csi2-dphy0: dphy0 matches m00_b_gxcam 7-003b:bus type 5</code>
 
<code>[6.891209] rockchip-csi2-dphy csi2-dphy0: dphy0 matches m00_b_gxcam 7-003b:bus type 5</code>
  
On the ROC-RK3588S-PC, the camera is mounted on i2c-7, with an i2c address of 0x3b.
+
From the log messages above, it can be confirmed that the detected camera model is '''GX-MIPI-IMX662'''.
 +
 
 +
The identifier <code>7-003b</code> indicates that the camera is connected to '''I²C bus 7''' with an '''I²C address of 0x3b'''.
  
On the ROC-RK3566-PC and ROC-RK3576-PC, the camera is mounted on i2c-4.
+
*On the '''ROC-RK3588S-PC''', the camera is connected to '''i2c-7'''
 +
*On the '''ROC-RK3566-PC''' and '''ROC-RK3576-PC''', the camera is connected to '''i2c-4'''
  
* Check the video0 device node:
+
Next, execute the following command to check the video device node:
  
 
<code>ls /dev/video0</code>
 
<code>ls /dev/video0</code>
  
You should see:
+
If the output shows:
  
 
<code>video0</code>
 
<code>video0</code>
  
After successfully identifying the camera, the camera will be recognized as /dev/video0.
+
this indicates that the camera has been successfully registered as <code>/dev/video0</code>.
===='''State Detection and Environment Variable Configuration'''====
 
[https://github.com/veyeimaging/rk35xx_veye_bsp/tree/main/mv_tools_rockchip/i2c_tools Here], We have provided two scripts that can automatically retrieve some information about the camera.
 
 
 
First, try using the probe_camera_info-rk.sh script. This script is used to detect the connected and successfully registered camera devices, retrieve the corresponding media device nodes, video device nodes, sub-device nodes, I²C buses, and device identifiers and other low-level information. After execution, it will generate an auto_camera_index.json file in the current directory and record the retrieved information in the file.
 
 
 
./probe_camera_info-rk.sh
 
 
 
cat auto_camera_index.json
 
 
 
[
 
 
 
  {
 
 
 
    "media_node": "/dev/media0",
 
 
 
    "video_node": "/dev/video0",
 
 
 
    "video_subnode": "/dev/v4l-subdev2",
 
 
 
    "media_entity_name": "m00_b_gxcam 7-003b",
 
 
 
    "i2c_bus": "7"
 
 
 
  }
 
 
 
]
 
 
 
By referring to the index information, we can see the "i2c_bus": "7" corresponding i2c_bus information, as well as the number of devices connected. The current index shows that only one device is connected, and the i2c_bus number is 7. If multiple devices are connected, the index information may include "i2c_bus": "10", "i2c_bus": "11" and so on. Then, using the gx_probe.sh script, if it is a multi-camera system, the i2c_bus can be executed based on the information read from the previous script, and the corresponding camera model, width, height, frame rate and other information can be configured in the environment variables.
 
 
 
Usage:
 
 
 
<code>source ./gx_probe.sh 7</code>
 
 
 
A typical output:
 
 
 
<code>$ source ./gx_probe.sh 7</code>
 
 
 
<code>Found veye_gxcam camera on i2c-7.</code>
 
 
 
<code>Setenv CAMERAMODEL = GX-MIPI-IMX662</code>
 
 
 
<code>Setenv FPS = 60</code>
 
 
 
<code>Setenv WIDTH = 1920</code>
 
 
 
<code>Setenv HEIGHT = 1080</code>
 
 
 
You can verify the environment variable output using:
 
 
 
<code>echo $CAMERAMODEL</code>
 
 
 
Note that these environment variables are only valid for the current session.
 
====Configuring  global variables====
 
Based on the board model, configure the I2C_BUS global variable as follows:
 
 
 
* ROC-RK3588S-PC
 
 
 
<code>export I2C_BUS=7</code>
 
 
 
* ROC-RK3566-PC and ROC-RK3576-PC
 
 
 
<code>export I2C_BUS=4</code>
 
==== Using media-ctl to view topology ====
 
Using the media-ctl command can clearly display the current topography structure.
 
 
 
<code>media-ctl -p -d /dev/media0</code>
 
 
 
===== Link relationship =====
 
gx camera->rockchip-csi2-dphy0->rockchip-mipi-csi2->stream_cif_mipi_id0 - - ->DDR(/dev/video0)
 
 
 
The application can obtain images through the /dev/video0 node.
 
 
 
===== gx camera entity information =====
 
Taking the GX-MIPI-IMX662 as an example:
 
 
 
<code>- entity 63: m00_b_gxcam 7-003b (1 pad, 1 link)</code>
 
 
 
<code>             type V4L2 subdev subtype Sensor flags 0</code>
 
 
 
<code>             device node name /dev/v4l-subdev2</code>
 
 
 
<code>        pad0: Source</code>
 
 
 
<code>                [fmt:UYVY8_2X8/1920x1080@10000/600000 field:none colorspace:rec709</code>
 
 
 
<code>                 crop:(0,0)/1920x1080]</code>
 
 
 
<code>                -> "rockchip-csi2-dphy0":0 [ENABLED]</code>
 
 
 
You can see that:
 
 
 
* The complete name of this entity is: <code>m00_b_gxcam 7-003b</code>.(It is <code>m00_b_gxcam 4-003b</code>on ROC-RK3566-PC.)
 
* It is a V4L2 subdev (Sub-Device) Sensor.
 
* Its corresponding node is <code>/dev/v4l-subdev2</code>, which can be opened and configured by applications (such as <code>v4l2-ctl</code>).
 
* Its output format is <code>[fmt:UYVY8_2X8/1920x1080@100/6000 field:none]</code>, where <code>UYVY8_2X8</code> is a shorthand for a mbus-code, which will be listed in the next section of this article.
 
* The current resolution is <code>1920x1080</code>.
 
* The current frame interval is <code>100/6000</code>, which means the frame rate is 60.
 
* The data format output by the camera can be modified using the media-ctl command.
 
 
 
===== mbus-code list =====
 
GX series cameras have different data format capabilities, which can be found in the data manual for each camera model.
 
{| class="wikitable"
 
!Format on datasheet
 
!mbus-code for media-ctl
 
!FourCC pixelformat for v4l2-ctl
 
|-
 
|UYVY
 
|UYVY8_2X8
 
|UYVY
 
|}
 
 
 
==== veye_viewe工具 ====
 
可通过[https://github.com/veyeimaging/veye_viewer veye_viewe]下载
 
  
=== Application examples ===
+
At this point, both the camera hardware installation and driver setup are complete. For further application development, please refer to the following sections.
==== Configure parameters using v4l2-ctl ====
 
<code>$ v4l2-ctl -d /dev/v4l-subdev2 -L</code>
 
  
<code>User Controls</code>
+
===Camera Application Development Guide===
 
+
[[GX Camera Application Development Guide|Application Development Guide]]
<code>                   trigger_mode 0x00981a01 (int)    : min=0 max=4 step=1 default=0 value=0 flags=volatile, execute-on-write</code>
 
 
 
<code>                    trigger_src 0x00981a02 (int)    : min=0 max=1 step=1 default=1 value=1 flags=volatile, execute-on-write</code>
 
 
 
<code>                    soft_trgone 0x00981a03 (button) : value=0 flags=write-only, execute-on-write</code>
 
 
 
<code>                      sync_role 0x00981a04 (int)    : min=0 max=1 step=1 default=0 value=0 flags=volatile, execute-on-write</code>
 
 
 
<code>                     frame_rate 0x00981a05 (int)    : min=0 max=60 step=1 default=60 value=60 flags=volatile, execute-on-write</code>
 
 
 
Parameters can be set and get using the following methods.
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl [ctrl_type]=[val]</code>
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --get-ctrl [ctrl_type]</code>
 
 
 
All the above functions can be implemented using [https://wiki.veye.cc/index.php/Gx_mipi_i2c.sh_user_guide gx_mipi_i2c.sh].
 
 
 
Note that the above parameters cannot be modified during the capture process.
 
 
 
The following is an explanation of each parameter:
 
=====Trigger Mode=====
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=[0-2]</small></code>
 
 
 
0:Video streaming mode
 
 
 
1:Normal trigger mode.
 
 
 
4:Multi-camera synchronization mode.
 
=====Trigger Source=====
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=[0-1]</small></code>
 
 
 
0: Software trigger mode.
 
 
 
1: Hardware trigger mode.
 
=====Software trigger command=====
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>soft_trgone=1</small></code>
 
=====Set frame rate=====
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl frame_rate=[1-max]</code>
 
 
 
The maximum frame rate is automatically updated as the resolution changed.
 
 
 
==== Set image format using media-ctl ====
 
use the following command to configure the camera's data format, resolution, and frame rate using <code>media-ctl</code>:
 
 
 
<code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:UYVY8_2X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code>
 
 
 
Among them: <code>"m00_b_gxcam '"$I2C_BUS"'-003b"</code> refers to the complete name of the camera entity, <code>UYVY8_2X8</code> is the mbus-code, <code>'"$WIDTH"'x'"$HEIGHT"'</code> indicates the resolution, <code>1/'"$FPS"'</code> indicates the resolution frame rate.
 
 
 
For example, for GX-MIPI-IMX662, the command after variable replacement would be:
 
 
 
<code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam 7-003b":0[fmt:UYVY8_2X8/1920x1080@1/60 field:none]'</code>
 
 
 
You can not only configure the data format, resolution, and frame rate in one command, but also modify them separately as needed.
 
 
 
==== Video Streaming mode ====
 
 
 
===== Set data format, resolution, frame rate =====
 
<code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:UYVY8_2X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code>
 
=====Frame rate statistics=====
 
In streaming mode, the following commands can be used for frame rate statistics:
 
 
 
<code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=UYVY --stream-mmap --stream-count=-1 --stream-to=/dev/null</code>
 
 
 
Or:
 
 
 
<code>./yavta -c1000 --skip 0 -f UYVY -s ${WIDTH}x${HEIGHT} /dev/video0</code>
 
===== Save image to file =====
 
 
 
*UYVY
 
 
 
<code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-${WIDTH}x${HEIGHT}.yuv</code>
 
 
 
Please refer to the description in the previous section for the image format.
 
 
 
===== Example of yavta =====
 
 
 
====== Install yavta ======
 
<code>git clone <nowiki>git://git.ideasonboard.org/yavta.git</nowiki></code>
 
 
 
<code>cd yavta;make</code>
 
 
 
====== Save image to file ======
 
After setting data format, resolution, frame rate,run:
 
 
 
<code>./yavta -c1 -Fuyvy-${WIDTH}x${HEIGHT}.yuv --skip 0 -f UYVY -s ${WIDTH}x${HEIGHT} /dev/video0</code>
 
 
 
===== Example of import image to OpenCV =====
 
<code>sudo apt install python3-opencv</code>
 
 
 
See the [https://github.com/veyeimaging/rk35xx_veye_bsp/tree/main/samples samples] directory on github for details.
 
 
 
<code>python ./v4l2_opencv_show2.py --width 1920 --height 1080 --fps 60 --i2c 7</code>
 
 
 
===== Example of gstreamer application =====
 
We provide several gstreamer routines that implement the preview function. See the [https://github.com/veyeimaging/rk35xx_veye_bsp/tree/main/samples samples] directory on github for details.
 
 
 
==== Trigger mode ====
 
 
 
===== Set data format, resolution, frame rate =====
 
<code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:UYVY8_2X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code>
 
=====Software trigger mode=====
 
======Set mode======
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=1</small></code>
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=0</small></code>
 
 
 
====== Start acquisition ======
 
<code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-${WIDTH}x${HEIGHT}.yuv</code>
 
 
 
======Perform soft trigger operation======
 
In other shell terminals, you can execute the following command multiple times for multiple triggers.
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>soft_trgone=1</small></code>
 
 
 
===== Hardware trigger mode =====
 
 
 
====== Set mode ======
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=1</small></code>
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=1</small></code>
 
 
 
The [https://wiki.veye.cc/index.php/Gx_mipi_i2c.sh_user_guide gx_mipi_i2c.sh] script can be used to set rich trigger parameters.
 
 
 
====== Start acquisition ======
 
<code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-${WIDTH}x${HEIGHT}.yuv</code>
 
 
 
====== Perform hardware trigger operation ======
 
Connect the appropriate trigger signal to the trigger pin of the camera and trigger it.
 
 
 
==== synchronous mode ====
 
 
 
===== Set data format, resolution, frame rate =====
 
<code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:UYVY8_2X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code>
 
 
 
===== Switch to synchronous mode =====
 
Note: The RK platform only supports one camera connection. Perform the following operations on both mainboard terminals to switch to synchronous mode.
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=</small>4</code>
 
 
 
===== Set master-slave mode =====
 
主模式:
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>sync_role=0</small></code>
 
 
 
从模式:
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>sync_role=1</small></code>
 
 
 
===== Start taking pictures =====
 
Several methods in the streaming mode can be used to take pictures.
 
 
 
===i2c script for parameter configuration===
 
We provide shell scripts to configure the parameters.
 
 
 
[https://wiki.veye.cc/index.php/Gx_mipi_i2c.sh_user_guide gx_mipi_i2c.sh user guide]
 
 
 
=== Question Feedback ===
 
We are committed to providing richer possibilities for image applications on embedded platforms. Therefore, our software for embedded platforms is based on the principle of open source.
 
 
 
If you have any questions or suggestions about our existing software, please feel free to submit them to the [http://forum.veye.cc/ forum] or email our technical staff at xumm#csoneplus.com.
 
  
 
===References===
 
===References===
Line 416: Line 135:
 
===Document History===
 
===Document History===
  
*2025-04-14
+
*2025-12-20
  
Add support for RK3576.
+
The document format was adjusted, it was appropriately polished.  
  
* 2025-03-23
+
*2025-11-28
  
Add description of mv_probe.sh.
+
The first version.
  
* 2024-07-09
+
<br />
 
 
Add support for RAW-MIPI-SC535M.
 
 
 
* 2024-04-17
 
 
 
Support  RK3566.
 
 
 
* 2024-03-10
 
 
 
Add pictures and descriptions of hardware connections for the new version of ADP-MV2.
 
 
 
*2023-08-30
 
 
 
Add support for RAW-MIPI-IMX462M and RAW-MIPI-AR0234M.
 
 
 
* 2023-07-31
 
 
 
Support V-by-One on ubuntu system.
 
 
 
*2023-04-12
 
 
 
Release 1st version.<br />
 

Latest revision as of 14:18, 30 December 2025

查看中文

How to use the GX series cameras on the Firefly board

1 Overview

The GX series cameras are designed for embedded AI applications. They offer high-performance ISP capabilities, support multiple operating modes, provide a wide range of configurable features, and are built with a robust and reliable design. The cameras use the MIPI CSI-2 interface and are well suited for embedded computing platforms.

This article uses the Firefly ROC-RK3588S-PC, ROC-RK3576-PC, and ROC-RK3566-PC boards as examples to describe how to connect GX series cameras to RK3566/RK3568, RK3576, and RK3588S/RK3588-based systems.

Linux drivers are provided for the GX series cameras, with Ubuntu used as the reference operating system.

1.1 Camera Module List

Series Model Status
GX series GX-MIPI-IMX662 Done

1.2 Supported boards

manufacturers model status
Firefly ROC-RK3588S-PC Done
Firefly ROC-RK3576-PC TBD
Firefly ROC-RK3566-PC TBD

2 Hardware Setup

Firefly boards use a 30-pin camera connector, while GX series cameras feature a 22-pin interface and require an independent 5 V power supply. Therefore, a dedicated FFC adapter cable and a separate power cable have been designed to support proper connection and power delivery.

2.1 Connection Diagram


GX Camera to Firfly
GX Camera to Firfly


3 Introduction to the GitHub Repos

3.1 General part of the Rockchip platform

https://github.com/veyeimaging/rk35xx_veye_bsp

includes:

  • driver source code
  • i2c toolkits
  • application demo

3.2 Firefly Board–Related Resources

https://github.com/veyeimaging/rk35xx_firefly

This repository mainly includes the following contents:

  • Device Tree Source (DTS) files and compiled DTB files
  • Driver compilation and build instructions

3.3 Board Image Flashing

Precompiled Linux system images are provided in the GitHub Releases section.

4 Upgrade Firefly Ubuntu system

For the ROC-RK3566-PC, ROC-RK3576-PC, and ROC-RK3588S-PC boards, we provide release-version system images for flashing.

Please locate the system image corresponding to your specific board that includes support for GX series cameras from the previously mentioned download paths.

Refer to the official Firefly documentation (ROC-RK3588S-PC ROC-RK3566-PC ROC-RK3576-PC) for detailed instructions on flashing the system image.

5 Check system status

5.1 Camera Detection

After completing the system installation and connecting the camera hardware, power on the system. On the Firefly board, execute the following command to verify whether the camera has been detected correctly:

$ dmesg | grep gxcam

There should be similar prompts like the following:

[6.667547] gxcam 7-003b: veye gx series camera driver version: 01.00.01

[6.781681] gxcam 7-003b: camera is: GX-MIPI-IMX662

[6.820210] gxcam 7-003b: Success to get gxcam endpoint data lanes, dts uses 2 lanes,will set to camera

[6.834597] gxcam 7-003b: gxcam_enum_controls success

[6.891209] rockchip-csi2-dphy csi2-dphy0: dphy0 matches m00_b_gxcam 7-003b:bus type 5

From the log messages above, it can be confirmed that the detected camera model is GX-MIPI-IMX662.

The identifier 7-003b indicates that the camera is connected to I²C bus 7 with an I²C address of 0x3b.

  • On the ROC-RK3588S-PC, the camera is connected to i2c-7
  • On the ROC-RK3566-PC and ROC-RK3576-PC, the camera is connected to i2c-4

Next, execute the following command to check the video device node:

ls /dev/video0

If the output shows:

video0

this indicates that the camera has been successfully registered as /dev/video0.

At this point, both the camera hardware installation and driver setup are complete. For further application development, please refer to the following sections.

6 Camera Application Development Guide

Application Development Guide

7 References

  • ROC-RK3566-PC Manual

https://wiki.t-firefly.com/en/ROC-RK3566-PC/

  • ROC-RK3588S-PC Manual

https://wiki.t-firefly.com/en/ROC-RK3588S-PC/

  • ROC-RK3576-PC Manual

https://wiki.t-firefly.com/en/ROC-RK3576-PC/

  • Firefly Linux User Guide

https://wiki.t-firefly.com/en/Firefly-Linux-Guide/index.html

8 Document History

  • 2025-12-20

The document format was adjusted, it was appropriately polished.

  • 2025-11-28

The first version.