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: [email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/sane-devel
Unsubscribe: Send mail with subject "unsubscribe your_password"
            to [email protected]

Reply via email to