[sane-devel] Driverless IPP Scanning with SANE - Google Summer of Code 2019

Mark DM markosjal at gmail.com
Tue Mar 12 21:14:21 GMT 2019

Sounds like a very cool project and way overdue.

I wouuld love to be able to follow this project


On Tue, Mar 12, 2019 at 10:03 AM Till Kamppeter <till.kamppeter at gmail.com>

> Hi,
> I posted this already last year (see my mail from then below) but there
> we finally decided to give preference to other student projects.
> It is about driverless scanning using the IPP (Internet Printing Protocol).
> "Driverless" means that on the client side no software specific to the
> scanner model in use is required. The client can ask the scanner for all
> its capabilities and use standard commands to do the scanning work.
> For printing this is already standard for several years, originally
> developed to allow printing from smartphones. We have support for this
> already completely implemented in Linux, so every printer on which you
> can print with you phone should also print jobs from Linux clients.
> Now we want to implement this also for scanning, with the help of the
> Google Summer of Code.
> We did not do it last year as there was no manufacturer yet who had
> adopted driverless IPP scanning. This year we also do not have any
> further notice from hardware manufacturers, but we have a new idea of
> nmaking use of driverless IPP scanning.
> In SANE scanner drivers are libraries which need to be present in a
> given directory of the system so that applications find them and so the
> applications can scan on all scanners which are supported by the
> available SANE backend libraries.
> This works well on systems with standard Debian or RPM packaging but not
> on systems with sandboxed packaging, like Snap for example. Here one
> cannot simply let one package (the scanner driver) drop a library in a
> directory where other packages (applications) search for it. For printer
> drivers we introduce the so-called Printer Applications, a simple
> daemon, emulating a driverless IPP printer on localhost and passing jobs
> on to the physical printer (which can be on USB or on the network and
> Printer Application converts incoming PDF to the printer's native
> language). The network-style communication on localhost is no problem
> for communication between two sandboxed applications.
> For scanners we want to do the same. We put a collection of SANE
> backends with SANE frontend library into a so-called Scanner Application
> and let it emulate a driverless IPP scanner on localhost. Such a Scanner
> Application can contain the standard SANE modules or it can be a Scanner
> Application provided by a scanner manufacturer to hold their
> (proprietary) driver. Applications scan then via IPP and for legacy
> applications which use SANE we need an IPP backend for SANE.
> This makes up two GSoC projects, one to write the Scanner Application
> framework for a sandboxed SANE driver collection and a second for a SANE
> backend for IPP driverless scanning.
> The project ideas are in our project idea list:
> Scanner Application framework:
> https://wiki.linuxfoundation.org/gsoc/google-summer-code-2019-openprinting-projects#ipp_scan_or_virtual_mf_device_server_scanner_application
> IPP scanning SANE backend:
> https://wiki.linuxfoundation.org/gsoc/google-summer-code-2019-openprinting-projects#sane_module_for_ipp_driverless_scanning
> Now I want to ask all of you whether you would like to help us by
> mentoring the students who will take these projects.
> Note the following about mentorship:
> 1. Google only permits a student [project when it has a dedicated
> mentor. One cannot even tell them that one mentor will mentor two
> students. But what we can do if mentoring a student alone is too much
> for you, is that you are listed as an official mentor and in reality you
> do only a part of the actual mentoring and one of us the rest.
> 2. Google tells that for mentoring you will need around5 hours/week if
> you do the mentoring of one student alone at least.
> 3. We pre-select our students with several assignments, so you will
> usually get a good student.
> I am very grateful if someone could step up.
>     Till
> ----------
> Hi,
> 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):
> http://ftp.pwg.org/pub/pwg/candidates/cs-ippscan10-20140918-5100.17.pdf
> 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:
> https://wiki.linuxfoundation.org/gsoc/google-summer-code-2018-openprinting-projects#sane-module-for-ipp-driverless-scanning
> ----------
> 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
>     Till
> --
> sane-devel mailing list: sane-devel at alioth-lists.debian.net
> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/sane-devel
> Unsubscribe: Send mail with subject "unsubscribe your_password"
>              to sane-devel-request at lists.alioth.debian.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/sane-devel/attachments/20190312/4930523d/attachment-0001.html>

More information about the sane-devel mailing list