[sane-devel] [janitorial] New backend: escl (seems to also work via USB)

thierry at ordissimo.com thierry at ordissimo.com
Mon Dec 16 09:47:51 GMT 2019


Le 2019-12-15 20:39, Till Kamppeter a écrit :
> 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.
I tried "ippusbxd", I have a mistake. I'll dig into the idea because it 
would solve a lot of my scanner problems.

/usr/sbin/ippusbxd  -v 0x04a9 -m 0x1827
60002|1541|root at thierry-Lenovo-ideapad-700-15ISK:/home/thierry/arcanist# 
<1392766784>Error: Error registering TS3100 series as IPP printer 
(_ipp._tcp): -8
<1392766784>Error: Error registering web interface of TS3100 series 
(_http._tcp): -8
Thierry
> 
>    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