[sane-devel] Anyone working on or interested in working on eSCL backend for SANE?

Mark DM markosjal at gmail.com
Wed Jun 12 07:33:37 BST 2019

Hello inSANErs ,

I saw a post fro about a year ago where someone wanted to start a project
for an eSCL back-end for SANE on Google Summer of code. Did that go

As I have spent many months learning the ins and outs of AirScan eSCL
protocol , with much trial and error, I am interested in knowing if anyone
is working on a eSCL /  Apple AirScan compatible back-end.

What I have done, I have done in PHP and I have no idea how to write a SANE
backend anyway. I have developed a strong enough grasp of the protocol at
this point to make a client  communicate effectively.

I think this protocol is mature enough to know it is not going away too
soon, and may soon haunt Linux users if not adopted into SANE. In fact , it
would make the configuration of many network scanners Driverless and Plug
and Play if properly incorporating Bonjour/Avahi browse.

While on the subject of Driverless Plug and Play, I had some correspondence
with someone who has been writing WSD scanning code, and he is interested
in Making a WSD to eSCL bridge in python. As you can see this would open
the door to many new scanners and getting SANE going the direction that
CUPS has been going for years with "driverless" scanning.  While mentioning
CUPS the CUPS web server would be the ideal place to host the eSCL xml on a
web server, if that is even possible.

I think the adoption of these standards in SANE is long overdue. I think it
has been about 9 years since Apple began to embrace eSCL and as I
understand it WSD has been supported in Windows even longer.

*About eSCL*
As I understand it, PWG (printer Working Group) defines a method of IPP
scanning , which is not WSD nor eSCL, Nor AirScan. eSCL, uses some of the
XML parameters defined by PWG like
Airscan may well be a subset of the eSCL standard , which may not take
advantage of all features offered in  current eSCL standards. The eSCL
standard allows the ability to put the heavy lifting on the client, like
the Image Capture app in OSX handling turning multiple pages into a single
PDF. Each page in reality is a single file it seems, even if the scanner is
capable of crating the multi-page PDF internally.

Here is some info I put together on how eSCL works . eSCL is all xml based.

*other notes*
 It is worth noting that the Cross Platform program VueScan already
incorporates eSCL scanning, and detects those scanners automatically. It is
far less particular than OSX which actualyl does more checking than
VueScan. Viewscan will work even if the messages in XML are incorrect,
while OSX requires everthing to be right or a disaster is imminent (like
opening an infinite number of the same file without beng able to stop it!).

In my opinion there is also little need to support SANE over network when
an eSCL scanner is used as an eSCL/AirScan scanner is already networked .
Each computer on the LAN would already have direct access to the scanner.

I will take the opportunity here to also mention that if anyone on this
list has access to an Apple device and any eSCL/AirScan "driverless"
scanner, I could use more packet captures, to get better compatibility with
Apple devices.. You can send them to markosjal at the email with a G. I
prefer any of the formats supported in wireshark, but anything I can find a
way to read is okay

If SANE is to keep moving forward, in my opinion, SANE should consider
adopting all commuincation betweeen SANE clients/servers to a standard like
eSCL . I am working on a model of this that will incorporate SANE only by
command line, scanimage.  On the SANE host is an Apache / PHP server (for
connecting the eSCL side) and command line "scanimage" on the scan server
side. I tried AirSane it seems to have its own issues, but does
consistently deliver images to OSX when it works. My project is pretty
rough at this point and even getting differenet behavior on preview app vs
Image Capture app in OSX Mojave . One of the advantages of using an XML
standard like eSCL is that it facilitates machine to Machine communication
regarless of the platform and is much easier to incorporate into embedded
applications. One can simply POST  an XML file to scan whatever is on the
platen. The URL to the file is returned in a header, and in subsequent xml
responses when scanner is queried for ScannerStatus. The client, like OSX
(or your refrigerator, and do not ask me why)  then simply downloads the
file. It seems too simple to NOT use it and opens up aworld of connectivity
between devices. Even if SANE followed the example of CUPS of using the PWG
IPP standard for network printing , then SANE might use the PWG IPP
Scanning standards. Any of them would be a step forward from where it is

Mark de Leon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/sane-devel/attachments/20190612/ab865849/attachment.html>

More information about the sane-devel mailing list