I recently needed to adjust my webcam image settings because the automatic brightness was off. I did it with v4l2ucp and it worked fine, but it would be great if I didn’t need to install a separate app, I wish I could use the KDE settings app. I’m not sure how difficult it is to make it portable, maybe there’s a wide range of standards, I don’t know. If settings got a copy of the v4l2ucp logic, there’s at least 1 machine that would be supported.
Hi - just to check, do you have a lead on any other or more currently-maintained work in that area?
It looks like the main v4l2ucp repository that most links point to hasn’t been updated in quite a while - v4l2ucp - Browse /v4l2ucp at SourceForge.net - which would seem to imply that it might only apply to older or more niche hardware?
My laptop is 4 months old and it’s “made” by a company selling branded OEM machines. I doubt that the webcam is old or niche, it’s probably the cheapest, most widely available module you could buy in 2024. Info Center says that it’s a USB 2.0 device made by Kingcome using uvcvideo
driver, I’m not sure if that matters.
I agree that v4lucp is long abandoned, but that’s actually good because it means that at least some standards haven’t changed in a decade meaning less potential maintenance. A quick search revealed that there’s also a similar v4l2-ctl
CLI app that’s frequently recommended. I also discovered cameractrls
which has a nice GUI, seems actively maintained and works well, even when installed as Flatpak.
Ah - that does sound like good news, as you said, for the stability of features that such a configuration module would need to handle.
Great find on GitHub - soyersoyer/cameractrls: Camera controls for Linux ! It does kind of prompt the question - is there a big additional benefit to having the same sort of functionality re-built inside a KDE System Settings module, when a tool like that is available via Flathub?
There could perhaps be a case that without that sort of thing being built-in to System Settings, some folks won’t even know that changing those settings is a possibility? I always thought the picture quality of the webcam in my last laptop was absolutely terrible - but hearing you mention brightness settings, maybe I just didn’t have it configured correctly for my environment?
It might be worth talking through, then - out of the various controls that are possible in that standard, what are the ones that are consistently applicable enough to warrant inclusion in a standard settings module?
Another point to consider would be, do the settings that would be exposed here have ways of being explained that will make sense to a layperson? Looking at that cameractrls tool, things like field-of-view, zoom, pan, and tilt all kind of make intuitive sense - but there would likely need to be some “translation” or explanation of why someone would choose to toggle Dynamic Framerate Exposure, or YUYV vs. MJPG pixel formats, if those are relevant for the average user.
There is some prior art here in terms of an operating system settings application providing some of this functionality, notably scoped down to the very basics that a non-power-user would likely ever want to interact with: Manage cameras with Camera settings in Windows 11 - Microsoft Support
This is an interesting one!
is there a big additional benefit to having the same sort of functionality re-built inside a KDE System Settings module, when a tool like that is available via Flathub?
That’s the fundamental question and I can’t answer it for the KDE developers and maintainers. Should KDE be more complete and require less 3rd party software or should it be lean and simple? As a user I would probably prefer having the webcam settings available out of the box, the settings app was the first place I searched while looking for a solution. 3rd parties are always a hassle, they often integrate poorly, have mixed quality, sometimes they lack support, they pollute your machine and probably most importantly you need to know about them to install them in the first place. Like you said, most of the users don’t even know that the webcam can be adjusted.
Unfortunately I’m not the right person to discuss the Linux webcam stack, I know next to nothing about the existing standards, what they offer and how to support them.
I agree that the UI needs to be carefully designed to be user friendly. Maybe hiding most of the knobs in an “advanced” section would be good, probably all of them are somewhat useful. I think that the exposed ones need to be mostly about brightness (I’m not sure which, there are multiple), contrast and saturation. These 3 should fix most of the common issues with poor picture quality when the conditions are not ideal, namely being too dark and having a weird color on your face.
My Lenovo idea pad had this issue but it got sorted on its own. I guess auto system update fixed the issue.
Another possibly relevant point - the KDE webcam application, Kamoso, once had slider controls for the basic elements being discussed here. A while back, contributors seemed to make a tradeoff to remove those and include “effect” templates instead: Expose the pipeline to the front-end (361d0fea) · Commits · Multimedia / Kamoso · GitLab
Folks contributing to Kamoso might currently be at the closest intersection of understanding “webcams in Linux” and “KDE/Qt interaction with webcams”. That seems like good perspective to gather for whoever would end up working on this.
So what do you think @johnandmegh, is the KDE team going to consider this feature or is it dead in the water? What would be the next steps?
The next step would be someone putting together a feature request using the KDE Bugtracking System - the Community Wiki guide to getting setup on that Bugzilla system and submitting a ticket is located here: Get Involved/Issue Reporting - KDE Community Wiki
At that point, bug triagers and developers would then need to figure out how the requested functionality fits in with the intended scope and design of the KDE application.
If it lines up there and is determined to be implementable, then forward motion from there would typically require someone with the time, interest and ability stepping up and volunteering their time to turn the idea into implemented code (and then submit it for review and potential merging into the main product).