GX Camera Application Development Guide
1 veye_viewe工具
It can be downloaded from veye_viewe
We can use this tool to configure some parameters of the camera (directly operate and change the parameters of the register), switch the mode (stream mode, trigger mode, synchronization mode), and view some basic information of the camera (resolution, frame rate, etc.)
2 Application examples
2.1 Configure parameters using v4l2-ctl
$ v4l2-ctl -d /dev/v4l-subdev2 -L
User Controls
trigger_mode 0x00981a01 (int) : min=0 max=4 step=1 default=0 value=0 flags=volatile, execute-on-write
trigger_src 0x00981a02 (int) : min=0 max=1 step=1 default=1 value=1 flags=volatile, execute-on-write
soft_trgone 0x00981a03 (button) : value=0 flags=write-only, execute-on-write
sync_role 0x00981a04 (int) : min=0 max=1 step=1 default=0 value=0 flags=volatile, execute-on-write
frame_rate 0x00981a05 (int) : min=0 max=60 step=1 default=60 value=60 flags=volatile, execute-on-write
Parameters can be set and get using the following methods.
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl [ctrl_type]=[val]
v4l2-ctl -d /dev/v4l-subdev2 --get-ctrl [ctrl_type]
All the above functions can be implemented using gx_mipi_i2c.sh.
Note that the above parameters cannot be modified during the capture process.
The following is an explanation of each parameter:
2.1.1 Trigger Mode
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_mode=[0-2]
0:Video streaming mode
1:Normal trigger mode.
4:Multi-camera synchronization mode.
2.1.2 Trigger Source
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_src=[0-1]
0: Software trigger mode.
1: Hardware trigger mode.
2.1.3 Software trigger command
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl soft_trgone=1
2.1.4 Set frame rate
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl frame_rate=[1-max]
The maximum frame rate is automatically updated as the resolution changed.
2.2 Set image format using media-ctl
use the following command to configure the camera's data format, resolution, and frame rate using media-ctl:
media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:UYVY8_2X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'
Among them: "m00_b_gxcam '"$I2C_BUS"'-003b" refers to the complete name of the camera entity, UYVY8_2X8 is the mbus-code, '"$WIDTH"'x'"$HEIGHT"' indicates the resolution, 1/'"$FPS"' indicates the resolution frame rate.
For example, for GX-MIPI-IMX662, the command after variable replacement would be:
media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam 7-003b":0[fmt:UYVY8_2X8/1920x1080@1/60 field:none]'
You can not only configure the data format, resolution, and frame rate in one command, but also modify them separately as needed.
2.3 Video Streaming mode
2.3.1 Set data format, resolution, frame rate
media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:UYVY8_2X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'
2.3.2 Frame rate statistics
In streaming mode, the following commands can be used for frame rate statistics:
v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=UYVY --stream-mmap --stream-count=-1 --stream-to=/dev/null
Or:
./yavta -c1000 --skip 0 -f UYVY -s ${WIDTH}x${HEIGHT} /dev/video0
2.3.3 Save image to file
- UYVY
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
Please refer to the description in the previous section for the image format.
2.3.4 Example of yavta
2.3.4.1 Install yavta
git clone git://git.ideasonboard.org/yavta.git
cd yavta;make
2.3.4.2 Save image to file
After setting data format, resolution, frame rate,run:
./yavta -c1 -Fuyvy-${WIDTH}x${HEIGHT}.yuv --skip 0 -f UYVY -s ${WIDTH}x${HEIGHT} /dev/video0
2.3.5 Example of import image to OpenCV
sudo apt install python3-opencv
See the samples directory on github for details.
python ./v4l2_opencv_show2.py --width 1920 --height 1080 --fps 60 --i2c 7
2.3.6 Example of gstreamer application
We provide several gstreamer routines that implement the preview function. See the samples directory on github for details.
2.4 Trigger mode
2.4.1 Set data format, resolution, frame rate
media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:UYVY8_2X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'
2.4.2 Software trigger mode
2.4.2.1 Set mode
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_mode=1
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_src=0
2.4.2.2 Start acquisition
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
2.4.2.3 Perform soft trigger operation
In other shell terminals, you can execute the following command multiple times for multiple triggers.
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl soft_trgone=1
2.4.3 Hardware trigger mode
2.4.3.1 Set mode
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_mode=1
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_src=1
The gx_mipi_i2c.sh script can be used to set rich trigger parameters.
2.4.3.2 Start acquisition
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
2.4.3.3 Perform hardware trigger operation
Connect the appropriate trigger signal to the trigger pin of the camera and trigger it.
2.5 synchronous mode
2.5.1 Set data format, resolution, frame rate
media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:UYVY8_2X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'
2.5.2 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.
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_mode=4
2.5.3 Set the camera as the master or slave.
master camera:
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl sync_role=0
slave camera:
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl sync_role=1
2.5.4 Start taking pictures
Several methods in the streaming mode can be used to take pictures.
3 i2c script for parameter configuration
We provide shell scripts to configure the parameters.
4 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 forum or email our technical staff at xumm#csoneplus.com.
5 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
6 Document History
- 2025-11-28
Release 1st version.