• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Cannon Scanner wird nicht unter Leap 15.1 erkannt

susejunky

Moderator
Teammitglied
Hallo manzek,
manzek schrieb:
susejunky schrieb:
Auch in meinen openSUSE Leap 15.1 und 15.0 Systemen gibt es keine Gruppe scanner. Unter openSUSE Leap 15.0 musste der Benutzer allerdings noch nicht Mitglied der Gruppe lp sein, um den Scanner nutzen zu können. Das war erst unter openSUSE Leap 15.1 erforderlich.

Das scheint aber nicht generell überall gleich zu sein, denn ich bin mit meinem Standarduser lediglich in der Gruppe users. Und mein Scanner in einem Brother MFC8880-DN geht trotzdem.
Da hast Du sehr wahrscheinlich recht.

Ohne es je im Detail untersucht zu haben, vermute ich, dass das jeweilige, für den Betrieb des Scanners erforderliche Backend ausschlaggebend ist.

Soweit ich das verstehe ist sane-backends eine Zusammenstellung unterschiedlichster Programme (Backends), die den Zugriff auf die verschiedenen Scanner erlauben. Das genesys-backend, welches ich für meinen Canon CanoScan LiDE 700F benötige, ermöglicht den Zugriff auf Scanner, die auf bestimmten Genesys Logic GLxxx chipsets aufgebaut sind.

Ich habe es bereits mehrfach erlebt, dass neue sane-backends-Versionen "dramatische" Änderungen im genesys-backend mit sich brachten; z.B. die aktuelle sane-backends-Version 1.0.29 hat einen Fehler im genesys-backend, der meinen Scanner komplett lahm legt, sodass ich zur sane-backends-Version 1.0.28 zurückkehren musste.

Wahrscheinlich hat auch ein Versionswechsel (1.0.27 auf 1.0.28?) das geänderte Verhalten bezüglich der Gruppenzugehörigkeit beim genesys-backend gebracht, denn ich kann mich nicht daran erinnern, dass ich vor openSUSE Leap 15.1 meinen Benutzer jemals in eine bestimmte Gruppe (lp, scanner, ...) aufnehmen musste, um meinen Scanner nutzen zu können. Aber mit openSUSE Tumbleweed wollte es ohne lp nicht mehr funktionieren.

Wie jedoch schon gesagt: Wirklich fundiert untersucht habe ich das alles noch nicht.

Viele Grüße

susejunky
 

josef-wien

Ultimate Guru
Von der reinen Lehre her haben die sane backends damit nichts zu tun. Über die Datei 55-libsane.rules wird bei einem von sane unterstützten Scanner die udev-Variable libsane_matched gesetzt. Über eine weitere Datei wird bei Vorhandensein dieser Variablen (und für weitere Gegebenheiten wie z. B. optische Laufwerke) der udev-TAG uaccess gesetzt, der im Zuge des Login-Vorgangs dazu führt, daß der jeweilige Benutzer über ACL für diese Geräte berechtigt wird. Was hier genau passiert, kann ich Dir nicht sagen.

Abfrage der bei einem Gerät gesetzten TAGS:
Code:
/sbin/udevadm info -q all -p $(/sbin/udevadm info -q path -n bus/usb/XXX/YYY) | grep TAGS
 

susejunky

Moderator
Teammitglied
Hallo josef-wien,
josef-wien schrieb:
Von der reinen Lehre her haben die sane backends damit nichts zu tun. Über die Datei 55-libsane.rules wird bei einem von sane unterstützten Scanner die udev-Variable libsane_matched gesetzt. Über eine weitere Datei wird bei Vorhandensein dieser Variablen (und für weitere Gegebenheiten wie z. B. optische Laufwerke) der udev-TAG uaccess gesetzt, der im Zuge des Login-Vorgangs dazu führt, daß der jeweilige Benutzer über ACL für diese Geräte berechtigt wird. Was hier genau passiert, kann ich Dir nicht sagen.

Abfrage der bei einem Gerät gesetzten TAGS:
Code:
/sbin/udevadm info -q all -p $(/sbin/udevadm info -q path -n bus/usb/XXX/YYY) | grep TAGS
vielen Dank für die Information.

Das Thema Scanner ist mir immer noch "ein Buch mit sieben Siegeln". Gerade habe ich mir meine drei Systeme noch einmal angesehen und folgendes festgestellt:

Unter openSUSE Tumbleweed habe ich momentan gar keine Datei /etc/udev/rules.d/55-libsane.rules aber das liegt daran, dass die aktuellen sane-backends von Tumbleweed mit meinem Scanner nicht funktionieren und ich auf diesem Rechner das Problem noch nicht abschließend behoben habe.

Unter openSUSE Leap 15.1 steht in /etc/udev/rules.d/55-libsane.rules
Code:
# Canon CanoScan 700F
ATTR{idVendor}=="04a9", ATTR{idProduct}=="1907", MODE="0664", GROUP="lp", ENV{libsane_matched}="yes"

Unter openSUSE Leap 15.0 steht in /etc/udev/rules.d/55-libsane.rules
Code:
# Canon CanoScan 700F
ATTR{idVendor}=="04a9", ATTR{idProduct}=="1907", MODE="0664", GROUP="lp", ENV{libsane_matched}="yes"

Unter Leap 15.0 kann ich den Scanner benutzen ohne dass ich der Gruppe lp angehöre aber unter Leap 15.1 geht die Scanner-Nutzung nur noch wenn ich lp angehöre.

Ich werde jetzt einmal meinen Scanner aus meinem Büro holen und das näher untersuchen ...

Viele Grüße

susejunky
 

susejunky

Moderator
Teammitglied
Hallo josef-wien,

zunächst erst einmal eine Korrektur zu meinen bisherigen Aussagen:

Dass der Benutzer unter Leap 15.1 oder Tumbleweed der Gruppe lp angehören muss, um den Scanner nutzen zu können, ist so nicht korrekt.

Sehr wahrscheinlich habe ich den Benutzer einst aus anderen Gründen (die ich im Moment aber nicht nachvollziehen kann) einmal dieser Gruppe zugeordnet.

Hier die Informationen zu den drei Betriebssystemen:

openSUSE Tumbleweed
Code:
sane-backends 1.0.29 (funktioniert nicht)
sane-backends 1.0.28

/etc/udev/rules.d/55-libsane.rules
# Canon CanoScan 700F
ATTR{idVendor}=="04a9", ATTR{idProduct}=="1907", MODE="0664", GROUP="lp", ENV{libsane_matched}="yes"

# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
...
Bus 001 Device 002: ID 04a9:1907 Canon, Inc. CanoScan LiDE 700F
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
#

# getfacl /dev/bus/usb/001/002
getfacl: Entferne führende '/' von absoluten Pfadnamen
# file: dev/bus/usb/001/002
# owner: root
# group: lp
user::rw-
user:USERNAME:rw-
group::rw-
mask::rw-
other::r--
#

# /sbin/udevadm info -q all -p $(/sbin/udevadm info -q path -n bus/usb/001/002) | grep TAGS      
E: TAGS=:seat:uaccess:
#

openSUSE Leap 15.1
Code:
sane-backends 1.0.27

/etc/udev/rules.d/55-libsane.rules
# Canon CanoScan 700F
ATTR{idVendor}=="04a9", ATTR{idProduct}=="1907", MODE="0664", GROUP="lp", ENV{libsane_matched}="yes"

# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
...
Bus 001 Device 002: ID 04a9:1907 Canon, Inc. CanoScan LiDE 700F
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
#

# getfacl /dev/bus/usb/001/002
getfacl: Entferne führende '/' von absoluten Pfadnamen
# file: dev/bus/usb/001/002
# owner: root
# group: lp
user::rw-
user:USERNAME:rw-
group::rw-
mask::rw-
other::r--
#

# /sbin/udevadm info -q all -p $(/sbin/udevadm info -q path -n bus/usb/001/002) | grep TAGS
E: TAGS=:seat:uaccess:
#

openSUSE Leap 15.0
Code:
sane-backends 1.0.27

/etc/udev/rules.d/55-libsane.rules
# Canon CanoScan 700F
ATTR{idVendor}=="04a9", ATTR{idProduct}=="1907", MODE="0664", GROUP="lp", ENV{libsane_matched}="yes"

# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub                                                                       
...
Bus 001 Device 002: ID 04a9:1907 Canon, Inc. CanoScan LiDE 700F                                                                      
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub                                                                       
#

# getfacl /dev/bus/usb/001/002                                                                                      
getfacl: Entferne führende '/' von absoluten Pfadnamen                                                                               
# file: dev/bus/usb/001/002                                                                                                          
# owner: root                                                                                                                        
# group: lp                                                                                                                          
user::rw-                                                                                                                            
user:USERNAME:rw-                                                                                                                          
group::rw-                                                                                                                           
mask::rw-                                                                                                                            
other::r--                                                                                                                           
#

# /sbin/udevadm info -q all -p $(/sbin/udevadm info -q path -n bus/usb/001/002) | grep TAGS                         
E: TAGS=:uaccess:seat:
#
Eine Gruppe Scanner gibt es in keinem der drei Systeme.

Viele Grüße

susejunky
 

josef-wien

Ultimate Guru
Somit ist alles, wie es sein soll: Der Benutzer hat Schreibberechtigung auf das Gerät, die beim Gerät vorgemerkte Gruppe (in diesem Fall lp) muß ihm nicht zugeordnet werden.
 

susejunky

Moderator
Teammitglied
Hallo josef-wien,
josef-wien schrieb:
Somit ist alles, wie es sein soll: Der Benutzer hat Schreibberechtigung auf das Gerät, die beim Gerät vorgemerkte Gruppe (in diesem Fall lp) muß ihm nicht zugeordnet werden.
Ja, so ist es.

Nochmals vielen Dank für Deine Hinweise, dank derer ich mich nun endlich dazu durchgerungen habe das Thema, das mir schon lange "querlag", einmal richtig aufzuarbeiten.

Viele Grüße

susejunky
 

Sauerland

Ultimate Guru
Aus dem sane.spec:
# Scanner autoconfiguration stuff (packaged in sane-backends-autoconfig):
# It must be done before the udev libsane.rules stuff because the scanner database is needed there.
# This requires the installed descriptions and descriptions-external files
# because create_scanner_database reads the description files to extract the needed info
# to create the scanner database from which create_sane-backends-autoconfig.rules
# extracts the needed info to generate the 56-sane-backends-autoconfig.rules file
# for automated scanner driver activation via udev.
# Note that driver activation alone is not sufficient
# to have a usable "scanner autoconfiguration" for the user.
# What is also needed are appropriate USB device file permissions
# so that the user's scanning software can access the device.
# But this is already in place via the the udev libsane.rules file
# which contains a superset of USB scanner IDs (all known USB scanner IDs)
# compared to the USB scanner IDs in 56-sane-backends-autoconfig.rules,
# see create_sane-backends-autoconfig.rules for which USB scanners
# automated driver activation is done (basically only those scanners
# which are supported by a free driver, which do not require firmware upload,
# and where the support status is "complete" or "good").
# Modify create_scanner_database to find the description files in the BuildRoot directory
# (the usual delimiter '/' cannot be used because buildroot contains it too):
sed -i -e 's|/usr/share/sane/descriptions|%{buildroot}/usr/share/sane/descriptions|' create_scanner_database
# Create the scanner database and store it because it is also needed later
# to disable "unsupported" model entries in the udev libsane.rules file.
# The file name "scanner.database" is used hardcoded in create_sane-backends-autoconfig.rules.
# Since version 1.0.19 there is udev and HAL support.
# Therefore the old/outdated hotplug stuff is dropped (was never used by openSUSE).
# Neither tools/hotplug/libsane.usermap nor tools/hotplug/libusbscanner is installed.
# Also the evil-hack init-script "sane-dev" is no longer provided.
# Regarding udev:
# Modify the generated tools/udev/libsane.rules file as follows:
# All GROUP="scanner" are replaced by GROUP="lp".
# There is no group "scanner" in /etc/group for openSUSE.
# For all-in-one devices (i.e. printer + scanner, e.g. "EPSON Stylus" devices)
# the group must be "lp" so that the CUPS usb backend which runs
# as user "lp" (who is member of the group "lp") can send printing data
# to the printer unit (i.e. the printer interface of the USB device).
# It is sufficiently secure and reasonable easy to use by default
# the same group "lp" for printers and scanners because both kind of devices
# usually require physical user access (to get the printed paper or
# to place a paper on the scanner) so that both kind of devices
# should usually require the same kind of security.
sed -i -e 's/GROUP="scanner"/GROUP="lp"/' tools/udev/libsane.rules
 

susejunky

Moderator
Teammitglied
Hallo Sauerland,
Sauerland schrieb:
Aus dem sane.spec:
# Scanner autoconfiguration stuff (packaged in sane-backends-autoconfig):
# It must be done before the udev libsane.rules stuff because the scanner database is needed there.
# This requires the installed descriptions and descriptions-external files
# because create_scanner_database reads the description files to extract the needed info
# to create the scanner database from which create_sane-backends-autoconfig.rules
# extracts the needed info to generate the 56-sane-backends-autoconfig.rules file
# for automated scanner driver activation via udev.
# Note that driver activation alone is not sufficient
# to have a usable "scanner autoconfiguration" for the user.
# What is also needed are appropriate USB device file permissions
# so that the user's scanning software can access the device.
# But this is already in place via the the udev libsane.rules file
# which contains a superset of USB scanner IDs (all known USB scanner IDs)
# compared to the USB scanner IDs in 56-sane-backends-autoconfig.rules,
# see create_sane-backends-autoconfig.rules for which USB scanners
# automated driver activation is done (basically only those scanners
# which are supported by a free driver, which do not require firmware upload,
# and where the support status is "complete" or "good").
# Modify create_scanner_database to find the description files in the BuildRoot directory
# (the usual delimiter '/' cannot be used because buildroot contains it too):
sed -i -e 's|/usr/share/sane/descriptions|%{buildroot}/usr/share/sane/descriptions|' create_scanner_database
# Create the scanner database and store it because it is also needed later
# to disable "unsupported" model entries in the udev libsane.rules file.
# The file name "scanner.database" is used hardcoded in create_sane-backends-autoconfig.rules.
das Paket sane-backends-autoconfig ist auf keinem meiner Systeme installiert und es existiert auch keine Datei /etc/udev/rules.d/56-sane-backends-autoconfig.rules.
Sauerland schrieb:
...
# Since version 1.0.19 there is udev and HAL support.
...
# There is no group "scanner" in /etc/group for openSUSE.
Das trifft bei meinen Systemen zu.

Viele Grüße

susejunky
 

Sauerland

Ultimate Guru
susejunky schrieb:
Hallo Sauerland,
Sauerland schrieb:
Aus dem sane.spec:
# Scanner autoconfiguration stuff (packaged in sane-backends-autoconfig):
# It must be done before the udev libsane.rules stuff because the scanner database is needed there.
# This requires the installed descriptions and descriptions-external files
# because create_scanner_database reads the description files to extract the needed info
# to create the scanner database from which create_sane-backends-autoconfig.rules
# extracts the needed info to generate the 56-sane-backends-autoconfig.rules file
# for automated scanner driver activation via udev.
# Note that driver activation alone is not sufficient
# to have a usable "scanner autoconfiguration" for the user.
# What is also needed are appropriate USB device file permissions
# so that the user's scanning software can access the device.
# But this is already in place via the the udev libsane.rules file
# which contains a superset of USB scanner IDs (all known USB scanner IDs)
# compared to the USB scanner IDs in 56-sane-backends-autoconfig.rules,
# see create_sane-backends-autoconfig.rules for which USB scanners
# automated driver activation is done (basically only those scanners
# which are supported by a free driver, which do not require firmware upload,
# and where the support status is "complete" or "good").
# Modify create_scanner_database to find the description files in the BuildRoot directory
# (the usual delimiter '/' cannot be used because buildroot contains it too):
sed -i -e 's|/usr/share/sane/descriptions|%{buildroot}/usr/share/sane/descriptions|' create_scanner_database
# Create the scanner database and store it because it is also needed later
# to disable "unsupported" model entries in the udev libsane.rules file.
# The file name "scanner.database" is used hardcoded in create_sane-backends-autoconfig.rules.
das Paket sane-backends-autoconfig ist auf keinem meiner Systeme installiert und es existiert auch keine Datei /etc/udev/rules.d/56-sane-backends-autoconfig.rules.

Die autoconfig sollte man aber schon installieren.

susejunky schrieb:
Sauerland schrieb:
...
# Since version 1.0.19 there is udev and HAL support.
...
# There is no group "scanner" in /etc/group for openSUSE.
Das trifft bei meinen Systemen zu.


Viele Grüße

susejunky

Aber nur wegen der letzten Zeile:
sed -i -e 's/GROUP="scanner"/GROUP="lp"/' tools/udev/libsane.rules
 

josef-wien

Ultimate Guru
Sauerland schrieb:
Eine seltsame Methode, bei jedem Anschließen des Scanners (also in der Regel bei jedem Systemstart) mittels eines Programms in der Datei /etc/sane.d/dll.conf nachzuschauen, ob im Fall von susejunky der Inhalt "#genesys" vorhanden ist, und ihn zutreffendenfalls in "genesys" zu ändern. Aber nachdem openSUSE auch bei der Datei /etc/udev/rules.d/55-libsane.rules die vom Sane-Projekt vorgegebene Gruppe "scanner" durch etwas anderes ersetzt ...

Abrer warum wird das Thema durch ellenlage Zitate verunstaltet?
 
Oben