[sane-devel] RasPi support for Epson Perfection V500 Photo

Olaf Meeuwissen paddy-hack at member.fsf.org
Sat Jun 23 12:47:48 BST 2018

Hi Jonathan,

Jonathan Kunkee writes:

> (got mailing list membership fixed up)
>> > I appreciate your reply, but I think there is a misunderstanding. One link
>> > I mentioned is for the source (not binary blob) of that plug-in and the
>> > other is an article stating that a partial recompile works on the Raspberry
>> > Pi on an older Debian derivative. (There is a binary blob lib needed for
>> > the signal processing in the manufacturer-provided scanner UI that I don't
>> > plan to use.) My request is not for sane-devel to do any work for me on a
>> > niche application, but rather for debugging suggestions so I can do the
>> > work myself.
>> The iscan "source" code contains a blob that is only used by the
>> frontend, yes.  It goes by the name of libesmod.so.2.
>> The binary-only plugin that I mentioned is used and required by the
>> epkowa backend.  It's the blob that goes by the name of
>>   libesint7C.so.2
>> and requires a esfw7C.bin firmware file to make the device do anything
>> at all.
> So Epson's remnant ships a 'driver' source blob that is missing the
> required .bin file and the binary that consumes it? Gnarly. That
> effectively ends my hopes without doing my own USB reverse engineering
> with Message Analyzer and starting from scratch reading the libEpkowa
> source.
> I believe my original confusion was due to seeing 'binary blob
> required' and then finding source for what seemed to be the binary
> blob (what I just learned from you is not the plugin, but iscan itself
> which apparently has a plugi). Thank you for your help working through
> my confusion.
> Do you know of any documentation of iscan and its plugin architecture?

Other than the source and vague and fading memories of the iscan
developers/maintainers (which included me for a long while until
about half a decade ago), no.

Schematically, the picture is like this

   /-----------------\                  /----------------\
   |      iscan      |---- SANE API ----|     epkowa     |
   | (SANE frontend) |                  | (SANE backend) |
   \-----------------/                  \----------------/
           |                                    |
        libesmod                             libesintXX  --  firmware

You can replace the iscan frontend with any SANE compliant frontend.  If
you do, you loose whatever libesmod provides (image processing, based on
the API entrypoints).

The epkowa backend allows for *dynamically* loading libesintXX plugins.
The backend itself is fine without any of these libesintXX plugins but
will not support those devices that require one.

The libesintXX plugins ostensibly translate between a protocol used by
many other EPSON scanners (ESC/I) and a device's native protocol.  That
is to say, not all EPSON devices use/understand the ESC/I protocol.
Your device is one of those and hence needs a plugin.  The libesintXX
plugins interpret between protocols.

Then, for some devices a firmware file needs to be sent to the device
after you power it up.  Unlike many other devices, they don't have the
"brains" to remember the firmware themselves when you pull the plug.
They need to be "re-educated" after every power up.  The libesintXX
plugins will take care of that as well when needed.

Rephrasing from the point of devices supported by the epkowa backend,

 - most of the supported devices are supported by the backend on its own
 - a subset of supported devices need a libesintXX plugin
 - a subset of those need a firmware file

If memory serves me, some of those interpreter needing devices *may* be
supported by one of the plustek or snapscan backends.  Given that, there
is a possibility that others are too; or can be made to.  I guess that a
USB packet capture for a small scan would enable developers of these
backends tell you fairly easily.

Hope this helps,
Olaf Meeuwissen, LPIC-2            FSF Associate Member since 2004-01-27
 GnuPG key: F84A2DD9/B3C0 2F47 EA19 64F4 9F13  F43E B8A4 A88A F84A 2DD9
 Support Free Software                        https://my.fsf.org/donate
 Join the Free Software Foundation              https://my.fsf.org/join

More information about the sane-devel mailing list