Zen and the art of Scanner Maintenance (Bug #1797501 again)

Bug #1817214 reported by brian_p
16
This bug affects 2 people
Affects Status Importance Assigned to Milestone
HPLIP
New
Undecided
Unassigned

Bug Description

A number of users have experienced a loss of scanning functionality in the past twelve months and some have sought help here or through other support channels. Affected devices appear to include

* OfficeJet 6600
* OfficeJet Pro 8600
* Deskjet 3630
* Color LaserJet Pro MFP M278-M81
* LaserJet MFP M28-M3

The usual advice has been to tackle the issue through a suitable modification to /usr/share/hplip/data/models/models.dat. This post presents a different approach.

The root of the problem is well-explained by Jeremy Kerr in LP #1797501:

https://bugs.launchpad.net/hplip/+bug/1797501

and a very strong indication that you have met this bug would be given by the journalctl command. Basically, look in its output for no attributes being found in models.dat.

First of all, this problem only affects modern IPP printers which are on the network and which have an AirPrint service. Secondly, the solution presented here depends on a user having set up a print queue using HPLIP's hp backend in a URI for the printer. Check this with

lpstat -v

Does the device for the printer begin with hp:/... ? If "yes", you could be due to regain the scanning facilty with the following method:

*************************************************
*** Method: turn off AirPrint on the printer. ***
*************************************************

How to do this is left up to the user, but the printer's EWS (Embedded Web Server) or front panel are places to look to do it.

Explanation
===========

The SANE backend hpaio needs a URI to use the scanner. There are two ways it can be obtained.

1. From the AirPrint mDNS broadcasts of the printer. This
   is a discovery method.

2. From the printer URI. In this case, it simply takes the
   lpstat -v output and substitutes hpaio for hp. There is
   no discovery involved; it's a clever programming trick.

3. What is obtained from 1. and 2. should be identical.
   Because of LP #1797501 the two URIs are different. One
   is right and one is wrong. The right one is the one
   obtained in 2.

4. Given the choice, the hpaio backend first tries 1, which
   causes the scanner not to be located. It does not fall
   back to 1. No choice should be given. Turning off AirPrint
   forces it to use 2.

5. models.dat needs to be pristine. Make it so with

   apt --reinstall install libsane-hpaio

There you are. Happy? This poster isn't!

We have taken years and put a lot of work in to get to the point where setting up a printer is nearly as easy as plugging a USB mouse in. Turning off AirPrint moves us backwards. Your printer is now invisible to any other devices on the network; computers, smartphones etc. Driverless printing is ruled out. But, if it works for you...

--
Brian.

Revision history for this message
brian_p (claremont102) wrote :

In /usr/share/hplip/data/models/models.dat there is a section for each device supported by HPLIP. For example

 [hp_colorlaserjet_mfp_m278-m281]
 [deskjet_3630_series]

The printer URIs for these networked devices would be

 hp:/net/hp_colorlaserjet_mfp_m278-m281?ip=<IP_address>
 hp:/net/deskjet_3630_series?ip=<IP_address>

It can now be deduced that their scanner URIs are definitely

 hpaio:/net/hp_colorlaserjet_mfp_m278-281?ip<IP_address>
 hpaio:netdeskjet_3630_series?ip=<IP_address>

Scanning should always be possible by providing a SANE frontend with a
URI. Like so:

 scanimage -d hpaio:/net/hp_colorlaserjet_mfp_m278-m281?ip=<IP_address>
 xane hpaio:/net/hp_colorlaserjet_mfp_m278-m281?ip=<IP_address>
 simple-scan hpaio:/net/deskjet_3630_series?ip=<IP_address>

************************************************************************
* This provides another way of scanning if LP #1797501 is encountered. *
************************************************************************

Note that it is possible to guarantee almost certainly which other devices will be affected by LP #1797501. For example:

 [hp_laserjet_mfp_m426fdw]

The printer URI is hp:/net/hp_laserjet_mfp_m426fdw?ip=<IP_address>
The scanner URI is hpaio:/net/hp_laserjet_mfp_m426fdw?ip=<IP_address>

The device's _uscan._tcp output would have to have

 ty=hp_hp_laserjet_mfp_m426fdw

to avoid LP #1797501.

--
Brian.

Revision history for this message
brian_p (claremont102) wrote :

> It can now be deduced that their scanner URIs are definitely

> hpaio:netdeskjet_3630_series?ip=<IP_address>

If it isn't obvious, this should be

  hpaio:/net/deskjet_3630_series?ip=<IP_address>

--
Brian.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers