Your result means that SANE failed to load the backend driver.
I've downloaded the drivers from HP in 2 versions: Linux/Debian and Linux/Linux, to compare the differences - there are none.
This is the reason why SANE is unable to load the backed:
smfp driver:
Code: Select all
readelf --dyn-syms libsane-smfp.so.1.0.1 | grep sane
472: 000000000009c6c0 125 FUNC GLOBAL DEFAULT 10 sane_smfp_cancel
942: 000000000009c570 157 FUNC GLOBAL DEFAULT 10 sane_smfp_get_select_fd
1115: 000000000009c930 5 FUNC GLOBAL DEFAULT 10 sane_smfp_get_option_desc
1357: 000000000009c920 5 FUNC GLOBAL DEFAULT 10 sane_smfp_control_option
1814: 000000000009c880 151 FUNC GLOBAL DEFAULT 10 sane_smfp_get_parameters
2167: 000000000009c4e0 2 FUNC GLOBAL DEFAULT 10 sane_smfp_exit
2568: 000000000009c940 5 FUNC GLOBAL DEFAULT 10 sane_smfp_close
3051: 000000000009c610 163 FUNC GLOBAL DEFAULT 10 sane_smfp_set_io_mode
3060: 000000000009caa0 230 FUNC GLOBAL DEFAULT 10 sane_smfp_init <-------------------- THIS
3232: 000000000009c800 125 FUNC GLOBAL DEFAULT 10 sane_smfp_start
3386: 000000000009ca00 155 FUNC GLOBAL DEFAULT 10 sane_smfp_get_devices
3879: 000000000009c950 166 FUNC GLOBAL DEFAULT 10 sane_smfp_open
3894: 000000000009c740 189 FUNC GLOBAL DEFAULT 10 sane_smfp_read
4160: 000000000009c4f0 121 FUNC GLOBAL DEFAULT 10 sane_samsung_strstatus
coolscan driver:
Code: Select all
readelf --dyn-syms 'libsane-coolscan.so.1.0.25' | grep init
78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND libusb_init
108: 0000000000003f20 5 FUNC GLOBAL DEFAULT 11 sane_init <-------------------- THIS
112: 0000000000006c40 189 FUNC GLOBAL DEFAULT 11 sanei_usb_init
116: 0000000000004200 266 FUNC GLOBAL DEFAULT 11 sanei_init_debug
118: 0000000000010730 294 FUNC GLOBAL DEFAULT 11 sane_coolscan_init
136: 0000000000005ae0 61 FUNC GLOBAL DEFAULT 11 sanei_thread_init
145: 0000000000003980 0 FUNC GLOBAL DEFAULT 8 _init
Additionaly I've checked the
scanimage.c at GitLab - SANE backends should have
sane_init function implemented, not
sane_smfp_init - that's why this backend can't be used.
I have no idea why HP is distributing those drivers (EDIT) - but they can't be used with SANE.
Theoretically, one can compile modified SANE version which will call the *smfp* functions and check if it will work - but I'm guessing it's not an option for You.
You may try to contact HP support and ask them how their drivers are supposed to be used on Linux/Debian ... who knows? - maybe they know some other method.
Regards
EDIT:
Actually I have some suspictions:
The
'libsane-smfp.so.1.0.1' has all the functions needed by SANE plugin/backend driver - the only problem is that they're prefixed with:
sane_smfp_ instead of just
sane_
This simple fact allows to assume, that HP is internally using custom-build SANE executable, and the process of building world-wide Linux driver has been broken, because the QA inside the HP corporation is not functioning at all...
This is what I suppose to have happened:
1. HP is internally using a custom version of SANE (collaborating with samsung - i.e. HP uses Samsung scanner controller chips)
2. HP have hired some student to port their internal version of SANE backend driver to a world-wide downloadable version.
3. That student was not capable of understanding of what he/she is doing, didn't read the SANE backend plugin specification and because of this (or because he/she was lazy) the HP drivers have wrong prefixes for SANE interface.
4. That student was also incompetent in terms of writing DSOs (dynamic shared objects, known as libraries) - because the SMFP backend driver library exposes internal functions written in C++ (btw - all other SANE drivers are much smaller, exactly because they're written in C)
5. Nobody within the HP corporation have tested their "official" drivers for Linux-based systems. (Quality Assurance is not working)
Regards