{{indexmenu_n>40}}
====== Edge2 MIPI Camera Usage ======
===== Linux =====
Edge2 CAM3 support **4K@60fps** record. If your **hardware version is V13 or later**, the **CAM2** also can support **4K@60fps** record.
**Check Hardware Version**
```shell
$ cat /proc/cmdline
```
V13 or later version will show like ''hwver=EDGE2.V13''.
Due to the different hardware versions, **CAM2 is set to 4K@30fps by default**. This is for compatibility with V11 or V12 hardware versions to
ensure proper operation. If your device supports 4K@60fps, you can enable this mode by adding an overlay node ''cam2-4lane''.
Edit ''/boot/dtb/rockchip/rk3588s-khadas-edge2.dtb.overlay.env'' to setup ''fdt_overlays=cam2-4lane''.
About IMX585 and IMX678, the two cameras were disabled by default. So V11 or V12 hardware version should replace ''cam2-4lane'' by ''imx585'' or ''imx678'':
Edit ''/boot/dtb/rockchip/rk3588s-khadas-edge2.dtb.overlay.env'' to setup ''fdt_overlays=imx585'' or ''fdt_overlays=imx678''.
V13 or later hardware version should be set ''imx585-cam2-4lane'' or ''imx678-cam2-4lane'':
Edit ''/boot/dtb/rockchip/rk3588s-khadas-edge2.dtb.overlay.env'' to setup ''fdt_overlays=imx585-cam2-4lane'' or ''fdt_overlays=imx678-cam2-4lane''.
You need to reboot the device to take effect.
==== Upgrade System ====
Please follow the [[products:sbc:edge2:configurations:upgrade-system|documentation ]]to upgrade your system to latest version.
==== Video Node ====
You can find the video nodes from the table below.
| ^ Video Node ^
^ CAM1 | /dev/video42 |
^ CAM2 | /dev/video33 |
^ CAM3 | /dev/video51 |
==== Record Video with Gstreamer ====
Record video from ''CAM1'':
```shell
gst-launch-1.0 v4l2src device=/dev/video42 io-mode=dmabuf num-buffers=300 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! mpph264enc ! h264parse ! qtmux ! filesink location=/tmp/video42.mp4
```
Record video from ''CAM2'':
```shell
gst-launch-1.0 v4l2src device=/dev/video33 io-mode=dmabuf num-buffers=300 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! mpph264enc ! h264parse ! qtmux ! filesink location=/tmp/video33.mp4
```
For 4K@60fps, framerate should be set 60/1
Record video from ''CAM3'':
```shell
gst-launch-1.0 v4l2src device=/dev/video51 io-mode=dmabuf num-buffers=600 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=60/1 ! mpph264enc ! h264parse ! qtmux ! filesink location=/tmp/video51.mp4
```
/*
==== Record Video with OpenCV ====
Follow the steps bellow to install OpenCV:
```shell
sudo apt update
sudo apt install libopencv-dev python3-opencv
```
''C++'' source code:
```c++ mipi-camera.cpp
#include
#include
#include
#include
#include
using
namespace cv;
using
namespace std;
int main(int argc, char** argv)
{
int count=100;
string str = argv[1];
string res=str.substr(10);
VideoCapture capture(stoi(res), CAP_V4L2);
capture.set(CAP_PROP_FOURCC, VideoWriter::fourcc('U','Y','V','Y'));
capture.set(CAP_PROP_FRAME_WIDTH, 1920);
capture.set(CAP_PROP_FRAME_HEIGHT, 1080);
while (count)
{
Mat frame;
capture >> frame;
if (frame.empty()) {
break;
}
int h = frame.rows;
int w = frame.cols;
const char *name = "video";
namedWindow(name, 0);
imshow(name, frame);
waitKey(30);
count--;
}
return 0;
}
```
Compile:
```shell
gcc -o mipi mipi-camera.cpp -lopencv_imgproc -lopencv_core -lopencv_videoio -lopencv_imgcodecs -lopencv_highgui -std=c++11 -std=gnu++11 -Wall -std=c++11 -lstdc++ -I/usr/include/opencv4
```
Test:
Capture frame from ''CAM1'':
```shell
./mipi /dev/video33
```
Capture frame from ''CAM2'':
```shell
./mipi /dev/video24
```
Capture frame from ''CAM3'':
```shell
./mipi /dev/video42
```
*/
==== Capture Frame with V4L2 Utils ====
Follow the steps below to install ''v4l-utils'':
```shell
sudo apt update
sudo apt install v4l-utils
```
Capture frame from ''CAM1'':
```shell
v4l2-ctl -d /dev/video42 --set-fmt-video=width=3840,height=2160,pixelformat=NV12 --stream-mmap=3 --stream-skip=3 --stream-to=/tmp/data42.yuv --stream-count=1 --stream-poll
```
Capture frame from ''CAM2'':
```shell
v4l2-ctl -d /dev/video33 --set-fmt-video=width=3840,height=2160,pixelformat=NV12 --stream-mmap=3 --stream-skip=3 --stream-to=/tmp/data33.yuv --stream-count=1 --stream-poll
```
Capture frame from ''CAM3'':
```shell
v4l2-ctl -d /dev/video51 --set-fmt-video=width=3840,height=2160,pixelformat=NV12 --stream-mmap=3 --stream-skip=3 --stream-to=/tmp/data51.yuv --stream-count=1 --stream-poll
```
It will capture a ''3840x2160 NV12'' format frame to file ''/tmp/dataXX.yuv''.
Preview the file:
```shell
$ ffplay -f rawvideo -pixel_format nv12 -video_size 3840x2160 /tmp/dataXX.yuv
```
===== Android =====
WIP: