Bug#996749: Missing rules for webcams with /dev/media* controls

Michael Biebl biebl at debian.org
Mon Oct 18 08:12:02 BST 2021


Control: tags -1 + upstream

Hello

Am 18.10.21 um 08:20 schrieb Joseph Carter:
> Package: udev
> Version: 249.5-1
> Severity: normal
> 
> Many webcams new use more than the standard /dev/videoN device to
> control them through e.g. uvcdynctrl. For example, here is my Logitech
> C930e, which is a pretty common example on Debian:
> 
> ```
> tjcarter at aki:~$ uvcdynctrl -l
> Listing available devices:
>    video0   Logitech Webcam C930e
>      Media controller device: /dev/media0
> ERROR: Unable to open media controller device '/dev/media0': Permission denied (Error: 13)
> ERROR: Unable to list device entities: Invalid device or device cannot be opened. (Code: 5)
>    video1   Logitech Webcam C930e
>      Media controller device /dev/media1 doesn't exist
> ERROR: Unable to list device entities: Invalid device or device cannot be opened. (Code: 5)
> ```
> 
> Okay, I have no idea why there are two /dev/video entries there since
> only the first one actually is a video device. Either way, you can see
> that there's an error accessing /dev/media0, which is definitely
> provided by the camera:
> 
> ```
> tjcarter at aki:~$ ls -l /dev/media*
> crw-rw----+ 1 root video 239, 0 Oct 17 11:01 /dev/media0
> tjcarter at aki:~$ cat /sys/dev/char/239\:0/model
> Logitech Webcam C930e
> ```
> 
> I should have access to this as a console user, but I don't. Searching
> online, I found this file, named 65-media-uaccess.rules which is
> supposedly part of systemd … but not on my system it isn't!

Where exactly did you find this information? My online searches turn up 
nothing
Do you have a reference?
Looking at the systemd/udev git repo, it never shipped a file named
65-media-uaccess.rules afaics

> ```
> #  SPDX-License-Identifier: LGPL-2.1+
> #
> #  This file is part of systemd.
> #
> #  systemd is free software; you can redistribute it and/or modify it
> #  under the terms of the GNU Lesser General Public License as published by
> #  the Free Software Foundation; either version 2.1 of the License, or
> #  (at your option) any later version.
> 
> ACTION=="remove", GOTO="media_uaccess_end"
> ENV{MAJOR}=="", GOTO="media_uaccess_end"
> 
> # Newer Webcams, frame grabber, TV cards
> SUBSYSTEM=="media", TAG+="uaccess"
> 
> LABEL="media_uaccess_end"
> ```
> 
> Sure enough, adding it to the system fixes the permission error:
> 
> ```
> tjcarter at aki:~$ uvcdynctrl -l
> Listing available devices:
>    video0   Logitech Webcam C930e
>      Media controller device: /dev/media0
>      Entity 1: Logitech Webcam C930e. Type: 65537, Revision: 0, Flags: 1, Group-id: 0, Pads: 1, Links: 0
>        Device node
>        Entity: 1, Pad 0, Flags: 1
>    video1   Logitech Webcam C930e
>      Media controller device /dev/media1 doesn't exist
> ERROR: Unable to list device entities: Invalid device or device cannot be opened. (Code: 5)
> tjcarter at aki:~$ uvcdynctrl -c
> Listing available controls for device video0:
>    Brightness
>    Contrast
>    Saturation
>    White Balance Temperature, Auto
>    Gain
>    Power Line Frequency
>    White Balance Temperature
>    Sharpness
>    Backlight Compensation
>    Exposure, Auto
>    Exposure (Absolute)
>    Exposure, Auto Priority
>    Pan (Absolute)
>    Tilt (Absolute)
>    Focus (absolute)
>    Focus, Auto
>    Zoom, Absolute
>    LED1 Mode
>    LED1 Frequency
> tjcarter at aki:~$ uvcdynctrl -g "Zoom, Absolute"
> 100
> tjcarter at aki:~$ uvcdynctrl -s "Zoom, Absolute" 150
> tjcarter at aki:~$ uvcdynctrl -g "Zoom, Absolute"
> 150
> ```
> 
> (This by the way zooms the camera in to have a tighter focus on me and
> less my kitchen behind me.)
> 
> On some cameras (my IPEVO document camera for example) access to the
> associated /dev/mediaN device is required to put the camera into a mode
> offering (compressed) high-resolution AND high-framerate mode. The
> aforementioned IPEVO can do 4k at 30fps, but Cheese and OBS are unable
> to set that mode without access to the media controller.
> 
> Is there a reason the tag for the media subsystem is not found on Debian
> systems? It seems currently or previously it was intended by systemd's
> devs that console users have access to it. Can or should it be made that
> way by default on Debian systems?
> 

Looking at /lib/udev/rules.d/50-udev-default.rules, I see a static group 
permission for those types of devices:

SUBSYSTEM=="media", GROUP="video"

So I assume if you are in group video, you should have access to those 
devices.

In don't find anything in /lib/udev/rules.d/70-uaccess.rules related to 
those types of devices. I'm not sure, if this intentional or not.

Can you please raise this upstream at
https://github.com/systemd/systemd/issues/new

I'm not really familiar with those types of devices to assess whether 
it's safe to ship such a rule which set the uaccess tag or not.

And if so, it should definitely be addressed upstream not via a 
downstream patch/change.

Regards,
Michael

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20211018/41780923/attachment.sig>


More information about the Pkg-systemd-maintainers mailing list