Difference between revisions of "Gx mipi i2c.sh user guide"
| (14 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| − | [ | + | [[Gx mipi i2c.sh user guide/zh|查看中文]] |
<big>'''gx_mipi_i2c.sh Shell scripts usage'''</big> | <big>'''gx_mipi_i2c.sh Shell scripts usage'''</big> | ||
| − | === Overview === | + | ===Overview=== |
The gx_mipi_i2c.sh script is a tool set for configuring GX MIPI series cameras through the I2C. | The gx_mipi_i2c.sh script is a tool set for configuring GX MIPI series cameras through the I2C. | ||
| − | This script is essentially an access to registers. For registers, please refer to [ | + | This script is essentially an access to registers. For registers, please refer to [[Gx Series MIPI Camera Register Map|GX Series MIPI Camera Register Map.]] |
| − | === Download === | + | ===Download=== |
We provide download links for gx_mipi_i2c.sh for different embedded platforms. | We provide download links for gx_mipi_i2c.sh for different embedded platforms. | ||
| Line 15: | Line 15: | ||
Below is the list: | Below is the list: | ||
| − | === Prepare === | + | ===Prepare=== |
<code>cd gx_tools_rpi/sources/</code> | <code>cd gx_tools_rpi/sources/</code> | ||
| Line 24: | Line 24: | ||
<code>chmod +x *</code> | <code>chmod +x *</code> | ||
| − | === gx_mipi_i2c.sh USAGE === | + | ===gx_mipi_i2c.sh USAGE=== |
<code>$ ./gx_mipi_i2c.sh</code> | <code>$ ./gx_mipi_i2c.sh</code> | ||
| Line 56: | Line 56: | ||
[[I2c bus number and video node|i2c bus number on different boards]] | [[I2c bus number and video node|i2c bus number on different boards]] | ||
| − | === Common Questions Regarding Scripts === | + | ===Common Questions Regarding Scripts=== |
1.When I2C communication fails, the following error message will be displayed. | 1.When I2C communication fails, the following error message will be displayed. | ||
| Line 69: | Line 69: | ||
===Functions list=== | ===Functions list=== | ||
| − | ==== Note ==== | + | ====Note==== |
The camera has two states, '''standby''' and '''running''', after the start of image acquisition into the '''running''' state. | The camera has two states, '''standby''' and '''running''', after the start of image acquisition into the '''running''' state. | ||
| Line 76: | Line 76: | ||
There are some parameters that have strict range restrictions, and it's a good idea to try reading them when you're in doubt. | There are some parameters that have strict range restrictions, and it's a good idea to try reading them when you're in doubt. | ||
| − | ==== Basic Parameters ==== | + | ====Basic Parameters==== |
| − | ===== manufacturer ===== | + | =====manufacturer===== |
<code>./gx_mipi_i2c.sh -r manufacturer -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r manufacturer -b your_i2c_bus_number</code> | ||
Get the manufacturer name, which is '''VEYE'''. | Get the manufacturer name, which is '''VEYE'''. | ||
| − | ===== model ===== | + | =====model===== |
<code>./gx_mipi_i2c.sh -r model -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r model -b your_i2c_bus_number</code> | ||
Get the product model, such as GX-MIPI-IMX662. | Get the product model, such as GX-MIPI-IMX662. | ||
| − | ===== sensorname ===== | + | =====sensorname===== |
<code>./gx_mipi_i2c.sh -r sensorname -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r sensorname -b your_i2c_bus_number</code> | ||
Get the sensor model, such as IMX662-AAQR. | Get the sensor model, such as IMX662-AAQR. | ||
| − | ===== version ===== | + | =====version===== |
<code>./gx_mipi_i2c.sh -r version -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r version -b your_i2c_bus_number</code> | ||
| Line 100: | Line 100: | ||
The system has two main control chips that serve the control and logic functions respectively. | The system has two main control chips that serve the control and logic functions respectively. | ||
| − | ===== serialno ===== | + | =====serialno===== |
<code>./gx_mipi_i2c.sh -r serialno -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r serialno -b your_i2c_bus_number</code> | ||
Get the unique serial number of this module. | Get the unique serial number of this module. | ||
| − | ===== timestamp ===== | + | =====timestamp===== |
<code>./gx_mipi_i2c.sh -r timestamp -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r timestamp -b your_i2c_bus_number</code> | ||
Get the time since the system started, in milliseconds. | Get the time since the system started, in milliseconds. | ||
| − | ===== errcode ===== | + | =====errcode===== |
reserved | reserved | ||
| − | ===== fmtcap ===== | + | =====fmtcap===== |
<code>./gx_mipi_i2c.sh -r fmtcap -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r fmtcap -b your_i2c_bus_number</code> | ||
| Line 126: | Line 126: | ||
bit2: Mono12 | bit2: Mono12 | ||
| − | bit3: Mono14 | + | bit3: Mono14 (reserved) |
bit4: UYVY | bit4: UYVY | ||
| Line 132: | Line 132: | ||
bit5: RGB888 | bit5: RGB888 | ||
| − | bit6: Temp | + | bit6: Temp (occupied,reserved) |
bit7: YUYV | bit7: YUYV | ||
| − | ===== readmodecap ===== | + | =====readmodecap===== |
<code>./gx_mipi_i2c.sh -r readmodecap -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r readmodecap -b your_i2c_bus_number</code> | ||
| Line 149: | Line 149: | ||
bit2: subsampling mode | bit2: subsampling mode | ||
| − | ===== workmodecap ===== | + | =====workmodecap===== |
<code>./gx_mipi_i2c.sh -r workmodecap -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r workmodecap -b your_i2c_bus_number</code> | ||
| Line 166: | Line 166: | ||
bit4: Multi-camera synchronization mode. | bit4: Multi-camera synchronization mode. | ||
| − | ===== lanecap ===== | + | =====lanecap===== |
<code>./gx_mipi_i2c.sh -r lanecap -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r lanecap -b your_i2c_bus_number</code> | ||
| Line 177: | Line 177: | ||
For example, 0x2 indicates support for 2 lanes, and 0xA indicates support for both 2 lanes and 4 lanes. | For example, 0x2 indicates support for 2 lanes, and 0xA indicates support for both 2 lanes and 4 lanes. | ||
| − | ===== cameramodel0-cameramodel7 ===== | + | =====cameramodel0-cameramodel7===== |
<code>./gx_mipi_i2c.sh -r cameramodel0 -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r cameramodel0 -b your_i2c_bus_number</code> | ||
Get the camera model, such as: cameramodel0 is 0x47582d4d(ascii is GX-M) | Get the camera model, such as: cameramodel0 is 0x47582d4d(ascii is GX-M) | ||
| − | ===== temp ===== | + | =====temp===== |
<code>./gx_mipi_i2c.sh -r temp -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r temp -b your_i2c_bus_number</code> | ||
Get the temp is 25K | Get the temp is 25K | ||
| − | ===== videomodecap ===== | + | =====videomodecap===== |
<code>./gx_mipi_i2c.sh -r videomodecap -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r videomodecap -b your_i2c_bus_number</code> | ||
| Line 199: | Line 199: | ||
|- | |- | ||
|bit1 | |bit1 | ||
| − | |VideoMode mode | + | |VideoMode mode |
|} | |} | ||
| − | ===== videomodenum ===== | + | =====videomodenum===== |
<code>./gx_mipi_i2c.sh -r videomodenum -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r videomodenum -b your_i2c_bus_number</code> | ||
Get the videomodenum 1 | Get the videomodenum 1 | ||
| − | ===== vidoemodewh1-vidoemodewh8 ===== | + | =====vidoemodewh1-vidoemodewh8===== |
<code>./gx_mipi_i2c.sh -r videomodewh1 -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r videomodewh1 -b your_i2c_bus_number</code> | ||
| Line 214: | Line 214: | ||
In the first mode, the width is represented by the high 16 bits and the height by the low 16 bits. | In the first mode, the width is represented by the high 16 bits and the height by the low 16 bits. | ||
| − | ===== videomodeparam1-videomodeparam8 ===== | + | =====videomodeparam1-videomodeparam8===== |
<code>./gx_mipi_i2c.sh -r videomode_param1 -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r videomode_param1 -b your_i2c_bus_number</code> | ||
| Line 233: | Line 233: | ||
|subsampling | |subsampling | ||
|} | |} | ||
| − | ===== factoryparam ===== | + | =====factoryparam===== |
<code>./gx_mipi_i2c.sh -w factoryparam -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w factoryparam -b your_i2c_bus_number</code> | ||
| Line 241: | Line 241: | ||
Additionally, it is recommended not to perform frequent factoryparam operations. | Additionally, it is recommended not to perform frequent factoryparam operations. | ||
| − | ===== paramsave ===== | + | =====paramsave===== |
<code>./gx_mipi_i2c.sh -w paramsave -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w paramsave -b your_i2c_bus_number</code> | ||
| Line 250: | Line 250: | ||
Additionally, it is recommended not to perform frequent paramsave operations. | Additionally, it is recommended not to perform frequent paramsave operations. | ||
| − | ===== reboot ===== | + | =====reboot===== |
<code>./gx_mipi_i2c.sh -w reboot -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w reboot -b your_i2c_bus_number</code> | ||
Reboot the camera. | Reboot the camera. | ||
| − | ==== Image Acquisition ==== | + | ====Image Acquisition==== |
| − | ===== imgacq ===== | + | =====imgacq===== |
<code>./gx_mipi_i2c.sh -w imgacq [0/1] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w imgacq [0/1] -b your_i2c_bus_number</code> | ||
| Line 268: | Line 268: | ||
Writing 0 will stop the output image and enter the standby state. | Writing 0 will stop the output image and enter the standby state. | ||
| − | ===== workmode ===== | + | =====workmode===== |
<code>./gx_mipi_i2c.sh -w workmode [0,1,4] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w workmode [0,1,4] -b your_i2c_bus_number</code> | ||
| Line 287: | Line 287: | ||
See product manual for details. | See product manual for details. | ||
| − | ===== trgsrc ===== | + | =====trgsrc===== |
<code>./gx_mipi_i2c.sh -w trgsrc [0,1] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w trgsrc [0,1] -b your_i2c_bus_number</code> | ||
| Line 302: | Line 302: | ||
|} | |} | ||
| − | ===== trgnum ===== | + | =====trgnum===== |
<code>./gx_mipi_i2c.sh -w trgnum [1,255] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w trgnum [1,255] -b your_i2c_bus_number</code> | ||
| Line 309: | Line 309: | ||
The number of image frames output by one trigger signal in trigger mode. | The number of image frames output by one trigger signal in trigger mode. | ||
| − | ===== trginterval ===== | + | =====trginterval===== |
<code>./gx_mipi_i2c.sh -w trginterval [us] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w trginterval [us] -b your_i2c_bus_number</code> | ||
| Line 316: | Line 316: | ||
Trigger interval in normal trigger mode, in microseconds. Range:[0.0xFFFFFF]. | Trigger interval in normal trigger mode, in microseconds. Range:[0.0xFFFFFF]. | ||
| − | ===== trgone ===== | + | =====trgone===== |
<code>./gx_mipi_i2c.sh -w trgone -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w trgone -b your_i2c_bus_number</code> | ||
Software trigger command.One execution will perform a soft trigger. | Software trigger command.One execution will perform a soft trigger. | ||
| − | ===== trgcount ===== | + | =====trgcount===== |
<code>./gx_mipi_i2c.sh -r trgcount -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r trgcount -b your_i2c_bus_number</code> | ||
| Line 332: | Line 332: | ||
Clear trigger count. | Clear trigger count. | ||
| − | ===== i2caddr ===== | + | =====i2caddr===== |
<code>./gx_mipi_i2c.sh -w i2caddr [new] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w i2caddr [new] -b your_i2c_bus_number</code> | ||
| Line 339: | Line 339: | ||
Will really take effect only after paramsave and reboot . | Will really take effect only after paramsave and reboot . | ||
| − | ===== nondiscontinuousmode ===== | + | =====nondiscontinuousmode===== |
<code>./gx_mipi_i2c.sh -w nondiscontinuousmode [0/1] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w nondiscontinuousmode [0/1] -b your_i2c_bus_number</code> | ||
| Line 350: | Line 350: | ||
1: continuous mode | 1: continuous mode | ||
| − | ===== slavemode ===== | + | =====slavemode===== |
<code>./gx_mipi_i2c.sh -w slavemode [0/1] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w slavemode [0/1] -b your_i2c_bus_number</code> | ||
| Line 359: | Line 359: | ||
Writing this parameter will cause the camera to automatically save the current settings and reboot. | Writing this parameter will cause the camera to automatically save the current settings and reboot. | ||
| − | ===== framecount ===== | + | =====framecount===== |
<code>./gx_mipi_i2c.sh -r framecount -b your_i2c_bus_number</code> <br />Get the Sensor_Frame_Count is 434 , Out_Frame_Count is 436 | <code>./gx_mipi_i2c.sh -r framecount -b your_i2c_bus_number</code> <br />Get the Sensor_Frame_Count is 434 , Out_Frame_Count is 436 | ||
| Line 370: | Line 370: | ||
The number of frames output is counted in a loop. Only accumulation is performed without clearing, and it is updated once per second. | The number of frames output is counted in a loop. Only accumulation is performed without clearing, and it is updated once per second. | ||
| − | ===== triggercyclemin ===== | + | =====triggercyclemin===== |
<code>./gx_mipi_i2c.sh -r triggercyclemin -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r triggercyclemin -b your_i2c_bus_number</code> | ||
Get the Trigger_Cycle_Min is 0 | Get the Trigger_Cycle_Min is 0 | ||
| − | ===== daynightmode ===== | + | =====daynightmode===== |
<code>./gx_mipi_i2c.sh -w daynightmode [0,2] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w daynightmode [0,2] -b your_i2c_bus_number</code> | ||
| Line 395: | Line 395: | ||
|} | |} | ||
| − | ===== ircutdir ===== | + | =====ircutdir===== |
<code>./gx_mipi_i2c.sh -w ircutdir [0/1] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w ircutdir [0/1] -b your_i2c_bus_number</code> | ||
| Line 402: | Line 402: | ||
By default, if the voltage at port A is higher than that at port B (A > B), the IRCUT module will drive the filter to enter the optical path. When the direction is switched so that the voltage at port B becomes higher than that at port A (A < B), the polarity of the electromagnetic coil reverses, and the filter is driven to exit the optical path. | By default, if the voltage at port A is higher than that at port B (A > B), the IRCUT module will drive the filter to enter the optical path. When the direction is switched so that the voltage at port B becomes higher than that at port A (A < B), the polarity of the electromagnetic coil reverses, and the filter is driven to exit the optical path. | ||
| − | ===== pinpolarity ===== | + | =====pinpolarity===== |
<code>./gx_mipi_i2c.sh -w pinpolarity [0/1] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w pinpolarity [0/1] -b your_i2c_bus_number</code> | ||
| Line 409: | Line 409: | ||
Trigger pin polarity reversal day and night. By default, a low level indicates night. After setting this value to 1, a high level indicates night. | Trigger pin polarity reversal day and night. By default, a low level indicates night. After setting this value to 1, a high level indicates night. | ||
| − | ===== ircuttimer ===== | + | =====ircuttimer===== |
<code>./gx_mipi_i2c.sh -w ircuttimer [0/1] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w ircuttimer [0/1] -b your_i2c_bus_number</code> | ||
| Line 416: | Line 416: | ||
Whether to enable IRCUT periodic control; If enabled, IRCUT control will be performed according to the default cycle. If not enabled, control will only be carried out once during mode switching. | Whether to enable IRCUT periodic control; If enabled, IRCUT control will be performed according to the default cycle. If not enabled, control will only be carried out once during mode switching. | ||
| − | ==== Image Properties ==== | + | ====Image Properties==== |
| − | ===== testimg ===== | + | =====testimg===== |
<code>./gx_mipi_i2c.sh -w testimg [0/1] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w testimg [0/1] -b your_i2c_bus_number</code> | ||
| Line 433: | Line 433: | ||
|} | |} | ||
| − | ===== pixelformat ===== | + | =====pixelformat===== |
<code>./gx_mipi_i2c.sh -w pixelformat [4/5/6/7] -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w pixelformat [4/5/6/7] -b your_i2c_bus_number</code> | ||
| Line 440: | Line 440: | ||
!value | !value | ||
!description | !description | ||
| + | |- | ||
| + | |0 | ||
| + | |Mono8 | ||
| + | |- | ||
| + | |1 | ||
| + | |Mono10 | ||
| + | |- | ||
| + | |2 | ||
| + | |Mono12 | ||
| + | |- | ||
| + | |3 | ||
| + | |Mono14 (reserved) | ||
|- | |- | ||
|4 | |4 | ||
| Line 448: | Line 460: | ||
|- | |- | ||
|6 | |6 | ||
| − | |Temp | + | |Temp (reserved) |
|- | |- | ||
|7 | |7 | ||
| Line 454: | Line 466: | ||
|} | |} | ||
| − | ===== maxwh ===== | + | =====maxwh===== |
<code>./gx_mipi_i2c.sh -r maxwh -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r maxwh -b your_i2c_bus_number</code> | ||
Get the maximum width and height supported by the sensor | Get the maximum width and height supported by the sensor | ||
| − | ===== minwh ===== | + | =====minwh===== |
<code>./gx_mipi_i2c.sh -r minwh -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r minwh -b your_i2c_bus_number</code> | ||
Get the minimum width and height supported by the camera. | Get the minimum width and height supported by the camera. | ||
| − | ===== maxfps ===== | + | =====maxfps===== |
<code>./gx_mipi_i2c.sh -r maxfps -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r maxfps -b your_i2c_bus_number</code> | ||
| Line 471: | Line 483: | ||
Depending on the configured ROI, the maximum frame rate will be different. This parameter supports decimals. | Depending on the configured ROI, the maximum frame rate will be different. This parameter supports decimals. | ||
| − | ===== minfps ===== | + | =====minfps===== |
<code>./gx_mipi_i2c.sh -r minfps -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r minfps -b your_i2c_bus_number</code> | ||
Read the minimum frame rate supported by the current module. | Read the minimum frame rate supported by the current module. | ||
| − | ===== curwh ===== | + | =====curwh===== |
<code>./gx_mipi_i2c.sh -r curwh -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r curwh -b your_i2c_bus_number</code> | ||
Get the current width and height | Get the current width and height | ||
| − | ===== imgdir ===== | + | =====imgdir===== |
<code>./gx_mipi_i2c.sh -r imgdir -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r imgdir -b your_i2c_bus_number</code> | ||
| Line 504: | Line 516: | ||
|} | |} | ||
| − | ===== videomode ===== | + | =====videomode===== |
<code>./gx_mipi_i2c.sh -r videomode -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r videomode -b your_i2c_bus_number</code> | ||
| − | <code>./gx_mipi_i2c.sh -w videomode [ | + | <code>./gx_mipi_i2c.sh -w videomode [0-7] -b your_i2c_bus_number</code> |
| − | For cameras that use the VideoMode mode to select the frame rate of width and height, which mode | + | For cameras that use the VideoMode mode to select the frame rate of width and height, which mode to choose, Range [0-7],The corresponding capability set is VideomodeCap. |
| − | ===== readmode ===== | + | =====readmode===== |
<code>./gx_mipi_i2c.sh -r readmode -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r readmode -b your_i2c_bus_number</code> | ||
| Line 529: | Line 541: | ||
|} | |} | ||
| − | ===== lanenum ===== | + | =====lanenum===== |
<code>./gx_mipi_i2c.shsh -r lanenum -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.shsh -r lanenum -b your_i2c_bus_number</code> | ||
| Line 544: | Line 556: | ||
|} | |} | ||
| − | ===== mipidatarate ===== | + | =====mipidatarate===== |
<code>./gx_mipi_i2c.shh -r mipidatarate -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.shh -r mipidatarate -b your_i2c_bus_number</code> | ||
The rate of each LAN in the MIPI system is measured in kbps. | The rate of each LAN in the MIPI system is measured in kbps. | ||
| − | ===== fps ===== | + | =====fps===== |
<code>./gx_mipi_i2c.sh -r fps -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r fps -b your_i2c_bus_number</code> | ||
| Line 562: | Line 574: | ||
In normal trigger mode, it is recommended to set the fps to the maxfps value to ensure the highest trigger signal responsiveness. | In normal trigger mode, it is recommended to set the fps to the maxfps value to ensure the highest trigger signal responsiveness. | ||
| − | ==== Image Processing ==== | + | ====Image Processing==== |
| − | ===== expmode ===== | + | =====expmode===== |
<code>./gx_mipi_i2c.sh -r expmode -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r expmode -b your_i2c_bus_number</code> | ||
| Line 581: | Line 593: | ||
|} | |} | ||
| − | ===== aetarget ===== | + | =====aetarget===== |
<code>./gx_mipi_i2c.sh -r aetarget -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r aetarget -b your_i2c_bus_number</code> | ||
| Line 592: | Line 604: | ||
and increase the gain if the exposure time reaches the maximum and still cannot reach the set target brightness value. | and increase the gain if the exposure time reaches the maximum and still cannot reach the set target brightness value. | ||
| − | ===== aestrategy ===== | + | =====aestrategy===== |
<code>./gx_mipi_i2c.sh -r aestrategy -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r aestrategy -b your_i2c_bus_number</code> | ||
| Line 609: | Line 621: | ||
|} | |} | ||
| − | ===== metime ===== | + | =====metime===== |
<code>./gx_mipi_i2c.sh -r metime -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r metime -b your_i2c_bus_number</code> | ||
| Line 618: | Line 630: | ||
Unit: microseconds. | Unit: microseconds. | ||
| − | ===== aemaxtime ===== | + | =====aemaxtime===== |
<code>./gx_mipi_i2c.sh -r aemaxtime -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r aemaxtime -b your_i2c_bus_number</code> | ||
| Line 625: | Line 637: | ||
Automatic maximum exposure time range: 16 to 1,000,000/fps (unit: microseconds) | Automatic maximum exposure time range: 16 to 1,000,000/fps (unit: microseconds) | ||
| − | ===== exptime ===== | + | =====exptime===== |
<code>./gx_mipi_i2c.sh -r exptime -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r exptime -b your_i2c_bus_number</code> | ||
| Line 632: | Line 644: | ||
Unit: microseconds. | Unit: microseconds. | ||
| − | ===== curgain ===== | + | =====curgain===== |
<code>./gx_mipi_i2c.sh -r curgain -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r curgain -b your_i2c_bus_number</code> | ||
Gets the current gain. This command is valid in any exposure mode. | Gets the current gain. This command is valid in any exposure mode. | ||
| − | ===== mgain ===== | + | =====mgain===== |
<code>./gx_mipi_i2c.sh -r mgain -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r mgain -b your_i2c_bus_number</code> | ||
| Line 644: | Line 656: | ||
The manual gain value, range and step size vary by model. | The manual gain value, range and step size vary by model. | ||
| − | ===== aemaxgain ===== | + | =====aemaxgain===== |
<code>./gx_mipi_i2c.sh -r aemaxgain -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r aemaxgain -b your_i2c_bus_number</code> | ||
| Line 653: | Line 665: | ||
Most sensors have a gain step of 0.1dB, some are 0.3dB. | Most sensors have a gain step of 0.1dB, some are 0.3dB. | ||
| − | ===== wbmode ===== | + | =====wbmode===== |
<code>./gx_mipi_i2c.sh -r wbmode -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r wbmode -b your_i2c_bus_number</code> | ||
| Line 670: | Line 682: | ||
|} | |} | ||
| − | ===== awbcolortempmin ===== | + | =====awbcolortempmin===== |
<code>./gx_mipi_i2c.sh -r awbcolortempmin -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r awbcolortempmin -b your_i2c_bus_number</code> | ||
| Line 677: | Line 689: | ||
White balance minimum color temperature (K),Range[1000,15000]. | White balance minimum color temperature (K),Range[1000,15000]. | ||
| − | ===== awbcolortempmax ===== | + | =====awbcolortempmax===== |
<code>./gx_mipi_i2c.sh -r awbcolortempmax -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r awbcolortempmax -b your_i2c_bus_number</code> | ||
| Line 684: | Line 696: | ||
White balance maximum color temperature (K),Range[1000,15000]. | White balance maximum color temperature (K),Range[1000,15000]. | ||
| − | ===== mwbbgain ===== | + | =====mwbbgain===== |
<code>./gx_mipi_i2c.sh -r mwbbgain -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r mwbbgain -b your_i2c_bus_number</code> | ||
| Line 691: | Line 703: | ||
Manual white balance B gain [0,4095] | Manual white balance B gain [0,4095] | ||
| − | ===== mwbrgain ===== | + | =====mwbrgain===== |
<code>./gx_mipi_i2c.sh -r mwbrgain -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r mwbrgain -b your_i2c_bus_number</code> | ||
| Line 698: | Line 710: | ||
Manual white balance R gain [0,4095] | Manual white balance R gain [0,4095] | ||
| − | ===== colortemp ===== | + | =====colortemp===== |
<code>./gx_mipi_i2c.sh -r colortemp -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r colortemp -b your_i2c_bus_number</code> | ||
Current color temperature (k) | Current color temperature (k) | ||
| − | ===== currgain ===== | + | =====currgain===== |
<code>./gx_mipi_i2c.sh -r currgain -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r currgain -b your_i2c_bus_number</code> | ||
Current white balance R gain [0,4095] | Current white balance R gain [0,4095] | ||
| − | ===== curbgain ===== | + | =====curbgain===== |
<code>./gx_mipi_i2c.sh -r curbgain -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r curbgain -b your_i2c_bus_number</code> | ||
Current white balance B gain [0,4095] | Current white balance B gain [0,4095] | ||
| − | ===== aemintime ===== | + | =====aemintime===== |
<code>./gx_mipi_i2c.sh -r aemintime -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r aemintime -b your_i2c_bus_number</code> | ||
| Line 720: | Line 732: | ||
Automatic minimum exposure time range: 16 to 1,000,000/fps (unit: microseconds) | Automatic minimum exposure time range: 16 to 1,000,000/fps (unit: microseconds) | ||
| − | ===== gamma_index ===== | + | =====gamma_index===== |
<code>./gx_mipi_i2c.sh -r gamma_index -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r gamma_index -b your_i2c_bus_number</code> | ||
| Line 753: | Line 765: | ||
12: User-defined gamma (TODO) | 12: User-defined gamma (TODO) | ||
| − | ===== antiflicker ===== | + | =====antiflicker===== |
<code>./gx_mipi_i2c.sh -r antiflicker -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r antiflicker -b your_i2c_bus_number</code> | ||
| Line 760: | Line 772: | ||
param1:Whether the antiflicker function is enabled [0/1] | param1:Whether the antiflicker function is enabled [0/1] | ||
| − | param2: | + | param2: |
| − | ===== wdrparam ===== | + | Anti-flicker frequency. |
| + | |||
| + | Options: 50, 60, 100, 120, 200, 240. | ||
| + | |||
| + | Once set, the camera's exposure time will be an integer multiple of (1s/(freq*2)) to avoid banding. | ||
| + | |||
| + | For stronger lighting, it is recommended to use a higher value to prevent overexposure. | ||
| + | |||
| + | =====wdrparam===== | ||
<code>./gx_mipi_i2c.sh -r wdrparam -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r wdrparam -b your_i2c_bus_number</code> | ||
| Line 771: | Line 791: | ||
param2:WDR intensity [0-255] | param2:WDR intensity [0-255] | ||
| − | ===== sharppen ===== | + | =====sharppen===== |
<code>./gx_mipi_i2c.sh -r sharppen -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r sharppen -b your_i2c_bus_number</code> | ||
| Line 778: | Line 798: | ||
Sharpening intensity [0-255] | Sharpening intensity [0-255] | ||
| − | ===== | + | =====denoise2d===== |
| − | <code>./gx_mipi_i2c.sh -r | + | <code>./gx_mipi_i2c.sh -r denoise2d -b your_i2c_bus_number</code> |
| − | <code>./gx_mipi_i2c.sh -w | + | <code>./gx_mipi_i2c.sh -w denoise2d [0,255] -b your_i2c_bus_number</code> |
2D noise reduction intensity [0-255] | 2D noise reduction intensity [0-255] | ||
| − | ===== | + | =====denoise3d===== |
| − | <code>./gx_mipi_i2c.sh -r | + | <code>./gx_mipi_i2c.sh -r denoise3d -b your_i2c_bus_number</code> |
| − | <code>./gx_mipi_i2c.sh -w | + | <code>./gx_mipi_i2c.sh -w denoise3d [0,255] -b your_i2c_bus_number</code> |
3D noise reduction intensity [0-255] | 3D noise reduction intensity [0-255] | ||
| − | ===== saturation ===== | + | =====saturation===== |
<code>./gx_mipi_i2c.sh -r saturation -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r saturation -b your_i2c_bus_number</code> | ||
| Line 799: | Line 819: | ||
Saturation [0-100] | Saturation [0-100] | ||
| − | ===== contrast ===== | + | =====contrast===== |
<code>./gx_mipi_i2c.sh -r contrast -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r contrast -b your_i2c_bus_number</code> | ||
| Line 806: | Line 826: | ||
contrast [0-100] | contrast [0-100] | ||
| − | ===== hue ===== | + | =====hue===== |
<code>./gx_mipi_i2c.sh -r hue -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r hue -b your_i2c_bus_number</code> | ||
| Line 813: | Line 833: | ||
hue [0-100] | hue [0-100] | ||
| − | ===== slowshutter ===== | + | =====slowshutter===== |
<code>./gx_mipi_i2c.sh -r slowshutter -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r slowshutter -b your_i2c_bus_number</code> | ||
| − | <code>./gx_mipi_i2c.sh -w slowshutter [0/1] [ | + | <code>./gx_mipi_i2c.sh -w slowshutter [0/1] [20] -b your_i2c_bus_number</code> |
| + | |||
| + | Parameter 1: Selects '''automatic frame rate reduction mode''' (1) or '''fixed frame rate mode''' (0). | ||
| + | |||
| + | Parameter 2: Sets the gain threshold at which frame rate reduction starts in automatic frame rate reduction mode. The unit is 0.1 dB. | ||
| − | + | Note: Automatic frame rate reduction mode is only effective in '''auto-exposure mode + video streaming mode'''. When using this function, it must be used together with the maximum exposure time setting (<code>aemaxtime</code>). | |
| − | Parameter 2 | + | In automatic frame rate reduction mode, during auto-exposure adjustment the system prioritizes increasing the exposure time to minimize gain as much as possible. When the sensor gain reaches the user-defined maximum value (Parameter 2), the auto-exposure algorithm will gradually reduce the frame rate and further extend the exposure time, until the exposure time reaches the auto-exposure maximum (<code>aemaxtime</code>). |
| − | + | In low-light environments, this results in lower noise, but the frame rate will be reduced. | |
| − | ===== ldc ===== | + | =====ldc===== |
<code>./gx_mipi_i2c.sh -r ldc -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r ldc -b your_i2c_bus_number</code> | ||
| Line 831: | Line 855: | ||
Lens Distortion Correction [0-255], abbreviated as LDC, with 0 indicating disable. | Lens Distortion Correction [0-255], abbreviated as LDC, with 0 indicating disable. | ||
| − | + | Note: The parameters of this function setting must be set before the camera captures images to be effective. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ===== | + | =====dehaze===== |
| − | <code>./gx_mipi_i2c.sh -r | + | <code>./gx_mipi_i2c.sh -r dehaze -b your_i2c_bus_number</code> |
| − | <code>./gx_mipi_i2c.sh -w | + | <code>./gx_mipi_i2c.sh -w dehaze [0,255] -b your_i2c_bus_number</code> |
Defogging intensity [0-255], 0 indicates off. | Defogging intensity [0-255], 0 indicates off. | ||
| − | ===== drc ===== | + | =====drc===== |
<code>./gx_mipi_i2c.sh -r drc -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r drc -b your_i2c_bus_number</code> | ||
| Line 852: | Line 871: | ||
Digital wide dynamic range. Range [0-255], 0 indicates off. | Digital wide dynamic range. Range [0-255], 0 indicates off. | ||
| − | ==== IO Control ==== | + | ====IO Control==== |
| − | ===== trgdelay ===== | + | =====trgdelay===== |
<code>./gx_mipi_i2c.sh -r trgdelay -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r trgdelay -b your_i2c_bus_number</code> | ||
| Line 863: | Line 882: | ||
range: 0 to 1000000 (unit: microsecond) | range: 0 to 1000000 (unit: microsecond) | ||
| − | ===== trgedge ===== | + | =====trgedge===== |
<code>./gx_mipi_i2c.sh -r trgedge -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r trgedge -b your_i2c_bus_number</code> | ||
| Line 880: | Line 899: | ||
|} | |} | ||
| − | ===== trgexp_delay ===== | + | =====trgexp_delay===== |
<code>./gx_mipi_i2c.sh -r trgexp_delay -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r trgexp_delay -b your_i2c_bus_number</code> | ||
| Line 891: | Line 910: | ||
The difference between trgexp_delay and trgdelay, see manual for details. | The difference between trgexp_delay and trgdelay, see manual for details. | ||
| − | ===== outio1_rvs ===== | + | =====outio1_rvs===== |
<code>./gx_mipi_i2c.sh -r outio1_rvs -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -r outio1_rvs -b your_i2c_bus_number</code> | ||
| Line 898: | Line 917: | ||
Reverse OUT_IO1 high and low levels if set to 1. | Reverse OUT_IO1 high and low levels if set to 1. | ||
| − | + | ===Notes=== | |
| − | |||
| − | === Notes === | ||
Note1: All parameters of exposure time are in microseconds. However, due to the properties of the sensor, the actual exposure time unit of the sensor is 1 line, can not be accurate to 1us. | Note1: All parameters of exposure time are in microseconds. However, due to the properties of the sensor, the actual exposure time unit of the sensor is 1 line, can not be accurate to 1us. | ||
| − | === Configuration Method for Typical Application Scenarios: === | + | ===Configuration Method for Typical Application Scenarios:=== |
| − | ==== Stream mode: ==== | + | ====Stream mode:==== |
<code>./gx_mipi_i2c.sh -w imgacq 1 -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w imgacq 1 -b your_i2c_bus_number</code> | ||
| − | ==== Trigger mode: ==== | + | ====Trigger mode:==== |
<code>./gx_mipi_i2c.sh -w imgacq 0 -b your_i2c_bus_number</code> | <code>./gx_mipi_i2c.sh -w imgacq 0 -b your_i2c_bus_number</code> | ||
| Line 923: | Line 940: | ||
According to the above command, you can take a picture. | According to the above command, you can take a picture. | ||
| − | ==== Sync mode: ==== | + | ====Sync mode:==== |
Note: The synchronous mode requires two cameras. | Note: The synchronous mode requires two cameras. | ||
Latest revision as of 09:34, 4 January 2026
gx_mipi_i2c.sh Shell scripts usage
1 Overview
The gx_mipi_i2c.sh script is a tool set for configuring GX MIPI series cameras through the I2C.
This script is essentially an access to registers. For registers, please refer to GX Series MIPI Camera Register Map.
2 Download
We provide download links for gx_mipi_i2c.sh for different embedded platforms.
Generally, these links can be found in the respective platform's GitHub repository.
Below is the list:
3 Prepare
cd gx_tools_rpi/sources/
./make.sh
cd ..
chmod +x *
4 gx_mipi_i2c.sh USAGE
$ ./gx_mipi_i2c.sh
Usage: ./gx_mipi_i2c.sh [-r/w] [function name] [param1] [param2 ] [param3] [param4] -b bus
options:
-r read
-w write
[function name] function name
[param1] param1 of each function
[param1] param2 of each function
[param3] param3 of each function
[param4] param4 of each function
-b [i2c bus num] i2c bus number
-d [i2c addr] i2c addr if not default 0x3b
Please open this srcipt and read the COMMENT on top for support functions and samples
5 i2c bus number on different board
Please refer to the following article to determine which -b parameter you need to use.
i2c bus number on different boards
6 Common Questions Regarding Scripts
1.When I2C communication fails, the following error message will be displayed.
./i2c_functions.sh: line 235: Read i2c err: syntax error in expression (error token is "i2c err")
2.When the script cannot find an executable binary file to execute, the following prompt will be shown.
❌ Error: Required tool not found or not executable: /home/pi/nveye_tools/i2c_vread
❌ Error: Required tool not found or not executable: /home/pi/nveye_tools/i2c_vwrite
7 Functions list
7.1 Note
The camera has two states, standby and running, after the start of image acquisition into the running state.
There are some registers that are write-protected in the running state, which will be marked with an asterisk. For example: trgsrc* .
There are some parameters that have strict range restrictions, and it's a good idea to try reading them when you're in doubt.
7.2 Basic Parameters
7.2.1 manufacturer
./gx_mipi_i2c.sh -r manufacturer -b your_i2c_bus_number
Get the manufacturer name, which is VEYE.
7.2.2 model
./gx_mipi_i2c.sh -r model -b your_i2c_bus_number
Get the product model, such as GX-MIPI-IMX662.
7.2.3 sensorname
./gx_mipi_i2c.sh -r sensorname -b your_i2c_bus_number
Get the sensor model, such as IMX662-AAQR.
7.2.4 version
./gx_mipi_i2c.sh -r version -b your_i2c_bus_number
Get the Controller version number and Logical version number.
The system has two main control chips that serve the control and logic functions respectively.
7.2.5 serialno
./gx_mipi_i2c.sh -r serialno -b your_i2c_bus_number
Get the unique serial number of this module.
7.2.6 timestamp
./gx_mipi_i2c.sh -r timestamp -b your_i2c_bus_number
Get the time since the system started, in milliseconds.
7.2.7 errcode
reserved
7.2.8 fmtcap
./gx_mipi_i2c.sh -r fmtcap -b your_i2c_bus_number
Get the Module supports data formats
Capbility of data formats supported by the camera.
bit0: Mono8
bit1: Mono10
bit2: Mono12
bit3: Mono14 (reserved)
bit4: UYVY
bit5: RGB888
bit6: Temp (occupied,reserved)
bit7: YUYV
7.2.9 readmodecap
./gx_mipi_i2c.sh -r readmodecap -b your_i2c_bus_number
Get the Sensor reads out the capability set of patterns.
Capbility of read mode supported by the camera.
bit0: Normal
bit1: binning mode
bit2: subsampling mode
7.2.10 workmodecap
./gx_mipi_i2c.sh -r workmodecap -b your_i2c_bus_number
Get the Video streaming mode capability set
Capbility of trigger mode supported by the camera.
bit0: Video streaming mode
bit1: Normal trigger mode.
bit2: Rolling shutter multi-frame trigger mode.
bit3: Pulse trigger mode.
bit4: Multi-camera synchronization mode.
7.2.11 lanecap
./gx_mipi_i2c.sh -r lanecap -b your_i2c_bus_number
Get the number of MIPI Lanes supported by the camera
The number of MIPI lanes supported by the camera .
The lower to higher bits correspond to the supported capabilities for 1 lane, 2 lanes, 3 lanes, and 4 lanes, respectively.
For example, 0x2 indicates support for 2 lanes, and 0xA indicates support for both 2 lanes and 4 lanes.
7.2.12 cameramodel0-cameramodel7
./gx_mipi_i2c.sh -r cameramodel0 -b your_i2c_bus_number
Get the camera model, such as: cameramodel0 is 0x47582d4d(ascii is GX-M)
7.2.13 temp
./gx_mipi_i2c.sh -r temp -b your_i2c_bus_number
Get the temp is 25K
7.2.14 videomodecap
./gx_mipi_i2c.sh -r videomodecap -b your_i2c_bus_number
Get the videomodecap is 2
| value | description |
|---|---|
| bit0 | ROI mode |
| bit1 | VideoMode mode |
7.2.15 videomodenum
./gx_mipi_i2c.sh -r videomodenum -b your_i2c_bus_number
Get the videomodenum 1
7.2.16 vidoemodewh1-vidoemodewh8
./gx_mipi_i2c.sh -r videomodewh1 -b your_i2c_bus_number
Get the videomodewh1 is 0x7800438 (1920*1080)
In the first mode, the width is represented by the high 16 bits and the height by the low 16 bits.
7.2.17 videomodeparam1-videomodeparam8
./gx_mipi_i2c.sh -r videomode_param1 -b your_i2c_bus_number
Get the videomodeparam1 is 0x1003c
The frame rate and reading method of the first mode. The high 8-bit standby, the middle 8-bit is for reading mode, and the low 16-bit is for the maximum frame rate.
| value | description |
|---|---|
| 0 | ordinary |
| 1 | binning |
| 2 | subsampling |
7.2.18 factoryparam
./gx_mipi_i2c.sh -w factoryparam -b your_i2c_bus_number
All parameters restored to factory default values.
This operation will erase the system flash and rewrite it. Please ensure that the power is not interrupted during the operation.
Additionally, it is recommended not to perform frequent factoryparam operations.
7.2.19 paramsave
./gx_mipi_i2c.sh -w paramsave -b your_i2c_bus_number
Save all parameters to flash, and they will not be lost when power off.
This operation will erase the system flash and rewrite it. Please ensure that the power is not interrupted during the operation.
Additionally, it is recommended not to perform frequent paramsave operations.
7.2.20 reboot
./gx_mipi_i2c.sh -w reboot -b your_i2c_bus_number
Reboot the camera.
7.3 Image Acquisition
7.3.1 imgacq
./gx_mipi_i2c.sh -w imgacq [0/1] -b your_i2c_bus_number
Start/Stop acquisition
There is no image output after the camera is powered on, which means it is in the standby state.
After writing 1 to this register, it enters the running state and starts outputting images or waiting for the trigger signal.
Writing 0 will stop the output image and enter the standby state.
7.3.2 workmode
./gx_mipi_i2c.sh -w workmode [0,1,4] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r workmode -b your_i2c_bus_number
| value | description |
|---|---|
| 0 | Video streaming mode |
| 1 | Normal trigger mode |
| 4 | Multi-camera synchronization mode |
See product manual for details.
7.3.3 trgsrc
./gx_mipi_i2c.sh -w trgsrc [0,1] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r trgsrc -b your_i2c_bus_number
| value | description |
|---|---|
| 0 | Software trigger |
| 1 | Hardware trigger |
7.3.4 trgnum
./gx_mipi_i2c.sh -w trgnum [1,255] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r trgnum -b your_i2c_bus_number
The number of image frames output by one trigger signal in trigger mode.
7.3.5 trginterval
./gx_mipi_i2c.sh -w trginterval [us] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r trginterval -b your_i2c_bus_number
Trigger interval in normal trigger mode, in microseconds. Range:[0.0xFFFFFF].
7.3.6 trgone
./gx_mipi_i2c.sh -w trgone -b your_i2c_bus_number
Software trigger command.One execution will perform a soft trigger.
7.3.7 trgcount
./gx_mipi_i2c.sh -r trgcount -b your_i2c_bus_number
Trigger count statistics.
Get the total number of triggers and the number of trigger loss.
./gx_mipi_i2c.sh -w trgcount [1] -b your_i2c_bus_number
Clear trigger count.
7.3.8 i2caddr
./gx_mipi_i2c.sh -w i2caddr [new] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r i2caddr -b your_i2c_bus_number
This module support i2c address changed by software, i2c address range[0x3,0x77].
Will really take effect only after paramsave and reboot .
7.3.9 nondiscontinuousmode
./gx_mipi_i2c.sh -w nondiscontinuousmode [0/1] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r nondiscontinuousmode -b your_i2c_bus_number
Indicates whether the clock lan of the mipi signal is in continuous clock mode.
0: discontinuous mode
1: continuous mode
7.3.10 slavemode
./gx_mipi_i2c.sh -w slavemode [0/1] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r slavemode -b your_i2c_bus_number
Whether the sensor is operating in slave mode. In slave mode, the camera relies on external signals to provide XVS and XHS.
Writing this parameter will cause the camera to automatically save the current settings and reboot.
7.3.11 framecount
./gx_mipi_i2c.sh -r framecount -b your_i2c_bus_number
Get the Sensor_Frame_Count is 434 , Out_Frame_Count is 436
Sensor_Frame_Count:
The number of frames collected from the sensor is counted in a loop. Only accumulation is performed without clearing, and it is updated once per second.
Out_Frame_Count:
The number of frames output is counted in a loop. Only accumulation is performed without clearing, and it is updated once per second.
7.3.12 triggercyclemin
./gx_mipi_i2c.sh -r triggercyclemin -b your_i2c_bus_number
Get the Trigger_Cycle_Min is 0
7.3.13 daynightmode
./gx_mipi_i2c.sh -w daynightmode [0,2] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r daynightmode -b your_i2c_bus_number
daynightmode type
| value | description |
|---|---|
| 0 | Color mode |
| 1 | Black and white mode |
| 2 | External trigger mode |
7.3.14 ircutdir
./gx_mipi_i2c.sh -w ircutdir [0/1] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r ircutdir -b your_i2c_bus_number
By default, if the voltage at port A is higher than that at port B (A > B), the IRCUT module will drive the filter to enter the optical path. When the direction is switched so that the voltage at port B becomes higher than that at port A (A < B), the polarity of the electromagnetic coil reverses, and the filter is driven to exit the optical path.
7.3.15 pinpolarity
./gx_mipi_i2c.sh -w pinpolarity [0/1] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r pinpolarity -b your_i2c_bus_number
Trigger pin polarity reversal day and night. By default, a low level indicates night. After setting this value to 1, a high level indicates night.
7.3.16 ircuttimer
./gx_mipi_i2c.sh -w ircuttimer [0/1] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r ircuttimer -b your_i2c_bus_number
Whether to enable IRCUT periodic control; If enabled, IRCUT control will be performed according to the default cycle. If not enabled, control will only be carried out once during mode switching.
7.4 Image Properties
7.4.1 testimg
./gx_mipi_i2c.sh -w testimg [0/1] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r testimg -b your_i2c_bus_number
| value | description |
|---|---|
| 0 | Common image |
| 1 | Vertical color stripes |
7.4.2 pixelformat
./gx_mipi_i2c.sh -w pixelformat [4/5/6/7] -b your_i2c_bus_number
./gx_mipi_i2c.sh -r pixelformat -b your_i2c_bus_number
| value | description |
|---|---|
| 0 | Mono8 |
| 1 | Mono10 |
| 2 | Mono12 |
| 3 | Mono14 (reserved) |
| 4 | UYVY |
| 5 | RGB888 |
| 6 | Temp (reserved) |
| 7 | YUYV |
7.4.3 maxwh
./gx_mipi_i2c.sh -r maxwh -b your_i2c_bus_number
Get the maximum width and height supported by the sensor
7.4.4 minwh
./gx_mipi_i2c.sh -r minwh -b your_i2c_bus_number
Get the minimum width and height supported by the camera.
7.4.5 maxfps
./gx_mipi_i2c.sh -r maxfps -b your_i2c_bus_number
The maximum frame rate supported in the current mode.
Depending on the configured ROI, the maximum frame rate will be different. This parameter supports decimals.
7.4.6 minfps
./gx_mipi_i2c.sh -r minfps -b your_i2c_bus_number
Read the minimum frame rate supported by the current module.
7.4.7 curwh
./gx_mipi_i2c.sh -r curwh -b your_i2c_bus_number
Get the current width and height
7.4.8 imgdir
./gx_mipi_i2c.sh -r imgdir -b your_i2c_bus_number
./gx_mipi_i2c.sh -w imgdir [0/1/2/3] -b your_i2c_bus_number
Image orientation:
| value | description |
|---|---|
| 0 | normal |
| 1 | mirror |
| 2 | flip |
| 3 | flip&mirror |
7.4.9 videomode
./gx_mipi_i2c.sh -r videomode -b your_i2c_bus_number
./gx_mipi_i2c.sh -w videomode [0-7] -b your_i2c_bus_number
For cameras that use the VideoMode mode to select the frame rate of width and height, which mode to choose, Range [0-7],The corresponding capability set is VideomodeCap.
7.4.10 readmode
./gx_mipi_i2c.sh -r readmode -b your_i2c_bus_number
image model:
| value | description |
|---|---|
| 0 | normal mode |
| 1 | 2x2binning mode |
| 2 | subsampling mode |
7.4.11 lanenum
./gx_mipi_i2c.shsh -r lanenum -b your_i2c_bus_number
Configuration of the number of LANs outputting MIPI signals
| value | description |
|---|---|
| 2 | 2lane |
| 4 | 4lane |
7.4.12 mipidatarate
./gx_mipi_i2c.shh -r mipidatarate -b your_i2c_bus_number
The rate of each LAN in the MIPI system is measured in kbps.
7.4.13 fps
./gx_mipi_i2c.sh -r fps -b your_i2c_bus_number
./gx_mipi_i2c.sh -w fps -b [framerate] your_i2c_bus_number
Configure the actual frame rate of the camera in the current mode.
Range:(0,maxfps].
In video streaming mode, this parameter determines the actual frame rate.
In normal trigger mode, it is recommended to set the fps to the maxfps value to ensure the highest trigger signal responsiveness.
7.5 Image Processing
7.5.1 expmode
./gx_mipi_i2c.sh -r expmode -b your_i2c_bus_number
./gx_mipi_i2c.sh -w expmode [0/2] -b your_i2c_bus_number
Exposure type
| value | description |
|---|---|
| 0 | manual exposure |
| 2 | auto exposure |
7.5.2 aetarget
./gx_mipi_i2c.sh -r aetarget -b your_i2c_bus_number
./gx_mipi_i2c.sh -w aetarget [0,255] -b your_i2c_bus_number
The target brightness of AE algorithm.
Within the set range, the algorithm will prioritize the increase in exposure time,
and increase the gain if the exposure time reaches the maximum and still cannot reach the set target brightness value.
7.5.3 aestrategy
./gx_mipi_i2c.sh -r aestrategy -b your_i2c_bus_number
./gx_mipi_i2c.sh -w aestrategy [0/1] -b your_i2c_bus_number
Automatic exposure strategy
| value | description |
|---|---|
| 0 | Bright Area Priority mode (High Light priority |
| 1 | Dark zone priority mode (low light priority) |
7.5.4 metime
./gx_mipi_i2c.sh -r metime -b your_i2c_bus_number
./gx_mipi_i2c.sh -w metime [us] -b your_i2c_bus_number
Range (0,1000000/fps].Because of Note1 and range limitation, please read back to confirm the real metime take effect.
Unit: microseconds.
7.5.5 aemaxtime
./gx_mipi_i2c.sh -r aemaxtime -b your_i2c_bus_number
./gx_mipi_i2c.sh -w aemaxtime [16,1000000/fps] -b your_i2c_bus_number
Automatic maximum exposure time range: 16 to 1,000,000/fps (unit: microseconds)
7.5.6 exptime
./gx_mipi_i2c.sh -r exptime -b your_i2c_bus_number
Get the current exposure time. This command is valid in any exposure mode.
Unit: microseconds.
7.5.7 curgain
./gx_mipi_i2c.sh -r curgain -b your_i2c_bus_number
Gets the current gain. This command is valid in any exposure mode.
7.5.8 mgain
./gx_mipi_i2c.sh -r mgain -b your_i2c_bus_number
./gx_mipi_i2c.sh -w mgain [gain] -b your_i2c_bus_number
The manual gain value, range and step size vary by model.
7.5.9 aemaxgain
./gx_mipi_i2c.sh -r aemaxgain -b your_i2c_bus_number
./gx_mipi_i2c.sh -w aemaxgain [0,maxgain] -b your_i2c_bus_number
Maximum value of auto gain. The range and step vary according to the model.
Most sensors have a gain step of 0.1dB, some are 0.3dB.
7.5.10 wbmode
./gx_mipi_i2c.sh -r wbmode -b your_i2c_bus_number
./gx_mipi_i2c.sh -w wbmode [0/2] -b your_i2c_bus_number
wbmode type
| value | description |
|---|---|
| 0 | manual white balance |
| 2 | auto white balance |
7.5.11 awbcolortempmin
./gx_mipi_i2c.sh -r awbcolortempmin -b your_i2c_bus_number
./gx_mipi_i2c.sh -w awbcolortempmin [1000,15000] -b your_i2c_bus_number
White balance minimum color temperature (K),Range[1000,15000].
7.5.12 awbcolortempmax
./gx_mipi_i2c.sh -r awbcolortempmax -b your_i2c_bus_number
./gx_mipi_i2c.sh -w awbcolortempmax [1000,15000] -b your_i2c_bus_number
White balance maximum color temperature (K),Range[1000,15000].
7.5.13 mwbbgain
./gx_mipi_i2c.sh -r mwbbgain -b your_i2c_bus_number
./gx_mipi_i2c.sh -w mwbbgain [0,4095] -b your_i2c_bus_number
Manual white balance B gain [0,4095]
7.5.14 mwbrgain
./gx_mipi_i2c.sh -r mwbrgain -b your_i2c_bus_number
./gx_mipi_i2c.sh -w mwbrgain [0,4095] -b your_i2c_bus_number
Manual white balance R gain [0,4095]
7.5.15 colortemp
./gx_mipi_i2c.sh -r colortemp -b your_i2c_bus_number
Current color temperature (k)
7.5.16 currgain
./gx_mipi_i2c.sh -r currgain -b your_i2c_bus_number
Current white balance R gain [0,4095]
7.5.17 curbgain
./gx_mipi_i2c.sh -r curbgain -b your_i2c_bus_number
Current white balance B gain [0,4095]
7.5.18 aemintime
./gx_mipi_i2c.sh -r aemintime -b your_i2c_bus_number
./gx_mipi_i2c.sh -w aemintime [16,1000000/fps] -b your_i2c_bus_number
Automatic minimum exposure time range: 16 to 1,000,000/fps (unit: microseconds)
7.5.19 gamma_index
./gx_mipi_i2c.sh -r gamma_index -b your_i2c_bus_number
./gx_mipi_i2c.sh -w gamma_index [0,12] -b your_i2c_bus_number
The GX series has preset gamma options, with different values representing different gamma settings:
0: Gamma off, that is, linear format.
1: Default gamma.
2: gamma_1.6
3: gamma_1.8
4: gamma_2.0
5: gamma_2.2
6: Style 1
7: Style 2
8: Style 3
9: Style 4
10: Style 5
11: Style 6
12: User-defined gamma (TODO)
7.5.20 antiflicker
./gx_mipi_i2c.sh -r antiflicker -b your_i2c_bus_number
./gx_mipi_i2c.sh -w antiflicker [0/1] [50/60/100/120/200/240] -b your_i2c_bus_number
param1:Whether the antiflicker function is enabled [0/1]
param2:
Anti-flicker frequency.
Options: 50, 60, 100, 120, 200, 240.
Once set, the camera's exposure time will be an integer multiple of (1s/(freq*2)) to avoid banding.
For stronger lighting, it is recommended to use a higher value to prevent overexposure.
7.5.21 wdrparam
./gx_mipi_i2c.sh -r wdrparam -b your_i2c_bus_number
./gx_mipi_i2c.sh -w wdrparam [0/1] [0,255] -b your_i2c_bus_number
param1:Whether the WDR function is enabled [0/1]
param2:WDR intensity [0-255]
7.5.22 sharppen
./gx_mipi_i2c.sh -r sharppen -b your_i2c_bus_number
./gx_mipi_i2c.sh -w sharppen [0,255] -b your_i2c_bus_number
Sharpening intensity [0-255]
7.5.23 denoise2d
./gx_mipi_i2c.sh -r denoise2d -b your_i2c_bus_number
./gx_mipi_i2c.sh -w denoise2d [0,255] -b your_i2c_bus_number
2D noise reduction intensity [0-255]
7.5.24 denoise3d
./gx_mipi_i2c.sh -r denoise3d -b your_i2c_bus_number
./gx_mipi_i2c.sh -w denoise3d [0,255] -b your_i2c_bus_number
3D noise reduction intensity [0-255]
7.5.25 saturation
./gx_mipi_i2c.sh -r saturation -b your_i2c_bus_number
./gx_mipi_i2c.sh -w saturation [0,100] -b your_i2c_bus_number
Saturation [0-100]
7.5.26 contrast
./gx_mipi_i2c.sh -r contrast -b your_i2c_bus_number
./gx_mipi_i2c.sh -w contrast [0,100] -b your_i2c_bus_number
contrast [0-100]
7.5.27 hue
./gx_mipi_i2c.sh -r hue -b your_i2c_bus_number
./gx_mipi_i2c.sh -w hue [0-100] -b your_i2c_bus_number
hue [0-100]
7.5.28 slowshutter
./gx_mipi_i2c.sh -r slowshutter -b your_i2c_bus_number
./gx_mipi_i2c.sh -w slowshutter [0/1] [20] -b your_i2c_bus_number
Parameter 1: Selects automatic frame rate reduction mode (1) or fixed frame rate mode (0).
Parameter 2: Sets the gain threshold at which frame rate reduction starts in automatic frame rate reduction mode. The unit is 0.1 dB.
Note: Automatic frame rate reduction mode is only effective in auto-exposure mode + video streaming mode. When using this function, it must be used together with the maximum exposure time setting (aemaxtime).
In automatic frame rate reduction mode, during auto-exposure adjustment the system prioritizes increasing the exposure time to minimize gain as much as possible. When the sensor gain reaches the user-defined maximum value (Parameter 2), the auto-exposure algorithm will gradually reduce the frame rate and further extend the exposure time, until the exposure time reaches the auto-exposure maximum (aemaxtime).
In low-light environments, this results in lower noise, but the frame rate will be reduced.
7.5.29 ldc
./gx_mipi_i2c.sh -r ldc -b your_i2c_bus_number
./gx_mipi_i2c.sh -w ldc [0,255] -b your_i2c_bus_number
Lens Distortion Correction [0-255], abbreviated as LDC, with 0 indicating disable.
Note: The parameters of this function setting must be set before the camera captures images to be effective.
7.5.30 dehaze
./gx_mipi_i2c.sh -r dehaze -b your_i2c_bus_number
./gx_mipi_i2c.sh -w dehaze [0,255] -b your_i2c_bus_number
Defogging intensity [0-255], 0 indicates off.
7.5.31 drc
./gx_mipi_i2c.sh -r drc -b your_i2c_bus_number
./gx_mipi_i2c.sh -w drc [0,255] -b your_i2c_bus_number
Digital wide dynamic range. Range [0-255], 0 indicates off.
7.6 IO Control
7.6.1 trgdelay
./gx_mipi_i2c.sh -r trgdelay -b your_i2c_bus_number
./gx_mipi_i2c.sh -w trgdelay [0,1000000] -b your_i2c_bus_number
Trigger delay, effective under both soft trigger and hard trigger mode.
range: 0 to 1000000 (unit: microsecond)
7.6.2 trgedge
./gx_mipi_i2c.sh -r trgedge -b your_i2c_bus_number
./gx_mipi_i2c.sh -w trgedge [0,1] -b your_i2c_bus_number
Effective trigger edge in hard trigger mode.
| value | description |
|---|---|
| 0 | Rising edge |
| 1 | Falling edge |
7.6.3 trgexp_delay
./gx_mipi_i2c.sh -r trgexp_delay -b your_i2c_bus_number
./gx_mipi_i2c.sh -w trgexp_delay [0,100000] -b your_i2c_bus_number
Exposure delay, i.e. the time to turn on the Strobe signal in advance.
range: 0 to 1000000 (unit: microsecond)
The difference between trgexp_delay and trgdelay, see manual for details.
7.6.4 outio1_rvs
./gx_mipi_i2c.sh -r outio1_rvs -b your_i2c_bus_number
./gx_mipi_i2c.sh -w outio1_rvs [0,1] -b your_i2c_bus_number
Reverse OUT_IO1 high and low levels if set to 1.
8 Notes
Note1: All parameters of exposure time are in microseconds. However, due to the properties of the sensor, the actual exposure time unit of the sensor is 1 line, can not be accurate to 1us.
9 Configuration Method for Typical Application Scenarios:
9.1 Stream mode:
./gx_mipi_i2c.sh -w imgacq 1 -b your_i2c_bus_number
9.2 Trigger mode:
./gx_mipi_i2c.sh -w imgacq 0 -b your_i2c_bus_number
./gx_mipi_i2c.sh -w workmode 1 -b your_i2c_bus_number
./gx_mipi_i2c.sh -w trgsrc 0 -b your_i2c_bus_number
./gx_mipi_i2c.sh -w trgnum 1 -b your_i2c_bus_number
./gx_mipi_i2c.sh -w trginterval 0 -b your_i2c_bus_number
./gx_mipi_i2c.sh -w trgone -b your_i2c_bus_number
According to the above command, you can take a picture.
9.3 Sync mode:
Note: The synchronous mode requires two cameras.
./gx_mipi_i2c.sh -w slavemode 0 -b your_i2c_bus_number
./gx_mipi_i2c.sh -w slavemode 1 -b your_i2c_bus_number
./gx_mipi_i2c.sh -w workmode 4 -b your_i2c_bus_number
./gx_mipi_i2c.sh -w workmode 4 -b your_i2c_bus_number
./gx_mipi_i2c.sh -w imgacq 1 -b your_i2c_bus_number
./gx_mipi_i2c.sh -w imgacq 1 -b your_i2c_bus_number
./veye_raspipreview -cs 1 -p '0,0,1000,520' -t -1
./veye_raspipreview -cs 0 -p '600,0,1280,720' -t -1
After completing the above configuration, you can proceed to start capturing images.
Please note that if you need to adjust the frame rate during the image acquisition process, you must first stop the acquisition before making the changes.
After stopping the acquisition, the camera will still complete the capture of the current frame.
The newly set parameters will only take effect afterward.