<div dir="ltr">Hi all,<br><br>I found <a href="http://ws4d.org/dpws-explorer/" target="_blank">http://ws4d.org/dpws-explorer/</a> . It has a linux version, it can help a bit with device detection and browse properties while developing a proper scan software. <br><a href="https://sourceforge.net/projects/ws4d-javame/" target="_blank">Here</a> is a java implementation of the DPWS standard, and <a href="http://trac.e-technik.uni-rostock.de/projects/ws4d-gsoap" target="_blank">here</a> a C/C++ one. <br><br>However, I found another batch of documentation of the standard, so developing a simple working implementation targeted mainly to scan capabilities isn't going to be difficult. </div><div dir="ltr"><br></div><div dir="ltr">The C/C++ library posted above might be not suitable for sane backend implementation, I don't think sane devs would allow adding such a large gen-purpose dependency to codebase, and a lightweight implementation is better IMHO. </div><div dir="ltr"><br></div><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr">Il giorno mar 6 feb 2018 alle ore 00:05 Patrick Roncagliolo <<a href="mailto:ronca.pat@gmail.com" target="_blank">ronca.pat@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi,<br><br>you can find a basic implementation of a WSD discovery scanner here: <a href="https://github.com/roncapat/WSD-python" target="_blank">https://github.com/roncapat/WSD-python</a><br><br>Here is a sample output (it detects a response from my MB2350):<div><br></div><div><div><font face="monospace">EndPoint Reference Address:</font></div><div><font face="monospace"><span style="white-space:pre-wrap"> </span>urn:uuid:00000000-0000-1000-8000-f4813944662e</font></div><div><font face="monospace">Implemented Types:</font></div><div><font face="monospace"><span style="white-space:pre-wrap">   </span>wsdp:Device</font></div><div><font face="monospace"><span style="white-space:pre-wrap">  </span>wprt:PrintDeviceType</font></div><div><font face="monospace"><span style="white-space:pre-wrap"> </span>wscn:ScanDeviceType</font></div><div><font face="monospace">Transport addresses:</font></div><div><font face="monospace"><span style="white-space:pre-wrap">   </span><a href="http://192.168.1.5:80/wsd/pnpx-metadata.cgi" target="_blank">http://192.168.1.5:80/wsd/pnpx-metadata.cgi</a></font></div><div><br></div><div>Basically, it retrieves an unique identifier, the capabilities of the devices (MB2350 is both printer and scanner), and an HTTP address for later use. <br>More coming. Understanding the protocol with an easy language as Python with no API constraints helps to bootstrap a working implementation, but ideally the next step would be a true backend implementation.</div></div></div><div dir="ltr"><div><div><br></div><div>Patrick Roncagliolo</div><div><br></div></div></div><div dir="ltr"><br><div class="gmail_quote"><div dir="ltr">Il giorno lun 5 feb 2018 alle ore 16:25 Patrick Roncagliolo <<a href="mailto:ronca.pat@gmail.com" target="_blank">ronca.pat@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Till,<br>WSD came in with Windows Vista IIRC. <br>It is HTTP/XML based, so yeah, it works only on network, in fact my canon maxify uses an entirely different protocol on USB (similar, if not equal, to the BJNP network protocol used by Canon for basic Linux LAN support). <br>It defines a discovery protocol, a scan service, a print service, but probably there are more, unrelated with the printer/multifunction/scanner world (I started today to dig the docs). <br><br>By the way, I managed to fix the script found in the github repo I linked, and maybe the first step for me to get comfortable with the protocol will be to play a bit more from python, extending as much as I can the short script as a more complete CLI tool with discovery support and all the possible options. Then, I could manage to reimplement the protocol as a sane backend, which I think is a bit more hard (I need to study sane api first).<br><br>Beware I'm a student with not-so-much spare time, but I'm interested in learning something new and get my canon working at best, and obviously contribute as much as I can. I'd like to add or expand wireshark dissectors for WSD and BJNP too. We'll see how much I can do. <br><br>NB. if in the coming days I start a github repo for a WSD python playground, I'll share here the link.<br><br>Here are a few links:<br>-WS-Discovery (full spec) <a href="http://specs.xmlsoap.org/ws/2005/04/discovery/ws-discovery.pdf" target="_blank">http://specs.xmlsoap.org/ws/2005/04/discovery/ws-discovery.pdf</a><div>-WS-Print (at the bottom of the page there are links to all print & scan XML schemas and tech specifications) <a href="https://docs.microsoft.com/en-us/windows-hardware/drivers/print/ws-print-v1-1" target="_blank">https://docs.microsoft.com/en-us/windows-hardware/drivers/print/ws-print-v1-1</a></div><div>-WS-Print 2.0 (only printing? 3d printers? have no time to check) <a href="http://go.microsoft.com/fwlink/p/?LinkId=534008" target="_blank">http://go.microsoft.com/fwlink/p/?LinkId=534008</a></div><div><br><div><br> </div></div></div><br><div class="gmail_quote"><div dir="ltr">Il giorno lun 5 feb 2018 alle ore 15:54 Till Kamppeter <<a href="mailto:till.kamppeter@gmail.com" target="_blank">till.kamppeter@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 02/05/2018 01:32 PM, Patrick Roncagliolo wrote:<br>
> WDS is a protocol based on http connection with devices such as<br>
> scanners, printers and so on. Most of the work is based on a bunch of<br>
> XML schemas, that are publicly available on MSDN. Searched a lot, but<br>
> for Linux I only found this (<a href="https://github.com/al42and/WSDolefuls" rel="noreferrer" target="_blank">https://github.com/al42and/WSDolefuls</a>),<br>
> that fails to parse the scanner response, but succeeds to start the scan<br>
> job.<br>
> I tried to search around SANE for WDS support, but I understood there<br>
> isn't.<br>
><br>
> Is there a technical motivation behind the lack of support for WDS? or<br>
> it's just not the top priority? Could it be possible to create a backend<br>
> for this protocol? A lot of Canon printers would work like a charm with<br>
> a single good implementation, and I think it would be the same with a<br>
> lot of modern hardware. I could try to start a simple implementation if<br>
> someone instructs me with the basics of the SANE internal API for<br>
> backends and working principles, I'm a student with (not much) free time<br>
> and it could be great to help a bit (and learn something) if possible.<br>
><br>
<br>
This looks like a second driverless (meaning no device/model-specific<br>
software or data (aka driver) required) scanning method after PWG's<br>
(Printer Working Group, <a href="http://www.pwg.org/" rel="noreferrer" target="_blank">http://www.pwg.org/</a>) IPP Scanning which I<br>
mentioned in another post on this list.<br>
<br>
It seems that WDS exists already for longer time and is already<br>
established, so that there are actually several scanners using it. Am I<br>
right? Which manufacturers are participating? Does it only work on<br>
network devices? Or only on USB? Does it only work on printer/scanner MF<br>
devices or also on stand-alone scanners?<br>
<br>
Patrick, it would be great if you could make a SANE module for that.<br>
Another step to making a scanner as easy to connect under Linux as a USB<br>
stick. Also great for MF devices which happily print with PWG's<br>
driverless IPP printing but do not support IPP scanning.<br>
<br>
    Till<br>
<br>
--<br>
sane-devel mailing list: <a href="mailto:sane-devel@lists.alioth.debian.org" target="_blank">sane-devel@lists.alioth.debian.org</a><br>
<a href="http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/sane-devel" rel="noreferrer" target="_blank">http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/sane-devel</a><br>
Unsubscribe: Send mail with subject "unsubscribe your_password"<br>
             to <a href="mailto:sane-devel-request@lists.alioth.debian.org" target="_blank">sane-devel-request@lists.alioth.debian.org</a></blockquote></div></blockquote></div></div></blockquote></div>