HPLIP

So I had this problem – or a very similar one – about 6 or 7 months ago. After doing some research here, and also at the HPLIPS project on SourceForge, I decided to go ahead and upgrade to LEAP 15.0 (from 42.3). Alas. My problem persists!

I did the upgrade as instructed, and everything appeared to go smoothly. I can get to my printer (HP m1522nf) through the print dialog, and it prints OK. When I ran YAST for my scanner (built into the printer), it told me it had registered my HP printer as my scanner device, and it had associated a driver “hpaio” with it. But when I tried to run XSANE and/or SKANLITE, I got an error message – “no scanner device detected.” And when I went back to YAST, “hpaio” was still there, but the association with hp m1522nf had vanished. So I tried to add my print device as a scanner, and I was told “you must install hplip”. So I did that, but YAST still couldn’t find my scanner.

Here’s the output from the “Install log”.


Downloading hplip (download size 11.20 MiB)
Installing hplip-3.18.6-lp150.4.3.1.x86_64.rpm (installed size 15.97 MiB)

[From YAST, 14:05 CDT 6/20/2019]

So now the symbol for “hplip” appeared in the launcher menu, but when I clicked on that, nothing happened. So I started a Konsole session and tried to start the program that way. Here’s what happened.


david@linux-v95w:~> hp-toolbox
error: Unable to locate models.dat file

HP Linux Imaging and Printing System (ver. 0.0.0)
HP Device Manager ver. 15.0

Copyright (c) 2001-15 HP Development Company, LP
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to distribute it
under certain conditions. See COPYING file for more details.

Traceback (most recent call last):
  File "/usr/bin/hp-toolbox", line 269, in <module>
    QApplication, ui_package = utils.import_dialog(ui_toolkit)
TypeError: 'NoneType' object is not iterable

[From Konsole when I try to invoke hplip manually]

So I figured that maybe “hp-setup” would work. But it gives me the same error.


david@linux-v95w:~> hp-setup
error: Unable to locate models.dat file
...
Using connection type: usb
error: No device selected/specified or that supports this functionality.

So I read the help file for hp-setup, and after failing to get the —gui option to work, I just specified the location of my printer directly.


david@linux-v95w:~> hp-setup -i 192.168.1.5
error: Unable to locate models.dat file

HP Linux Imaging and Printing System (ver. 0.0.0)
Printer/Fax Setup Utility ver. 9.0

Copyright (c) 2001-15 HP Development Company, LP
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to distribute it
under certain conditions. See COPYING file for more details.

(Note: Defaults for each question are maked with a '*'. Press <enter> to accept the default.)

Traceback (most recent call last):
  File "/usr/share/hplip/base/models.py", line 555, in __getitem__
    return self.__cache[model]
KeyError: 'hp_laserjet_m1522nf_mfp'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/hp-setup", line 358, in <module>
    device_uri, sane_uri, fax_uri = device.makeURI(param, jd_port)
  File "/usr/share/hplip/base/device.py", line 417, in makeURI
    mq = queryModelByURI(cups_uri)
  File "/usr/share/hplip/base/device.py", line 458, in queryModelByURI
    return queryModelByModel(model)
  File "/usr/share/hplip/base/device.py", line 447, in queryModelByModel
    return model_dat[model]
  File "/usr/share/hplip/base/models.py", line 561, in __getitem__
    if self.read_section(self.released_dat, model):
  File "/usr/share/hplip/base/models.py", line 471, in read_section
    fd = open(filename)
TypeError: expected str, bytes or os.PathLike object, not NoneType

from which I infer, perhaps incorrectly, that there’s supposed to be a file called “models.dat” somewhere in the hplip.xxx.rpm file, and that either it’s not there, or the package manager is failing to extract / install it properly.

Any ideas how to fix it? I guess I’ll go monkey around with the “make” file from SoiurceForge. In fact, I took a look over there already, and saw this in the “Release Notes” for version 3.19.1:

Added support for following new Distro’s:

  • Fedora 29(64-bit)
  • Open Suse 15(64-bit)
  • Manjaro 18.0(64-bit)
  • RHEL 7.2(64-bit)

which leaves me wondering why the package from OpenSuse says “3.18.6” – not that I’m complaining – just curious.

You cannot run the hp-setup as your user. Please do


su -c hp-setup

from a terminal window. It will start the program with root permissions, i.e. admin ones.

Thanks for the suggestion, Knurpht. I tried that, and the error message about the missing “models.dat” file went away. But hp-setup still died … something about a missing qt4-xx librry. I forget exactly which one.

Anyway, I eventually uninstalled hplip using YAST, then installed the latest build of hplip from SourceForge – it’s a shell script, so it’s not real hard to use. There is a bug in the procedure, near the end – even though the “plugin” for my printer had already been installed, it tried to install it again, after I had used the GUI interface to identify my printer / scanner by IP address. And then I was stuck in an endless loop, so I just killed the Konsole window. But hplip works now, and I can use my printer and my scanner once again, so I’m a happy camper. Guess I’ll report the bug in the installer script to the guys at SourceForge.

On previous occasions when I have had problems with hplip, I have downloaded the version from the Printing repo - currently 19.3 - and this has solved the problem.

Can’t follow exactly what you did, but thanks for reporting back that it works now.

https://software.opensuse.org/package/hplip
hplip 3.19.3 is available with an “experimental packages”.
hplip 3.19.5 is available with a “community packages”.

Thanks for the suggestion, John. I guess I need to learn more about the various repositories, and how to access them.

Thank you very much for the suggestion, Svyatko. I guess I need to understand the repository structure better than I do.

The other day I had trouble compiling a c program because “mpfr.h” and “mpc.h” were not available in /usr/include. I solved my problem by downloading the missing packages / libraries from the respective GNU project teams and then running “./configure” and “make / (sudo) make install” But I suppose the missing multi-precision support libraries might be in one of the extra SUSE repositories. I’ll take a look around. Downloading a binary package is certainly easier than rebuilding it from the source code. On the other hand, I learned a bunch of stuff by running the compiler a lot. :slight_smile:

Package repositories
Additional package repositories
SDB:Add package repositories
SDB:Vendor change update

Well, I’m probably overdoing this, but since I had a link to some additional SUSE repositories, I went ahead and uninstalled hplip, then installed the 19.3 version from “community repositories”. I tried to get this to work for quite a while, without success – the program “hp-toolbox” would not run when invoked from the start menu, and when I fired it up via a Konsole window I got a weird error message about invoking a qt4 function that does not exist. So I finally gave up on that and went back to SourceForge:

  1. I downloaded the installation file.

  2. I ran “sh hplip-3.19.3.run” from the command line to install the programs.

  3. This installation script died when it could not install the needed plugin for the scanner built into my HP printer.

  4. The script had actually installed all the hp programs (hp-toolbox, hp-doctor, hp-test, hp-setup, hp-plugin, etc.) – but setup was incomplete.

  5. I ran hp-setup to get the ip address for my network printer set correctly.

  6. I could not get “hp-plugin” to complete successfully. It would download a self-extracting archive, and then throw a Python error “broken pipe”.

  7. But I found this helpful list, so I downloaded the “hplip-3.19.3-plugin-run” file, then used “sh hplip-3.19.3-plugin-run” to get the plugin installed.

I honestly don’t know why I can’t get the RPM packages to work correctly. I’m putting this detailed description of a workaround out here just in case somebody else might find it useful someday. It may not be elegant, but it worked for me.

I recently bought a new PC. I have found a simple way to get my old printer installed successfully. This works well with several flavors of Linux (SUSE, Ubuntu, Debian).

  1. Use the packagre manager to install hplip
  2. Run hp-setup in a terminal window with option -i, and specify the printer’s URL (I have my printer plugged into a wi-fi router)
  3. Use this interactive mode to configure a print queue, and to download the HP plugin module
  4. Run hp-toolbox from the terminal. It will start a GUI.
  5. The GUI won’t see the printer right away, but once you have selected the printer (I use “manual discovery”), it will find everything else OK.
  6. Depending on your distro, you may have to install “xsane” as a scanner back-end.