Problem accessing a HP Scanjet G3110

I am in the process of upgrading to Leap 42.1 from 13.2, getting everything right on an old machine before wiping the disk on my regular machine. I am unable to get the scanner to be recognized. It was not straightforward under 13.2. I had to go through these steps:

  1. Download hp3900-series tar file from http://sourceforge.net/projects/hp3900-series/ and run INSTALL.sh

  2. Add

HP Scanjet G3110

usb 0x03f0 0x4305
to /etc/sane.d/hp3900.conf

  1. Add

Hewlett-Packard ScanJet G3110

ATTR{idVendor}==“03f0”, ATTR{idProduct}==“4305”, MODE=“0664”, GROUP=“lp”, ENV{libsane_matched}=“yes”
to /etc/udev/libsane.rules

  1. Add
    hp3900
    to /etc/sane.d/dll.conf

  2. Install hplip

  3. Go to Yast -> Hardware -> Scanner
    and attempt to configure the scanner.

Under Leap 42.1 the Scanner Configuration window contains these three items in the list:
hp3900 No scanner recognized by this driver
hpaio No scanner recognized by this driver
Not Configured hewlett packard hp scanjet USB scanner (vendor=0x03f0 [hewlett packard]) at libusb:001:004

When I select the last one and click on Edit, I get a list of types of scanner. I select the G3110 and click Next, but it refuses to be configured.

If I try the command
scanimage -d hp3900 -v >/dev/null && echo OK
I get
scanimage: open of device hp3900 failed: Invalid argument

Running sane-find-scanner gives
found USB scanner (vendor=0x03f0 [hewlett packard], product=0x4305 [hp scanjet]) at libusb:001:004

scanimage -L
gives No scanners were identified…

Running scanimage -d hp3900 -v >/tmp/scan.jpg
gives scanimage: open of device hp3900 failed: Invalid argument

Can anyone suggest what might be wrong?

Is the user a member of the ‘lp’ group?

Debugging may help yield further information

https://en.opensuse.org/SDB:Configuring_Scanners#Trouble-Shooting_.28Debugging.29

The user was not a member of the “lp” group. However, changing that has not fixed the problem.

I went to the Configuring Scanners page that you suggested and it has given a hint to what is wrong. When I turn on the level 4 debugging:

export SANE_DEBUG_DLL=4
scanimage -d  "hp3900:libusb:001:003" -v >/dev/null && echo OK || echo FAILED
unset SANE_DEBUG_DLL

I get this output:

[sanei_debug] Setting debug level of dll to 4.
[dll] sane_init: SANE dll backend version 1.0.13 from sane-backends 1.0.24
[dll] sane_init/read_dlld: attempting to open directory `./dll.d'
[dll] sane_init/read_dlld: attempting to open directory `/etc/sane.d/dll.d'
[dll] sane_init/read_dlld: opendir failed: No such file or directory
[dll] add_backend: adding backend `hp3900'
[dll] add_backend: adding backend `hpaio'
[dll] sane_open: trying to open `hp3900:libusb:001:003'
[dll] load: searching backend `hp3900' in `/usr/lib64/sane'
[dll] load: trying to load `/usr/lib64/sane/libsane-hp3900.so.1'
[dll] load: dlopen()ing `/usr/lib64/sane/libsane-hp3900.so.1'
[dll] load: dlopen() failed (/usr/lib64/sane/libsane-hp3900.so.1: wrong ELF class: ELFCLASS32)
scanimage: open of device hp3900:libusb:001:003 failed: Invalid argument
[dll] sane_exit: exiting
[dll] sane_exit: finished
FAILED

The same instruction on my machine running 13.2 accepts the library file and starts scanning. I have compared the library files on the two machines. /usr/lib64/sane/libsane-hp3900.so.1 on the old 64-bit machine running Leap 42.1 is 681031 bytes in length, while the one on the 13.2 machine is 428840 bytes. Both were derived from the same download file.

So it looks like there is a fault in the INSTALL.sh script that is part of the hp3900-series_0.12.tar.gz file downloaded from http://sourceforge.net/projects/hp3900-series/ It seems to be misdetecting the architecture of the hardware.

The scanner model (G3110) you reported in your opening post is listed as supported by the backend

man sane-hp3900

and the chipset (usb 0x03f0 0x4305) is declared in the hp3900.conf file already, so it’s not clear to me why the need to compile the driver. The last update to it (from the link you provided) was 2012-09-16, so it isn’t providing anything that isn’t already included in sane-backends anyway. The same package already provides the required udev rule for this chipset as well.

There are two libraries for the HP G3110 scanner: /usr/lib64/sane/libsane-hp3900.so.1.1.0 and /usr/lib64/sane/libsane-hp3900.so.1.0.24 The link /usr/lib64/sane/libsane-hp3900.so was going to the 1.1.0 version (which came from Sourceforge) which seems to be the problem. I have relinked the “so” to the 1.0.24, which is the library that works on my 13.2 machine.

Yast still says that the scanner is not configured, no matter what I do.
XSane still gives no scanner detected.
“scanimage -d hp3900 -v >/dev/null && echo OK” gives a segmentation fault
“scanimage -L” says no scanners were identified

However
"scanimage -d hp3900:libusb:001:003 -v >/tmp/scan.jpg
successfully scans.

Do you have any suggestions on what I should do to make XSane use this device?

Yast still says that the scanner is not configured, no matter what I do.
XSane still gives no scanner detected.
“scanimage -d hp3900 -v >/dev/null && echo OK” gives a segmentation fault
“scanimage -L” says no scanners were identified

However
"scanimage -d hp3900:libusb:001:003 -v >/tmp/scan.jpg
successfully scans.

Hmmm…interesting find. FWIW, I get the same segmentation fault with openSUSE 13.2 and Leap when specifying that particular backend.

How is the USB scanner enumerated when you first attach it? Run the following first, then connect…

dmesg --follow

It might also be useful to observe/capture output from sane-find-scanner with the debug variables set

SANE_DEBUG_DLL=128  SANE_DEBUG_SANEI_USB=4 sane-find-scanner

BTW, if you don’t have a multi-function HP device, I think it is a good idea that ‘hpaio’ is removed or commented from /etc/sane.d/dll.conf, since it is not needed, (but I’m not sure if it can impact in any way).

How is the USB scanner enumerated when you first attach it? Run the following first, then connect…
dmesg --follow

This was the output after plugging in the scanner:

  193.010363] usb 1-2: new high-speed USB device number 3 using ehci-pci
  193.146255] usb 1-2: New USB device found, idVendor=03f0, idProduct=4305
  193.146268] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
  193.146275] usb 1-2: Product: hp scanjet
  193.146281] usb 1-2: Manufacturer: hewlett packard
  193.347920] WARNING! power/level is deprecated; use power/control instead

I also tried the sane-find-scanner with debug settings:

toshiba:/home/gfreeman # export SANE_DEBUG_DLL=128
toshiba:/home/gfreeman # export SANE_DEBUG_SANEI_USB=4
toshiba:/home/gfreeman # sane-find-scanner

  # sane-find-scanner will now attempt to detect your scanner. If the
  # result is different from what you expected, first make sure your
  # scanner is powered up and properly connected to your computer.

  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a kernel SCSI driver for your SCSI adapter.

[sanei_debug] Setting debug level of sanei_usb to 4.
[sanei_usb] sanei_usb_init: initializing libusb-1.0
[sanei_usb] sanei_usb_scan_devices: marking existing devices
[sanei_usb] libusb_scan_devices: Looking for libusb-1.0 devices
[sanei_usb] libusb_scan_devices: found libusb-1.0 device (0x03f0/0x4305) interface 0 at libusb:001:004
[sanei_usb] store_device: add dn 0 with libusb:001:004
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner0' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner1' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner2' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner3' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner4' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner5' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner5' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner7' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner8' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner9' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner10' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner11' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner12' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner13' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner14' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usb/scanner15' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner0' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner1' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner2' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner3' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner4' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner5' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner6' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner7' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner8' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner9' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner10' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner11' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner12' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner13' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner14' in list
[sanei_usb] sanei_usb_open: can't find device `/dev/usbscanner15' in list
found USB scanner (vendor=0x03f0 [hewlett packard], product=0x4305 [hp scanjet]) at libusb:001:004
could not fetch string descriptor: Pipe error
could not fetch string descriptor: Pipe error
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.

  # Not checking for parallel port scanners.

  # Most Scanners connected to the parallel port or other proprietary ports
  # can't be detected by this program.

[QUOTE=tgf;2750373]This was the output after plugging in the scanner:

  193.010363] usb 1-2: new high-speed USB device number 3 using ehci-pci
  193.146255] usb 1-2: New USB device found, idVendor=03f0, idProduct=4305
  193.146268] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
  193.146275] usb 1-2: Product: hp scanjet
  193.146281] usb 1-2: Manufacturer: hewlett packard
  193.347920] WARNING! power/level is deprecated; use power/control instead

[QUOTE]
I am wondering if the HLIP udev rules (/ec/udev/rules.d/56-hpmud.rules are impacting here. Certainly, the warning above comes as a direct consequence of a matching (HPLIP) rule being invoked. You could try removing (or renaming) 56-hpmud.rules, or if you don’t need HPLIP, remove it entirely, and then see if the scanner is handled properly.

I have removed hplip. The command

scanimage -d hp3900:libusb:001:003 -v >/tmp/scan.jpg

still works, and sane-find-scanner finds the scanner, but it is not detected by

scanimage -L

or by XSane

That’s good to know

…but it is not detected by

scanimage -L

or by XSane

I wouldn’t worry about the null ‘scanimage -L’ result (that often fails to detect local scanners), but a bug report might be required to help progress this further.

https://en.opensuse.org/openSUSE:Submitting_bug_reports
https://bugzilla.suse.com/index.cgi

Thanks, I appreciate your help. I have logged with Bugzilla (https://bugzilla.opensuse.org/show_bug.cgi?id=963342)