[arch-general] libgphoto2 2.4.10.1-2 udev rules not matching

Ruslan Nabioullin rnabioullin at gmail.com
Tue Nov 22 19:53:32 EST 2011


I am trying to access a camera using the gphoto2 frontend to x86_64 libgphoto2 2.4.10.1-2, which installs a udev rules file to /lib/udev/rules.d/40-gphoto.rules.


40-gphoto.rules (abridged):

# udev rules file for libgphoto2 devices (for udev 136 version)
# Created from this library:
#   libgphoto2      2.4.10.1       gcc, ltdl, EXIF
#   libgphoto2_port 0.8.0          gcc, ltdl, USB, serial without locking
#
# this file is autogenerated, local changes will be LOST on upgrades
ACTION!="add", GOTO="libgphoto2_rules_end"
SUBSYSTEM!="usb", GOTO="libgphoto2_usb_end"
ENV{DEVTYPE}!="usb_device", GOTO="libgphoto2_usb_end"

ENV{ID_USB_INTERFACES}=="", IMPORT{program}="usb_id --export %p"
ENV{ID_USB_INTERFACES}=="*:08*:*", GOTO="libgphoto2_usb_end"
ENV{ID_USB_INTERFACES}=="*:060101:*", ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="PTP", GOTO="libgphoto2_usb_end"
...
ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="315d", ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", MODE="0660", GROUP="camera"
...
LABEL="libgphoto2_usb_end"

...
LABEL="libgphoto2_rules_end"


When I connect a camera (which is listed as supported by the libgphoto2 webpages), udevadm reports the following event:


UDEV  [18908.111143] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-2 (usb)
ACTION=add
BUSNUM=002
COLORD_DEVICE=1
COLORD_KIND=camera
DEVICE=/proc/bus/usb/002/017
DEVNAME=/dev/bus/usb/002/017
DEVNUM=017
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-2
DEVTYPE=usb_device
GPHOTO2_DRIVER=PTP
ID_BUS=usb
ID_GPHOTO2=1
ID_MODEL=Canon_Digital_Camera
ID_MODEL_ENC=Canon\x20Digital\x20Camera
ID_MODEL_ID=315d
ID_REVISION=0002
ID_SERIAL=Canon_Inc._Canon_Digital_Camera_3DEABCB4221D4B9A8677BD305FF7A362
ID_SERIAL_SHORT=3DEABCB4221D4B9A8677BD305FF7A362
ID_USB_INTERFACES=:060101:
ID_VENDOR=Canon_Inc.
ID_VENDOR_ENC=Canon\x20Inc.
ID_VENDOR_ID=04a9
MAJOR=189
MINOR=144
PRODUCT=4a9/315d/2
SEQNUM=1971
SUBSYSTEM=usb
TAGS=:udev-acl:
TYPE=0/0/0
UDEV_LOG=3
USEC_INITIALIZED=18907744211


ID_VENDOR_ID, ID_MODEL_ID, and ID_GPHOTO2 matches, but GPHOTO2_DRIVER does not ("PTP" does not match "proprietary").
As a result, /dev/bus/usb/002/017 is owned by the "root" group, instead of the "camera" group, thus preventing the use of gphoto2 due to no write permissions:


crw-rw-r-- 1 root root 189, 144 Nov 22 18:23 017


In fact, I have tried chgrp'ing the aforementioned device file to "camera", and gphoto2 successfully functioned inasmuch as I tested it (except for an error when gphoto2 tried accessing some other USB device file as well for some reason, but this did not impact functionality).

Any ideas why the udev rules file was written under the assumption that the camera vendor and model ("Canon:PowerShot A720 IS (PTP mode)",  0x04a9, 0x315d) uses a "proprietary" driver instead of "PTP"? I have found a possible solution (https://wiki.archlinux.org/index.php/Digital_Cameras#Permission_issues) but I have not tested it since I see no reason why the libgphoto2 package should not work with this camera vendor and model by default.

Thanks in advance,
-Ruslan

-- 
Ruslan Nabioullin
rnabioullin at gmail.com


More information about the arch-general mailing list