I am trying to get a HP Laserjet 1018 to work with Bluefin-DX. When I run hp-plugin in the terminal, the installation stops with a “error:Plugin installation failed”. What is the preferred method of installing hp-plugin / HPLIP on Bluefin?
Answering my own question if anyone else has this issue: HP printer - #6 by sankarvinayak - Fedora Discussion
It is related to a long standing bug in fedora silverblue can be found in bugzilla redhat
It is caused by the design of the silverblue which will not allow modification to the /usr
directry.
HP plugin and firmware are inserted into the /usr/share/hplip/
folder by the hp-setup
utility and the firmware are in /usr/share/hplip/data/firmware
The only workaround I found is to temporarily unlock the /usr
by using the command
ostree admin unlock
and then running the hp-setup
or hp-plugin
utility which enable you to print until the next reboot after which the /usr
will be as the old.
So each time you have to unlock and install the drivers if you want to print.
It was reported to the upstream hp project long time ago and no changes has been made.
Newer printers mostly support the IPP
and does not require the proprietary plugin installation step.
so for someone like me with an older HP printer the options are
- Install fedora workstation instead of silverblue you will not have any issue setting up
- Unlock
/usr
every time you need to print - If available use the open open printing drivers (with mixed results for my laserjet 1007)
It’s a bummer that this doesn’t work, you’d think just adding the hplip packages would work, we’ve had those in there since November of last year.
If the firmware is redistributable I wonder if we can just include it on disk as part of the container build?
Since you have the firmware. Can you try printing with cups with that firmware specified?
Additionally, if you need just that directory mutable there are workarounds so you don’t have to do admin unlock
What are the workarounds, specifically?
take a look at how we handle swtpm. You can bind mount a mutable location over the something in /usr
I tried to look up but couldn’t find relevant info. From my (limited) understanding, I think you meant creating a directory in a location that is writable, e.g. /var/mydir
, then bind mount this directory over the directory in /usr
that we want to be mutable, e.g. /usr/somedir
, using the sudo mount --bind
command. Correct me if I’m wrong.
Would the bind mount persist over a reboot?
You got the gist of it.
Unfortunately no. You can look at swtpm-workaround and incus-workaround services to see how we handled it.
I would also recommend trying CUPs and specifying the firmware there. At work I found an HP 44" plotter and was able to interact just fine using Gutenberg ppds.
However I see what you mean that it calls for the proprietary plugin
I found a solution called gutenprint, it’s already available for install on Fedora Packages, so just add it to the section of packages.json
that pertains to your setup.
Here’s my file - I put it under all.include.bluefin[]: bluefin/packages.json at 4a536f04fe2d6c74fc348ced0664859198ba59fb · jamescalderon/bluefin · GitHub
Gutenprint is already included as a dependency.
I’ve a HP LaserJet MFP M426fdw.
How can I install the driver for the printer?
I mean,which way should I use gutenprint, (or any other way) to install the drivers?
I’ve tried hplip but it cannot install on bluefin.
The only way I found is to use a systemd service that uses an overlay each time the computer or the printer is turned on, as described in this thread of the Fedora forum.
It’s an ugly way to do it, but it works on my side and until HP releases their plugin as a binary package and relies on their awful .run file to install the proprietary blob, it’s about the only way to do it on an image based distro.
Fiddling with the Settings app in Printers → HP → Printer Details → Search for Drivers, I selected my model and drivers were installed.
It says ‘No active jobs’, but trying to print I get that the printer ‘Rejecting jobs’. It’s connected in my Lan and I can print from every other device mac, win, ios
Yes, your model, like mine requires the hp binary plugin : What is the HPLIP Binary Plug-In and How Do I Install It? | hp's Developer Portal
You need to use the systemd service I linked to in order to use it, as the hp-plugin utility does not work on Bluefin or any “atomic” distro where the image is read-only.
Fedora Silverblue opened a ticket years ago and HP has done nothing to help. I tried every possible way to install it on a custom image. The only way I found to make it work, after days of searching for a solution, is the one I linked.
My printer (Canon LBP622Cdw) requires a cups filter in /usr/lib/cups/filter so I can’t use the driver package canon provides for it.
My workaround was to open up the CUPS web interface, http://localhost:631/admin, and add my printer there using ipp. The address for mine is
ipps://canon-printer.lan:10443/ipp/print
No drivers required, all the necessary features. Maybe your printer can use ipp or ipps too
Wait what? Do you mean we could send people with these acursed printers to a solution that would work?
No. HP printers have an entirely different problem. I have HP LaserJet 1018 but I expect many other work in a similar fashion:
They don’t have persistent storage for the firmware so every time you turn it on a firmware must be loaded into the printer. A simple cat
/tee
command can do that, e.g. cat <firmware> > /dev/usb/lp0
. But it must be done or the printer won’t work. This can be automated with a simple udev
rule, in fact that’s what hplip
and foo2zjs
do, however there’s a catch. The firmwares’ license doesn’t allow public redistribution, and the license must be explicitly accepted by the user. hplip
and foo2zjs
solves this problem in a similar fashion: they provide tools that download the firmwares and the udev rules and make the user accept the license before installing them. Both has a problem. Fedora’s foo2zjs
package contains only the ppd drivers and excludes anything firmware related from it, hplip
tries to write the read-only part of the system. It should be possible to create a simple ujust task to properly install foo2zjs
along with its missing udev rules, however foo2zjs
supports only a very limited number of printers, so focusing on hplip
instead would be better. I didn’t look into hplip
to know if there’s any way to solve its problem but I know it has a config file in /etc
where it’s possible to specify the directories it uses so there’s hope.