How to (dynamically) add and remove adapted OV5693 CSI camera driver ?


we need to adapt the existing driver to our sensor module. For that purpose we made changes to the driver code and now have trouble to get it installed.

If possible we do not want to rebuild the kernel but to use a dynamic way (e.g. loadable kernel modules) to install and uninstall the driver.

So assuming that we already built a new .ko file … how do we proceed to exchange the old OV5693 driver with our new one ?

Is there a way to achieve this without having to rebuild the kernel ?

(Yes, we have read tons of doc and made many tests - didn’t get it to work though.)

hello JB_atto,

  1. may I know which JetPack release you’re working with?
    you may have your own implementation if you’re working with kernel-4.4.
  2. There’s another way to built all sensor drivers all together and working with plugin-manager to distinguish them.
    please refer to [Sensor Driver Programming Guide] for the Using Plugin Manager session.

Thank you for your quick answer, Jerry. Because of the time zones the answers to your questions will come in about 6 hours. I hesitate to answer myself because while I think I know … I may still be wrong :-). Thanks again and please stay with us for a bit to get this going.

Guess I should add that we are currently starting with getting into this project. So it may be better if we do not tell you what we currently use but maybe you just tell us what we should use in order to have the least work and the most options for the future.

One point is that we certainly would like to do things in such a way that we can use the on chip resources for the image data (pre)processing, but if the other way which only gives us the raw data is easier and faster then maybe we’ll have to start out that way and got the other way later. Really it would be great if you could just say “Go there, download this and then 1…2…3 you have it” :-) … But I suppose that’s what’s behind the link you gave, although I believe that we looked at that document.

hello JB_atto,

loadable camera kernel module only supported for our formal release ‘before’ JetPack-3.3 (kernel-4.4)
since later release upgrade the kernel version and there’s limitation for low-level kernel drivers.

please access Jetson Download Center to gather all the necessary documentation and packages. thanks

Thanks Jerry, so that’s the same I also heared. I was hoping it’s not true. So if I understand this correctly we either have to only use old versions or we have to rebuild the kernel every time we want to change something about the driver.

About your second recommendation - We HAVE looked hard into all this for some time now and unfortunately while we had some partial successes it is still not working. But I’m not familiar with the details and as I wrote before … the details will come in a bit later today. Then our questions will become a lot more precise and technical.

I’m really sorry to hear that there is no way to use the current JetPack and to work with loadable kernel modules. I guess we invested some time to make that work … Too bad. But thank you for pointing us in the right direction.

I’m using kernel 4.4, and I’m also trying to get a camera driver working as a module. In my case, the driver functions perfectly if I build it into the kernel, but does not if I load it as a module. In-kernel, it loads before tegra-vi4, but as a module it loads afterwards – it appears that this load ordering difference creates the problem. It’s detecting and connecting to the hardware properly (creating v4l-subdev’s and such), and seems to be working other than that. Is there any way to fix this ordering issue?