* [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference @ 2026-09-14 23:38 ` Laurent Pinchart 2026-09-17 13:47 ` Bryan O'Donoghue ` (5 more replies) 0 siblings, 6 replies; 23+ messages in thread From: Laurent Pinchart @ 2026-09-14 23:38 UTC (permalink / raw) To: libcamera-devel, linux-media Hello, As most of you already know, the Linux Plumbers Conference will host a Camera & ISP BoF in Prague in three weeks ([1]). The initial proposal for a microconference has unfortunately been downgraded by the program committee to a 45 minutes BoF. We have therefore decided to limit the discussion to three topics at most. Two topics have been approved so far: - RGB-IR support in V4L2 and libcamera by Rishikesh Donadkar and Devarsh Thakkar, Texas Instruments The Linux kernel V4L2 API does not support RGB-IR image sensors. While building blocks necessary to handle those devices are slowly being merged, RGB-IR support itself hasn't been tackled yet. Rishikesh and Devarsh will also present this topic at the OSS Europe conference ([2]). - Camera module identification by Stefan Klug, Ideas on Board Camera tuning and calibration depend not only on the image sensor, but also on the lens and other characteristics of camera modules. While Linux supports identifying image sensors, it completely lacks the concept of camera modules. Identification of camera modules requires coordination between platform firmware (DT or ACPI), the kernel and userspace. Discussions will benefit from the presence of DT maintainers. We can consider scheduling a third topic. Proposals are welcome. Due to the 45 minutes BoF format, we will focus on discussions and won't be able to afford presentations. All topic leads are expected to circulate discussion materials on public mailing lists at least a week before the event to give attendees time to read through proposals. The materials should summarize the issue at hand and the ongoing work, and clearly state the questions that will be discussed during the BoF. Slides that support the discussions, if any, should also be submitted prior to the event. If there is enough interest, I am considering booking a meeting room on Wednesday morning (location to be determined, likely outside of the LPC venue) to extend the BoF. We could continue discussions on the topics listed above, as well as schedule additional topics. We would overlap with the following LPC microconferences: - Networking Track - Containers and checkpoint/restore MC - Rust MC - Scheduler and Real-Time MC - Build Systems MC Please let me know if you would be interested in attending a Wednesday morning session by replying to this e-mail (publicly or privately). If you would like to propose additional topics, please do so publicly. [1] https://lpc.events/event/20/contributions/2364/ [2] https://osselceu2026.sched.com/event/2RaZj/enabling-multi-stream-camera-sensors-in-linux-rgb+ir-streams-and-embedded-metadata-rishikesh-donadkar-devarsh-thakkar-texas-instruments -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-14 23:38 ` [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference Laurent Pinchart @ 2026-09-17 13:47 ` Bryan O'Donoghue 2026-09-18 8:08 ` johannes.goede 2026-09-18 9:18 ` Laurent Pinchart 2026-09-27 9:01 ` johannes.goede ` (4 subsequent siblings) 5 siblings, 2 replies; 23+ messages in thread From: Bryan O'Donoghue @ 2026-09-17 13:47 UTC (permalink / raw) To: Laurent Pinchart, libcamera-devel, linux-media On 15/09/2026 00:38, Laurent Pinchart wrote: > We can consider scheduling a third topic. Proposals are welcome. From my LPC submission: "Should offline ISPs be implemented in drm/accel" Where does an offline Camera ISP belong in video4linux or in DRM and why ? There are two main types of ISP - inline and offline. An inline ISP takes sensor input directly and produces some kind of processed image on the output. This is a natural fit for v4l2. An offline ISP takes a memory buffer given to it and processes that buffer against supplied parameters. This model can be implemented as a video4linux m2m device but it could also be implemented as a DRM device and included in the DAG. Taking Qualcomm SoCs as an example the Camera hardware provides two types of ISP. An inline processing engine IFE and an offline processing engine based on firmware ICP/HFI. A use-case emerges to implement the inline ISP in v4l2 and the offline in drm/accel. Some tension with this design would exist as user-space would have to be involved to update ISP parameters and process statistics. Another tension is including a firmware based system in dma-fencing including watchdogging and resetting if required. There are clear benefits to having a loop of NPU/DSP to Offline ISP to Display that drm/accel seems to offer some interesting solutions to. --- bod ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-17 13:47 ` Bryan O'Donoghue @ 2026-09-18 8:08 ` johannes.goede 2026-09-18 9:18 ` Laurent Pinchart 1 sibling, 0 replies; 23+ messages in thread From: johannes.goede @ 2026-09-18 8:08 UTC (permalink / raw) To: Bryan O'Donoghue, Laurent Pinchart, libcamera-devel, linux-media Hi, On 17-Sep-26 15:47, Bryan O'Donoghue wrote: > On 15/09/2026 00:38, Laurent Pinchart wrote: >> We can consider scheduling a third topic. Proposals are welcome. > > From my LPC submission: > > "Should offline ISPs be implemented in drm/accel" > > Where does an offline Camera ISP belong in video4linux or in DRM and why ? > > There are two main types of ISP - inline and offline. An inline ISP takes sensor input directly and produces some kind of processed image on the output. This is a natural fit for v4l2. > > An offline ISP takes a memory buffer given to it and processes that buffer against supplied parameters. This model can be implemented as a video4linux m2m device but it could also be implemented as a DRM device and included in the DAG. > > Taking Qualcomm SoCs as an example the Camera hardware provides two types of ISP. An inline processing engine IFE and an offline processing engine based on firmware ICP/HFI. Note that one some Qualcomm SoCs the inline-engine can be switched to offline mode and then run as a M2M ISP. Also the offline ISPs and inline ISPs often have similar processing-blocks with similar or identical parameters. I do not think that splitting this over 2 subsystems is helpful and will lead to a lot of duplication of efforts related to ISPs. > A use-case emerges to implement the inline ISP in v4l2 and the offline in drm/accel. > > Some tension with this design would exist as user-space would have to be involved to update ISP parameters and process statistics. Another tension is including a firmware based system in dma-fencing including watchdogging and resetting if required. > > There are clear benefits to having a loop of NPU/DSP to Offline ISP to Display that drm/accel seems to offer some interesting solutions to. This sounds to me like we need a way to better integrate drm and v4l2 subsystems. Other areas like hw-video-decoders might benefit from having better integration there too. Regards, Hans ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-17 13:47 ` Bryan O'Donoghue 2026-09-18 8:08 ` johannes.goede @ 2026-09-18 9:18 ` Laurent Pinchart 2026-09-19 21:45 ` Bryan O'Donoghue 1 sibling, 1 reply; 23+ messages in thread From: Laurent Pinchart @ 2026-09-18 9:18 UTC (permalink / raw) To: Bryan O'Donoghue; +Cc: libcamera-devel, linux-media Hy Bryan, On Thu, Sep 17, 2026 at 02:47:52PM +0100, Bryan O'Donoghue wrote: > On 15/09/2026 00:38, Laurent Pinchart wrote: > > We can consider scheduling a third topic. Proposals are welcome. > > From my LPC submission: > > "Should offline ISPs be implemented in drm/accel" I personally consider that this question has been discussed enough in the past and I don't see any new development that would call for reopening the debate. Proponents of ISP drivers in DRM haven't (in my opinion) shown any substantial technical advantage, and the few technical issues that have been pointed out can be addressed (and are being addressed) in V4L2. I don't see allocating 15 minutes of BoF time for this changing the status quo. > Where does an offline Camera ISP belong in video4linux or in DRM and why ? > > There are two main types of ISP - inline and offline. An inline ISP > takes sensor input directly and produces some kind of processed image on > the output. This is a natural fit for v4l2. > > An offline ISP takes a memory buffer given to it and processes that > buffer against supplied parameters. This model can be implemented as a > video4linux m2m device but it could also be implemented as a DRM device > and included in the DAG. > > Taking Qualcomm SoCs as an example the Camera hardware provides two > types of ISP. An inline processing engine IFE and an offline processing > engine based on firmware ICP/HFI. > > A use-case emerges to implement the inline ISP in v4l2 and the offline > in drm/accel. > > Some tension with this design would exist as user-space would have to be > involved to update ISP parameters and process statistics. Another > tension is including a firmware based system in dma-fencing including > watchdogging and resetting if required. > > There are clear benefits to having a loop of NPU/DSP to Offline ISP to > Display that drm/accel seems to offer some interesting solutions to. What are those interesting solutions ? -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-18 9:18 ` Laurent Pinchart @ 2026-09-19 21:45 ` Bryan O'Donoghue 2026-09-19 22:29 ` Laurent Pinchart 0 siblings, 1 reply; 23+ messages in thread From: Bryan O'Donoghue @ 2026-09-19 21:45 UTC (permalink / raw) To: Laurent Pinchart; +Cc: libcamera-devel, linux-media On 18/09/2026 10:18, Laurent Pinchart wrote: >> There are clear benefits to having a loop of NPU/DSP to Offline ISP to >> Display that drm/accel seems to offer some interesting solutions to. > What are those interesting solutions ? The chain I'm interested in is Inline - V4L2 streaming -> Produces raw or YUV CVP (&& ||) NPU - Likely implemented as DRM -> Produces motion vectors and/or further warps image Offline - Sharpens, GTM, TNR (could be DRM, or v4lm2m) -> Produces YUV Display - DRM V4L2 owning sensor -> inline engine is already supported and won't change. For subsequent steps though each stage hands off in-kernel without having to involve userspace. Given though it depends if you need user-space to "do stuff" at the offline stage. If the offline stage has a firmware perhaps user-space doesn't need to be involved much past setup whereas if that offline stage has no firmware, then user-space really needs to drive it. The difference between the OPE on-list right now without a firmware and the ICP which does have a firmware. Taking the example of sharing params and stats between Inline and Offline - in this case you are constructing a single ISP around two blocks basically in libcamera, whereas what I've described above traverses several blocks and isn't really an ISP - the ISP is already @ stage 1 - you have an additional fully offline block with its own firmware, sessions and runtime context. Stage 1 and stage 3 don't share kernel-side stats and params; they have their own isolated contexts, in contrast to TFE/OPE on Agatti where its integrated and must live in a dedicated libcamera pipeline. But because you have a functional ISP @ stage 1 - the question is does the firmware based offline engine provide better overall system functionality as a DRM device ... Its actually the question I'd like to discuss with colleagues in sunny Prague :) So I think the tension comes from wanting to have the DRM scheduler but acknowledging that it is probably only for some use-cases possible. You implement the device as a DRM device, you are still free to have a complex user-space context for that if that is your need - whereas if you have a use-case which can tolerate non-intervention from user-space, then the DRM scheduler _is_ what you want for complex hand-off from one device block to the other. --- bod ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-19 21:45 ` Bryan O'Donoghue @ 2026-09-19 22:29 ` Laurent Pinchart 2026-09-21 11:52 ` Bryan O'Donoghue 0 siblings, 1 reply; 23+ messages in thread From: Laurent Pinchart @ 2026-09-19 22:29 UTC (permalink / raw) To: Bryan O'Donoghue; +Cc: libcamera-devel, linux-media On Sat, Sep 19, 2026 at 10:45:00PM +0100, Bryan O'Donoghue wrote: > On 18/09/2026 10:18, Laurent Pinchart wrote: > >> There are clear benefits to having a loop of NPU/DSP to Offline ISP to > >> Display that drm/accel seems to offer some interesting solutions to. > > What are those interesting solutions ? > > The chain I'm interested in is > > Inline - V4L2 streaming > -> Produces raw or YUV > > CVP (&& ||) NPU - Likely implemented as DRM Possibly, but that's bit very relevant from a userspace point of view. An NPU will be controlled through a userspace stack, likely involving Mesa if the stack is open-source, and exposed through higher-level frameworks/APIs (TF, ONNX, ...). The fact that the kernel driver lives in DRM won't have any impact. > -> Produces motion vectors and/or further warps image > > Offline - Sharpens, GTM, TNR (could be DRM, or v4lm2m) > -> Produces YUV > > Display - DRM So likely OpenGL or Vulkan, involving wayland or X11. In rare cases directly interfacing with KMS for embedded devices. > V4L2 owning sensor -> inline engine is already supported and won't > change. For subsequent steps though each stage hands off in-kernel > without having to involve userspace. That's fences, isn't it ? > Given though it depends if you need user-space to "do stuff" at the > offline stage. If the offline stage has a firmware perhaps user-space > doesn't need to be involved much past setup whereas if that offline > stage has no firmware, then user-space really needs to drive it. The > difference between the OPE on-list right now without a firmware and the > ICP which does have a firmware. Cases where userspace wouldn't need to be involved exist, but then there's even less userspace involvement than you describe above. The firmware would control all the components directly (sensor, inline and offline stages), exposing only the end result (possibly with the ability to additionally capture raw frames). > Taking the example of sharing params and stats between Inline and > Offline - in this case you are constructing a single ISP around two > blocks basically in libcamera, whereas what I've described above > traverses several blocks and isn't really an ISP - the ISP is already @ > stage 1 - you have an additional fully offline block with its own > firmware, sessions and runtime context. Stage 1 and stage 3 don't share > kernel-side stats and params; they have their own isolated contexts, in > contrast to TFE/OPE on Agatti where its integrated and must live in a > dedicated libcamera pipeline. > > But because you have a functional ISP @ stage 1 - the question is does > the firmware based offline engine provide better overall system > functionality as a DRM device ... I don't see why that would be the case. > Its actually the question I'd like to discuss with colleagues in sunny > Prague :) > > So I think the tension comes from wanting to have the DRM scheduler but > acknowledging that it is probably only for some use-cases possible. > > You implement the device as a DRM device, you are still free to have a > complex user-space context for that if that is your need - whereas if > you have a use-case which can tolerate non-intervention from user-space, > then the DRM scheduler _is_ what you want for complex hand-off from one > device block to the other. Not quite. It's a matter of fences. -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-19 22:29 ` Laurent Pinchart @ 2026-09-21 11:52 ` Bryan O'Donoghue 2026-09-21 16:02 ` Nicolas Dufresne 0 siblings, 1 reply; 23+ messages in thread From: Bryan O'Donoghue @ 2026-09-21 11:52 UTC (permalink / raw) To: Laurent Pinchart; +Cc: libcamera-devel, linux-media On 19/09/2026 23:29, Laurent Pinchart wrote: >> V4L2 owning sensor -> inline engine is already supported and won't >> change. For subsequent steps though each stage hands off in-kernel >> without having to involve userspace. > That's fences, isn't it ? Perhaps fences in v4l will do exactly the job I want. I'm more investigating than specifically pushing a solution. My understanding of drm benefits are: - drm_sched job scheduling based on dependency fences - dma_resv fencing, sync - syncobj user-space sync primitives which can be shared with say a compositor - TDR Builtin fault tolerance. Probably the best thing to do is to implement both a v4l and drm wrapper around the functionality and use it in anger. There'd be no specific barrier to implementing a libcamera pipeline around a DRM device, I mean that's what gpuisp is even if its wrappered up in mesa so.. :) Nicolas mentioned the idea of implementing codec drivers in DRM for reasons similar to the above. Anyway I'm curious to know what the DRM advocates and detractors would say about that. It's a question I have not an assertion. For an inline ISP where you connect a sensor to a CSI block the media-graph seems like a nice well defined thing. The offline ISP I'm describing - truthfully has elements of codec and elements of ISP. Probably the only way to really know is to experiment and see what falls out. --- bod ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-21 11:52 ` Bryan O'Donoghue @ 2026-09-21 16:02 ` Nicolas Dufresne 0 siblings, 0 replies; 23+ messages in thread From: Nicolas Dufresne @ 2026-09-21 16:02 UTC (permalink / raw) To: Bryan O'Donoghue, Laurent Pinchart; +Cc: libcamera-devel, linux-media [-- Attachment #1: Type: text/plain, Size: 3829 bytes --] Hi, Le lundi 21 septembre 2026 à 12:52 +0100, Bryan O'Donoghue a écrit : > On 19/09/2026 23:29, Laurent Pinchart wrote: > > > V4L2 owning sensor -> inline engine is already supported and won't > > > change. For subsequent steps though each stage hands off in-kernel > > > without having to involve userspace. > > That's fences, isn't it ? > > Perhaps fences in v4l will do exactly the job I want. I'm more > investigating than specifically pushing a solution. It's something I've thought about a lot on the V4L2 side. So far, all proposals failed to respect some dma fence contract. There is this strict relationship that nothing can hold indefinitely on a job once submitted. In V4L2 m2m (any flavour), jobs are implicit, we queue object, and the presence of enough objects can trigger a job to start. If you deliver your sync file on the queue operation, you will deliver a dma-fence without the guaranty it will fire (or fail). I've been wanting to solve this extending the request queue for codecs. While you can queue a request before its matching OUTPUT buffer (which effectively let user-space delay the completion), we could also query the driver upon if the request has all the needed resources to be set on a "guarantied to run" queue. With a new version of the request queue ioctl, we could emit the request fence. Alternatively, since the request is already kind of a fence, we could export a sync fs out of it, and do this extra validation/guaranty at the same time. Could we have the same query from a QBUF(OUTPUT) operation on existing ISP driver model ... maybe. I'll leave that to ISP drivers expert. What matters is that userspace cannot pause the process (failing/cancelling it is fine). The fence does not have to be strictly bound to a dmabuf buffer, its a sync point where a buffer will be filled. The semantic of which buffer is to be delivered next will have to be specified, its not the case for v4l2 stateful decoders notably, which may pick different order to easy the reordering process. > > My understanding of drm benefits are: > > - drm_sched > job scheduling based on dependency fences > > - dma_resv > fencing, sync > > - syncobj > user-space sync primitives which can be > shared with say a compositor > > - TDR > Builtin fault tolerance. > > Probably the best thing to do is to implement both a v4l and drm wrapper > around the functionality and use it in anger. > > There'd be no specific barrier to implementing a libcamera pipeline > around a DRM device, I mean that's what gpuisp is even if its wrappered > up in mesa so.. :) > > Nicolas mentioned the idea of implementing codec drivers in DRM for > reasons similar to the above. Nice moment to plug my referral track talk at LPC. Appart from early prototype, it does not exist yet, hence why LPC is a great place to discuss, I already introduced the subject during Media Summit in may. https://lpc.events/event/20/contributions/2354/ On codecs, we aim for Vulkan Video as the API, which actually unify userspace across platform and OS. Since its a low level API, very little design is needed. Here, libcamera is your API I suppose, but its much higher level, so what the HW specific driver should expose as API seems a bit more open. cheers, Nicolas > > Anyway I'm curious to know what the DRM advocates and detractors would > say about that. It's a question I have not an assertion. > > For an inline ISP where you connect a sensor to a CSI block the > media-graph seems like a nice well defined thing. > > The offline ISP I'm describing - truthfully has elements of codec and > elements of ISP. > > Probably the only way to really know is to experiment and see what falls > out. > > --- > bod [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-14 23:38 ` [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference Laurent Pinchart 2026-09-17 13:47 ` Bryan O'Donoghue @ 2026-09-27 9:01 ` johannes.goede 2026-09-27 9:04 ` johannes.goede ` (3 subsequent siblings) 5 siblings, 0 replies; 23+ messages in thread From: johannes.goede @ 2026-09-27 9:01 UTC (permalink / raw) To: Laurent Pinchart, libcamera-devel, linux-media Hi, On 15-Sep-26 01:38, Laurent Pinchart wrote: > Hello, > > As most of you already know, the Linux Plumbers Conference will host a > Camera & ISP BoF in Prague in three weeks ([1]). > > The initial proposal for a microconference has unfortunately been > downgraded by the program committee to a 45 minutes BoF. We have > therefore decided to limit the discussion to three topics at most. Two > topics have been approved so far: > > - RGB-IR support in V4L2 and libcamera > > by Rishikesh Donadkar and Devarsh Thakkar, Texas Instruments > > The Linux kernel V4L2 API does not support RGB-IR image sensors. > While building blocks necessary to handle those devices are slowly > being merged, RGB-IR support itself hasn't been tackled yet. > > Rishikesh and Devarsh will also present this topic at the OSS Europe > conference ([2]). Related to this, we are seeing various people working on plain IR sensors found on Windows Hello capable laptops, both on IPU6/IPU7 as well as on Qualcomm Snapdragon laptops. I would like us to discuss and ideally agree on a userspace API for the IR flood LED-s on these devices. I hope we can schedule some time for this? I actually just got send a Devicetree snippet off-list which enables the IR flood LED on a Snapdragon laptop using the already existing Flash LED support in a PMIC driver. I think this, combined with an auxiliary media-controller link to link the Flash LED class device to the IR sensor probably is the best way to handle IR flood LEDs, but we do need consensus on this and to document it. We also may want to offer some sort of auto on in flash-light mode when streaming support for these (1) to make things easier for userspace or we clearly need to document that userspace needs to enable this itself. Regards, Hans 1) With a v4l2-control to turn it off when userspace wants more fine grained control. > - Camera module identification > > by Stefan Klug, Ideas on Board > > Camera tuning and calibration depend not only on the image sensor, but > also on the lens and other characteristics of camera modules. While > Linux supports identifying image sensors, it completely lacks the > concept of camera modules. > > Identification of camera modules requires coordination between > platform firmware (DT or ACPI), the kernel and userspace. Discussions > will benefit from the presence of DT maintainers. > > We can consider scheduling a third topic. Proposals are welcome. > > Due to the 45 minutes BoF format, we will focus on discussions and won't > be able to afford presentations. All topic leads are expected to > circulate discussion materials on public mailing lists at least a week > before the event to give attendees time to read through proposals. The > materials should summarize the issue at hand and the ongoing work, and > clearly state the questions that will be discussed during the BoF. > Slides that support the discussions, if any, should also be submitted > prior to the event. > > If there is enough interest, I am considering booking a meeting room on > Wednesday morning (location to be determined, likely outside of the LPC > venue) to extend the BoF. We could continue discussions on the topics > listed above, as well as schedule additional topics. We would overlap > with the following LPC microconferences: > > - Networking Track > - Containers and checkpoint/restore MC > - Rust MC > - Scheduler and Real-Time MC > - Build Systems MC > > Please let me know if you would be interested in attending a Wednesday > morning session by replying to this e-mail (publicly or privately). If > you would like to propose additional topics, please do so publicly. > > > [1] https://lpc.events/event/20/contributions/2364/ > [2] https://osselceu2026.sched.com/event/2RaZj/enabling-multi-stream-camera-sensors-in-linux-rgb+ir-streams-and-embedded-metadata-rishikesh-donadkar-devarsh-thakkar-texas-instruments > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-14 23:38 ` [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference Laurent Pinchart 2026-09-17 13:47 ` Bryan O'Donoghue 2026-09-27 9:01 ` johannes.goede @ 2026-09-27 9:04 ` johannes.goede 2026-09-30 11:18 ` Stefan Klug ` (2 subsequent siblings) 5 siblings, 0 replies; 23+ messages in thread From: johannes.goede @ 2026-09-27 9:04 UTC (permalink / raw) To: Laurent Pinchart, libcamera-devel, linux-media, Loic Poulain, Jacopo Mondi Hi, On 15-Sep-26 01:38, Laurent Pinchart wrote: <snip> > If there is enough interest, I am considering booking a meeting room on > Wednesday morning (location to be determined, likely outside of the LPC > venue) to extend the BoF. We could continue discussions on the topics > listed above, as well as schedule additional topics. We would overlap > with the following LPC microconferences: > > - Networking Track > - Containers and checkpoint/restore MC > - Rust MC > - Scheduler and Real-Time MC > - Build Systems MC > > Please let me know if you would be interested in attending a Wednesday > morning session by replying to this e-mail (publicly or privately). If > you would like to propose additional topics, please do so publicly. I would be interested in attending a Wednesday session about this. A possible additional topic for such a Wednesday session would be restarting the media-controller multi-context work (+Cc Jacopo, Loic Poulain). Regards, Hans ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-14 23:38 ` [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference Laurent Pinchart ` (2 preceding siblings ...) 2026-09-27 9:04 ` johannes.goede @ 2026-09-30 11:18 ` Stefan Klug 2026-09-30 22:01 ` Conor Dooley 2026-10-01 15:15 ` johannes.goede [not found] ` <2e1d628f-8183-4446-9500-9886561f320b@mm-sol.com> 2026-10-01 6:19 ` Rishikesh Donadkar 5 siblings, 2 replies; 23+ messages in thread From: Stefan Klug @ 2026-09-30 11:18 UTC (permalink / raw) To: Laurent Pinchart, libcamera-devel, linux-media Cc: Loic Poulain, Michael Riesch, Rob Herring, Krzysztof Kozlowski, Conor Dooley Hi everyone, On 15.09.26 01:38, Laurent Pinchart wrote: > Hello, > > As most of you already know, the Linux Plumbers Conference will host a > Camera & ISP BoF in Prague in three weeks ([1]). > > The initial proposal for a microconference has unfortunately been > downgraded by the program committee to a 45 minutes BoF. We have > therefore decided to limit the discussion to three topics at most. Two > topics have been approved so far: > > - RGB-IR support in V4L2 and libcamera > > by Rishikesh Donadkar and Devarsh Thakkar, Texas Instruments > > The Linux kernel V4L2 API does not support RGB-IR image sensors. > While building blocks necessary to handle those devices are slowly > being merged, RGB-IR support itself hasn't been tackled yet. > > Rishikesh and Devarsh will also present this topic at the OSS Europe > conference ([2]). > > - Camera module identification > > by Stefan Klug, Ideas on Board > > Camera tuning and calibration depend not only on the image sensor, but > also on the lens and other characteristics of camera modules. While > Linux supports identifying image sensors, it completely lacks the > concept of camera modules. > > Identification of camera modules requires coordination between > platform firmware (DT or ACPI), the kernel and userspace. Discussions > will benefit from the presence of DT maintainers. > LPC is already next week and we won't have enough time on the BoF for a full introduction to the topic. So this email summarizes the Module identification topic and contains the questions I'd like to discuss. To the device-tree maintainers: I added you to the invitation as this document proposes new device tree properties and I'd love to get some feedback and common understanding on these. So if you'd be able to join, that would be fantastic. Most of this mail is introduction and context. If you are short on time, please jump directly to the last headline "### 4. Camera modules without data storage" which contains the most relevant questions. Disclaimer: Even though it uses markdown syntax, this document is entirely written by a human and therefore the language is not as polished as one might expect from an AI generated one - sorry for that :-) Best regards, Stefan # Camera Module identification ## Problem statement In many cases where a camera is involved it is a so called "complex camera", meaning a sensor is connected to an Image Signal Processing (ISP) unit that often is part of the SoC. In most cases the sensor is soldered to a separate PCB together with a bit of electrical infrastructure like regulators and an eeprom. In this document I call these "camera modules". Sometimes camera modules are sold separately like a Raspberry Pi Camera, in other cases the module is part of bigger device like in a modern laptop. Sensor and ISP are orchestrated by libcamera to create a proper image from the RAW data produced by the sensor. To be able to do that properly, libcamera needs a "tuning file" which contains tuning parameters for a given camera module. These tuning parameters depend not only on the sensor model, but also on physical properties of the camera module. These are e.g. the material and geometry of the lens in the use, the mounting position of the lens, in extreme cases even the individual module due to production tolerances. So to produce a good image, libcamera must be able to select the correct tuning file for the camera module at hand. Currently libcamera only uses the sensor name to select the tuning file. This is not sufficient as it misses the properties mentioned above. There is a prototype of libcamera that implements a simple scheme that collects as much information as possible and chooses the best fitting tuning file (in this proposed implementation the one that matches most tags). However the exact implementation details are out of scope for this discussion. Side note here: Tuning files are not necessarily part of libcamera, therefore the selection process must be a able to select a tuning file that was not known by libcamera at compile time. To make this a bit more concrete, here are some examples for such cases (these are also the reference cases that I'll use in the dicussion): 1. The webcam in a modern IPU6 based laptop (meaning Intel + ACPI) that could include camera modules with the same sensor but from different suppliers (meaning slightly different lenses and optical characteristics) 2. Camera modules with an embedded EEPROM that contains additional data. Think of a camera module connected to a Raspberry Pi. The data stored in the EEPROM could be anything from a SKU, a module name, or even calibration data like colour correction matrices and lens shading descriptions. The format of the data stored in the EEPROM is vendor-specific. 3. Camera modules with a sensor that has an embedded OTP memory with additional data. Same case as before, but the sensor driver has direct access to the data and, depending on the use-case, also knows the internal format of the data. 4. Camera modules without data storage with the same sensor but from different manufacturers and with different lenses (screw-on or not, wide angle, IR cut filter,...). Same case as before but no way to identify the module. Compared to case 1 the modules are normally sold separately and can therefore not be inferred from the main device. Cases 1-3 are easier to solve and added here for completeness sake. Case 4 is the main point I'd like to discuss. ## Related topic (udev/hwdb) After my talk at the Linux Media Summit 2026 I got the feedback to look closer at hwdb. I did that and I think it could solve parts of the problem. For those of us who (as me) are not that familiar with udev & hwdb here is a quick summary: Udev and hwdb are part of systemd. They can be used without systemd so they are also used by non-systemd setups. Udev consists of the udev-daemon that: - Is notified when a device is added/removed - Runs rules that - Create device symlinks - Query sysfs - Query the hwdb - Attach properties to devices - Attach tags to devices - ... Interestingly there is already /lib/udev/v4l_id that is used by udev to collect some V4L properties: ``` $ /lib/udev/v4l_id /dev/video6 ID_V4L_VERSION=2 ID_V4L_PRODUCT=HD Webcam C615 ID_V4L_CAPABILITIES=: ``` This is run by udev in /lib/udev/rules.d/60-persistent-v4l.rules And essentially executes: SUBSYSTEM=="video4linux", IMPORT{program}="v4l_id $devnode" hwdb is a complementary utility that adds specific rules for known hardware. In hwdb there are already some camera specific things: 70-camera.rules and 70-cameras.hwdb [2],[3] which set ``` ID_INFRARED_CAMERA=0|1 ID_CAMERA_DIRECTION=front|back ``` which are used in a similar manner: ``` SUBSYSTEM=="video4linux", ENV{ID_BUS}=="usb", \ IMPORT{builtin}="hwdb 'camera:usb:v$env{ID_VENDOR_ID}p$env{ID_MODEL_ID}:name:$attr{name}:'" ``` So udev/hwdb provides an accepted way to gain more system knowledge and to provide that to libcamera. It is an open discussion which parts of the detection logic should live inside libcamera and which are better located in udev. ## Diving into the examples Lets look at the example I listed to see how these would be solved. ### 1. Laptop with camera module from various manufacturers I believe this can be solved by either integrating the detection logic in libcamera and/or adding rules to udev/hwdb. But we are lacking real examples. So if you're able to provide identification strategies for real, existing hardware, I'd be glad to know about it. One strategy might be to use the machine identifier provided by DMI. This is however quite coarse and can not handle cases where the manufacturer used different camera modules from different vendors (using the same sensor model). ARe there for example ACPI properties that we could query for additional information? Q: Does anyone in this group have more details on which information to query and where to get more details from the system? A: ... ### 2. Camera modules with an embedded EEPROM To make use of the EEPROM data from user space we need to carry two elements: The EEPROM data itself and some identifier telling which format the data in the EEPROM has. This seems relatively straightforward and we could model it like this in dts: dts-snippet: imx283_0: sensor@1a { compatible = "sony,imx283"; ... eeprom = <&eeprom>; eeprom-format = "vendor-a-eeprom-fmt"; }; Getting the link to the EEPROM from user space is something to investigate. Ideas are either sysfs or media-controller. The eeprom-format must be specified as well, to tell user space how to interpret the EEPROM data, as it is typically not self-contained. Q: On a first discussion on that topic we were unsure if it would be preferred to expose the data directly in sysfs, or to symlink to the corresponding sysfs entry for the EEPROM. Any preferences? A: ... Q: Any input/things to consider from ACPI side? A: Q: What happens if the EEPROM driver is not loaded yet or is just not available? Should it block/defer probing of the sensor? A: Q: We are missing real-life examples for these cases. So input from vendors would be welcome. A: ### 3. Camera modules with a sensor that has an embedded OTP memory This case is similar to the previous one. The big difference is that the OTP memory can be handled by the sensor driver itself, so no additional driver is necessary. In this case a practical solution could be to expose the OTP data via sysfs. Handling in user-space is similar to the EEPROM case. So the device driver could expose an otp_data and otp_format attribute in sysfs for user-space to read. The property otp_format contains a name of the format of the OTP data. There are cases where the format is specific to the sensor vendor and cases where the format is specific to the module vendor. So it should be possible to specify that in the device tree. ### 4. Camera modules without data storage This is the most difficult and most controversial case. In this case we can't identify the module automatically by querying the hardware. It is also not possible to rely on the machine identifier as with example 1. Think of an arbitrary camera module connected to a Raspberry Pi - the machine identifier will not change just by connecting a camera. Therefore we'd like to supply all necessary information with the device tree. The difficulty is that the combinations are huge and there is no common denominator (for some modules one might be able to get an SKU, for others it will even be difficult to get an official name). This is quite contrary to typical device tree use-cases where we try to tie down everything as far as possible. A flat list of module identifiers (like compatible strings) won't work as it should be possible to standardize aspects of a module, even if not everything is know. Think of a Raspberry Pi Cam HQ with a screw-on lens. It would be great to be able to specify that module, but the lens is still up to the user. In [1] I proposed a possible solution to that problem. A tag-based system with a single device tree entry of space separated tags. Every tag carries a prefix to denote a category: Tag Example m:<ModuleName> m:vc-mipi-imx296 v:<Vendor> v:RaspberryPi l:<Lens> l:generic-8mm-ircut s:<Sku> s:B030801 u:<user defined> u:my-selfmade-module This is a bit like the existing "label" property which carries a human readable label. So an example for a module could be: imx283_0: sensor@1a { compatible = "sony,imx283"; ... module-info = "v:RaspberryPi m:camera-module-hq l:generic-8mm-wide-angle"; }; This leads to the immediate question: Should we split the tags into properties? imx283_0: sensor@1a { compatible = "sony,imx283"; ... module-name = "camera-module-hq"; module-vendor = "RaspberryPi" module-lens = "generic-8mm-wide-angle"; }; Pros: We could try to standardize on some values. Cons: We add a (possibly increasing) number of properties that have no value inside the kernel and will only be populated very sparsely. Q: Would the dtb maintainers accept such a property? A: Q: Are there other/better ways to convey that information? A: # Links: - [1] https://www.linuxtv.org/downloads/presentations/media_summit_2026/Stefan%20-%20Module%20Identification.pdf - [2] https://github.com/systemd/systemd/blob/main/rules.d/70-camera.rules - [3] https://github.com/systemd/systemd/blob/main/hwdb.d/70-cameras.hwdb ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-30 11:18 ` Stefan Klug @ 2026-09-30 22:01 ` Conor Dooley 2026-10-02 16:14 ` Stefan Klug 2026-10-01 15:15 ` johannes.goede 1 sibling, 1 reply; 23+ messages in thread From: Conor Dooley @ 2026-09-30 22:01 UTC (permalink / raw) To: Stefan Klug Cc: Laurent Pinchart, libcamera-devel, linux-media, Loic Poulain, Michael Riesch, Rob Herring, Krzysztof Kozlowski, Conor Dooley [-- Attachment #1: Type: text/plain, Size: 8859 bytes --] Hey, just some quick thoughts I had, mostly to fish for more information so I can be more informed.. On Wed, Sep 30, 2026 at 01:18:59PM +0200, Stefan Klug wrote: > Hi everyone, > > On 15.09.26 01:38, Laurent Pinchart wrote: > > Hello, > > > > As most of you already know, the Linux Plumbers Conference will host a > > Camera & ISP BoF in Prague in three weeks ([1]). > > > > The initial proposal for a microconference has unfortunately been > > downgraded by the program committee to a 45 minutes BoF. We have > > therefore decided to limit the discussion to three topics at most. Two > > topics have been approved so far: > > > > - RGB-IR support in V4L2 and libcamera > > > > by Rishikesh Donadkar and Devarsh Thakkar, Texas Instruments > > > > The Linux kernel V4L2 API does not support RGB-IR image sensors. > > While building blocks necessary to handle those devices are slowly > > being merged, RGB-IR support itself hasn't been tackled yet. > > > > Rishikesh and Devarsh will also present this topic at the OSS Europe > > conference ([2]). > > > > - Camera module identification > > > > by Stefan Klug, Ideas on Board > > > > Camera tuning and calibration depend not only on the image sensor, but > > also on the lens and other characteristics of camera modules. While > > Linux supports identifying image sensors, it completely lacks the > > concept of camera modules. > > > > Identification of camera modules requires coordination between > > platform firmware (DT or ACPI), the kernel and userspace. Discussions > > will benefit from the presence of DT maintainers. > > > LPC is already next week and we won't have enough time on the BoF for a > full introduction to the topic. So this email summarizes the Module > identification topic and contains the questions I'd like to discuss. > > To the device-tree maintainers: I added you to the invitation as this > document proposes new device tree properties and I'd love to get some > feedback and common understanding on these. So if you'd be able to join, > that would be fantastic. I'll do my best, there's some schedule conflicts with the RISC-V MC for me, so we'll see how it goes. > > Most of this mail is introduction and context. If you are short on time, > please jump directly to the last headline "### 4. Camera modules without > data storage" which contains the most relevant questions. > > Q: Does anyone in this group have more details on which information to > query and where to get more details from the system? > A: ... > > ### 2. Camera modules with an embedded EEPROM > > To make use of the EEPROM data from user space we need to carry two > elements: The EEPROM data itself and some identifier telling which > format the data in the EEPROM has. This seems relatively straightforward > and we could model it like this in dts: > > dts-snippet: > imx283_0: sensor@1a { > compatible = "sony,imx283"; > ... > eeprom = <&eeprom>; > eeprom-format = "vendor-a-eeprom-fmt"; It's nvmem-cells you want here I believe, and the associated layouts should cover the format? > }; > > Getting the link to the EEPROM from user space is something to > investigate. Ideas are either sysfs or media-controller. > The eeprom-format must be specified as well, to tell user space how to > interpret the EEPROM data, as it is typically not self-contained. If you have the format of the eeprom, is it not better to provide the parsed version to userspace directly rather? Or are you concerned that these things will contain such "random" and non-standardisable info that it is a lost cause? > > Q: On a first discussion on that topic we were unsure if it would be > preferred to expose the data directly in sysfs, > or to symlink to the corresponding sysfs entry for the EEPROM. Any > preferences? > A: ... FWIW, nvmem already has sysfs for this (first option in the nvmem Kconfig menu). > > Q: Any input/things to consider from ACPI side? > A: > > Q: What happens if the EEPROM driver is not loaded yet or is just not > available? Should it block/defer probing of the sensor? > A: > > Q: We are missing real-life examples for these cases. So input from > vendors would be welcome. > A: > > ### 3. Camera modules with a sensor that has an embedded OTP memory > > This case is similar to the previous one. The big difference is that the > OTP memory can be handled by the sensor driver itself, so no additional > driver is necessary. In this case a practical solution could be to > expose the OTP data via sysfs. Handling in user-space is similar to the > EEPROM case. So the device driver could expose an otp_data and > otp_format attribute in sysfs for user-space to read. > > The property otp_format contains a name of the format of the OTP data. > There are cases where the format is specific to the sensor vendor and > cases where the format is specific to the module vendor. So it should be > possible to specify that in the device tree. > > ### 4. Camera modules without data storage > > This is the most difficult and most controversial case. In this case we > can't identify the module automatically by querying the hardware. It is > also not possible to rely on the machine identifier as with example 1. > Think of an arbitrary camera module connected to a Raspberry Pi - the > machine identifier will not change just by connecting a camera. > Therefore we'd like to supply all necessary information with the device > tree. > > The difficulty is that the combinations are huge and there is no common > denominator (for some modules one might be able to get an SKU, for > others it will even be difficult to get an official name). > > This is quite contrary to typical device tree use-cases where we try to > tie down everything as far as possible. > A flat list of module identifiers (like compatible strings) won't work > as it should be possible to standardize aspects of a module, even if not > everything is know. Think of a Raspberry Pi Cam HQ with a screw-on lens. > It would be great to be able to specify that module, but the lens is > still up to the user. > > In [1] I proposed a possible solution to that problem. A tag-based > system with a single device tree entry of space separated tags. Every > tag carries a prefix to denote a category: > > Tag Example > m:<ModuleName> m:vc-mipi-imx296 > v:<Vendor> v:RaspberryPi > l:<Lens> l:generic-8mm-ircut > s:<Sku> s:B030801 > u:<user defined> u:my-selfmade-module > > This is a bit like the existing "label" property which carries a human > readable label. So an example for a module could be: > > imx283_0: sensor@1a { > compatible = "sony,imx283"; > ... > module-info = "v:RaspberryPi m:camera-module-hq > l:generic-8mm-wide-angle"; > }; > > This leads to the immediate question: Should we split the tags into > properties? Yes, make use of the standard utilities before rolling your own format please. > imx283_0: sensor@1a { > compatible = "sony,imx283"; > ... > module-name = "camera-module-hq"; > module-vendor = "RaspberryPi" > module-lens = "generic-8mm-wide-angle"; > }; > > Pros: We could try to standardize on some values. > Cons: We add a (possibly increasing) number of properties that have no > value inside the kernel and will only be populated very sparsely. What value do they have anywhere? ELI5 why anyone cares that the rpi foundation made the sensor module, for example. What decisions can be made on the basis of it? Not trying to be antagonistic, I genuinely don't know what kind of things it affects. The lens type or some sort of nd filter info I can understand being useful. That said, and I know very little about cameras, some of these things could actually vary at runtime right? On the module name front, it quickly becomes compatible-v2 I think, since you're gonna need standardised names for specific modules so that decisions can be made on the basis of them. Makes me wonder if you need sensors to have an endpoint connection to whatever sits in front of them... > Q: Would the dtb maintainers accept such a property? I mean, at first glance the idea itself seems reasonable. The info isn't discoverable and some of it seems to be valuable. > A: > > Q: Are there other/better ways to convey that information? > A: > > # Links: > > - [1] > https://www.linuxtv.org/downloads/presentations/media_summit_2026/Stefan%20-%20Module%20Identification.pdf > - [2] https://github.com/systemd/systemd/blob/main/rules.d/70-camera.rules > - [3] https://github.com/systemd/systemd/blob/main/hwdb.d/70-cameras.hwdb > [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-30 22:01 ` Conor Dooley @ 2026-10-02 16:14 ` Stefan Klug 2026-10-03 14:56 ` Loic Poulain 0 siblings, 1 reply; 23+ messages in thread From: Stefan Klug @ 2026-10-02 16:14 UTC (permalink / raw) To: Conor Dooley Cc: Laurent Pinchart, libcamera-devel, linux-media, Loic Poulain, Michael Riesch, Rob Herring, Krzysztof Kozlowski, Conor Dooley Hi Conor, Thank you for your fast reply. Quoting Conor Dooley (2026-10-01 00:01:44) > Hey, just some quick thoughts I had, mostly to fish for more information > so I can be more informed.. > > On Wed, Sep 30, 2026 at 01:18:59PM +0200, Stefan Klug wrote: > > Hi everyone, > > > > On 15.09.26 01:38, Laurent Pinchart wrote: > > > Hello, > > > > > > As most of you already know, the Linux Plumbers Conference will host a > > > Camera & ISP BoF in Prague in three weeks ([1]). > > > > > > The initial proposal for a microconference has unfortunately been > > > downgraded by the program committee to a 45 minutes BoF. We have > > > therefore decided to limit the discussion to three topics at most. Two > > > topics have been approved so far: > > > > > > - RGB-IR support in V4L2 and libcamera > > > > > > by Rishikesh Donadkar and Devarsh Thakkar, Texas Instruments > > > > > > The Linux kernel V4L2 API does not support RGB-IR image sensors. > > > While building blocks necessary to handle those devices are slowly > > > being merged, RGB-IR support itself hasn't been tackled yet. > > > > > > Rishikesh and Devarsh will also present this topic at the OSS Europe > > > conference ([2]). > > > > > > - Camera module identification > > > > > > by Stefan Klug, Ideas on Board > > > > > > Camera tuning and calibration depend not only on the image sensor, but > > > also on the lens and other characteristics of camera modules. While > > > Linux supports identifying image sensors, it completely lacks the > > > concept of camera modules. > > > > > > Identification of camera modules requires coordination between > > > platform firmware (DT or ACPI), the kernel and userspace. Discussions > > > will benefit from the presence of DT maintainers. > > > > > LPC is already next week and we won't have enough time on the BoF for a > > full introduction to the topic. So this email summarizes the Module > > identification topic and contains the questions I'd like to discuss. > > > > To the device-tree maintainers: I added you to the invitation as this > > document proposes new device tree properties and I'd love to get some > > feedback and common understanding on these. So if you'd be able to join, > > that would be fantastic. > > I'll do my best, there's some schedule conflicts with the RISC-V MC for > me, so we'll see how it goes. > > > > > Most of this mail is introduction and context. If you are short on time, > > please jump directly to the last headline "### 4. Camera modules without > > data storage" which contains the most relevant questions. > > > > > Q: Does anyone in this group have more details on which information to > > query and where to get more details from the system? > > A: ... > > > > ### 2. Camera modules with an embedded EEPROM > > > > To make use of the EEPROM data from user space we need to carry two > > elements: The EEPROM data itself and some identifier telling which > > format the data in the EEPROM has. This seems relatively straightforward > > and we could model it like this in dts: > > > > dts-snippet: > > imx283_0: sensor@1a { > > compatible = "sony,imx283"; > > ... > > eeprom = <&eeprom>; > > eeprom-format = "vendor-a-eeprom-fmt"; > > It's nvmem-cells you want here I believe, and the associated layouts > should cover the format? Oh, that looks good. nvmem-cells seems to be the right thing here. I'm not completely sure how the format would map, but I believe that would resolve itself on the first practical implementation. > > > }; > > > > Getting the link to the EEPROM from user space is something to > > investigate. Ideas are either sysfs or media-controller. > > The eeprom-format must be specified as well, to tell user space how to > > interpret the EEPROM data, as it is typically not self-contained. > > If you have the format of the eeprom, is it not better to provide the > parsed version to userspace directly rather? Or are you concerned that > these things will contain such "random" and non-standardisable info that > it is a lost cause? As the data is of no use to the kernel, I don't see the benefit in standardizing it. On the other hand we are missing practical examples. I feel it is a bit of a chicken and egg situation. There were some EEPROMSs, but it is difficult to correlate them with the camera module so no one really used theme even though everyone would like to have them. > > > > > Q: On a first discussion on that topic we were unsure if it would be > > preferred to expose the data directly in sysfs, > > or to symlink to the corresponding sysfs entry for the EEPROM. Any > > preferences? > > A: ... > > FWIW, nvmem already has sysfs for this (first option in the nvmem > Kconfig menu). Thanks for that info. I need to toy around with that. > > > > > Q: Any input/things to consider from ACPI side? > > A: > > > > Q: What happens if the EEPROM driver is not loaded yet or is just not > > available? Should it block/defer probing of the sensor? > > A: > > > > Q: We are missing real-life examples for these cases. So input from > > vendors would be welcome. > > A: > > > > ### 3. Camera modules with a sensor that has an embedded OTP memory > > > > This case is similar to the previous one. The big difference is that the > > OTP memory can be handled by the sensor driver itself, so no additional > > driver is necessary. In this case a practical solution could be to > > expose the OTP data via sysfs. Handling in user-space is similar to the > > EEPROM case. So the device driver could expose an otp_data and > > otp_format attribute in sysfs for user-space to read. > > > > The property otp_format contains a name of the format of the OTP data. > > There are cases where the format is specific to the sensor vendor and > > cases where the format is specific to the module vendor. So it should be > > possible to specify that in the device tree. > > > > ### 4. Camera modules without data storage > > > > This is the most difficult and most controversial case. In this case we > > can't identify the module automatically by querying the hardware. It is > > also not possible to rely on the machine identifier as with example 1. > > Think of an arbitrary camera module connected to a Raspberry Pi - the > > machine identifier will not change just by connecting a camera. > > Therefore we'd like to supply all necessary information with the device > > tree. > > > > The difficulty is that the combinations are huge and there is no common > > denominator (for some modules one might be able to get an SKU, for > > others it will even be difficult to get an official name). > > > > This is quite contrary to typical device tree use-cases where we try to > > tie down everything as far as possible. > > A flat list of module identifiers (like compatible strings) won't work > > as it should be possible to standardize aspects of a module, even if not > > everything is know. Think of a Raspberry Pi Cam HQ with a screw-on lens. > > It would be great to be able to specify that module, but the lens is > > still up to the user. > > > > In [1] I proposed a possible solution to that problem. A tag-based > > system with a single device tree entry of space separated tags. Every > > tag carries a prefix to denote a category: > > > > Tag Example > > m:<ModuleName> m:vc-mipi-imx296 > > v:<Vendor> v:RaspberryPi > > l:<Lens> l:generic-8mm-ircut > > s:<Sku> s:B030801 > > u:<user defined> u:my-selfmade-module > > > > This is a bit like the existing "label" property which carries a human > > readable label. So an example for a module could be: > > > > imx283_0: sensor@1a { > > compatible = "sony,imx283"; > > ... > > module-info = "v:RaspberryPi m:camera-module-hq > > l:generic-8mm-wide-angle"; > > }; > > > > This leads to the immediate question: Should we split the tags into > > properties? > > Yes, make use of the standard utilities before rolling your own format > please. > > > imx283_0: sensor@1a { > > compatible = "sony,imx283"; > > ... > > module-name = "camera-module-hq"; > > module-vendor = "RaspberryPi" > > module-lens = "generic-8mm-wide-angle"; > > }; > > > > Pros: We could try to standardize on some values. > > Cons: We add a (possibly increasing) number of properties that have no > > value inside the kernel and will only be populated very sparsely. > > What value do they have anywhere? ELI5 why anyone cares that the rpi > foundation made the sensor module, for example. What decisions can be > made on the basis of it? Not trying to be antagonistic, I genuinely > don't know what kind of things it affects. The lens type or some sort of > nd filter info I can understand being useful. That said, and I know very > little about cameras, some of these things could actually vary at runtime > right? I think the difficulty here is that we want to identify something which we can't even name precisely and we don't yet see the full spectrum of possibilities. Regarding the question who cares if the RPi foundation manufactured a module: It is just a way of identifying a specific piece of hardware. So there are many modules out there using an imx477 sensor, but they could differ in the geometry from other ones. A compatible string works well for devices we know. But then you can quickly come up with cases, where only an aspect or part is known. - Raspberry Pi Camera Module HQ - Lens is unknown - So we could start to unroll that - rpi,cmarea-module-hq-8mm-lens - rpi,cmarea-module-hq-9mm-lens - ... that doesn't scale So we could introduce a module-lens property: - vendor-a-8mm vendor-a-8mm-ir-cut vendor-b-8mm ... 1000 vendors more That doesn't scale as well. I tried to further reason about the underlying targets and why my gutfeeling doesn't like the compatible. I see two main targets: 1. Finding a solution for well known devices like laptops or phones. Upstreaming a compatible string per module could work, but we will often just not know the vendor of the module. So they would be named (incorrectly) after the manufacturer of the device. 2. Upstreaming overlays for well known camera modules like the ones from RaspberryPi. I don't expect that to gain too much traction quickly because of missing specs for connectors and therefore no way to model a camera module in dt in a way that works for multiple processing boards. Still it would be very helpful to be able to write dt overlays for these modules that work with an upstream kernel without the need for nasty hacks (like abusing the label property or so). 3. The same applies for full custom solutions where upstreaming compatible strings will never happen, but we need the overall mechanics. So in summary I'm looking for a place to put a blob of information regarding the camera module that is not of any use to the kernel and only passed on to userspace. Defining a separate node and maintaining compatible strings seems like a lot of maintenance work for little gain. Looking for other places to put that information doesn't lead to really good candidates. One could store it in the software image itself, but that is a pain as a user would loose it when flashing a new image. One could put it in a extra partition with the same issues as above and a huge technical complexity for use cases like the RaspberryPi. So the devicetree seems to be a good location for it, just that we're lacking a place to put it there. I hope that makes a bit of sense. Best regards, Stefan > > On the module name front, it quickly becomes compatible-v2 I think, > since you're gonna need standardised names for specific modules so that > decisions can be made on the basis of them. Makes me wonder if you need > sensors to have an endpoint connection to whatever sits in front of > them... > > > Q: Would the dtb maintainers accept such a property? > > I mean, at first glance the idea itself seems reasonable. The info isn't > discoverable and some of it seems to be valuable. > > > A: > > > > Q: Are there other/better ways to convey that information? > > A: > > > > # Links: > > > > - [1] > > https://www.linuxtv.org/downloads/presentations/media_summit_2026/Stefan%20-%20Module%20Identification.pdf > > - [2] https://github.com/systemd/systemd/blob/main/rules.d/70-camera.rules > > - [3] https://github.com/systemd/systemd/blob/main/hwdb.d/70-cameras.hwdb > > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-10-02 16:14 ` Stefan Klug @ 2026-10-03 14:56 ` Loic Poulain 0 siblings, 0 replies; 23+ messages in thread From: Loic Poulain @ 2026-10-03 14:56 UTC (permalink / raw) To: Stefan Klug Cc: Conor Dooley, Laurent Pinchart, libcamera-devel, linux-media, Loic Poulain, Michael Riesch, Rob Herring, Krzysztof Kozlowski, Conor Dooley On Fri, Oct 2, 2026 at 6:14 PM Stefan Klug <stefan.klug@ideasonboard.com> wrote: > > Hi Conor, > > Thank you for your fast reply. > > Quoting Conor Dooley (2026-10-01 00:01:44) > > Hey, just some quick thoughts I had, mostly to fish for more information > > so I can be more informed.. > > > > On Wed, Sep 30, 2026 at 01:18:59PM +0200, Stefan Klug wrote: > > > Hi everyone, > > > > > > On 15.09.26 01:38, Laurent Pinchart wrote: > > > > Hello, > > > > > > > > As most of you already know, the Linux Plumbers Conference will host a > > > > Camera & ISP BoF in Prague in three weeks ([1]). > > > > > > > > The initial proposal for a microconference has unfortunately been > > > > downgraded by the program committee to a 45 minutes BoF. We have > > > > therefore decided to limit the discussion to three topics at most. Two > > > > topics have been approved so far: > > > > > > > > - RGB-IR support in V4L2 and libcamera > > > > > > > > by Rishikesh Donadkar and Devarsh Thakkar, Texas Instruments > > > > > > > > The Linux kernel V4L2 API does not support RGB-IR image sensors. > > > > While building blocks necessary to handle those devices are slowly > > > > being merged, RGB-IR support itself hasn't been tackled yet. > > > > > > > > Rishikesh and Devarsh will also present this topic at the OSS Europe > > > > conference ([2]). > > > > > > > > - Camera module identification > > > > > > > > by Stefan Klug, Ideas on Board > > > > > > > > Camera tuning and calibration depend not only on the image sensor, but > > > > also on the lens and other characteristics of camera modules. While > > > > Linux supports identifying image sensors, it completely lacks the > > > > concept of camera modules. > > > > > > > > Identification of camera modules requires coordination between > > > > platform firmware (DT or ACPI), the kernel and userspace. Discussions > > > > will benefit from the presence of DT maintainers. > > > > > > > LPC is already next week and we won't have enough time on the BoF for a > > > full introduction to the topic. So this email summarizes the Module > > > identification topic and contains the questions I'd like to discuss. > > > > > > To the device-tree maintainers: I added you to the invitation as this > > > document proposes new device tree properties and I'd love to get some > > > feedback and common understanding on these. So if you'd be able to join, > > > that would be fantastic. > > > > I'll do my best, there's some schedule conflicts with the RISC-V MC for > > me, so we'll see how it goes. > > > > > > > > Most of this mail is introduction and context. If you are short on time, > > > please jump directly to the last headline "### 4. Camera modules without > > > data storage" which contains the most relevant questions. > > > > > > > > Q: Does anyone in this group have more details on which information to > > > query and where to get more details from the system? > > > A: ... > > > > > > ### 2. Camera modules with an embedded EEPROM > > > > > > To make use of the EEPROM data from user space we need to carry two > > > elements: The EEPROM data itself and some identifier telling which > > > format the data in the EEPROM has. This seems relatively straightforward > > > and we could model it like this in dts: > > > > > > dts-snippet: > > > imx283_0: sensor@1a { > > > compatible = "sony,imx283"; > > > ... > > > eeprom = <&eeprom>; > > > eeprom-format = "vendor-a-eeprom-fmt"; > > > > It's nvmem-cells you want here I believe, and the associated layouts > > should cover the format? > > Oh, that looks good. nvmem-cells seems to be the right thing here. I'm > not completely sure how the format would map, but I believe that would > resolve itself on the first practical implementation. > > > > > > }; > > > > > > Getting the link to the EEPROM from user space is something to > > > investigate. Ideas are either sysfs or media-controller. > > > The eeprom-format must be specified as well, to tell user space how to > > > interpret the EEPROM data, as it is typically not self-contained. > > > > If you have the format of the eeprom, is it not better to provide the > > parsed version to userspace directly rather? Or are you concerned that > > these things will contain such "random" and non-standardisable info that > > it is a lost cause? > > As the data is of no use to the kernel, I don't see the benefit in > standardizing it. On the other hand we are missing practical examples. I > feel it is a bit of a chicken and egg situation. There were some > EEPROMSs, but it is difficult to correlate them with the camera module > so no one really used theme even though everyone would like to have > them. > > > > > > > > > Q: On a first discussion on that topic we were unsure if it would be > > > preferred to expose the data directly in sysfs, > > > or to symlink to the corresponding sysfs entry for the EEPROM. Any > > > preferences? > > > A: ... > > > > FWIW, nvmem already has sysfs for this (first option in the nvmem > > Kconfig menu). > > Thanks for that info. I need to toy around with that. > > > > > > > > > Q: Any input/things to consider from ACPI side? > > > A: > > > > > > Q: What happens if the EEPROM driver is not loaded yet or is just not > > > available? Should it block/defer probing of the sensor? > > > A: > > > > > > Q: We are missing real-life examples for these cases. So input from > > > vendors would be welcome. > > > A: > > > > > > ### 3. Camera modules with a sensor that has an embedded OTP memory > > > > > > This case is similar to the previous one. The big difference is that the > > > OTP memory can be handled by the sensor driver itself, so no additional > > > driver is necessary. In this case a practical solution could be to > > > expose the OTP data via sysfs. Handling in user-space is similar to the > > > EEPROM case. So the device driver could expose an otp_data and > > > otp_format attribute in sysfs for user-space to read. > > > > > > The property otp_format contains a name of the format of the OTP data. > > > There are cases where the format is specific to the sensor vendor and > > > cases where the format is specific to the module vendor. So it should be > > > possible to specify that in the device tree. > > > > > > ### 4. Camera modules without data storage > > > > > > This is the most difficult and most controversial case. In this case we > > > can't identify the module automatically by querying the hardware. It is > > > also not possible to rely on the machine identifier as with example 1. > > > Think of an arbitrary camera module connected to a Raspberry Pi - the > > > machine identifier will not change just by connecting a camera. > > > Therefore we'd like to supply all necessary information with the device > > > tree. > > > > > > The difficulty is that the combinations are huge and there is no common > > > denominator (for some modules one might be able to get an SKU, for > > > others it will even be difficult to get an official name). > > > > > > This is quite contrary to typical device tree use-cases where we try to > > > tie down everything as far as possible. > > > A flat list of module identifiers (like compatible strings) won't work > > > as it should be possible to standardize aspects of a module, even if not > > > everything is know. Think of a Raspberry Pi Cam HQ with a screw-on lens. > > > It would be great to be able to specify that module, but the lens is > > > still up to the user. > > > > > > In [1] I proposed a possible solution to that problem. A tag-based > > > system with a single device tree entry of space separated tags. Every > > > tag carries a prefix to denote a category: > > > > > > Tag Example > > > m:<ModuleName> m:vc-mipi-imx296 > > > v:<Vendor> v:RaspberryPi > > > l:<Lens> l:generic-8mm-ircut > > > s:<Sku> s:B030801 > > > u:<user defined> u:my-selfmade-module > > > > > > This is a bit like the existing "label" property which carries a human > > > readable label. So an example for a module could be: > > > > > > imx283_0: sensor@1a { > > > compatible = "sony,imx283"; > > > ... > > > module-info = "v:RaspberryPi m:camera-module-hq > > > l:generic-8mm-wide-angle"; > > > }; > > > > > > This leads to the immediate question: Should we split the tags into > > > properties? > > > > Yes, make use of the standard utilities before rolling your own format > > please. > > > > > imx283_0: sensor@1a { > > > compatible = "sony,imx283"; > > > ... > > > module-name = "camera-module-hq"; > > > module-vendor = "RaspberryPi" > > > module-lens = "generic-8mm-wide-angle"; > > > }; > > > > > > Pros: We could try to standardize on some values. > > > Cons: We add a (possibly increasing) number of properties that have no > > > value inside the kernel and will only be populated very sparsely. > > > > What value do they have anywhere? ELI5 why anyone cares that the rpi > > foundation made the sensor module, for example. What decisions can be > > made on the basis of it? Not trying to be antagonistic, I genuinely > > don't know what kind of things it affects. The lens type or some sort of > > nd filter info I can understand being useful. That said, and I know very > > little about cameras, some of these things could actually vary at runtime > > right? > > I think the difficulty here is that we want to identify something which > we can't even name precisely and we don't yet see the full spectrum of > possibilities. Regarding the question who cares if the RPi foundation > manufactured a module: It is just a way of identifying a specific piece > of hardware. So there are many modules out there using an imx477 sensor, > but they could differ in the geometry from other ones. > > A compatible string works well for devices we know. But then you can > quickly come up with cases, where only an aspect or part is known. > > - Raspberry Pi Camera Module HQ > - Lens is unknown > - So we could start to unroll that > - rpi,cmarea-module-hq-8mm-lens > - rpi,cmarea-module-hq-9mm-lens > - ... that doesn't scale > > So we could introduce a module-lens property: > - vendor-a-8mm > vendor-a-8mm-ir-cut > vendor-b-8mm > ... 1000 vendors more > > That doesn't scale as well. > > I tried to further reason about the underlying targets and why my > gutfeeling doesn't like the compatible. > > I see two main targets: > > 1. Finding a solution for well known devices like laptops or phones. > Upstreaming a compatible string per module could work, but we will often > just not know the vendor of the module. So they would be named > (incorrectly) after the manufacturer of the device. > > 2. Upstreaming overlays for well known camera modules like the ones from > RaspberryPi. I don't expect that to gain too much traction quickly > because of missing specs for connectors and therefore no way to model a > camera module in dt in a way that works for multiple processing boards. > Still it would be very helpful to be able to write dt overlays for these > modules that work with an upstream kernel without the need for nasty > hacks (like abusing the label property or so). > > 3. The same applies for full custom solutions where upstreaming > compatible strings will never happen, but we need the overall mechanics. > > So in summary I'm looking for a place to put a blob of information > regarding the camera module that is not of any use to the kernel and > only passed on to userspace. Defining a separate node and maintaining > compatible strings seems like a lot of maintenance work for little gain. > > Looking for other places to put that information doesn't lead to really > good candidates. One could store it in the software image itself, but > that is a pain as a user would loose it when flashing a new image. There are special hardware or logical partitions on eMMC/UFS devices (e.g. mmcblk0boot0). These partitions are typically preserved across normal image flashing and even full user-area erases (mmcblk0), making them a convenient place to store device-specific information when no dedicated OTP or EEPROM is available. For example, Arduino Uno Q stores Wi-Fi and Bluetooth addresses this way. That said, if consumers rely on nvmem-cells, the backend becomes irrelevant. The data may come from an external EEPROM, SoC OTP, eMMC/UFS boot partition, sensor OTP, or any other NVMEM provider, allowing multiple provisioning methods without affecting users. I also think some level of abstraction should remain in V4L2. While nvmem-cells can be used to reference the data, the sensor module attributes should also be definable directly in DT (or ACPI). This would allow multiple ways of providing the same information behind a common interface. Similar to networking, device_get_mac_address() can retrieve the MAC address either directly from firmware (DT/ACPI) or from an NVMEM cell. The consumer does not need to care where the data originates. So in the end, exposing this through a dedicated sysfs attribute sounds reasonable, perhaps following a model similar to DRM's EDID. Regards, Loic > > One could put it in a extra partition with the same issues as above and > a huge technical complexity for use cases like the RaspberryPi. > > So the devicetree seems to be a good location for it, just that we're > lacking a place to put it there. > > I hope that makes a bit of sense. ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-30 11:18 ` Stefan Klug 2026-09-30 22:01 ` Conor Dooley @ 2026-10-01 15:15 ` johannes.goede 2026-10-01 20:55 ` Laurent Pinchart 1 sibling, 1 reply; 23+ messages in thread From: johannes.goede @ 2026-10-01 15:15 UTC (permalink / raw) To: Stefan Klug, Laurent Pinchart, libcamera-devel, linux-media Cc: Loic Poulain, Michael Riesch, Rob Herring, Krzysztof Kozlowski, Conor Dooley Hi Stefan, Thank you for the write-up. On 30-Sep-26 13:18, Stefan Klug wrote: <snip> > ## Diving into the examples > > Lets look at the example I listed to see how these would be solved. > > ### 1. Laptop with camera module from various manufacturers > > I believe this can be solved by either integrating the detection logic > in libcamera and/or adding rules to udev/hwdb. But we are lacking real > examples. So if you're able to provide identification strategies for > real, existing hardware, I'd be glad to know about it. One strategy > might be to use the machine identifier provided by DMI. This is however > quite coarse and can not handle cases where the manufacturer used > different camera modules from different vendors (using the same sensor > model). ARe there for example ACPI properties that we could query for > additional information? > > Q: Does anyone in this group have more details on which information to > query and where to get more details from the system? > A: ... For the Intel IPU6/IPU7 methods there is an ACPI call which the kernel can do on the sensor fwnode object which will return a string identifying the modules. These strings don't really have any fixed format, typically they contain something which look like how some laptop serials look just a random bunch of numbers + capital letters. Userspace cannot get to this without the kernel exporting it. Given all the udev talk, I think a sysfs attribute would make sense for this. We can make the kernel do the ACPI call and if it is present add a camera_module sysfs attribute to the v4l2-subdev for the sensor, which will only be visible when there actually is a module-name. On laptops using devicetree we could then fill this from a devicetree property. > > ### 2. Camera modules with an embedded EEPROM > > To make use of the EEPROM data from user space we need to carry two > elements: The EEPROM data itself and some identifier telling which > format the data in the EEPROM has. This seems relatively straightforward > and we could model it like this in dts: > > dts-snippet: > imx283_0: sensor@1a { > compatible = "sony,imx283"; > ... > eeprom = <&eeprom>; > eeprom-format = "vendor-a-eeprom-fmt"; > }; > > Getting the link to the EEPROM from user space is something to > investigate. Ideas are either sysfs or media-controller. > The eeprom-format must be specified as well, to tell user space how to > interpret the EEPROM data, as it is typically not self-contained. > > Q: On a first discussion on that topic we were unsure if it would be > preferred to expose the data directly in sysfs, > or to symlink to the corresponding sysfs entry for the EEPROM. Any > preferences? > A: ... > > Q: Any input/things to consider from ACPI side? > A: For IPU6/IPU7 eeprom data is not used for camera-module identification (AFAIK), it is all done through the (custom, Intel specific) ACPI call I mentioned above. > Q: What happens if the EEPROM driver is not loaded yet or is just not > available? Should it block/defer probing of the sensor? > A: > > Q: We are missing real-life examples for these cases. So input from > vendors would be welcome. > A: <snip> Regards, Hans ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-10-01 15:15 ` johannes.goede @ 2026-10-01 20:55 ` Laurent Pinchart 2026-10-02 6:56 ` Sakari Ailus 0 siblings, 1 reply; 23+ messages in thread From: Laurent Pinchart @ 2026-10-01 20:55 UTC (permalink / raw) To: johannes.goede Cc: Stefan Klug, libcamera-devel, linux-media, Loic Poulain, Michael Riesch, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Sakari Ailus Hi Hans, (CC'ing Sakari who may have more insight on ACPI properties for Intel-based machines, or who may be able to pull the right people in this conversation) On Thu, Oct 01, 2026 at 05:15:05PM +0200, johannes.goede@oss.qualcomm.com wrote: > Hi Stefan, > > Thank you for the write-up. > > On 30-Sep-26 13:18, Stefan Klug wrote: > > <snip> > > > ## Diving into the examples > > > > Lets look at the example I listed to see how these would be solved. > > > > ### 1. Laptop with camera module from various manufacturers > > > > I believe this can be solved by either integrating the detection logic > > in libcamera and/or adding rules to udev/hwdb. But we are lacking real > > examples. So if you're able to provide identification strategies for > > real, existing hardware, I'd be glad to know about it. One strategy > > might be to use the machine identifier provided by DMI. This is however > > quite coarse and can not handle cases where the manufacturer used > > different camera modules from different vendors (using the same sensor > > model). ARe there for example ACPI properties that we could query for > > additional information? > > > > Q: Does anyone in this group have more details on which information to > > query and where to get more details from the system? > > A: ... > > For the Intel IPU6/IPU7 methods there is an ACPI call which the kernel > can do on the sensor fwnode object which will return a string identifying > the modules. These strings don't really have any fixed format, typically > they contain something which look like how some laptop serials look > just a random bunch of numbers + capital letters. We know that hardware manufacturers like to have multiple providers for camera modules in the same laptop model in order to avoid supply chain issues. Do you know if this can be confirmed from those strings, do we have enough data to see if the identification strings are made of a small number of clusters ? > Userspace cannot get to this without the kernel exporting it. > > Given all the udev talk, I think a sysfs attribute would make sense > for this. We can make the kernel do the ACPI call and if it is present > add a camera_module sysfs attribute to the v4l2-subdev for the sensor, > which will only be visible when there actually is a module-name. > > On laptops using devicetree we could then fill this from a devicetree > property. I would very much like to standardize the API exposed to userspace across different types of firmwares (ACPI and DT). Having more data about the ACPI side could help us design DT properties that would fit nicely with a single API. > > ### 2. Camera modules with an embedded EEPROM > > > > To make use of the EEPROM data from user space we need to carry two > > elements: The EEPROM data itself and some identifier telling which > > format the data in the EEPROM has. This seems relatively straightforward > > and we could model it like this in dts: > > > > dts-snippet: > > imx283_0: sensor@1a { > > compatible = "sony,imx283"; > > ... > > eeprom = <&eeprom>; > > eeprom-format = "vendor-a-eeprom-fmt"; > > }; > > > > Getting the link to the EEPROM from user space is something to > > investigate. Ideas are either sysfs or media-controller. > > The eeprom-format must be specified as well, to tell user space how to > > interpret the EEPROM data, as it is typically not self-contained. > > > > Q: On a first discussion on that topic we were unsure if it would be > > preferred to expose the data directly in sysfs, > > or to symlink to the corresponding sysfs entry for the EEPROM. Any > > preferences? > > A: ... > > > > Q: Any input/things to consider from ACPI side? > > A: > > For IPU6/IPU7 eeprom data is not used for camera-module identification > (AFAIK), it is all done through the (custom, Intel specific) ACPI call > I mentioned above. I wouldn't expect an EEPROM, that would be quite costly for little gain. I wonder if sensor OTP memory is typically used though. Some sensor manufacturers specify how to store calibration data there, such as lens shading tables for instance. I wonder if anyone puts the same data in ACPI tables. > > Q: What happens if the EEPROM driver is not loaded yet or is just not > > available? Should it block/defer probing of the sensor? > > A: > > > > Q: We are missing real-life examples for these cases. So input from > > vendors would be welcome. > > A: > <snip> -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-10-01 20:55 ` Laurent Pinchart @ 2026-10-02 6:56 ` Sakari Ailus 2026-10-02 18:31 ` Laurent Pinchart 0 siblings, 1 reply; 23+ messages in thread From: Sakari Ailus @ 2026-10-02 6:56 UTC (permalink / raw) To: Laurent Pinchart Cc: johannes.goede, Stefan Klug, libcamera-devel, linux-media, Loic Poulain, Michael Riesch, Rob Herring, Krzysztof Kozlowski, Conor Dooley Hi Laurent, Hans, On Thu, Oct 01, 2026 at 11:55:05PM +0300, Laurent Pinchart wrote: > Hi Hans, > > (CC'ing Sakari who may have more insight on ACPI properties for > Intel-based machines, or who may be able to pull the right people in > this conversation) > > On Thu, Oct 01, 2026 at 05:15:05PM +0200, johannes.goede@oss.qualcomm.com wrote: > > Hi Stefan, > > > > Thank you for the write-up. > > > > On 30-Sep-26 13:18, Stefan Klug wrote: > > > > <snip> > > > > > ## Diving into the examples > > > > > > Lets look at the example I listed to see how these would be solved. > > > > > > ### 1. Laptop with camera module from various manufacturers > > > > > > I believe this can be solved by either integrating the detection logic > > > in libcamera and/or adding rules to udev/hwdb. But we are lacking real > > > examples. So if you're able to provide identification strategies for > > > real, existing hardware, I'd be glad to know about it. One strategy > > > might be to use the machine identifier provided by DMI. This is however > > > quite coarse and can not handle cases where the manufacturer used > > > different camera modules from different vendors (using the same sensor > > > model). ARe there for example ACPI properties that we could query for > > > additional information? > > > > > > Q: Does anyone in this group have more details on which information to > > > query and where to get more details from the system? > > > A: ... > > > > For the Intel IPU6/IPU7 methods there is an ACPI call which the kernel > > can do on the sensor fwnode object which will return a string identifying > > the modules. These strings don't really have any fixed format, typically > > they contain something which look like how some laptop serials look > > just a random bunch of numbers + capital letters. > > We know that hardware manufacturers like to have multiple providers for > camera modules in the same laptop model in order to avoid supply chain > issues. Do you know if this can be confirmed from those strings, do we > have enough data to see if the identification strings are made of a > small number of clusters ? These strings are unique to the module. I'm afraid they could even be module names as defined by the module vendor. > > > Userspace cannot get to this without the kernel exporting it. > > > > Given all the udev talk, I think a sysfs attribute would make sense > > for this. We can make the kernel do the ACPI call and if it is present > > add a camera_module sysfs attribute to the v4l2-subdev for the sensor, > > which will only be visible when there actually is a module-name. > > > > On laptops using devicetree we could then fill this from a devicetree > > property. > > I would very much like to standardize the API exposed to userspace > across different types of firmwares (ACPI and DT). Having more data > about the ACPI side could help us design DT properties that would fit > nicely with a single API. Note that this concerns only the Windows specific ACPI tables. DisCo for Imaging (or older Chromebook ACPI tables following Linux specific definitions) doesn't specify anything (largely because DT doesn't). Of course it'd be nice to change that -- for both. > > > > ### 2. Camera modules with an embedded EEPROM > > > > > > To make use of the EEPROM data from user space we need to carry two > > > elements: The EEPROM data itself and some identifier telling which > > > format the data in the EEPROM has. This seems relatively straightforward > > > and we could model it like this in dts: > > > > > > dts-snippet: > > > imx283_0: sensor@1a { > > > compatible = "sony,imx283"; > > > ... > > > eeprom = <&eeprom>; > > > eeprom-format = "vendor-a-eeprom-fmt"; > > > }; > > > > > > Getting the link to the EEPROM from user space is something to > > > investigate. Ideas are either sysfs or media-controller. > > > The eeprom-format must be specified as well, to tell user space how to > > > interpret the EEPROM data, as it is typically not self-contained. > > > > > > Q: On a first discussion on that topic we were unsure if it would be > > > preferred to expose the data directly in sysfs, > > > or to symlink to the corresponding sysfs entry for the EEPROM. Any > > > preferences? > > > A: ... > > > > > > Q: Any input/things to consider from ACPI side? > > > A: > > > > For IPU6/IPU7 eeprom data is not used for camera-module identification > > (AFAIK), it is all done through the (custom, Intel specific) ACPI call > > I mentioned above. > > I wouldn't expect an EEPROM, that would be quite costly for little gain. > I wonder if sensor OTP memory is typically used though. Some sensor > manufacturers specify how to store calibration data there, such as lens > shading tables for instance. I wonder if anyone puts the same data in > ACPI tables. To my knowledge there's no tuning data in system firmware on Intel x86 systems. That could change in the future of course, but it's perhaps unlikely, due to logistical issues. > > > > Q: What happens if the EEPROM driver is not loaded yet or is just not > > > available? Should it block/defer probing of the sensor? > > > A: > > > > > > Q: We are missing real-life examples for these cases. So input from > > > vendors would be welcome. > > > A: > > <snip> > -- Regards, Sakari Ailus ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-10-02 6:56 ` Sakari Ailus @ 2026-10-02 18:31 ` Laurent Pinchart 2026-10-06 10:03 ` Sakari Ailus 0 siblings, 1 reply; 23+ messages in thread From: Laurent Pinchart @ 2026-10-02 18:31 UTC (permalink / raw) To: Sakari Ailus Cc: johannes.goede, Stefan Klug, libcamera-devel, linux-media, Loic Poulain, Michael Riesch, Rob Herring, Krzysztof Kozlowski, Conor Dooley On Fri, Oct 02, 2026 at 09:56:23AM +0300, Sakari Ailus wrote: > On Thu, Oct 01, 2026 at 11:55:05PM +0300, Laurent Pinchart wrote: > > Hi Hans, > > > > (CC'ing Sakari who may have more insight on ACPI properties for > > Intel-based machines, or who may be able to pull the right people in > > this conversation) > > > > On Thu, Oct 01, 2026 at 05:15:05PM +0200, johannes.goede@oss.qualcomm.com wrote: > > > Hi Stefan, > > > > > > Thank you for the write-up. > > > > > > On 30-Sep-26 13:18, Stefan Klug wrote: > > > > > > <snip> > > > > > > > ## Diving into the examples > > > > > > > > Lets look at the example I listed to see how these would be solved. > > > > > > > > ### 1. Laptop with camera module from various manufacturers > > > > > > > > I believe this can be solved by either integrating the detection logic > > > > in libcamera and/or adding rules to udev/hwdb. But we are lacking real > > > > examples. So if you're able to provide identification strategies for > > > > real, existing hardware, I'd be glad to know about it. One strategy > > > > might be to use the machine identifier provided by DMI. This is however > > > > quite coarse and can not handle cases where the manufacturer used > > > > different camera modules from different vendors (using the same sensor > > > > model). ARe there for example ACPI properties that we could query for > > > > additional information? > > > > > > > > Q: Does anyone in this group have more details on which information to > > > > query and where to get more details from the system? > > > > A: ... > > > > > > For the Intel IPU6/IPU7 methods there is an ACPI call which the kernel > > > can do on the sensor fwnode object which will return a string identifying > > > the modules. These strings don't really have any fixed format, typically > > > they contain something which look like how some laptop serials look > > > just a random bunch of numbers + capital letters. > > > > We know that hardware manufacturers like to have multiple providers for > > camera modules in the same laptop model in order to avoid supply chain > > issues. Do you know if this can be confirmed from those strings, do we > > have enough data to see if the identification strings are made of a > > small number of clusters ? > > These strings are unique to the module. I'm afraid they could even be > module names as defined by the module vendor. Does that mean that, if a laptop manufacturer sources camera modules equipped with the same sensor from different module manufacturers to diversify its supply chain, a single machine model (as report by DMI) would use a separate module identification string in ACPI for each module type ? > > > Userspace cannot get to this without the kernel exporting it. > > > > > > Given all the udev talk, I think a sysfs attribute would make sense > > > for this. We can make the kernel do the ACPI call and if it is present > > > add a camera_module sysfs attribute to the v4l2-subdev for the sensor, > > > which will only be visible when there actually is a module-name. > > > > > > On laptops using devicetree we could then fill this from a devicetree > > > property. > > > > I would very much like to standardize the API exposed to userspace > > across different types of firmwares (ACPI and DT). Having more data > > about the ACPI side could help us design DT properties that would fit > > nicely with a single API. > > Note that this concerns only the Windows specific ACPI tables. DisCo for > Imaging (or older Chromebook ACPI tables following Linux specific > definitions) doesn't specify anything (largely because DT doesn't). Of > course it'd be nice to change that -- for both. Understood. The needs are likely the same though, userspace needs to pick the right tuning data. Do you know if Intel-based laptops typically ship all tuning files for a device model in the same file system image and pick the appropriate file based on data in ACPI tables, or if the system image is tailored to each SKU and contains only the tuning file for the module used by that particular machine instance ? > > > > ### 2. Camera modules with an embedded EEPROM > > > > > > > > To make use of the EEPROM data from user space we need to carry two > > > > elements: The EEPROM data itself and some identifier telling which > > > > format the data in the EEPROM has. This seems relatively straightforward > > > > and we could model it like this in dts: > > > > > > > > dts-snippet: > > > > imx283_0: sensor@1a { > > > > compatible = "sony,imx283"; > > > > ... > > > > eeprom = <&eeprom>; > > > > eeprom-format = "vendor-a-eeprom-fmt"; > > > > }; > > > > > > > > Getting the link to the EEPROM from user space is something to > > > > investigate. Ideas are either sysfs or media-controller. > > > > The eeprom-format must be specified as well, to tell user space how to > > > > interpret the EEPROM data, as it is typically not self-contained. > > > > > > > > Q: On a first discussion on that topic we were unsure if it would be > > > > preferred to expose the data directly in sysfs, > > > > or to symlink to the corresponding sysfs entry for the EEPROM. Any > > > > preferences? > > > > A: ... > > > > > > > > Q: Any input/things to consider from ACPI side? > > > > A: > > > > > > For IPU6/IPU7 eeprom data is not used for camera-module identification > > > (AFAIK), it is all done through the (custom, Intel specific) ACPI call > > > I mentioned above. > > > > I wouldn't expect an EEPROM, that would be quite costly for little gain. > > I wonder if sensor OTP memory is typically used though. Some sensor > > manufacturers specify how to store calibration data there, such as lens > > shading tables for instance. I wonder if anyone puts the same data in > > ACPI tables. > > To my knowledge there's no tuning data in system firmware on Intel x86 > systems. That could change in the future of course, but it's perhaps > unlikely, due to logistical issues. That's my guess too. I half recall that Linux-based Nokia phones contained camera tuning data in a special flash partition, but I don't have much details. > > > > Q: What happens if the EEPROM driver is not loaded yet or is just not > > > > available? Should it block/defer probing of the sensor? > > > > A: > > > > > > > > Q: We are missing real-life examples for these cases. So input from > > > > vendors would be welcome. > > > > A: > > > <snip> -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-10-02 18:31 ` Laurent Pinchart @ 2026-10-06 10:03 ` Sakari Ailus 0 siblings, 0 replies; 23+ messages in thread From: Sakari Ailus @ 2026-10-06 10:03 UTC (permalink / raw) To: Laurent Pinchart Cc: johannes.goede, Stefan Klug, libcamera-devel, linux-media, Loic Poulain, Michael Riesch, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jimmy Su, serin.yeh Hi Laurent, On Fri, Oct 02, 2026 at 09:31:05PM +0300, Laurent Pinchart wrote: > On Fri, Oct 02, 2026 at 09:56:23AM +0300, Sakari Ailus wrote: > > On Thu, Oct 01, 2026 at 11:55:05PM +0300, Laurent Pinchart wrote: > > > Hi Hans, > > > > > > (CC'ing Sakari who may have more insight on ACPI properties for > > > Intel-based machines, or who may be able to pull the right people in > > > this conversation) > > > > > > On Thu, Oct 01, 2026 at 05:15:05PM +0200, johannes.goede@oss.qualcomm.com wrote: > > > > Hi Stefan, > > > > > > > > Thank you for the write-up. > > > > > > > > On 30-Sep-26 13:18, Stefan Klug wrote: > > > > > > > > <snip> > > > > > > > > > ## Diving into the examples > > > > > > > > > > Lets look at the example I listed to see how these would be solved. > > > > > > > > > > ### 1. Laptop with camera module from various manufacturers > > > > > > > > > > I believe this can be solved by either integrating the detection logic > > > > > in libcamera and/or adding rules to udev/hwdb. But we are lacking real > > > > > examples. So if you're able to provide identification strategies for > > > > > real, existing hardware, I'd be glad to know about it. One strategy > > > > > might be to use the machine identifier provided by DMI. This is however > > > > > quite coarse and can not handle cases where the manufacturer used > > > > > different camera modules from different vendors (using the same sensor > > > > > model). ARe there for example ACPI properties that we could query for > > > > > additional information? > > > > > > > > > > Q: Does anyone in this group have more details on which information to > > > > > query and where to get more details from the system? > > > > > A: ... > > > > > > > > For the Intel IPU6/IPU7 methods there is an ACPI call which the kernel > > > > can do on the sensor fwnode object which will return a string identifying > > > > the modules. These strings don't really have any fixed format, typically > > > > they contain something which look like how some laptop serials look > > > > just a random bunch of numbers + capital letters. > > > > > > We know that hardware manufacturers like to have multiple providers for > > > camera modules in the same laptop model in order to avoid supply chain > > > issues. Do you know if this can be confirmed from those strings, do we > > > have enough data to see if the identification strings are made of a > > > small number of clusters ? > > > > These strings are unique to the module. I'm afraid they could even be > > module names as defined by the module vendor. > > Does that mean that, if a laptop manufacturer sources camera modules > equipped with the same sensor from different module manufacturers to > diversify its supply chain, a single machine model (as report by DMI) > would use a separate module identification string in ACPI for each > module type ? That is my understanding. I'm cc'ing Jimmy Su and Serin Yeh, too. > > > > > Userspace cannot get to this without the kernel exporting it. > > > > > > > > Given all the udev talk, I think a sysfs attribute would make sense > > > > for this. We can make the kernel do the ACPI call and if it is present > > > > add a camera_module sysfs attribute to the v4l2-subdev for the sensor, > > > > which will only be visible when there actually is a module-name. > > > > > > > > On laptops using devicetree we could then fill this from a devicetree > > > > property. > > > > > > I would very much like to standardize the API exposed to userspace > > > across different types of firmwares (ACPI and DT). Having more data > > > about the ACPI side could help us design DT properties that would fit > > > nicely with a single API. > > > > Note that this concerns only the Windows specific ACPI tables. DisCo for > > Imaging (or older Chromebook ACPI tables following Linux specific > > definitions) doesn't specify anything (largely because DT doesn't). Of > > course it'd be nice to change that -- for both. > > Understood. The needs are likely the same though, userspace needs to > pick the right tuning data. > > Do you know if Intel-based laptops typically ship all tuning files for a > device model in the same file system image and pick the appropriate file > based on data in ACPI tables, or if the system image is tailored to each > SKU and contains only the tuning file for the module used by that > particular machine instance ? It's currently probably sensor-based as on DT. I don't think the module information is exported to userspace currently as we have no appropriate UAPI for that. > > > > > > ### 2. Camera modules with an embedded EEPROM > > > > > > > > > > To make use of the EEPROM data from user space we need to carry two > > > > > elements: The EEPROM data itself and some identifier telling which > > > > > format the data in the EEPROM has. This seems relatively straightforward > > > > > and we could model it like this in dts: > > > > > > > > > > dts-snippet: > > > > > imx283_0: sensor@1a { > > > > > compatible = "sony,imx283"; > > > > > ... > > > > > eeprom = <&eeprom>; > > > > > eeprom-format = "vendor-a-eeprom-fmt"; > > > > > }; > > > > > > > > > > Getting the link to the EEPROM from user space is something to > > > > > investigate. Ideas are either sysfs or media-controller. > > > > > The eeprom-format must be specified as well, to tell user space how to > > > > > interpret the EEPROM data, as it is typically not self-contained. > > > > > > > > > > Q: On a first discussion on that topic we were unsure if it would be > > > > > preferred to expose the data directly in sysfs, > > > > > or to symlink to the corresponding sysfs entry for the EEPROM. Any > > > > > preferences? > > > > > A: ... > > > > > > > > > > Q: Any input/things to consider from ACPI side? > > > > > A: > > > > > > > > For IPU6/IPU7 eeprom data is not used for camera-module identification > > > > (AFAIK), it is all done through the (custom, Intel specific) ACPI call > > > > I mentioned above. > > > > > > I wouldn't expect an EEPROM, that would be quite costly for little gain. > > > I wonder if sensor OTP memory is typically used though. Some sensor > > > manufacturers specify how to store calibration data there, such as lens > > > shading tables for instance. I wonder if anyone puts the same data in > > > ACPI tables. > > > > To my knowledge there's no tuning data in system firmware on Intel x86 > > systems. That could change in the future of course, but it's perhaps > > unlikely, due to logistical issues. > > That's my guess too. > > I half recall that Linux-based Nokia phones contained camera tuning data > in a special flash partition, but I don't have much details. There was all sorts of hardware specific tuning in the cal area and AFAIR this included WIFI but not cameras. > > > > > > Q: What happens if the EEPROM driver is not loaded yet or is just not > > > > > available? Should it block/defer probing of the sensor? > > > > > A: > > > > > > > > > > Q: We are missing real-life examples for these cases. So input from > > > > > vendors would be welcome. > > > > > A: > > > > <snip> > -- Regards, Sakari Ailus ^ permalink raw reply [flat|nested] 23+ messages in thread
[parent not found: <2e1d628f-8183-4446-9500-9886561f320b@mm-sol.com>]
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference [not found] ` <2e1d628f-8183-4446-9500-9886561f320b@mm-sol.com> @ 2026-09-30 23:23 ` Laurent Pinchart 2026-10-06 6:30 ` Gjorgji Rosikopulos 0 siblings, 1 reply; 23+ messages in thread From: Laurent Pinchart @ 2026-09-30 23:23 UTC (permalink / raw) To: Gjorgji Rosikopulos; +Cc: libcamera-devel, linux-media Hello Gjorgji, On Fri, Sep 18, 2026 at 02:10:07PM +0300, Gjorgji Rosikopulos wrote: > Hi Laurent, All, > > On 9/15/26 02:38, Laurent Pinchart wrote: > > We can consider scheduling a third topic. Proposals are welcome. > > > Below are my proposed discussion topics. All of them relate to advanced camera > use cases: > > 1. Electronic Image Stabilization (EIS). > 2. Multi-frame Bayer or YUV noise reduction filters. > 3. QUAD CFA reconstruction, including preprocessing algorithms for > high-resolution Quad Bayer sensors. > 4. AI-based denoising in Bayer or YUV domains, focusing on image preprocessing > denoising algorithms. > 5. DOL and video HDR use cases. > 6. Background blur for video conferencing applications. > 7. Face detection algorithms operating directly on image data. > 8. Multicamera 360 image stitching etc. Those are all interesting topics, but I won't be able to schedule all of them in 15 minutes :-) > All of these use cases and algorithm implementations can be vendor-specific or > third-party solutions and may run on a GPU, DSP, or other accelerators. > > I also think that, similar to the IPA used for 3A algorithms, we need an > IPA-like for frame-processing algorithms. > > As discussed, the only practical way to upstream such functionality into > libcamera is to provide an open-source alternative (even a simplified > implementation) that defines and covers the use case, including its input/ > output parameters and interfaces. > > The main question is whether these algorithms should live inside libcamera or > outside of it. Both approaches have their strengths, but I am personally in > favor of integrating them into libcamera, perhaps as a layer above the pipeline > handlers, for example through use case plugins or a similar mechanism. I've long thought that libcamera should make pipeline handlers more modular. Pipeline handlers would implement components for the pipeline elements (such as the inline frontend and offline ISP) and declare how those components are connected. We should be able to move most of the logic required to run the pipeline into common code. With a modular approach, inserting elements in the pipeline could become easier. It's however not clear to me yet if we should try to separate the processing required for the use cases you list above from the "core" of pipeline handlers, into a separate layer on top, or if some use cases would benefit more from being able to inject elements into the pipeline. Note that we have started experimenting with the concept of layers, see https://patchwork.libcamera.org/project/libcamera/list/?series=5753/ > We can also learn from Android's approach. Initially, the HAL3 and per-control > APIs were created to allow applications to implement advanced algorithms such > as HDR and EIS. Later, CameraX Extensions were introduced so that these > capabilities could be shared across applications and benefit the broader > ecosystem: > > https://developer.android.com/media/camera/camerax/extensions-api It's certainly something we should study more. As usual with Android there's little documentation on the underlying architecture though :-( > I believe Linux faces a similar challenge. Once PipeWire and GStreamer plugins > based on libcamera become widely adopted across Linux distributions, it will > become increasingly difficult to introduce these advanced use cases at higher > layers of the software stack. Having a standardized framework within or closely > integrated with libcamera could make these capabilities more accessible and > reusable across applications. No fundamental disagreement there, although we should also be careful not to reimplement GStreamer or PipeWire inside libcamera. An important question that will need to be answered is who will be willing to do all this work. -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-30 23:23 ` Laurent Pinchart @ 2026-10-06 6:30 ` Gjorgji Rosikopulos 0 siblings, 0 replies; 23+ messages in thread From: Gjorgji Rosikopulos @ 2026-10-06 6:30 UTC (permalink / raw) To: Laurent Pinchart; +Cc: libcamera-devel, linux-media Hi Laurent, On 10/1/26 02:23, Laurent Pinchart wrote: > Hello Gjorgji, > > On Fri, Sep 18, 2026 at 02:10:07PM +0300, Gjorgji Rosikopulos wrote: >> Hi Laurent, All, >> >> On 9/15/26 02:38, Laurent Pinchart wrote: >> >> We can consider scheduling a third topic. Proposals are welcome. >> >> >> Below are my proposed discussion topics. All of them relate to advanced camera >> use cases: >> >> 1. Electronic Image Stabilization (EIS). >> 2. Multi-frame Bayer or YUV noise reduction filters. >> 3. QUAD CFA reconstruction, including preprocessing algorithms for >> high-resolution Quad Bayer sensors. >> 4. AI-based denoising in Bayer or YUV domains, focusing on image preprocessing >> denoising algorithms. >> 5. DOL and video HDR use cases. >> 6. Background blur for video conferencing applications. >> 7. Face detection algorithms operating directly on image data. >> 8. Multicamera 360 image stitching etc. > > Those are all interesting topics, but I won't be able to schedule all of > them in 15 minutes :-) I agree those topics will require more time to discuss. > >> All of these use cases and algorithm implementations can be vendor-specific or >> third-party solutions and may run on a GPU, DSP, or other accelerators. >> >> I also think that, similar to the IPA used for 3A algorithms, we need an >> IPA-like for frame-processing algorithms. >> >> As discussed, the only practical way to upstream such functionality into >> libcamera is to provide an open-source alternative (even a simplified >> implementation) that defines and covers the use case, including its input/ >> output parameters and interfaces. >> >> The main question is whether these algorithms should live inside libcamera or >> outside of it. Both approaches have their strengths, but I am personally in >> favor of integrating them into libcamera, perhaps as a layer above the pipeline >> handlers, for example through use case plugins or a similar mechanism. > > I've long thought that libcamera should make pipeline handlers more > modular. Pipeline handlers would implement components for the pipeline > elements (such as the inline frontend and offline ISP) and declare how > those components are connected. We should be able to move most of the > logic required to run the pipeline into common code. That will be really good to have. > > With a modular approach, inserting elements in the pipeline could become > easier. It's however not clear to me yet if we should try to separate > the processing required for the use cases you list above from the "core" > of pipeline handlers, into a separate layer on top, or if some use cases > would benefit more from being able to inject elements into the pipeline. I think that we will need some scheduler or code for driving different usecases, also it should be noted that processing order may depend on the parameters, An example we have preprocessing noise filter which can be enabled disabled, or HDR. Depending on that the processing blocks participating in the pipleine may change. But one step at a time. > > Note that we have started experimenting with the concept of layers, see > https://patchwork.libcamera.org/project/libcamera/list/?series=5753/ Thanks i will check that work. > >> We can also learn from Android's approach. Initially, the HAL3 and per-control >> APIs were created to allow applications to implement advanced algorithms such >> as HDR and EIS. Later, CameraX Extensions were introduced so that these >> capabilities could be shared across applications and benefit the broader >> ecosystem: >> >> https://developer.android.com/media/camera/camerax/extensions-api > > It's certainly something we should study more. As usual with Android > there's little documentation on the underlying architecture though :-( > >> I believe Linux faces a similar challenge. Once PipeWire and GStreamer plugins >> based on libcamera become widely adopted across Linux distributions, it will >> become increasingly difficult to introduce these advanced use cases at higher >> layers of the software stack. Having a standardized framework within or closely >> integrated with libcamera could make these capabilities more accessible and >> reusable across applications. > > No fundamental disagreement there, although we should also be careful > not to reimplement GStreamer or PipeWire inside libcamera. I agree on this, but having some concept like bins in gstreamer will also help for the entire usecase, the question is whether we need to expose using multiple stages of reprocess the control to the app (gstreamer element, PipeWire or other libcamera application) or have them build in libcamera. Both have benefits, having ability the application to add intermediate stages gives freedom to experiment and some vendors to implement their algos outside of the libcamera, On other hand side standard supported application like teams/slack browser will not have those extras example with cameraX extensions in Android which have been mentioned earlier. > > An important question that will need to be answered is who will be > willing to do all this work. We have two eng in MMS which can start experimenting with those extensions in libcamera, i will actively involved and drive this activity if there are no objections :-). Once you are back from Prague i can schedule a meeting for further discussions. > Regards, ~Gjorgji ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-09-14 23:38 ` [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference Laurent Pinchart ` (4 preceding siblings ...) [not found] ` <2e1d628f-8183-4446-9500-9886561f320b@mm-sol.com> @ 2026-10-01 6:19 ` Rishikesh Donadkar 2026-10-01 21:08 ` Laurent Pinchart 5 siblings, 1 reply; 23+ messages in thread From: Rishikesh Donadkar @ 2026-10-01 6:19 UTC (permalink / raw) To: Laurent Pinchart, libcamera-devel, linux-media On 15/09/26 05:08, Laurent Pinchart wrote: > Hello, > > As most of you already know, the Linux Plumbers Conference will host a > Camera & ISP BoF in Prague in three weeks ([1]). > > The initial proposal for a microconference has unfortunately been > downgraded by the program committee to a 45 minutes BoF. We have > therefore decided to limit the discussion to three topics at most. Two > topics have been approved so far: > > - RGB-IR support in V4L2 and libcamera > > by Rishikesh Donadkar and Devarsh Thakkar, Texas Instruments > > The Linux kernel V4L2 API does not support RGB-IR image sensors. > While building blocks necessary to handle those devices are slowly > being merged, RGB-IR support itself hasn't been tackled yet. > > Rishikesh and Devarsh will also present this topic at the OSS Europe > conference ([2]). Hello everyone, I have submitted an RFC for the OV2312 camera sensor driver[1]. This patch series proposes the use of array controls to facilitate setting controls for both the RGB and IR streams coming out of the camera subdevice. I would greatly appreciate your feedback and thoughts on this approach. [1] https://lore.kernel.org/all/20260925133001.2780868-1-r-donadkar@ti.com/#t Regards, Rishikesh > > - Camera module identification > > by Stefan Klug, Ideas on Board > > Camera tuning and calibration depend not only on the image sensor, but > also on the lens and other characteristics of camera modules. While > Linux supports identifying image sensors, it completely lacks the > concept of camera modules. > > Identification of camera modules requires coordination between > platform firmware (DT or ACPI), the kernel and userspace. Discussions > will benefit from the presence of DT maintainers. > > We can consider scheduling a third topic. Proposals are welcome. > > Due to the 45 minutes BoF format, we will focus on discussions and won't > be able to afford presentations. All topic leads are expected to > circulate discussion materials on public mailing lists at least a week > before the event to give attendees time to read through proposals. The > materials should summarize the issue at hand and the ongoing work, and > clearly state the questions that will be discussed during the BoF. > Slides that support the discussions, if any, should also be submitted > prior to the event. > > If there is enough interest, I am considering booking a meeting room on > Wednesday morning (location to be determined, likely outside of the LPC > venue) to extend the BoF. We could continue discussions on the topics > listed above, as well as schedule additional topics. We would overlap > with the following LPC microconferences: > > - Networking Track > - Containers and checkpoint/restore MC > - Rust MC > - Scheduler and Real-Time MC > - Build Systems MC > > Please let me know if you would be interested in attending a Wednesday > morning session by replying to this e-mail (publicly or privately). If > you would like to propose additional topics, please do so publicly. > > > [1] https://lpc.events/event/20/contributions/2364/ > [2] https://osselceu2026.sched.com/event/2RaZj/enabling-multi-stream-camera-sensors-in-linux-rgb+ir-streams-and-embedded-metadata-rishikesh-donadkar-devarsh-thakkar-texas-instruments > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference 2026-10-01 6:19 ` Rishikesh Donadkar @ 2026-10-01 21:08 ` Laurent Pinchart 0 siblings, 0 replies; 23+ messages in thread From: Laurent Pinchart @ 2026-10-01 21:08 UTC (permalink / raw) To: Rishikesh Donadkar; +Cc: libcamera-devel, linux-media Hi Rishikesh, On Thu, Oct 01, 2026 at 11:49:17AM +0530, Rishikesh Donadkar wrote: > On 15/09/26 05:08, Laurent Pinchart wrote: > > Hello, > > > > As most of you already know, the Linux Plumbers Conference will host a > > Camera & ISP BoF in Prague in three weeks ([1]). > > > > The initial proposal for a microconference has unfortunately been > > downgraded by the program committee to a 45 minutes BoF. We have > > therefore decided to limit the discussion to three topics at most. Two > > topics have been approved so far: > > > > - RGB-IR support in V4L2 and libcamera > > > > by Rishikesh Donadkar and Devarsh Thakkar, Texas Instruments > > > > The Linux kernel V4L2 API does not support RGB-IR image sensors. > > While building blocks necessary to handle those devices are slowly > > being merged, RGB-IR support itself hasn't been tackled yet. > > > > Rishikesh and Devarsh will also present this topic at the OSS Europe > > conference ([2]). > > Hello everyone, > > I have submitted an RFC for the OV2312 camera sensor driver[1]. This > patch series proposes the use of array controls to facilitate setting > controls for both the RGB and IR streams coming out of the camera > subdevice. > > I would greatly appreciate your feedback and thoughts on this approach. > > [1] https://lore.kernel.org/all/20260925133001.2780868-1-r-donadkar@ti.com/#t Thank you for doing so. I strongly encourage every attendee of the BoF to at least read the proposal ahead of time, and ideally start discussing it on the mailing list. > > > > - Camera module identification > > > > by Stefan Klug, Ideas on Board > > > > Camera tuning and calibration depend not only on the image sensor, but > > also on the lens and other characteristics of camera modules. While > > Linux supports identifying image sensors, it completely lacks the > > concept of camera modules. > > > > Identification of camera modules requires coordination between > > platform firmware (DT or ACPI), the kernel and userspace. Discussions > > will benefit from the presence of DT maintainers. > > > > We can consider scheduling a third topic. Proposals are welcome. > > > > Due to the 45 minutes BoF format, we will focus on discussions and won't > > be able to afford presentations. All topic leads are expected to > > circulate discussion materials on public mailing lists at least a week > > before the event to give attendees time to read through proposals. The > > materials should summarize the issue at hand and the ongoing work, and > > clearly state the questions that will be discussed during the BoF. > > Slides that support the discussions, if any, should also be submitted > > prior to the event. > > > > If there is enough interest, I am considering booking a meeting room on > > Wednesday morning (location to be determined, likely outside of the LPC > > venue) to extend the BoF. We could continue discussions on the topics > > listed above, as well as schedule additional topics. We would overlap > > with the following LPC microconferences: > > > > - Networking Track > > - Containers and checkpoint/restore MC > > - Rust MC > > - Scheduler and Real-Time MC > > - Build Systems MC > > > > Please let me know if you would be interested in attending a Wednesday > > morning session by replying to this e-mail (publicly or privately). If > > you would like to propose additional topics, please do so publicly. > > > > > > [1] https://lpc.events/event/20/contributions/2364/ > > [2] https://osselceu2026.sched.com/event/2RaZj/enabling-multi-stream-camera-sensors-in-linux-rgb+ir-streams-and-embedded-metadata-rishikesh-donadkar-devarsh-thakkar-texas-instruments -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2026-10-06 10:03 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <UzpC1s2YnBtZIaRCab_Y8AbCecyauDUO4OC7Nhd1-h4TE21aLSghbwDuOKgdwJQugvPMjM4foPHuL-UKnBLD6A==@protonmail.internalid>
2026-09-14 23:38 ` [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference Laurent Pinchart
2026-09-17 13:47 ` Bryan O'Donoghue
2026-09-18 8:08 ` johannes.goede
2026-09-18 9:18 ` Laurent Pinchart
2026-09-19 21:45 ` Bryan O'Donoghue
2026-09-19 22:29 ` Laurent Pinchart
2026-09-21 11:52 ` Bryan O'Donoghue
2026-09-21 16:02 ` Nicolas Dufresne
2026-09-27 9:01 ` johannes.goede
2026-09-27 9:04 ` johannes.goede
2026-09-30 11:18 ` Stefan Klug
2026-09-30 22:01 ` Conor Dooley
2026-10-02 16:14 ` Stefan Klug
2026-10-03 14:56 ` Loic Poulain
2026-10-01 15:15 ` johannes.goede
2026-10-01 20:55 ` Laurent Pinchart
2026-10-02 6:56 ` Sakari Ailus
2026-10-02 18:31 ` Laurent Pinchart
2026-10-06 10:03 ` Sakari Ailus
[not found] ` <2e1d628f-8183-4446-9500-9886561f320b@mm-sol.com>
2026-09-30 23:23 ` Laurent Pinchart
2026-10-06 6:30 ` Gjorgji Rosikopulos
2026-10-01 6:19 ` Rishikesh Donadkar
2026-10-01 21:08 ` Laurent Pinchart
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox