Sony IMX327 Linux Driver: Difference between revisions
No edit summary |
|||
(23 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
<seo title="IMX327 Linux Driver for NVIDIA Jetson | Sony IMX327 Linux Driver | RidgeRun" titlemode="replace" | <seo title="IMX327 Linux Driver for NVIDIA Jetson | Sony IMX327 Linux Driver | RidgeRun" titlemode="replace" metakeywords="GStreamer, Linux SDK, Linux BSP, Embedded Linux, Device Drivers, Nvidia, Xilinx, TI, NXP, Freescale, Embedded Linux driver development, Linux Software development, Embedded Linux SDK, Embedded Linux Application development, GStreamer Multimedia Framework, IMX327 Jetson Nano, IMX327, V4L2 Driver, Sony IMX327, Sony IMX327 Linux Driver, IMX327 Linux driver, Sony IMX327 Linux Driver, Sony, Sony IMX327, IMX 327." metadescription="Check out our comprehensive overview and features of the Sony IMX327 Linux Driver for NVIDIA Jetson!."></seo> | ||
{{Driver-shoppingcart & NVIDIA logo & RR Contact}} | |||
<br> | |||
< | |||
<td> | <td> | ||
{{GStreamer debug}} | |||
} | |||
<td> | <td> | ||
{{message|title=Driver List Information|Refer to the [[RidgeRun_Linux_Camera_Drivers/Available_Camera_Drivers/List_of_Tested_Camera_Sensors|RidgeRun Linux Camera Drivers]] to meet all the list of Drivers available}} | |||
{{ | |||
== Sony IMX327 Features == | == Sony IMX327 Features == | ||
Line 279: | Line 21: | ||
* NVIDIA Jetson Nano | * NVIDIA Jetson Nano | ||
* Google coral (for more information about this driver check our [[Coral_from_Google/Camera_Drivers/Introduction|Google Coral]] documentation ) | |||
== Features Included in the Driver == | == Features Included in the Driver == | ||
Line 293: | Line 36: | ||
! SDK Support | ! SDK Support | ||
|- | |- | ||
| | | 1920x1080@30fps | ||
| | | 4 Lanes, RAW12, RGGB | ||
| L4T 32.5 / Jetpack 4.5 | | L4T 32.5 / Jetpack 4.5 | ||
|- | |- | ||
|}<!-- | |}<!-- | ||
Line 426: | Line 51: | ||
* Follow the instructions in [[Compiling_Jetson_TX1/TX2_source_code#Download_the_kernel_source_code | (Downloading sources)]] to get the kernel source code. | * Follow the instructions in [[Compiling_Jetson_TX1/TX2_source_code#Download_the_kernel_source_code | (Downloading sources)]] to get the kernel source code. | ||
* Once you have the source code, apply the following | * Once you have the source code, apply the following the patches in order to add the changes required for the IMX327 camera at kernel and dtb level. | ||
<pre> | <pre> | ||
4. | 4.5_imx327.patch | ||
</pre> | </pre> | ||
* Follow the instructions in [[Compiling_Jetson_TX1/TX2_source_code#Build_Kernel | (Build Kernel)]] for building the kernel, and then flash the image. | * Follow the instructions in [[Compiling_Jetson_TX1/TX2_source_code#Build_Kernel | (Build Kernel)]] for building the kernel, and then flash the image. | ||
Make sure to enable | Make sure to enable IMX327 driver support: | ||
<pre> | <pre> | ||
make menuconfig | make menuconfig | ||
Line 443: | Line 68: | ||
-> Multimedia support | -> Multimedia support | ||
-> NVIDIA overlay Encoders, decoders, sensors and other helper chips | -> NVIDIA overlay Encoders, decoders, sensors and other helper chips | ||
-> < | -> <M> IMX327 camera sensor support | ||
</pre> | </pre> | ||
And to select the runtime device tree blob by editing the <code>$JETSON_L4T/rootfs/boot/extlinux/extlinux.conf</code> to add the "FDT" line: | |||
<pre> | |||
TIMEOUT 30 | |||
DEFAULT primary | |||
MENU TITLE L4T boot options | |||
LABEL primary | |||
MENU LABEL primary kernel | |||
LINUX /boot/Image | |||
INITRD /boot/initrd | |||
FDT /boot/tegra210-p3448-0000-p3449-0000-a02.dtb | |||
APPEND ${cbootargs} quiet | |||
</pre> | </pre> | ||
==Using the Driver== | |||
=== GStreamer Examples === | |||
==== Capture and Display ==== | |||
* | * 1920x1080@30fps RGGB12 | ||
<pre style="background:#d6e4f1"> | <pre style="background:#d6e4f1"> | ||
gst-launch-1.0 | gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=NV12, framerate=30/1' ! nvvidconv ! xvimagesink | ||
</pre> | </pre> | ||
Line 485: | Line 100: | ||
<pre style="background:#d6e4f1"> | <pre style="background:#d6e4f1"> | ||
CAPS="video/x-raw(memory:NVMM), width=(int) | CAPS="video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1" | ||
gst-launch-1.0 nvarguscamerasrc sensor-id=0 num-buffers=500 ! "video/x-raw(memory:NVMM), width=(int) | gst-launch-1.0 nvarguscamerasrc sensor-id=0 num-buffers=500 ! "video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1" ! omxh264enc ! mpegtsmux ! filesink location=test.ts | ||
</pre> | </pre> | ||
The sensor will capture in the | The sensor will capture in the 1920x1080@30fps mode and the pipeline will encode the video and save it into test.ts file. | ||
=== Performance === | === Performance === | ||
Line 496: | Line 111: | ||
==== ARM Load ==== | ==== ARM Load ==== | ||
Tegrastats display the following output when capturing with the sensor driver used in the | Tegrastats display the following output when capturing with the sensor driver used in the Jetson Nano platform: | ||
<pre> | <pre> | ||
RAM | RAM 1167/3963MB (lfb 522x4MB) CPU [25%@1132,16%@1132,9%@1132,12%@1132] | ||
RAM | RAM 1168/3963MB (lfb 522x4MB) CPU [28%@921,12%@921,9%@921,13%@921] | ||
RAM | RAM 1167/3963MB (lfb 522x4MB) CPU [23%@921,12%@921,13%@921,10%@921] | ||
RAM | RAM 1167/3963MB (lfb 522x4MB) CPU [28%@921,8%@921,12%@921,12%@921] | ||
RAM | RAM 1169/3963MB (lfb 522x4MB) CPU [26%@1479,9%@1479,16%@1479,9%@1479] | ||
RAM | RAM 1167/3963MB (lfb 522x4MB) CPU [28%@921,13%@921,9%@921,16%@921] | ||
RAM | RAM 1168/3963MB (lfb 522x4MB) CPU [23%@1036,13%@1036,14%@1036,7%@1036] | ||
RAM | RAM 1167/3963MB (lfb 522x4MB) CPU [25%@921,12%@921,9%@921,11%@921] | ||
RAM | RAM 1168/3963MB (lfb 522x4MB) CPU [25%@921,13%@921,16%@921,12%@921] | ||
RAM | RAM 1169/3963MB (lfb 522x4MB) CPU [27%@921,12%@921,8%@921,13%@921] | ||
RAM 1168/3963MB (lfb 522x4MB) CPU [24%@921,8%@921,13%@921,10%@921] | |||
RAM 1169/3963MB (lfb 522x4MB) CPU [29%@921,13%@921,15%@921,6%@921] | |||
</pre> | </pre> | ||
Line 513: | Line 131: | ||
Using the next pipeline we were able to measure the framerate for single capture with perf element: | Using the next pipeline we were able to measure the framerate for single capture with perf element: | ||
<pre style="background:#d6e4f1"> | <pre style="background:#d6e4f1"> | ||
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int) | gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' ! perf ! fakesink | ||
</pre> | </pre> | ||
<pre> | <pre> | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:34.324884537; bps: 0,000; mean_bps: 0,000; fps: 0,000; mean_fps: 0,000 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:35.354956530; bps: 24192,000; mean_bps: 8064,000; fps: 30,095; mean_fps: 30,095 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:36.355520992; bps: 241920,000; mean_bps: 66528,000; fps: 29,983; mean_fps: 30,039 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:37.356864989; bps: 241920,000; mean_bps: 101606,400; fps: 29,960; mean_fps: 30,013 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:38.357433006; bps: 241920,000; mean_bps: 124992,000; fps: 29,983; mean_fps: 30,005 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:39.358908010; bps: 241920,000; mean_bps: 141696,000; fps: 29,956; mean_fps: 29,995 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:40.359357860; bps: 241920,000; mean_bps: 154224,000; fps: 29,987; mean_fps: 29,994 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:41.360617558; bps: 241920,000; mean_bps: 163968,000; fps: 29,962; mean_fps: 29,989 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:42.361400607; bps: 241920,000; mean_bps: 171763,200; fps: 29,977; mean_fps: 29,988 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:43.362674329; bps: 241920,000; mean_bps: 178141,091; fps: 29,962; mean_fps: 29,985 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:44.363320878; bps: 241920,000; mean_bps: 183456,000; fps: 29,981; mean_fps: 29,984 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:45.364541434; bps: 241920,000; mean_bps: 187953,231; fps: 29,963; mean_fps: 29,983 | ||
GST-PERF INFO --> | GST-PERF-INFO --> timestamp: 0:44:46.365041950; bps: 241920,000; mean_bps: 191808,000; fps: 29,985; mean_fps: 29,983 | ||
GST-PERF-INFO --> timestamp: 0:44:47.366186373; bps: 241920,000; mean_bps: 195148,800; fps: 29,966; mean_fps: 29,981 | |||
GST-PERF-INFO --> timestamp: 0:44:48.366852845; bps: 241920,000; mean_bps: 198072,000; fps: 29,980; mean_fps: 29,981 | |||
GST-PERF-INFO --> timestamp: 0:44:49.368081920; bps: 241920,000; mean_bps: 200651,294; fps: 29,963; mean_fps: 29,980 | |||
GST-PERF-INFO --> timestamp: 0:44:50.368731947; bps: 241920,000; mean_bps: 202944,000; fps: 29,981; mean_fps: 29,980 | |||
GST-PERF-INFO --> timestamp: 0:44:51.370037391; bps: 241920,000; mean_bps: 204995,368; fps: 29,961; mean_fps: 29,979 | |||
GST-PERF-INFO --> timestamp: 0:44:52.370821395; bps: 241920,000; mean_bps: 206841,600; fps: 29,976; mean_fps: 29,979 | |||
GST-PERF-INFO --> timestamp: 0:44:53.371545430; bps: 241920,000; mean_bps: 208512,000; fps: 29,978; mean_fps: 29,979 | |||
GST-PERF-INFO --> timestamp: 0:44:54.372675500; bps: 241920,000; mean_bps: 210030,545; fps: 29,966; mean_fps: 29,978 | |||
GST-PERF-INFO --> timestamp: 0:44:55.373703465; bps: 241920,000; mean_bps: 211417,043; fps: 29,969; mean_fps: 29,978 | |||
</pre> | </pre> | ||
{{ContactUs}} | {{ContactUs}} | ||
[[Category:Jetson]][[Category:Jetson V4L2 Drivers]][[Category: | [[Category:Jetson]][[Category:Jetson V4L2 Drivers]][[Category:Sony]] |
Latest revision as of 21:26, 18 September 2024
Problems running the pipelines shown on this page? Please see our GStreamer Debugging guide for help. |
Sony IMX327 Features
The IMX327LQR-C is a diagonal 6.46 mm (Type 1/2.8) CMOS active pixel type solid-state image sensor with a square pixel array and 2.13 M effective pixels. This chip operates with analog 2.9 V, digital 1.2 V, and interface 1.8 V triple power supply, and has low power consumption. High sensitivity, low dark current and no smear are achieved through the adoption of R, G and B primary color mosaic filters. This chip features an electronic shutter with variable charge-integration time. (Applications: Surveillance cameras, FA cameras, Industrial cameras)
Supported Platforms
- NVIDIA Jetson Nano
- Google coral (for more information about this driver check our Google Coral documentation )
Features Included in the Driver
Nano |
|
---|
Enabling the Driver
In order to use this driver, you have to patch and compile the kernel source using JetPack:
- Follow the instructions in (Downloading sources) to get the kernel source code.
- Once you have the source code, apply the following the patches in order to add the changes required for the IMX327 camera at kernel and dtb level.
4.5_imx327.patch
- Follow the instructions in (Build Kernel) for building the kernel, and then flash the image.
Make sure to enable IMX327 driver support:
make menuconfig
-> Device Drivers -> Multimedia support -> NVIDIA overlay Encoders, decoders, sensors and other helper chips -> <M> IMX327 camera sensor support
And to select the runtime device tree blob by editing the $JETSON_L4T/rootfs/boot/extlinux/extlinux.conf
to add the "FDT" line:
TIMEOUT 30 DEFAULT primary MENU TITLE L4T boot options LABEL primary MENU LABEL primary kernel LINUX /boot/Image INITRD /boot/initrd FDT /boot/tegra210-p3448-0000-p3449-0000-a02.dtb APPEND ${cbootargs} quiet
Using the Driver
GStreamer Examples
Capture and Display
- 1920x1080@30fps RGGB12
gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=NV12, framerate=30/1' ! nvvidconv ! xvimagesink
Video Encoding
CAPS="video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1" gst-launch-1.0 nvarguscamerasrc sensor-id=0 num-buffers=500 ! "video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1" ! omxh264enc ! mpegtsmux ! filesink location=test.ts
The sensor will capture in the 1920x1080@30fps mode and the pipeline will encode the video and save it into test.ts file.
Performance
ARM Load
Tegrastats display the following output when capturing with the sensor driver used in the Jetson Nano platform:
RAM 1167/3963MB (lfb 522x4MB) CPU [25%@1132,16%@1132,9%@1132,12%@1132] RAM 1168/3963MB (lfb 522x4MB) CPU [28%@921,12%@921,9%@921,13%@921] RAM 1167/3963MB (lfb 522x4MB) CPU [23%@921,12%@921,13%@921,10%@921] RAM 1167/3963MB (lfb 522x4MB) CPU [28%@921,8%@921,12%@921,12%@921] RAM 1169/3963MB (lfb 522x4MB) CPU [26%@1479,9%@1479,16%@1479,9%@1479] RAM 1167/3963MB (lfb 522x4MB) CPU [28%@921,13%@921,9%@921,16%@921] RAM 1168/3963MB (lfb 522x4MB) CPU [23%@1036,13%@1036,14%@1036,7%@1036] RAM 1167/3963MB (lfb 522x4MB) CPU [25%@921,12%@921,9%@921,11%@921] RAM 1168/3963MB (lfb 522x4MB) CPU [25%@921,13%@921,16%@921,12%@921] RAM 1169/3963MB (lfb 522x4MB) CPU [27%@921,12%@921,8%@921,13%@921] RAM 1168/3963MB (lfb 522x4MB) CPU [24%@921,8%@921,13%@921,10%@921] RAM 1169/3963MB (lfb 522x4MB) CPU [29%@921,13%@921,15%@921,6%@921]
Framerate
Using the next pipeline we were able to measure the framerate for single capture with perf element:
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' ! perf ! fakesink
GST-PERF-INFO --> timestamp: 0:44:34.324884537; bps: 0,000; mean_bps: 0,000; fps: 0,000; mean_fps: 0,000 GST-PERF-INFO --> timestamp: 0:44:35.354956530; bps: 24192,000; mean_bps: 8064,000; fps: 30,095; mean_fps: 30,095 GST-PERF-INFO --> timestamp: 0:44:36.355520992; bps: 241920,000; mean_bps: 66528,000; fps: 29,983; mean_fps: 30,039 GST-PERF-INFO --> timestamp: 0:44:37.356864989; bps: 241920,000; mean_bps: 101606,400; fps: 29,960; mean_fps: 30,013 GST-PERF-INFO --> timestamp: 0:44:38.357433006; bps: 241920,000; mean_bps: 124992,000; fps: 29,983; mean_fps: 30,005 GST-PERF-INFO --> timestamp: 0:44:39.358908010; bps: 241920,000; mean_bps: 141696,000; fps: 29,956; mean_fps: 29,995 GST-PERF-INFO --> timestamp: 0:44:40.359357860; bps: 241920,000; mean_bps: 154224,000; fps: 29,987; mean_fps: 29,994 GST-PERF-INFO --> timestamp: 0:44:41.360617558; bps: 241920,000; mean_bps: 163968,000; fps: 29,962; mean_fps: 29,989 GST-PERF-INFO --> timestamp: 0:44:42.361400607; bps: 241920,000; mean_bps: 171763,200; fps: 29,977; mean_fps: 29,988 GST-PERF-INFO --> timestamp: 0:44:43.362674329; bps: 241920,000; mean_bps: 178141,091; fps: 29,962; mean_fps: 29,985 GST-PERF-INFO --> timestamp: 0:44:44.363320878; bps: 241920,000; mean_bps: 183456,000; fps: 29,981; mean_fps: 29,984 GST-PERF-INFO --> timestamp: 0:44:45.364541434; bps: 241920,000; mean_bps: 187953,231; fps: 29,963; mean_fps: 29,983 GST-PERF-INFO --> timestamp: 0:44:46.365041950; bps: 241920,000; mean_bps: 191808,000; fps: 29,985; mean_fps: 29,983 GST-PERF-INFO --> timestamp: 0:44:47.366186373; bps: 241920,000; mean_bps: 195148,800; fps: 29,966; mean_fps: 29,981 GST-PERF-INFO --> timestamp: 0:44:48.366852845; bps: 241920,000; mean_bps: 198072,000; fps: 29,980; mean_fps: 29,981 GST-PERF-INFO --> timestamp: 0:44:49.368081920; bps: 241920,000; mean_bps: 200651,294; fps: 29,963; mean_fps: 29,980 GST-PERF-INFO --> timestamp: 0:44:50.368731947; bps: 241920,000; mean_bps: 202944,000; fps: 29,981; mean_fps: 29,980 GST-PERF-INFO --> timestamp: 0:44:51.370037391; bps: 241920,000; mean_bps: 204995,368; fps: 29,961; mean_fps: 29,979 GST-PERF-INFO --> timestamp: 0:44:52.370821395; bps: 241920,000; mean_bps: 206841,600; fps: 29,976; mean_fps: 29,979 GST-PERF-INFO --> timestamp: 0:44:53.371545430; bps: 241920,000; mean_bps: 208512,000; fps: 29,978; mean_fps: 29,979 GST-PERF-INFO --> timestamp: 0:44:54.372675500; bps: 241920,000; mean_bps: 210030,545; fps: 29,966; mean_fps: 29,978 GST-PERF-INFO --> timestamp: 0:44:55.373703465; bps: 241920,000; mean_bps: 211417,043; fps: 29,969; mean_fps: 29,978
RidgeRun Resources | |||||
Contact Us
|