[sane-devel] Driverless IPP Scanning with SANE

Till Kamppeter till.kamppeter at gmail.com
Tue Jan 30 11:22:06 UTC 2018


the Printing Working Group (http://www.pwg.org/) has developed several 
standards for printers and multi-function devices (print, scan, copy, 
fax) to allow its use without hardware-model-specific software or data 
(aka driver).

There are already all standards needed for driverless printing and they 
are actually implemented in printers on the market. The PWG's own 
driverless printing standard is IPP Everywhere, but AirPrint, Wi-Fi 
Direct, and Mopria us also a lot of the PWG's standards. All of these 
standards use the PWG's Internet Printing Protocol (IPP) and DNS-SD but 
different standardized formats for the print jobs. Wi-Fi Direct adds a 
printer-internal Wi-Fi server for wireless printing without Wi-Fi 
router. Via IPP-over-USB also devices connected to USB are supported 
(Linux support via ippusbxd, https://github.com/OpenPrinting/ippusbxd).

These driverless printing standards are fully supported in Linux, from 
Ubuntu 17.10 on and continuously improved.

The PWG has recently also developed an IPP scanning standard, which 
provides a standard protocol for communicating with scanners in IPP 
multi-function devices (via network or IPP-over-USB):


The best way to access this class of scanners from Linux would be to 
create a SANE backend for IPP Scan.

Therefore I have opened a project for the Google Summer of Code 2018:



SANE module for IPP driverless scanning

Version 2.0 and newer of the Internet Printing Protocol (IPP) support 
polling the full set of capabilities of a printer and if the printer 
supports a known Page Description Language (PDL), like PWG Raster, Apple 
Raster, PCLm, or PDF, it is possible to print without 
printer-model-specific software (driver) or data (PPD file), so-called 
“driverless” printing. This concept was introduced for printing from 
smartphones and IoT devices which do not hold a large collection of 
printer drivers. Driverless printing is already fully supported under 
Linux. Standards following this scheme are IPP Everwhere, Apple 
AirPrint, Mopria, and Wi-Fi Direct Print.

As there are many multi-function devices (printer/scanner/copier 
all-in-one) which use the IPP, the Printing Working Group (PWG) has also 
worked out a standard for IPP-based scanning, “driverless” scanning, to 
also allow scanning from a wide range of client devices, independent of 
which operating systems they are running.

Conventional scanners are supported under Linux via the SANE (Scanner 
Access Now Easy) system and require drivers specific to the different 
scanner models. Most of them are written based on reverse-engineering 
due to lack of support by the scanner manufacturers. To get driverless 
scanning working with the software the users are used to the best 
solution is to write a SANE module for driverless IPP scanning. This 
module will then automatically support all IPP scanners, thousands of 
scanners where many of them do not yet exist.

The student's task is to write this SANE module for IPP driverless 
scanning and so make Linux ready for the future of driverless devices.

Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot 
com), SANE upstream developers TBD

Desired knowledge: C programming, DNS-SD, IPP

Code license: GPL 2+


I want to ask whether someone of you would (together with me) mentor a 
student to do this project.

The SANE project does not need to be mentoring organization at the GSoC 
for that. Mentoring organization will be the Linux Foundation.

Thank you very much in advance


More information about the sane-devel mailing list