[sane-devel] [janitorial] New backend: escl (seems to also work via USB)
Till Kamppeter
till.kamppeter at gmail.com
Sun Dec 15 19:39:49 GMT 2019
It seems that one can also use the eSCL backend via USB, with the help of the
IPP-over-USB daemon ippusbxd (the backend is probably not exactly IPP, ippusbxd
is more to understand as an HTTP-over-USB daemon).
Get ippusbxd from
https://github.com/OpenPrinting/ippusbxd
or install the "ippusbxd" package of your distribution.
Connect your device via USB. Depending on how your distribution is configured it
can happen that a CUPS queue for the printing part of the device gets created,
so you will not sacrifice printing to get your scanner to work.
Check with "ps -aux | grep ippusbxd" whether ippusbxd is actually running (an
auto-created print queue can also be an HPLIP one if the device is from HP).
If ippusbxd is not running, simply fire it up manually, if your device is the
only IPP-over-USB-capable printer connected to your machine you do not even need
command line arguments:
ippusbxd
The daemon outputs its port and its PID. The port is usually 60000. Now use
curl, wget, or a browser and access
http://localhost:60000/eSCL/ScannerCapabilities
Correct the port if yours is not 60000.
You get back the capabilities XML list of the eSCL scanning part of your device.
So it seems that eSCL scanning is possible through ippusbxd.
Note that ippusbxd does not advertise this capability through DNS-SD. The DNS-SD
record of ippusbxd is completely artifical and is mainly based on the USB
(printer) device ID. I need to extend the record, but I need a reliable way to
find out via USB whether the device is only a printer or has also a scanner
built-in.
With a deeper look into the source code of HPLIP one can perhaps also find a way
to use eSCL via USB without ippusbxd but I do not recommend it. With ippusbxd
one gets both printing and scanning to work in a driverless (driver =
device-model-specific software and/or data) manner, using the capability of the
hardware to advertise itself and to provide a full list of capabilities and
having universal software to do the job (cups-filters for printing and the eSCL
SANE backend for scanning).
See the output of
wget http://localhost:60000/eSCL/ScannerCapabilities
on my device below.
Till
----------
<?xml version="1.0" encoding="UTF-8"?>
<!---->
<scan:ScannerCapabilities
xmlns:scan="http://schemas.hp.com/imaging/escl/2011/05/03"
xmlns:pwg="http://www.pwg.org/schemas/2010/12/sm"
xmlns:dest="http://schemas.hp.com/imaging/destination/2011/06/06"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.hp.com/imaging/escl/2011/05/03
../../schemas/eSCL-1_92.xsd">
<pwg:Version>2.0</pwg:Version>
<pwg:MakeAndModel>xxxx</pwg:MakeAndModel>
<pwg:SerialNumber>25</pwg:SerialNumber>
<scan:Platen>
<scan:PlatenInputCaps>
<scan:MinWidth>8</scan:MinWidth>
<scan:MaxWidth>2550</scan:MaxWidth>
<scan:MinHeight>8</scan:MinHeight>
<scan:MaxHeight>3508</scan:MaxHeight>
<scan:MaxScanRegions>1</scan:MaxScanRegions>
<scan:SettingProfiles>
<scan:SettingProfile>
<scan:ColorModes>
<scan:ColorMode>Grayscale8</scan:ColorMode>
<scan:ColorMode>RGB24</scan:ColorMode>
</scan:ColorModes>
<scan:ContentTypes>
<pwg:ContentType>Photo</pwg:ContentType>
<pwg:ContentType>Text</pwg:ContentType>
<pwg:ContentType>TextAndPhoto</pwg:ContentType>
</scan:ContentTypes>
<scan:DocumentFormats>
<pwg:DocumentFormat>application/octet-stream</pwg:DocumentFormat>
<pwg:DocumentFormat>image/jpeg</pwg:DocumentFormat>
<pwg:DocumentFormat>application/pdf</pwg:DocumentFormat>
</scan:DocumentFormats>
<scan:SupportedResolutions>
<scan:DiscreteResolutions>
<scan:DiscreteResolution>
<scan:XResolution>75</scan:XResolution>
<scan:YResolution>75</scan:YResolution>
</scan:DiscreteResolution>
<scan:DiscreteResolution>
<scan:XResolution>100</scan:XResolution>
<scan:YResolution>100</scan:YResolution>
</scan:DiscreteResolution>
<scan:DiscreteResolution>
<scan:XResolution>200</scan:XResolution>
<scan:YResolution>200</scan:YResolution>
</scan:DiscreteResolution>
<scan:DiscreteResolution>
<scan:XResolution>300</scan:XResolution>
<scan:YResolution>300</scan:YResolution>
</scan:DiscreteResolution>
<scan:DiscreteResolution>
<scan:XResolution>600</scan:XResolution>
<scan:YResolution>600</scan:YResolution>
</scan:DiscreteResolution>
<scan:DiscreteResolution>
<scan:XResolution>1200</scan:XResolution>
<scan:YResolution>1200</scan:YResolution>
</scan:DiscreteResolution>
<scan:DiscreteResolution>
<scan:XResolution>2400</scan:XResolution>
<scan:YResolution>2400</scan:YResolution>
</scan:DiscreteResolution>
</scan:DiscreteResolutions>
</scan:SupportedResolutions>
<scan:ColorSpaces>
<scan:ColorSpace>YCC</scan:ColorSpace>
<scan:ColorSpace>RGB</scan:ColorSpace>
<scan:ColorSpace>sRGB</scan:ColorSpace>
</scan:ColorSpaces>
</scan:SettingProfile>
</scan:SettingProfiles>
<scan:SupportedIntents>
<scan:Intent>Document</scan:Intent>
<scan:Intent>Photo</scan:Intent>
<scan:Intent>Preview</scan:Intent>
<scan:Intent>TextAndGraphic</scan:Intent>
</scan:SupportedIntents>
<scan:MaxOpticalXResolution>2400</scan:MaxOpticalXResolution>
<scan:MaxOpticalYResolution>2400</scan:MaxOpticalYResolution>
<scan:RiskyLeftMargin>34</scan:RiskyLeftMargin>
<scan:RiskyRightMargin>33</scan:RiskyRightMargin>
<scan:RiskyTopMargin>34</scan:RiskyTopMargin>
<scan:RiskyBottomMargin>46</scan:RiskyBottomMargin>
</scan:PlatenInputCaps>
</scan:Platen>
<scan:BrightnessSupport>
<scan:Min>0</scan:Min>
<scan:Max>2000</scan:Max>
<scan:Step>1</scan:Step>
</scan:BrightnessSupport>
<scan:ContrastSupport>
<scan:Min>0</scan:Min>
<scan:Max>2000</scan:Max>
<scan:Step>1</scan:Step>
</scan:ContrastSupport>
<scan:HighlightSupport>
<scan:Min>0</scan:Min>
<scan:Max>255</scan:Max>
<scan:Normal>179</scan:Normal>
<scan:Step>1</scan:Step>
</scan:HighlightSupport>
<scan:ShadowSupport>
<scan:Min>0</scan:Min>
<scan:Max>255</scan:Max>
<scan:Normal>25</scan:Normal>
<scan:Step>1</scan:Step>
</scan:ShadowSupport>
<scan:SharpenSupport>
<scan:Min>0</scan:Min>
<scan:Max>255</scan:Max>
<scan:Step>1</scan:Step>
</scan:SharpenSupport>
<scan:ThresholdSupport>
<scan:Min>0</scan:Min>
<scan:Max>255</scan:Max>
<scan:Normal>128</scan:Normal>
<scan:Step>1</scan:Step>
</scan:ThresholdSupport>
</scan:ScannerCapabilities>
On 15/12/2019 15:54, Till Kamppeter wrote:
>> I didn't see any device managing Tiff, send me the capability file, I could
>> add the support.
>> curl http://<ip>:<port>/eSCL/ScannerCapabilities
>> or
>> curl -k https://<ip>:<port>/eSCL/ScannerCapabilities
>>
>
> Below is the output of my HP DeskJet 2540, it seems to only support JPEG and
> PDF, so the backend should also support PDF (and if SANE does not support PDF,
> SANE needs either to get appropriately extended (preferred solution) or the
> backend should convert PDF to TIFF, which would not need a PDF interpreter as
> this PDF consists only of bitmaps).
>
> Note that these outputs should not be collected and added to the backend as a
> database, but rather the backend should poll this from the scanner whenever it
> is called.
>
> By the way, the output has PWG in it, so it seems that this eSCL scanning
> standard was developed by or in cooperation with the Printer Working Group.
>
> Till
>
> ----------
> <!-- -->
> <scan:ScannerCapabilities
> xmlns:scan="http://schemas.hp.com/imaging/escl/2011/05/03"
[...]
More information about the sane-devel
mailing list