@jambojettt
Normally, the PiOS you installed comes with kernel-headers. Could you tell me which image link you used?
Can you help run this script and send me the results?
uname -a
ls /usr/lib/modules/
ls /usr/lib/modules/$(uname -r)
@jambojettt
Normally, the PiOS you installed comes with kernel-headers. Could you tell me which image link you used?
Can you help run this script and send me the results?
uname -a
ls /usr/lib/modules/
ls /usr/lib/modules/$(uname -r)
@jambojettt said in Can't get v4l2 to work, rasbperry pi 4b, rpi os x64, 6.12.57-v8+:
@veye_xumm yes, it updated to 6.12.57, but this problem also was in 6.12.47 that it was updated from.
How do I get the headers?
My Raspberry Pi comes with headers by default. You might want to reinstall piOS? We've already released the 6.12.47 ko file on GitHub.
@jambojettt
Sorry for the slightly delayed reply. Normally, piOS comes with kernel-headers pre-installed. For example, here is a screenshot of my current system:

I suspect that you might have updated to a newer minor version of piOS, which caused this issue. The current major version of piOS should be 6.12.47.
@nkos
Below is a tutorial on using this camera module on Radxa boards.
https://wiki.veye.cc/index.php/MV_Camera_on_Radxa_Boards
Unlike the Raspberry Pi platform, on RK platforms, some preparatory work is required to use our module, which involves configuring the appropriate image parameters using media-ctl.
However, based on the information you provided, it seems you have already set it up correctly.
Once this preparation is complete, the process of capturing images is the same as on the Raspberry Pi.
If you encounter any issues, you can refer to the code example at:
https://wiki.veye.cc/index.php/MV_Camera_on_Radxa_Boards#Example_of_yavta
Additionally, we have an open-source client software available for your use and reference.
@jambojettt
Normally, after you install the kernel headers using the command sudo apt install raspberrypi-kernel-headers, you should be able to compile successfully.
May I ask — after performing this step, what error do you see during compilation?
@jambojettt According to the dmesg information, you have successfully installed the veyecam2m driver. However, the camera was not detected. What model of camera are you using?
@brunosaisi
For configuring this camera via I2C, the process is not done through v4l2-ctl but directly using a script. Please note the following regarding this script:
Below is an explanation regarding the I2C bus.
https://wiki.veye.cc/index.php/I2c_bus_number_and_video_node
For long exposure usage, you may need to configure the lowlight function or the new_mshutter function. Please refer to the corresponding section in the link below.
https://wiki.veye.cc/index.php/VEYE-MIPI-290/327_i2c/#new_mshutter
@john
We compared the baseboards of the J401 and J401B and found no differences. Regarding the earlier issue with the J401, we suspect that the USB hub chip, which is mounted on the same I2C bus as the camera, was intercepting responses for the I2C address 0x3b. This aligns with your hypothesis.
Could you visually inspect the J401B and check if there are any version or sub-model changes in the USB hub chip compared to the J401?
Regarding your intention to test the response issue at address 0x22, you do not need to recompile the device tree blob (dtb). You can directly use the command i2cdetect -y -r i2cnum to perform the test.
@nimadibaj
You have implemented the function of writing 0xff to 0x000b. Similarly, proceed to write the subsequent registers as well.
The method for writing the subsequent registers is the same as that for writing the 0x0b register, but they must be written in sequence.
Addr--->data
0x10 0xDE
0x11 0xC2
0x12 0x00
0x13 0x00
@nimadibaj said in Saving VeyeMIPI parameters:
1_ Writing 0xff to 0x000b solved our problem and now the CSI-2 output of the module is in HS mode not LP mode. Thank you. Please give us a command to save this change.
Sorry, this command cannot save settings during a power outage.
@nimadibaj said in Saving VeyeMIPI parameters:
2_ We are trying to change video frame rate (now is 30fps and we need 25fps).
by these commands we cannot do this :
0x10 0xDE
0x11 0xC2
0x12 0x00
0x13 0x00
(sending Two byte, then sending next two byte and ... ).
write_videoformat()
{
local videoformat=0;
local res=0;
res=$(./i2c_write $I2C_DEV $I2C_ADDR 0x10 0xDE );
res=$(./i2c_write $I2C_DEV $I2C_ADDR 0x11 0xC2 );
if [ $PARAM1 = "PAL" ] ; then
res=$(./i2c_write $I2C_DEV $I2C_ADDR 0x12 0x0);
elif [ $PARAM1 = "NTSC" ] ; then
res=$(./i2c_write $I2C_DEV $I2C_ADDR 0x12 0x1);
fi
res=$(./i2c_write $I2C_DEV $I2C_ADDR 0x13 0x00 );
printf "w videoformat is %s\n" $PARAM1;
}
The detailed code of the i2c_write function in the above example shows the actual bytecode it sends. Specifically, i2c_write sends multiple bytes in a single standard I2C transaction to modify register values.The specific steps are the same as writing 0xff to 0x000b.
@nkos I will attempt to build a 6.x version system based on the original BSP approach.
@nimadibaj
I don't know which platform your motherboard is using, but if you have used the veye_mipi_i2c.sh script, there is an i2c_write file in that directory. You can use this file to modify the aforementioned registers.
@nimadibaj
Use the i2c_write command to change 0x000b to 0xff.
Only ISP-related parameters can be persistently saved after power-off through the paramsave command. Therefore, I recommend that you reconfigure your desired parameters in the startup script during program design.
As for which commands can be saved, you can refer to the veye_mipi_i2c.sh source code. If the corresponding read/write functions contain operations like './i2c_write $I2C_DEV $I2C_ADDR 0x10 0xDA', it indicates that the function's register belongs to the ISP category and can be saved using paramsave.
@lpcq2000 抱歉现在MCU bypass模式已经不再被支持了。我们的资料有一些迟滞,回头会更新到上面。
@siderat I think this one will work.
@siderat said in VEYE-MIPI-327E lens YT1.8-2.8I poor picture quality in the dark:
If I buy the YT0.95-4I lens with an f.095 aperture, will it improve my camera's low-light sensitivity, as in that video? Or maybe there are some other settings I'm missing.