Difference between revisions of "I2c bus number and video node"
(11 intermediate revisions by 2 users not shown) | |||
Line 13: | Line 13: | ||
Special, for the Computer module series. Make the following description. | Special, for the Computer module series. Make the following description. | ||
+ | |||
+ | ==== Raspberry Pi 5 ==== | ||
+ | {| class="wikitable" | ||
+ | !i2c bus num | ||
+ | !description | ||
+ | |- | ||
+ | |6 | ||
+ | |CAM0 | ||
+ | |- | ||
+ | |4 | ||
+ | |CAM1 | ||
+ | |} | ||
====CM3==== | ====CM3==== | ||
CM3 use I2C-1 to control 2 cameras,It is time-sharing multiplexing. | CM3 use I2C-1 to control 2 cameras,It is time-sharing multiplexing. | ||
Line 18: | Line 30: | ||
<code>./camera_i2c_config [cameranum]</code> | <code>./camera_i2c_config [cameranum]</code> | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! | + | !i2c bus num |
!description | !description | ||
|- | |- | ||
Line 44: | Line 56: | ||
=== Nvidia Jetson === | === Nvidia Jetson === | ||
The following description is only for official Nvidia development boards, third party board need to be confirmed with the manufacturer. | The following description is only for official Nvidia development boards, third party board need to be confirmed with the manufacturer. | ||
− | ==== AGX-Xavier, TX2 Devkit==== | + | ==== AGX-Xavier,AGX-Orin,TX2 Devkit==== |
[[ADP-N1-V2.0 Adapter Board Data Sheet|ADP-N1-V2.0]] has 6 MIPI CSI-2 interfaces, corresponding to the i2c bus numbers 30-35. | [[ADP-N1-V2.0 Adapter Board Data Sheet|ADP-N1-V2.0]] has 6 MIPI CSI-2 interfaces, corresponding to the i2c bus numbers 30-35. | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 68: | Line 80: | ||
|35 | |35 | ||
|} | |} | ||
− | ====Xavier NX , TX2 NX==== | + | |
+ | ===== AGX-Orin @ Jetpack6.0+ ===== | ||
+ | {| class="wikitable" | ||
+ | !cam index | ||
+ | ! i2c number | ||
+ | |- | ||
+ | |0 | ||
+ | |9 | ||
+ | |- | ||
+ | |1 | ||
+ | |10 | ||
+ | |- | ||
+ | |2 | ||
+ | |11 | ||
+ | |- | ||
+ | |3 | ||
+ | |12 | ||
+ | |- | ||
+ | |4 | ||
+ | |13 | ||
+ | |- | ||
+ | |5 | ||
+ | |14 | ||
+ | |} | ||
+ | ====Xavier NX , TX2 NX, Orin Nano,Orin NX==== | ||
{| class="wikitable" | {| class="wikitable" | ||
!cam index | !cam index | ||
Line 79: | Line 115: | ||
|9 | |9 | ||
|} | |} | ||
− | ====Nano | + | OR: |
+ | {| class="wikitable" | ||
+ | !cam index | ||
+ | !i2c number | ||
+ | |- | ||
+ | |0 | ||
+ | |9 | ||
+ | |- | ||
+ | |1 | ||
+ | |10 | ||
+ | |}<br /> | ||
+ | |||
+ | ==== Orin Nano , Orin NX ==== | ||
+ | {| class="wikitable" | ||
+ | !cam index | ||
+ | !i2c number | ||
+ | |- | ||
+ | |0 | ||
+ | |9 | ||
+ | |- | ||
+ | |1 | ||
+ | |10 | ||
+ | |} | ||
+ | ====Nano B01==== | ||
{| class="wikitable" | {| class="wikitable" | ||
!cam index | !cam index | ||
Line 94: | Line 153: | ||
===NXP i.MX platform=== | ===NXP i.MX platform=== | ||
+ | ==== '''<big>AVNET Maaxboard(mini)</big>''' ==== | ||
+ | i2c bus number is 0. | ||
+ | |||
+ | ==== MYIR i.MX8 board ==== | ||
+ | {| class="wikitable" | ||
+ | !cam index | ||
+ | ! i2c number | ||
+ | |- | ||
+ | |0 | ||
+ | |0 | ||
+ | |- | ||
+ | |1 | ||
+ | |1 | ||
+ | |} | ||
+ | |||
+ | ==== google Coral board ==== | ||
+ | i2c bus number is 1. | ||
+ | |||
+ | === Rockchip platform === | ||
+ | |||
+ | ==== ROC-RK3566-PC ==== | ||
+ | i2c bus number is 4. | ||
+ | |||
+ | ==== ROC-RK3588S-PC ==== | ||
+ | i2c bus number is 7. | ||
+ | |||
+ | === Tools === | ||
+ | The following two tools can assist in understanding and finding problems. | ||
+ | |||
+ | ==== i2cdetect ==== | ||
+ | Under linux command, execute the following command to probe all the i2c device addresses on the i2c bus. Usually our module address is 0x3b. | ||
+ | |||
+ | <code>i2cdetect -y -r [busnumber]</code> | ||
+ | |||
+ | ==== dmesg ==== | ||
+ | dmesg prints out the logs of the linux kernel boot phase and also the driver logs of our camera modules. It shows the i2c probe process during the boot phase and whether it was successful or not. | ||
== Description of video nodes == | == Description of video nodes == | ||
+ | In general, we have implemented v4l2 standard drivers for mipi modules on different platforms. The Linux kernel will find the corresponding driver and probe the camera according to the dts when booting. After success, the /dev/videoX device node is generated, where X is a number based on the order of the probe to. | ||
+ | |||
+ | This tends to cause a common misunderstanding, which is explained here. | ||
+ | |||
+ | For motherboards that support multiple mipi cameras, the i2c bus number of each camera is determined by the camera installation location, but the generated /dev/videoX node name cannot be determined in advance. | ||
+ | |||
+ | For example, if we install two cameras on the agx board, mounted to cam2 and cam4 positions, then: | ||
+ | {| class="wikitable" | ||
+ | |+xavier agx | ||
+ | !camera number | ||
+ | !location | ||
+ | !i2c bus | ||
+ | !/dev/video node | ||
+ | |- | ||
+ | |1 | ||
+ | |cam2 | ||
+ | |32 | ||
+ | |/dev/video0 | ||
+ | |- | ||
+ | |2 | ||
+ | |cam4 | ||
+ | |34 | ||
+ | |/dev/video1 | ||
+ | |} | ||
+ | <br /> |
Latest revision as of 16:49, 14 August 2024
1 I2c bus number on different boards
For camera modules with MIPI CSI-2 interface, the i2c bus is commonly provided as the communication channel for parameter configuration. Users use the i2c protocol to access the camera registers. A series of shell scripts are provided to facilitate this operation, such as VEYE-MIPI-X I2C.sh,CS-MIPI-X I2C.sh,VEYE-MIPI-IMX335 i2c script.
Generally, there is a matching i2c bus for each MIPI CSI-2 interface on each motherboard. For all our scripts, we can use the -b [bus numer]
option to indicate which i2c bus is targeted for this operation. Below, we have summarized the i2c bus serial numbers for commonly used motherboards.
1.1 Raspberry pi
1.1.1 General
For a Raspberry Pi with only one mipi csi-2 interface, the i2c bus is 10. If your piOS is very old, then maybe it is 0.
Special, for the Computer module series. Make the following description.
1.1.2 Raspberry Pi 5
i2c bus num | description |
---|---|
6 | CAM0 |
4 | CAM1 |
1.1.3 CM3
CM3 use I2C-1 to control 2 cameras,It is time-sharing multiplexing.
./camera_i2c_config [cameranum]
i2c bus num | description |
---|---|
0 | CAM0 |
1 | CAM1 |
1.1.4 CM4
The CM4 module uses two I2C to communicate with two cameras respectively.
./camera_i2c_config
i2c bus num | description |
---|---|
0 | CAM0 |
10 | CAM1 |
1.2 Nvidia Jetson
The following description is only for official Nvidia development boards, third party board need to be confirmed with the manufacturer.
1.2.1 AGX-Xavier,AGX-Orin,TX2 Devkit
ADP-N1-V2.0 has 6 MIPI CSI-2 interfaces, corresponding to the i2c bus numbers 30-35.
cam index | i2c number |
---|---|
0 | 30 |
1 | 31 |
2 | 32 |
3 | 33 |
4 | 34 |
5 | 35 |
1.2.1.1 AGX-Orin @ Jetpack6.0+
cam index | i2c number |
---|---|
0 | 9 |
1 | 10 |
2 | 11 |
3 | 12 |
4 | 13 |
5 | 14 |
1.2.2 Xavier NX , TX2 NX, Orin Nano,Orin NX
cam index | i2c number |
---|---|
0 | 10 |
1 | 9 |
OR:
cam index | i2c number |
---|---|
0 | 9 |
1 | 10 |
1.2.3 Orin Nano , Orin NX
cam index | i2c number |
---|---|
0 | 9 |
1 | 10 |
1.2.4 Nano B01
cam index | i2c number |
---|---|
0 | 7 |
1 | 8 |
1.2.5 Nano A02, Nano 2GB
i2c bus number is 6.
1.3 NXP i.MX platform
1.3.1 AVNET Maaxboard(mini)
i2c bus number is 0.
1.3.2 MYIR i.MX8 board
cam index | i2c number |
---|---|
0 | 0 |
1 | 1 |
1.3.3 google Coral board
i2c bus number is 1.
1.4 Rockchip platform
1.4.1 ROC-RK3566-PC
i2c bus number is 4.
1.4.2 ROC-RK3588S-PC
i2c bus number is 7.
1.5 Tools
The following two tools can assist in understanding and finding problems.
1.5.1 i2cdetect
Under linux command, execute the following command to probe all the i2c device addresses on the i2c bus. Usually our module address is 0x3b.
i2cdetect -y -r [busnumber]
1.5.2 dmesg
dmesg prints out the logs of the linux kernel boot phase and also the driver logs of our camera modules. It shows the i2c probe process during the boot phase and whether it was successful or not.
2 Description of video nodes
In general, we have implemented v4l2 standard drivers for mipi modules on different platforms. The Linux kernel will find the corresponding driver and probe the camera according to the dts when booting. After success, the /dev/videoX device node is generated, where X is a number based on the order of the probe to.
This tends to cause a common misunderstanding, which is explained here.
For motherboards that support multiple mipi cameras, the i2c bus number of each camera is determined by the camera installation location, but the generated /dev/videoX node name cannot be determined in advance.
For example, if we install two cameras on the agx board, mounted to cam2 and cam4 positions, then:
camera number | location | i2c bus | /dev/video node |
---|---|---|---|
1 | cam2 | 32 | /dev/video0 |
2 | cam4 | 34 | /dev/video1 |