SimulPiscator / AirSane

Publish SANE scanners to MacOS, Android, and Windows via Apple AirScan.
GNU General Public License v3.0
243 stars 26 forks source link

Hp LaserJet M2727dnf #91

Closed burnbabyburn closed 2 years ago

burnbabyburn commented 2 years ago

Hi, hope this is the right place for this prob.

My MFP needs the proprietary HP-binary-plugin (e.g. hplip-3.22.4-plugin.run) to work correctly. I am using a network setup. (Printer: 192.168.1.233 on localnet and 10.0.0.29 on different network, Airsane: 192.168.1.234, IPP_Service_Host: 192.168.1.10) the printers http service pages shows an WS-Discovery Service so we should have a WSD up and running. But it seems to not register in MDNS/WSSD/ZEROCONF and so airscan is not able to detect it. I tested my normal setup with an avahi-reflector and also moved the printer to the same network segment as airscan. It made no difference.

while tcpdumping a hpaio:// scan (scanimage --test --verbose --progress) i was able to see the WSD XML the printer reported:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:wscn="http://tempuri.org/wscn.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Body>
    <wscn:ScanElements>
      <ScannerConfiguration>
        <DeviceSettings>
          <FormatSupported xsi:type="SOAP-ENC:Array" SOAP-ENC:itemType="wscn:ScanDocumentFormat" SOAP-ENC:arraySize="2">
            <item>jfif</item>
            <item>hpraw</item>
          </FormatSupported>
          <QualityFactorSupported>false</QualityFactorSupported>
          <ContentSupported xsi:type="SOAP-ENC:Array" SOAP-ENC:itemType="wscn:ContentType" SOAP-ENC:arraySize="1">
            <item>Auto</item>
          </ContentSupported>
          <DocumentSizeAutoDetectSupported>false</DocumentSizeAutoDetectSupported>
          <FeederCapacity>50</FeederCapacity>
          <DuplexRotation>180</DuplexRotation>
          <Rotation>0</Rotation>
        </DeviceSettings>
        <Platen>
          <ColorSupported xsi:type="SOAP-ENC:Array" SOAP-ENC:itemType="wscn:ColorEntryType" SOAP-ENC:arraySize="4">
            <item>BlackandWhite1</item>
            <item>GrayScale8</item>
            <item>RGB24</item>
            <item>RGB48</item>
          </ColorSupported>
          <PlatenMinimumSize>
            <Width>1920</Width>
            <Height>1920</Height>
          </PlatenMinimumSize>
          <PlatenMaximumSize>
            <Width>8500</Width>
            <Height>11690</Height>
          </PlatenMaximumSize>
          <PlatenOpticalResolution>
            <Width>1200</Width>
            <Height>1200</Height>
          </PlatenOpticalResolution>
          <FlatbedSupported>true</FlatbedSupported>
        </Platen>
        <ADF>
          <ADFSupported>true</ADFSupported>
          <ADFSupportsDuplex>true</ADFSupportsDuplex>
          <ADFMinimumSize>
            <Width>1920</Width>
            <Height>1920</Height>
          </ADFMinimumSize>
          <ADFMaximumSize>
            <Width>8500</Width>
            <Height>15000</Height>
          </ADFMaximumSize>
          <ADFOpticalResolution>
            <Width>300</Width>
            <Height>300</Height>
          </ADFOpticalResolution>
        </ADF>
      </ScannerConfiguration>
      <ScannerStatus>
        <ScannerCurrentTime>2018-07-23T12:50:41Z</ScannerCurrentTime>
        <ScannerState>Idle</ScannerState>
        <ScannerStateReason>None</ScannerStateReason>
        <ScanToStatus>
          <PaperInADF>false</PaperInADF>
          <ScanToAvailable>false</ScanToAvailable>
        </ScanToStatus>
      </ScannerStatus>
      <ScannerInfo>
        <ModelNumber>CB532A</ModelNumber>
      </ScannerInfo>
    </wscn:ScanElements>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

And i was able to forge a curl post for wsdiscovery - So airscan stuff should work

curl --verbose --header Accept: --header "Content-Type: application/soap+xml; charset=utf-8"  --header "Transfer-Encoding: chunked" --user-agent "gSOAP/2.7" --data @req  10.0.0.29:8289/StableWSDiscoveryEndpoint/schemas-xmlsoap-org_ws_2005_04_discovery
*   Trying 10.0.0.29:8289...
* Connected to 10.0.0.29 (10.0.0.29) port 8289 (#0)
> POST /StableWSDiscoveryEndpoint/schemas-xmlsoap-org_ws_2005_04_discovery HTTP/1.1
> Host: 10.0.0.29:8289
> User-Agent: gSOAP/2.7
> Content-Type: application/soap+xml; charset=utf-8
> Transfer-Encoding: chunked
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 202 ACCEPTED
< Server: gSOAP/2.7
< Content-Type: application/soap+xml; charset=utf-8
< Transfer-Encoding: chunked
< Connection: close
<
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wscn="http://tempuri.org/wscn.xsd"><SOAP-ENV:Body><wscn:ScanElements><ScannerConfiguration><DeviceSettings><FormatSupported xsi:type="SOAP-ENC:Array" SOAP-ENC:itemType="wscn:ScanDocumentFormat" SOAP-ENC:arraySize="2"><item>jfif</item><item>hpraw</item></FormatSupported><QualityFactorSupported>false</QualityFactorSupported><ContentSupported xsi:type="SOAP-ENC:Array" SOAP-ENC:itemType="wscn:ContentType" SOAP-ENC:arraySize="1"><item>Auto</item></ContentSupported><DocumentSizeAutoDetectSupported>false</DocumentSizeAutoDetectSupported><FeederCapacity>50</FeederCapacity><DuplexRotation>180</DuplexRotation><Rotation>0</Rotation></DeviceSettings><Platen><ColorSupported xsi:type="SOAP-ENC:Array" SOAP-ENC:itemType="wscn:ColorEntryType" SOAP-ENC:arraySize="4"><item>BlackandWhite1</item><item>GrayScale8</item><item>RGB24</item><item>RGB48</item></ColorSupported><PlatenMinimumSize><Width>1920</Width><Height>1920</Height></PlatenMinimumSize><PlatenMaximumSize><Width>8500</Width><Height>11690</Height></PlatenMaximumSize><PlatenOpticalResolution><Width>1200</Width><Height>1200</Height></PlatenOpticalResolution><FlatbedSupported>true</FlatbedSupported></Platen><ADF><ADFSupported>true</ADFSupported><ADFSupportsDuplex>true</ADFSupportsDuplex><ADFMinimumSize><Width>1920</Width><Height>1920</Height></ADFMinimumSize><ADFMaximumSize><Width>8500</Width><Height>15000</Height></ADFMaximumSize><ADFOpticalResolution><Width>300</Width><Height>300</Height></ADFOpticalResolution></ADF></ScannerConfiguration><ScannerStatus><ScannerCurrentTime>2018-07-23T15:20:04Z</ScannerCurrentTime><ScannerState>Idle</ScannerState><ScannerStateReason>None</ScannerStateReason><ScanToStatus><PaperInADF>false</PaperInADF><ScanToAvailable>false</ScanToAvailable></ScanToStatus></ScannerStatus>* Closing connection 0
<ScannerInfo><ModelNumber>CB532A</ModelNumber></ScannerInfo></wscn:ScanElements></SOAP-ENV:Body></SOAP-ENV:Envelope>

avahi (thx to reflector) lists the printer on localnet and different net

=   eth0 IPv4 HP LaserJet M2727nf MFP (8A21A9)              Web Site             local
   hostname = [Drucker.local]
   address = [10.0.0.29]
   port = [80]
   txt = []
=   eth0 IPv4 HP LaserJet M2727nf MFP (8A21A9)              UNIX Printer         local
   hostname = [Drucker.local]
   address = [10.0.0.29]
   port = [515]
   txt = ["TBCP=T" "Binary=T" "Transparent=T" "adminurl=http://Drucker.local." "priority=50" "product=(HP LaserJet M2727nf MFP)" "ty=HP LaserJet M2727nf MFP" "rp=RAW" "qtotal=1" "txtvers=1"]
=   eth0 IPv4 HP LaserJet M2727nf MFP (8A21A9)              PDL Printer          local
   hostname = [Drucker.local]
   address = [10.0.0.29]

airscan-discover -d

e.g.
MDNS: resolve-ipv4("_ipp._tcp", "HP_LaserJet_M2727nf_MFP_fax @ odroidn2"): 192.168.1.10:631
WSDD: directed probe: trying if=enp0s3, addr=192.168.1.10
WSDD: HTTP POST http://192.168.1.10/StableWSDiscoveryEndpoint/schemas-xmlsoap-org_ws_2005_04_discovery
WSDD: HTTP resolving 192.168.1.10 80
WSDD: HTTP trying 192.168.1.10:80

But airscan only seems to scan Printers reporting _ipp._tcp and _ipps._tcp, which is not ideal in my case. The printer does not provide ipp and so the ipp service address is provided via DrPsychick docker-cups-airprint logfile airscan-discover -d (valid 3weeks) pcap success scanning hpaio (valid 2weeks)

burnbabyburn commented 2 years ago

intended for backend not frontend. mb