Updated: June 14, 2017
How well does Linux handle Wireless printing? This is a questions that billions ask themselves every morning before their first shot of coffee, and hopefully, today, I will be able to answer this question. A few weeks down the trouser of time, I bought myself a new printer, and it comes with Wireless connectivity.
If you've read my reviews and printing tutorials, so far, they have mostly revolved around Samba printing, often with a less than perfect record. Now though, I have a new device, so it will be interesting to see how Linux distros cope with this thing. Shall we?
Anyhow, I have a new all-in-one printer, one HP DeskJet 3630, and I had it configured for Wireless connectivity in my LAN. I did this using my Windows 7/10 systems. I also wrote an article on Wireless printing security, as it highlights all the little tweaks you might want to make, to ensure your setup is secure, quiet and suited to your needs. As you can imagine, most vendors ship their devices to be as open as possible, with default user names and passwords. Anyhow, that's NOT the topic for today.
What I'd like to do is make the HP DeskJet 3630 printer be recognized and used by my plethora of Linux distros, including primarily Fedora and Ubuntu, and see if we can nail down both basic printing but also advanced features, like scanning, ink levels, printer cleanup, and the rest. Once again, I am demonstrating using a particular brand and model, but the principle is pretty much the same everywhere.
I started with Fedora 25 on my Lenovo G50 machine. I launched the printer wizard, and let it scan the network. It quickly found the printer, and had it identified in multiple ways, including via its JetDirect connectivity, but also by its model. A little redundant but good. I selected and added the printer, the wizard sorted out the drivers, and the device was ready for use. It printed the test page correctly. Not bad so far.
But this is only the basic functionality. We also need to be able to do maintenance with the printer, as well as scan. After all, you don't buy an all-in-one thingie just for its name, right.
I wanted to see whether it would scan. To that end, I installed Simple Scan, which is the most basic of scanning programs available. It did its job well, but then it complained that it could not scan properly, in contradiction to its own results. You get decent quality and all, but the functionality is truly rudimentary, and you do need something more advanced.
I decided to install the HP's Linux Imaging and Printing (HPLIP) software in order to get the full plethora of printing and scanning features that the device offers. Alas, HPLIP was not available in Fedora 25, and I had to get it manually from the official site. This is where I encountered the first snag.
I was still able to download the archive - after going through the distro version and printer model wizard. However, officially, Fedora 25 does not seem to be supported. I decided to ignore this warning, and proceed with the testing.
I extracted the archive and executed the installer script - you will need to make it executable, and then run it as a regular user. You will then be prompted to provide the root password when necessary, mostly in order to install and satisfy dependencies.
Very quickly, the installer failed. It complained that my distro was missing PyQt 5 DBus package, and that it could not continue. Indeed, there is no pyqt5-dbus in Fedora's repositories.
warning: Missing REQUIRED dependency: pyqt5-dbus (PyQt 5 DBus - DBus Support for PyQt5)
warning: This installer cannot install 'pyqt5-dbus' for your distro/OS and/or version.
error: Installation cannot continue without this dependency. Please manually install this dependency and re-run this installer.
PIP & Python
The workaround is to use PIP, a tool designed to install Python packages. However, you need to be very precise which package you're trying to install, because the error message above does not really help, for instance:
pip install PyQt5
Could not find a version that satisfies the requirement PyQt5 (from versions: )
No matching distribution found for PyQt5
What you need is actually:
pip install python-qt5
The installer may warn about missing files, but it will complete correctly, and you will be able to continue with the original HPLIP setup - rerun the installer again.
No files/directories in /tmp/pip-build-extBkE/python-qt5/pip-egg-info (from PKG-INFO)
Another snag - SELinux. HPLIP will complain that it requires SELinux to be set in the permissive mode, and this is a lot of vomit for one afternoon. However, even if you ignore the warning and continue, it will then create the necessary SELinux profile so that HPLIP can actually cooperate nicely with the system. After that, it will satisfy several dependencies.
SELinux must run in permissive mode or it must be disabled for HPLIP to function properly. Please run SELinux in permissive mode or disable it before continuing.
To complete the install in Fedora you must quit the installer at the printer setup stage, log out, log back in, and run hp-setup.
Please read the installation notes. Press <enter> to continue or 'q' to quit:
Once you continue:
SELinux is installed.
SELinux protects the application from external intrusion attempts making the application secure
Would you like to have this installer install the hplip specific policy/profile (y=yes, n=no*, q=quit) ?
Let it run, let it run, let it run:
HP Device Manager
All of the preparatory steps so far were to get to this wizard, in order to finish the printer configuration. The GUI that launches will have several more steps. First, you need to decide what kind of configuration you want to do.
Option 2 may not work, especially if you're running a firewall and/or if you have not allowed Bonjour earlier. Option 3 will work, but you do need to connect the printer via a USB cable, which is not different from the Windows setup, to be fair. Let's do that.
Go with options 3, if option 2 fails.
After this long and complex part of the HPLIP setup completes, you will need to run another command, which will finish the installation of the drivers. It feels a little convoluted, but it should succeed without problems. The IP address should match whatever is in the last step of the GUI-driven wizard.
HP Linux Imaging and Printing System (ver. 3.16.11)
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.
Searching for device...
Found device: hp:/net/DeskJet_3630_series?ip=192.168.2.103
Still more. Worry not, it will soon be over. At this point, you can name and describe printer, and configure the optional Fax setup, if you allowed it during the initial wizard run in the command-line stage. Exhale, relax.
If you've got to this step, congratulations.
Scan with XSane
Now, we also need to make sure the scanning facility works as expected. We will use XSane, which is a more advanced scanning frontend, but it will be using the full plethora of the HP drivers to do its job. Also, it gets installed as a dependency with HPLIP.
I played around a little bit with scanning options, DPI, format, color, etc, and then scanned the quick-start brochure of the Moto G4 phone, just to see what kind of result I'd get, as the pages nicely combine glossy paper, text, pictures and whatnot. This worked quite well, and the scan quality was decent, especially considering the device price, but it also demonstrated that the set of HP drivers was working correctly, and that I had the full functionality set from the all-in-one device. Very nice.
Now, let's see how Ubuntu handles this test. The printer wizard setup was quick and easy, very much like Fedora. No pain, no ... pain in this case. Quick and nimble, I go crazy when I touch a thimble. But that's not all. We also need to see what gives when we try the HPLIP setup.
HPLIP setup & install
I decided to try with the manual configuration FIRST, just to see what it feels like trying to configure HPLIP from scratch, much like Fedora. Now, please note that there is no real need for this, so don't panic. Indeed, much like Fedora, Ubuntu lacks the necessary Qt libraries.
To resolve this, the procedure is the same - install the Qt4 libs from the repos, grab pip, install the Qt5 libs as they are not available in the official sources.
sudo apt-get install python-qt4
sudo apt-get install python-pip python-dev
sudo pip install --upgrade pip
However, as I've just mentioned, there's no need to do this. The HP Device Manager is available in the Ubuntu repos under the name HPLIP Toolbox - HP Printing System Control Center - I have no idea why the Ubuntu Software Center is spelled the GB way, maybe because I wrongly chose the locale during the setup? Anyway.
Once you install the software and launch it, it should detect the printer and communicate with it. I had a one-time glitch, probably because it took a few seconds for the printer to initialize and be recognized, but other than that, it was peachy. You get all the nice and fancy options you need. Bob's your uncle indeed. Mwuahahaha.
There we go, the end of. This tutorial is hopefully beneficial, as it shows how to configure a Wireless printer in Linux in two popular distributions, Ubuntu and Fedora, and it shows the pros and cons and pitfalls of each, including some funky compilations, tweaks and setup games.
Overall, Ubuntu is more readily accessible if you wish to use HPLIP, but it is also relatively easy to obtain and configure the advanced HP toolbox on Fedora. You will need to satisfy several dependencies, but this opens a whole subset of tricks, and we gain knowledge of pip. The setup may look a little bit convoluted, because it has lots of steps, but most of it is prep-work just to get the HP Device Manager running, so you can use the printer-specific features that the generic printing wizard does not offer. Lastly, we also scanned documents in two different ways, so we're all set. If you're wondering should you go Wireless with printing in Linux, the answer is, if you have an HP device, and you are comfortable with a little bit of semi-pro command line work, you will be fine.
But I am pleased. Because there's progress. I used to fake drivers for my Lexmark printer by using a comparable HP set, then we had the P1102 device, which also required some hackery, HP vs foo in this regard, and now we have this new Wireless thing, and it's fairly cooperative. I think the average user will find much less woe trying to configure a printer on Linux now, especially a Wireless one, than a few years back. Within reason, of course, because there's a limit to how trivial the whole thing is. On any operating system. But we're getting there. Once more, I hope you're pleased with this guide. See ya.
P.S. If you find this article useful, please support Dedoimedo.