[sane-devel] Epson and epkowa

Olaf Meeuwissen paddy-hack at member.fsf.org
Mon May 18 12:48:10 BST 2020


Hi Ralph, Yuri, list,

Yuri, thanks for chiming in.  I was a bit pre-occupied with getting the
sane-backends-1.0.30 security bug fix release out :-/

Yuri Chornoivan writes:

> пʼятниця, 15 травня 2020 р. 19:49:16 EEST ви написали:
>> Hi,
>>
>> On Fri, May 15, 2020, 09:44 Yuri Chornoivan, <yurchor at ukr.net> wrote:
>> > пʼятниця, 15 травня 2020 р. 19:39:05 EEST Ralph Little написано:
>> > > On the supported scanners page, the listed backend is
>> > > epson2. However, the comment says that it is "supported by the
>> > > epkowa backend plus non-free interpreter". Does that mean that
>> > > epson2 *might* support it, and additionally there is a
>> > > proprietary option also?

No, it means that the epson2.desc file lists a number of EPSON devices
that are supported by *other* backends (or not all all).
You can blame me for that because I started doing that in epkowa.desc.
That file has for a longish time been merged/copied with epson2.desc
without actually checking what did and did not work :-(

>> > > If so, what is the likelihood that epson2 would work with this
>> > > scanner with moderate modifications?

None.  The non-free interpreter is dlopen()ed by the epkowa backend and
it converts the regular ESC/I protocol to the device's native protocol,
insofar possible.  Mind you, there are *several* such native protocols.
These native protocol are not even remotely close to the ESC/I protocol.
You'd be better of trying to find a backend that uses something close.
For a few of the interpreter using devices, the snapscan backend is a
good match.  For others, I don't know.  Maybe sane-find-scanner can be
of help to check whether it's something genesys-like, I don't know.

While porting those interpreters at part of my work duties, I have
tended not to look at the closed source more than absolutely needed to
get them to compile and "work".  That was about a decade (or more) ago
so I don't have any recollection anyway beyond what found its way into
epkowa.desc :-P

>> > Mine (Epson V330 Photo) works with Epson interpreter (proprietary)
>> > just fine.

Insofar using a proprietary plugin is "fine" :-P

>> So that would be the epkowa backend then?

Yes but only in the presence of the non-free interpreter for that
particular model.  OK, so some of those interpreters may support
multiple models (by marketing name at least).

The epkowa backend started life as a fork of the epson backend, notice
that's without the 2 (or ds).  In its first incarnation it linked with
the plugins so you couldn't even use it *without* the non-free stuff,
even if you didn't need the interpreter.

That scratched an itch, so I sent myself at the office a patch developed
by myself at home to make things work via dlopen()ing.  That way, you
could at least get rid of the non-free bits if you didn't have a need
for them.  At the office, I "managed" to get this merged :-)

After that interpreters started to proliferate and the "customer" was
glad that "end-users" (do I hate that term!) did not have to download
binary packages with *all* those interpreters linked into the backend
and the developers did not have to recompile all those interpreters
every time a new release was due.

BTW, the interpreters would have profilerated even without my dlopen()
patch.  It was just good timing, call me prescient ;-)

> From README file in the esci-interpreter-perfection-v330-1.0.0.rpm,
>
>     This plugin converts between the native protocol of the supported
>     devices and the ESC/I protocol.  The latter protocol is supported
>     by the SANE 'epkowa' backend, part of Image Scan!, and some other
>     SANE backends.  However, only the 'epkowa' backend provides the
>     hooks needed to use this plugin.

That means, the ESC/I protocol is supported by several SANE backends.  I
believe at present that list is

  epson
  epson2
  epkowa (third party)
  utsushi (third party)

The epsonds backend supports ESC/I-2, which is also supported by the
utsushi backend, and not even close to ESC/I except for its name.

BTW, there are two ESC/I related network protocols, one of which is
implemented (partially) by the epson2 and epsonds backends.  The utsushi
backend uses a non-free interpreter via inter-process communication
(IPC) to support network devices and I seem to remember that the epkowa
backend also supports network devices but this may use a dlopen()
approach rather than IPC.

>> Have you ever tried the epson2 backend?
>
> I do not think it works.

It doesn't.  It does not have any logic to dlopen() the interpreters and
to be honest, I don't think it should cater to non-free extensions.

> The scanner itself needs binary firmware to start.

The firmware file is really just a blob that the vendor didn't bother to
put on the device.  Instead the "driver" does, again and again and
again, every time you power on the device.  There are of course good
reasons to do so, like being able to fix bugs in the firmware, but that
blob is still non-free software.

Personally, I think it'd be nice, on Linux systems at least, to have a
udev trigger the download of firmware files to the device.  That'd save
a bit of time, but if the firmware has not yet been downloaded, the
"driver" should do so as a fallback.

> My first try after buying the scanner is to use it as is with the
> default sane-backends-iscan from Mageia Linux. It did not work.

Here's guessing that package did not include the non-free interpreter
(and rightly so).

OK, that was probably more than you ever wanted to know about the
various EPSON scanner supporting backends ;-)

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