sane-airscan icon indicating copy to clipboard operation
sane-airscan copied to clipboard

unable to scan from ADF on HP Laserjet MFP M234sdw

Open vajonam opened this issue 3 years ago • 4 comments

I am not able to scan from the ADF with either hp-scan or simplescan. It errors out communication errors. I have attached the logs

python3.10-HP-LaserJet-MFP.log python3.10-HP-LaserJet-MFP-M234sdw.log simple-scan-HP-LaserJet-MFP-M234sdw.log

Any help is appreciated.

I am able to scan using the flatbed okay. Scanning works on both flatbed and ADF for Mac. I have tried both xsane as well simplescan.

vajonam avatar Jul 23 '22 01:07 vajonam

OK, will look to it.

I guess from your profile, you are able to build sane-airscan from source, correct?

alexpevzner avatar Jul 23 '22 09:07 alexpevzner

Yes I can build it if needed, at the moment I am using the Ubuntu package.

Just another data point, this printer was in a different VLAN, and eSCL provided that error-ed out. When I moved the printer into the same VLAN as the guest network the WSD protocol showed up. I was able to scan using the ADF with this protocol. I would like keep the VLAN separation but I have a work around for now.

I use avahi on the router to reflect mDNS packets arcoss VLANs and have the firewall rules to communicate between VLANs to printer host.

vajonam avatar Jul 23 '22 15:07 vajonam

We can try debug this issue.

After eSCL backend sends a scan request, printer returns image URL. When sane-airscan attempts to download the image, printer returns 503 error. This is normal for some printers, and sane-airscan performs a series of retries with some reasonable delay between them. Roughly:

    for (i = 0; i < 1000; i ++) {
        err = download_image();
        if (err == OK || err_is_fatal (err)) {
            return err;
        }
        err = query_status();
        if (err_is_fatal(err)) {
            return err;
        }
        sleep(1);
        // And then retry
    }

With flatbad it works perfectly well, and driver succeeds after few retries, but with ADF it timeouts in the attempt to query_status(). Currently there is a 5-second timeout, and previously it was quite enough for all devices; query_status() is the fast operation.

I would ask you to play a little bit with the query_status() timeout. The timeout is defined in the beginning of the airscan-device.c file, this is the DEVICE_HTTP_TIMEOUT_CHECK constant. Currently it is 5 seconds, try to extend it up to 10-15 seconds.

Onde you've built sane-airscan, you actually don't need to make install it. Instead, you can replace libsane-airscan.so.1 file from your installed package with the symbolic link to the libsane-airscan.so.1 file in the build directory.

alexpevzner avatar Jul 23 '22 16:07 alexpevzner

And you can temporary connect some computer to the network segment where the printer connected to, use airscan-discover utility to obtain WSD URL, and with this URL you will probably be able to use WSD across your router.

alexpevzner avatar Jul 23 '22 16:07 alexpevzner

Looks like issue is not relevant anymore...

alexpevzner avatar Jul 06 '23 21:07 alexpevzner