I am wondering, how you guys succeeded to have 4k@30 FPS with only 2 lanes, while all Others jetson compatible camera are caped at 10/15 . Can you explain ?
We have also seen several cameras that are not able to reach 4K@30fps with 2 MIPI CSI Lanes. I think it depends on the sensor, if it supports that mode, the internal clock speed, the MIPI CSI speed on the lanes, etc. In theory Jetson NX (where the driver was tested) is able to reach 2.5Gbps on each lane. The IMX477 uses 10bpp so it should be possible to get 33fps.
This post is for Jetson Nano questions, we are currently working to port the driver to Jetson Nano and run the test. However, Jetson Nano is 1.5Gbps per lane. So the max fps should be 22fps. You can use this RidgeRun Spreadsheet to get some theoretical numbers. You can use the Jetson NX post if you have questions about the usage of the camera in the NX board
Hmm, according to that, in theory Nano should be able to achieve 4K resolution (4056 x 2288 mode) at almost 30 fps with 2 lanes (assuming 85% efficiency as above), which I believe is best replacement for full-frame (4056 x 3040) @ 30fps mode at Jetson NX. Only issue, I was unable to find register configuration/values for this mode in any openly available IMX477 driver sources.
I’m about to try this today, anyone else but the developers had any success with this? I’m obviously a bit ambivalent about removing the resistor… but should but ok I guess. Hopefully I wont short out the pads by mistake. Will report back on success or failure. Fingers crossed.
I have tried to get this working on my nano development board today. Building the patched kernel and DTB seemed to work fine, although some of the instructions do still refer to paths and names that are relevant to the NX rather than the nano.
I got my own-built kernel running but all attempts to get it to use the new DTB by copying to the /boot or /boot/dtb directories resulted in the nano not booting into the kernel at all. In the end I used the flash.sh script on the host to install everything new on the nano and then it booted fine. I can see that my own kernel is running and that the new DTB is being used because now there are messages in the kernel log refering to imx477 rather than imx219.
Unfortunately, the camera is not recognised. It looks like it cannot be found on the i2c bus. I see the following error messages in the kernel log on booting:
Aug 2 20:48:53 nano kernel: [ 1.188047] i2c i2c-7: Failed to register i2c client imx477 at 0x1a (-16)
Aug 2 20:48:53 nano kernel: [ 1.188052] i2c i2c-7: of_i2c: Failure registering /cam_i2cmux/i2c@0/rbpcv3_imx477_a@1a
Aug 2 20:48:53 nano kernel: [ 1.188056] i2c i2c-7: Failed to create I2C device for /cam_i2cmux/i2c@0/rbpcv3_imx477_a@1a
Aug 2 20:48:53 nano kernel: [ 1.188073] i2c i2c-6: Added multiplexed i2c bus 7
Aug 2 20:48:53 nano kernel: [ 1.188367] i2c i2c-8: Failed to register i2c client imx477 at 0x1a (-16)
Aug 2 20:48:53 nano kernel: [ 1.188371] i2c i2c-8: of_i2c: Failure registering /cam_i2cmux/i2c@1/rbpcv3_imx477_e@1a
Aug 2 20:48:53 nano kernel: [ 1.188375] i2c i2c-8: Failed to create I2C device for /cam_i2cmux/i2c@1/rbpcv3_imx477_e@1a
Aug 2 20:48:53 nano kernel: [ 1.188390] i2c i2c-6: Added multiplexed i2c bus 8
Aug 2 20:48:53 nano kernel: [ 1.188395] i2c-mux-gpio cam_i2cmux: 2 port mux on Tegra I2C adapter adapter
Aug 2 20:48:53 nano kernel: [ 1.188763] imx477 6-001a: tegracam sensor driver:imx477_v2.0.6
I have (carefully) removed the resistor R8 on the camera as instructed and am fairly sure I haven’t damaged it, although I haven’t tried it with a RasPi since I made the change.
Thanks - I missed that. The changes to the device tree suggested in the issue solved my problems here. The camera is working fine now. I’m glad I didn’t mess it up when I removed the resistor.
We updated the instructions and the repository in order to have one folder for nano and one for NX to make the process easier and avoid some of the issues reported when applying the patch.
@jadwardeh we don’t have information about this yet.
Just made it to work with nano, using Arducam’s .dtb file (which however only allows one camera in slot 0). Am I correct that the only issue here is the status: okay / disabled change, as discussed in the issue? If so, could you please add a correction to your github sources?
I have one extra question, how is 4032x3040 30fps mode possible on nano, when in theory with 2 lanes 1.5 Gbps each bandwidth is not enough?
Hey @micmys just a quick question,… so you basically just took the dtb file from arducams deb package and specified that in the nano boot config instead of the one built when following the ridgerun description?
My cam is still not working and I’m waiting for some sign from Ridgerun… maybe it’s the fact that we are using the newer dev boards and they… aren’t not sure.
Just an update on this… got it working by using the arducam dtb as mentioned. Only issue is the image for me is flipped upside down, is it the same for you?