--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: libsolid4: Device notifier shows multiple entries (four) for mtp device
- From: Bernhard Übelacker <bernhardu@vr-web.de>
- Date: Thu, 02 Apr 2015 21:36:11 +0200
- Message-id: <20150402193611.11322.99910.reportbug@localhost>
Package: libsolid4
Version: 4:4.14.2-5
Severity: normal
Tags: upstream patch
Dear Maintainer,
attaching an Android phone via USB to my KDE desktop shows in
the device notifier 5 entries, 4 without a proper description.
The reason probably is that some Android phone get multiple solid entries:
udi = '/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:02.1/usb1/1-1'
....
ID_GPHOTO2 = '1' (string)
ID_MEDIA_PLAYER = '1' (string)
....
udi =
'/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.2'
....
ID_GPHOTO2 = '1' (string)
ID_MEDIA_PLAYER = '1' (string)
....
udi =
'/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.3'
....
ID_GPHOTO2 = '1' (string)
ID_MEDIA_PLAYER = '1' (string)
....
udi =
'/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.1'
....
udi =
'/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.0'
....
There are two upstream bugs about this issue [1] [2].
While both got closed already, I think in KDE4 only
that part about the camera aka ID_MEDIA_PLAYER is solved [3].
The "KDE5" version shows an additional check for ID_GPHOTO2.
I rebuilt kde4libs with these 2 lines applied and then only one entry
was shown when connecting the phone (patch attached).
Kind regards,
Bernhard
[1] https://bugs.kde.org/show_bug.cgi?id=339334
[2] https://bugs.kde.org/show_bug.cgi?id=336523
[3]
http://quickgit.kde.org/?p=kdelibs.git&a=history&h=f1796e97e5635fcb93a0bfc600b9da6ecce914a5&f=solid%2Fsolid%2Fbackends%2Fudev%2Fudevmanager.cpp
[4]
http://quickgit.kde.org/?p=solid.git&a=history&h=db9a05543b0a14dffeb023650995a344eabb2fd7&f=src%2Fsolid%2Fdevices%2Fbackends%2Fudev%2Fudevmanager.cpp
-- System Information:
Debian Release: 8.0
APT prefers testing-updates
APT policy: (990, 'testing-updates'), (990, 'testing'), (500, 'testing-proposed-updates')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.16.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages libsolid4 depends on:
ii libc6 2.19-15
ii libqt4-dbus 4:4.8.6+git64-g5dc8b2b+dfsg-3
ii libqt4-xml 4:4.8.6+git64-g5dc8b2b+dfsg-3
ii libqtcore4 4:4.8.6+git64-g5dc8b2b+dfsg-3
ii libqtgui4 4:4.8.6+git64-g5dc8b2b+dfsg-3
ii libstdc++6 4.9.2-10
ii libudev1 215-12
ii udev 215-12
Versions of packages libsolid4 recommends:
ii udisks2 2.1.3-5
ii upower 0.99.1-3.1
Versions of packages libsolid4 suggests:
ii media-player-info 22-2
-- no debconf information
Description: Do not show child devices of cameras and mobiles in device notifier
Combination of these 2 patches:
http://quickgit.kde.org/?p=solid.git&a=commitdiff&h=a1cda008d582bc9d8aeecd2c191f631e0fbb6f79
Don't report gphoto devices that are child of gphoto devices
http://quickgit.kde.org/?p=solid.git&a=commitdiff&h=a100520e3891368b370b8925f44e5fb71eaa23a3
complete check for multiple MTP/PTP devices
Last-Update: <2015-04-02>
--- kde4libs-4.14.2.orig/solid/solid/backends/udev/udevmanager.cpp
+++ kde4libs-4.14.2/solid/solid/backends/udev/udevmanager.cpp
@@ -129,8 +129,8 @@ bool UDevManager::Private::checkOfIntere
return device.subsystem() == QLatin1String("dvb") ||
device.subsystem() == QLatin1String("video4linux") ||
device.subsystem() == QLatin1String("net") ||
- device.deviceProperty("ID_MEDIA_PLAYER").toString().isEmpty() == false || // media-player-info recognized devices
- device.deviceProperty("ID_GPHOTO2").toInt() == 1; // GPhoto2 cameras
+ (!device.deviceProperty("ID_MEDIA_PLAYER").toString().isEmpty() && device.parent().deviceProperty("ID_MEDIA_PLAYER").toString().isEmpty()) || // media-player-info recognized devices
+ (device.deviceProperty("ID_GPHOTO2").toInt() == 1 && device.parent().deviceProperty("ID_GPHOTO2").toInt() != 1); // GPhoto2 cameras
}
bool UDevManager::Private::isLidBubtton(const UdevQt::Device& device)
--- End Message ---