Comment 0 for bug 1891682

Revision history for this message
Till Kamppeter (till-kamppeter) wrote :

Driverless Scanning
-------------------

TL;DR: sane-airscan provides perfect support for driverless scanning, making thousands of devices working

Printer manufacturers have introduced driverless printing standards to allow easy use of their (usually network) printers also from mobile phones, tablets, and IoT devices and not only from desktop computers which in most cases run Windows or Mac OS. This we have made use of to be able to print on a huge amount of printers from Linux and other free software operating systems.

But multi-function devices with a scanner do also allow scanning from mobile devices and have a scan standard for that. Every device which supports Apple's AirPrint supports also AirScan and AirScan means that the device either scans via eSCL (from HP and Apple) or via WSD (from Microsoft and W3C).

Also of this we make use to get a wide range of devices "just" working under Linux. This covers practically any modern network multi-function device, thousands of models. Finally we can also scan on multi-function devices which are not from HP (but scanning on the HP ones gets also easier, without needing HPLIP). And we even have discovered a USB-only stand-alone scanner doing driverless scanning, the Canon Lide 400.

sane-airscan is the a SANE backend for supporting this. It supports both eSCL and WSD to their full extent, especially also for scanners with extra functionality like an Automatic Document Feeder (ADF). It is designed as a universal SANE backend for high-level scanning protocols, as much of the code as possible is shared between protocols, the protocol-specific parts are small. So easily new protocols, like TWAIN Direct or IPP Scan, can get added later. IPP Scan is especially important as it will help us to make scanner drivers snappable in the future.

Why not sane-escl which sane-backends already ships?
----------------------------------------------------

TL;DR: sane-escl is deprecated in favor of sane-airscan

The first approach of driverless scanning which made it into Ubuntu was the sane-escl SANE backend, as part of the sane-backends package which we already include. This was easier to get in before Feature Freeze of 20.04 back in February, not requiring to get sane-airscan through NEW and then through a MIR. Also it was unclear in that time whether sane-airscan would be integrated into sane-backends.

Now a lot has changed with the time:

The authors of sane-escl and sane-airscan started their projects independently both also only supporting eSCL and not yet WSD. They were competing with each other and had some different priorities in their developments. I talked with them and asked them why they would not collaborate and succeeded to make them agree with each other. Now development of sane-escl has stopped and all effort goes into sane-airscan.

In addition, WSD support was added to sane-airscan and sane-airscan has matured a lot, with a lot of users reporting their devices working and the author having fixed a lot of bugs based on reports and logs from users.

sane-airscan supports both WSD and eSCL, sane-escl only eSCL.

sane-airscan supports ADF scanning, sane-escl only scanning from the glass.

Why not add sane-airscan to sane-backends upstream?
---------------------------------------------------

Tl;DR: Developemnt and release pace is much faster than of SANE, with the IPP-Scan-based scanning architecture in the future only sane-airscan and not the scanner driver arsenal of sane-backends will be needed by applications.

The author of sane-airscan asked for adding his backend to sane-backends in the beginning:

https://gitlab.com/sane-project/backends/-/issues/202

In the end it seems that they have settled to keep sane-airscan separate, mainly due to its much faster development pace. sane-backends is only released one or two times per yer and in these intervals a lot is happening with sane-airscan. Therefore it gets released much more often.

I also think that it is good that it is separate, as soon the scanning architecture will change to allow snapping everything. Scanner drivers will get hidden in a so-called Scanner Application, an emulation of an IPP scanner. As IPP is a network protocol with only IP communication and no need of dropping driver files into certain directories of the system the scanner driver can be easily snapped this way. User Applications will only need to support IPP scanners than, nothing else. As sane-airscan will get added IPP Scan in the future, this will be the only SANE backend needed to be available, so sane-backends does not need to be installed. User Applications can also be snapped with sane-airscan include in the Snap.

[Availability]

sane airscan is available in Universe:

https://launchpad.net/ubuntu/+source/sane-airscan/0.99.12-1ubuntu2

It made it also into Debian Unstable. The packaging is practically the same. There are only slight differences in the build dependencies due to different software versions available in Debian and Ubuntu.

It builds on all currently supported architectures.

[Rationale]

See introduction above. Replaces sane-escl in sane-backends. As soon as sane-airscan makes it into Main I recommend building sane-backends without sane-escl and also let it recommend sane-airscan, to guide the user to the correct backend.

[Security]

No CVE on http://cve.mitre.org/cve/search_cve_list.html

No mention on https://www.openwall.com/lists/oss-security/

Not listed on http://people.ubuntu.com/~ubuntu-security/cve/universe.html

No SUID/SGID

sane-airscan is a SANE backend, a scanner driver in the form of a shared library which gets dynamically linked by SANE clinets (SANE frontends). It runs always as the user running the client, whee the cleint is usually some GUI application, like simple-scan or XSane which is run as ordinary user. As the scanning protocols this backend supports are all network (IP) protocols no special group ownerships (SUID/SGID).

The package also contains the diagnostic utility /usr/bin/airscan-discover which is also run as ordinary user only, manually for debugging purposes. It lists supported scanners, also only using network (IP) communication.

[Quality assurance]

To use sane-airscan one simply installs it and starts any SANE frontend, like simple-scan or XSane. The frontend lists all available driverless scanners then and the user can select a device and scan as with any other scanner. No configuration is required, all absolutely intuitive. The config file /etc/sane.d/airscan.conf is only for debugging and rare corner cases. To use it with USB devices ipp-usb (MIR bug 1891157) needs to be installed in addition, also no configuration by the user required.

sane-airscan does not use debconf at all.

sane-airscan is maintained upstream very well and actively developed, by the same author as ipp-usb.

Upstream site:
https://github.com/alexpevzner/sane-airscan

Recent commits:
https://github.com/alexpevzner/sane-airscan/commits/master

Bugs:
https://github.com/alexpevzner/sane-airscan/issues
(Only 2 open ones, 47 closed, issues mainly concerning certain hardware model)

The author of sane-airscan, Alexander Pevzner, is very responsive, usually answers on the same day. He is actively working on driverless scanning (will mentor 2 students in LFMP on IPP Scan in Sep-Nov). He works closely together with OpenPrinting.

No known open bugs in Debian and Ubuntu (Launchpad only lists this MIR).

Debian maintainer OdyX also very responsive.

No exotic hardware required, is for supporting the absolute standard hardware, most modern multi-function devices and several modern stand-alone scanners, even very cheap ones. See introduction above.

The package has a debian/watch file and the content of the file seems to be correct.

No dependencies on obsolete stuff.

[Dependencies]

Build-depends only on standard packages in Main: libavahi-..., libxml, libjpeg, libpng, libgnutls, also build-depends on libsane-dev

For USB scanners Avahi needs to support localhost, but Ubuntu's Avahi does this already for some years.

The ipp-usb needed for USB scanners is treated in bug 1891157.

For network scanners everything is readily available in Main.

[Standards compliance]

Package fulfills the standards concerning FHS. Files are at the expected location. Especially the SANE backend and its config files are where Ubuntu's SANE packages expect them.

The package declares Debian's "Standards-Version" as 4.5.0, Debian maintainer takes care of verifying and updating this. debian/ directory and debian/rules file are simple, fairly standard.

[Maintenance]

See [Quality assurance] above for upstream and Debian maintenance. I have subscribed myself to bugs in both packages and also the Ubuntu Printing Team.

[Background information]

See introduction above.