SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
The problem seems simple but I have no more ideas. But first, the setup:
printer: HP LaserJet P1005, usb connected winprinter (needs firmware blob passed each power-on), connected to a slackwarearm raspberry pi 'server'
clients: windows and linux (slackware ofc) ones
all connected in a home LAN 192.168.etc
current cups server config: two queues, one "local raw printer" for windows clients (using their own windows printer driver), and the second "foo2xqx" (linux native driver) for linux clients
the above works, but
the problem: cannot get my linux clients to work with the "local raw printer", to do the processing on their part. Processing printjobs on a raspberry pi using foo2xqx works, but is painfully slow (low cpu power). Windows clients' printjobs come out of the printer in the next half of a second after a windows user clicks "print", which I want to have also for linux.
Do you guys have any ideas how could I resolve this? When tried different configurations, cups logs say either "filter failed" or there is no logging at all (job completed, but printer does nothing).
Hoo boy ... there have a lot of threads on LQ about Cups v 2.14 and Slackware 14.2.
One common denominator has been the version of cups running on the Server and the Client.
Seems that Apple changed the IPP protocol version with Cups 1.6 and printer configs that have worked for years stopped working with Cups 2.1.4 ( Slackware 14.2 )
I recently set up my older Raspberry Pi B+ to act as a network printer. It runs Slackware ARM 14.2. I have a HP Officejet 4500 g510n-z printer connected by USB to the Pi. The wireless signal in my house is weak on the side of the house where the printer is located. However, my house is wired with Cat 6, and that is how I connect all clients to the cups/samba print server.
Sharing the printer over the LAN to my Linux machines was as easy as enabled printer sharing in cups, and then exposing cups to the LAN. The windows machines are using Samba to access the printer.
Print jobs take a while to pop out of the Officejet, but I assume, like you, that it's due to the low processing power of the Pi. Each job on the Linux machines almost always reports a printing error, and several seconds later, returns a successful job.
The Linux machines are all running Slackware. I do not use the HP Device Manager because it almost never works. I add a printer in KDE using Printer control module. The Pi exposes the printer @ ipp://192.168.x.xxx:631/printers/HP_Officejet_4500_G510n-z and I add that url to each machine, and it just works.
It might help if you take a look at the following Slackware documentation:
I forgot to mention that the Pi also serves as a scanner server using saned. This also just works once the appropriate settings are used. XSane on the Linux machines finds the Pi on the network with no problem.
hplip is one of the first things that goes out of the system (along with precompiled kernels) on my fresh installs, I ditched it long ago too
been digging the Internetz for a while already on this topic, and it gave me some conclusions:
- cups documentation suxx something badly or is non existent in some parts
- most of web 'tutorials' are outdated and/or plain wrong in some areas
- my issue is not trivial to be just found out on a forum/site, even here
I did even try to overcome my software problem using hardware (tp-link's tl-ps3010u has a native lpd queue), but was very unreliable, even for home use
I have the following ideas to pursue once I find more spare time (maybe this weekend):
- modification of a PPD file to adjust input filtering (still dunno how to achieve this, tho)
- direct networked usb/IP printing via kernel module (usbip-core) and accompanying kernel tools
I know I am no IT pro and thus need more time to learn some things, but cups is such a pos (piece of software) that I lost my patience with too many times :/
There is also a chance that I am missing something big, obvious for you guys, so don't hesitate to throw some basic ideas/solutions if you think they may fit. Thanks
The company I work for 'inherits' a lot of printing problems from our Customers so I am always interested in printer-related problems.
not that I am much help here
I am not much pleased either with the changes to Cups since Apple acquired it way back when.
LQ User loiugi600 was using an armv4 NAS/print server where rendering on the server-side at first did not work at all but when he did get it working, it took forever to render the jobs on the low-power print server.
In this post he describes dropping Cups in favor of lprng to handle the raw queue.
I am not sure that lprng can load the required firmware blob for your HP LaserJet P1005 but maybe loiugi600 has more info on what he did to replace Cups with lprng for the raw queue ?
-- kjh
Last edited by kjhambrick; 05-26-2017 at 04:46 AM.
Reason: add sentence
this printer is so kind that the firmware can be sent to it via raw queue like a printjob, and it accepts it - this is however not an issue with raspberry, since the foo2xqx package contains a rule for eudev which sends firmare automagically upon pluggin it in (but did this hack with the tp-link thingie via network)
So, I got it finally. The reason was the most unexpected - outdated printer/filter drivers (foo2zjs) on client machine (first slackware got there about 4 years ago or so). Now it works even with cups raw queue.
but that was tl,dr, in case you're interested how I got it solved, the story follows:
First downloaded lprng version 3.8.35 from its homepage. Did not want to compile, so grabbed one from sourceforge (version 3.8.C). This one did compile, so I reused the old slackbuild from 13.37, trying not to trash my install. Cups had to be thrown out completely - programs had the same names and messed around with the same config files (crazy). Got the server running and raw queue set up, I proceeded to configure clients.
And to my surprise, none of my systems interacted well with the lprng's lpd. Windows machines reported problems with communication, linux ones (lp, lpq, lpstat etc. from the latest cups package) saw the service, but were unable to interchange data. As a last ditch I tried to install lprng on another linux machine - it worked (connected, saw the queue), could send the firmware that way, but failed while printing (some filter issues - now I think it could be that outdated foo2zjs). Either way having the printserver compatible only with some linux machines was not an option, so I ditched the idea.
Then I tried the usb/ip kernel package (driver and tools). This just rocks - virtual usb port over the ethernet. Got it setup in a few minutes - following the documentation is a pleasure. Only drawback - host can connect only with one remote machine. Firmware could be plugged into the printer that way, so it was good. Then tried with a proper print job - but with no effect. Tried from another linux machine - worked, yay! Question - what was the difference between this and my laptop? Yes, my laptop had foo2zjs driver installed few years back. Updated, worked with laptop. Tried with cups - works too.
All in all, that was an interesting journey, thank you guys for your support and ideas
Yes, that's right. In kernel configuration, one needs to select: device drivers -> usb support -> usb/ip support, host and vhci modules. The tools are under /usr/src/linux/tools/usb/usbip/.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.