Comment 6 for bug 1863239

Revision history for this message
Till Kamppeter (till-kamppeter) wrote :

Now I tried to investigate from which UDEV rule the wrong setting comes from. First I searched all UDEV rules for the word "audio":

till@till-x1yoga:~$ grep -l '\baudio\b' /*/udev/rules.d/*.rules
/lib/udev/rules.d/50-udev-default.rules
/lib/udev/rules.d/60-persistent-v4l.rules
/lib/udev/rules.d/69-libmtp.rules
/lib/udev/rules.d/70-uaccess.rules
/lib/udev/rules.d/90-pulseaudio.rules
till@till-x1yoga:~$

So I expect only one of these can be the culprit. Actually a 'GROUP="audio"' setting exists only in

/lib/udev/rules.d/50-udev-default.rules

and

/lib/udev/rules.d/69-libmtp.rules

The former is probably no problem as it assigns this group only to devices of 'SUBSYSTEM=="sound"" where the latter seems to be actually the culprit.

First it includes some devices explicitly and then it lists thousands of supported devices. In the end there is some rule for passing a wide range of devices through an auto-probing:

---------
# Autoprobe vendor-specific, communication and PTP devices
ENV{ID_MTP_DEVICE}!="1", ENV{MTP_NO_PROBE}!="1", ENV{COLOR_MEASUREMENT_DEVICE}!="1", ENV{ID_GPHOTO}!="1", ENV{libsane_matched}!="yes", ATTR{bDeviceClass}=="00|02|06|ef|ff", PROGRAM="mtp-probe /sys$env{DEVPATH} $attr{busnum} $attr{devnum}", RESULT=="1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
---------

And this auto-probing tests positive on my printer:

till@till-x1yoga:~$ /lib/udev/mtp-probe /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1 001 012
1
till@till-x1yoga:~$

The device path of the printer I have taken from the blob in the udevadm output (attached to previous comment) which also contains "ID_MEDIA_PLAYER=1". So mtp-probe identifies my printer as a media player and assigns the device file to the "audio" group.

I assume that this happens to most or even all HP printers, so an exclusion of only my device via Vendor and Product ID would not be the correct solution.

Either mtp-probe needs to get fixed or before said rule in the end of the 69-libmtp.rules file and after the lines explicitly identifying media players from HP, there should be placed a line to exclude further HP devices, like

----------
...
# Exclude any further, not explicitly specified HP devices
ATTR{idVendor}=="03f0", GOTO="libmtp_rules_end"
# Autoprobe vendor-specific, communication and PTP devices
ENV{ID_MTP_DEVICE}!="1", ENV{MTP_NO_PROBE}!="1", ENV{COLOR_MEASUREMENT_DEVICE}!="1", ENV{ID_GPHOTO}!="1", ENV{libsane_matched}!="yes", ATTR{bDeviceClass}=="00|02|06|ef|ff", PROGRAM="mtp-probe /sys$env{DEVPATH} $attr{busnum} $attr{devnum}", RESULT=="1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"

LABEL="libmtp_rules_end"
----------