[libcamera-devel] How to detect camera after power on the raspberryPi.
tetsuya.nomura at soho-enterprise.com
tetsuya.nomura at soho-enterprise.com
Tue Oct 20 13:48:42 CEST 2020
Dear Sirs
Maybe I understand less than 50% of your conversation below, but if you need MIPI 4 lane camera board
which can be connected to Raspi CM3+, I can provide you the IMX219 4lane camera board.
And if you are interested in controlling the focus, I can also send you the AF type module of IMX219.
The other option, IMX378 which is MX477 compatible sensor, with focus driver is also available.
https://soho-enterprise.com/2020/08/31/raspi-libcameraqcam-for-imx378/
I already tested them on Raspi 3 and 4 with qcam and they works well.
I tested the 4 lane mode of IMX219 module with Tinker Edge R, this means you can get full pixel 30fps image.
https://soho-enterprise.com/2020/02/27/post-681/
I captured high speed RAW image in 4 lane mode as below article.
https://soho-enterprise.com/2020/04/10/high-frame-rate-high-speed-camera-on-tinker-edge-r-testing-mipi-4-lane-feature/
And if you could help us to operate our SE-CXB01 Tx/Rx, the FPD LINK III camera extension board,
I also can provide the one.
(Let me try the method using "dtoverlay" first.)
https://soho-enterprise.com/2020/10/19/dual-camera-system-under-development-se-cxb01-tx-rx/
I hope my offer will be your help.
Best Regards,
NOMURA
-----Original Message-----
From: Kieran Bingham <kieran.bingham at ideasonboard.com>
Sent: Tuesday, October 20, 2020 7:50 PM
To: Dave Stevenson <dave.stevenson at raspberrypi.com>
Cc: Laurent Pinchart <laurent.pinchart at ideasonboard.com>; libcamera-devel at lists.libcamera.org; tetsuya.nomura at soho-enterprise.com; Niklas Söderlund <niklas.soderlund at ragnatech.se>
Subject: Re: [libcamera-devel] How to detect camera after power on the raspberryPi.
Hi Dave,
On 20/10/2020 11:32, Dave Stevenson wrote:
> Hi Kieran
>
> On Tue, 20 Oct 2020 at 10:36, Kieran Bingham
> <kieran.bingham at ideasonboard.com> wrote:
>>
>> Hi Dave,
>>
>> On 19/10/2020 16:53, Dave Stevenson wrote:
>>> Hi Laurent
>>>
>>> On Mon, 19 Oct 2020 at 13:50, Laurent Pinchart
>>> <laurent.pinchart at ideasonboard.com> wrote:
>>>>
>>>> Hi Dave,
>>>>
>>>> On Mon, Oct 19, 2020 at 11:10:55AM +0100, Dave Stevenson wrote:
>>>>> On Mon, 19 Oct 2020 at 10:38, <tetsuya.nomura at soho-enterprise.com> wrote:
>>>>>>
>>>>>> Dear Sirs.
>>>>>>
>>>>>> May I have your favor about initialization of the RaspberryPi and the camera?
>>>>>>
>>>>>> I'm now evaluating the camera extension board of FPD LINK III technology to extend the camera cable for 2~3m from the RaspberryPi.
>>>>>> https://soho-enterprise.com/2020/10/11/post-866/
>>>>>>
>>>>>> This board can pass the I2C communication to IMX219 after
>>>>>> configuring the transceiver chip, However, after configuration
>>>>>> and run the qcam, it seems the qcam program does not detect the IMX219 And I cannot start the camera even I designate the image sensor name.
>>>>>
>>>>> The Pi kernel driver for imx219 probes the sensor driver as the
>>>>> module loads, which is only a few seconds into boot if you've
>>>>> added "dtoverlay=imx219" into config.txt. No or incorrect response
>>>>> from the sensor and it won't create the /dev/video0 device nodes.
>>>>> If your transceivers need some form of configuration then I
>>>>> suspect this has not happened by this point.
>>>>>
>>>>> The correct approach is probably to have a driver for your
>>>>> transceiver in the kernel driver chain, ie imx219 -> transceiver
>>>>> -> Unicam, however that opens a big can of worms over
>>>>> configuration as it forces the use of the Media Controller API to
>>>>> configure each link independently.
>>>>
>>>> A very open question: assuming we can retain control through the
>>>> video node as implemented today for the existing use cases, and
>>>> implement MC-based pipeline control in parallel in the driver
>>>> (possibly selecting one of the options through a module parameter)
>>>> for use cases that would be tricky to support otherwise, would you be OK with that ?
>>>
>>> I'm totally OK with it!
>>> I've had a couple of other threads in the last few weeks that kicked
>>> me to look into MC and what is required.
>>>
>>> The first was trying to support Analog Devices ADV7482 which Kieran
>>> will know and "love". That showed up a couple of oddities around
>>
>> Ahem, cough cough. Indeed :-)
>>
>> Is there a board available that can connect this to the RPi?
>> If so I'd be interested in buying one.
>
> Not that I'm aware of.
> The forum contributor's company had brought up a board with ADV7282-M
> (analogue video to CSI2) on. Based on that they ploughed ahead in
> building a prototype Compute Module carrier board for ADV7482 (and DPI
> to VGA as done on the VGA666 board). That's the point that he posted
> on the forums as things didn't connect up nice and easily.
> He has been kind enough to ship one to me from Chile(!), but I haven't
> had time to power it up as yet. Looking at the PCB it appears to only
> route 2 CSI-2 data lanes which is a bit of a shame - oh well.
Oh indeed, would have been nice to route all 4 lanes for a compute-module. Perhaps it's not too late for their next board revision?
Well if you hit any blocker, or need anything let us know.
>
>>> linking to async_notifier and incorrect behaviour with our use of
>>> pad indexes. Those two bits are easy to rectify, although having
>>> made the async_notifier stuff match other platforms it no longer
>>> probed the simple modules correctly :-( There must be a solution
>>> there somewhere, it's only finding the correct runes.
>>
>> The ADV748x requires endpoint matching, and it complicates things indeed.
>>
>> For a long time, I think the only receiver that supported this driver
>> was the Renesas RCar-CSI2/VIN.
>>
>> There is a series here:
>>
>> https://lore.kernel.org/linux-media/20200701062140.12953-1-laurent.pi
>> nchart+renesas at ideasonboard.com/
>>
>> Which should finally ease things and make endpoint matching
>> compatible with all receivers, which I believe has landed in v5.9.
>
> I thought I'd been running on our 5.9 branch, but looking at the
> branch I'd pushed for their reference[1] it looks to be 5.4.
> I'll try rebasing and see what I get.
>
> [1] https://github.com/6by9/linux/tree/adv748x
>
>>> The second use case was Toshiba's TC358746/TC358748 parallel to CSI
>>> bridges, where similar to this case it's chaining sensor ->
>>> TC35874[6|8] -> Unicam.
>>>
>>> With regard switching behaviours, it's relatively simple to look at
>>> the immediately upstream node and see if it has any sink pads. If
>>> yes we go MC, otherwise video-device. Doing so dynamically at
>>> runtime is nicer than a module parameter.
>>
>> +Niklas,
>>
>> I sort of agree here, as it should be easier for end users. Niklas
>> may have different opinions as he has felt pain of supporting both MC
>> and non-MC interfaces in the RCar-VIN.
>
> Felt as in past tense and you've dropped non-MC?
> I'll have a look at the RCar-VIN driver to see if I can work through
> the differences.
> ...
> It appears MC is enabled dependent on the platform - that gives me
> something to follow.
> I'm a little confused though as it still seems to call
> v4l2_subdev_call(sd, pad, set_fmt, pad_cfg, &format); from
> rvin_s_fmt_vid_cap to set the format on the upstream subdevice sink
> pad. Unless I'm missing something then I thought it wasn't allowed in
> MC to propagate formats across links.
>
>>> That's the easy bit. The harder bit is working out which bits of
>>> functionality that then requires dropping when in MC mode. At the
>>> moment I'm not totally clear over the correct approach for
>>> configuring the actual Unicam hardware - S_FMT on /dev/videoN, or MC
>>> API setting the sink pad format of Unicam. The mismash of
>>> MEDIA_BUS_FMT_xxx vs V4L2_PIX_FMT_xxx formats surfaces again, how do
>>> you avoid format mismatches (and unpacking to 16bit), and which do
>>> you use to configure CSI data type filtering.
>>> I'm assuming all the subdev API calls for EDIDs, timings (DV and
>>> standards), parm, and enumerations disappear with MC too, as you
>>> open the subdev node to configure that lot.
>>
>> Indeed, those can then be operated on the subdev node.
>
> OK, so lots of disable_ioctl calls but those are easy enough and
> already half in place for when the subdev doesn't support them.
>
> So just the step of understanding what configures the hardware
> format/width/height/stride/buffer size.
Userspace ? I think that's where all the format propagation comes in.
I'm very much aware that the TC358746/TC358748 is not a camera sensor, but libcamera has so much of this 'done' that I do wonder how non-camera
(media-controller) type devices should be used in the future. Perhaps there is some core parts of libcamera that should be factored out to facilitate non-camera type devices that use the same pipelines, or perhaps libcamera would grow to support them. It feels like a bit of a shame that they are out of scope for us at the moment.
Same with the ADV748x HDMI input ... that's not a camera, but libcamera would make it much easier to configure/capture from - though technically, the 8 analogue inputs could be ... ;-)
--
Kieran
> Dave
>
>>>
>>> Thanks
>>> Dave
>>>
>>>>> One workaround would be to remove "dtoverlay=imx219" from
>>>>> config.txt and use dynamic device tree overlay loading to load the
>>>>> relevant modules later in boot. "sudo dtoverlay imx219" should do that for you.
>>>>> The niggle is that when done from config.txt the firmware fixes up
>>>>> the camera shutdown GPIO to match the platform (it moves GPIOs
>>>>> between different variants of the Pi). If loading dynamically then
>>>>> this can't happen, and you'll need to fix up the regulator
>>>>> shutdown line manually [1] (assuming that it is actually
>>>>> controllable at the other end of the FPD Link)
>>>>>
>>>>> [1]
>>>>> (https://github.com/raspberrypi/linux/blob/rpi-5.4.y/arch/arm/boot
>>>>> /dts/overlays/imx219-overlay.dts#L77)
>>>>>
>>>>>> I can start the IMX219, get the RAW image by our own program and see the image.
>>>>>> Then if qcam can send the necessary command to IMX219 when start
>>>>>> running the qcam, I think I can see the image through qcam program.
>>>>>>
>>>>>> It would be great if you could give us an advice to solve it.
>>>>>> I appreciate your kind help in advance.
>>>>>>
>>>>>> Best Regards,
>>>>>>
>>>>>> NOMURA
>>>>
>>>> --
>>>> Regards,
>>>>
>>>> Laurent Pinchart
>>> _______________________________________________
>>> libcamera-devel mailing list
>>> libcamera-devel at lists.libcamera.org
>>> https://lists.libcamera.org/listinfo/libcamera-devel
>>>
>>
>> --
>> Regards
>> --
>> Kieran
--
Regards
--
Kieran
More information about the libcamera-devel
mailing list