2011-09-11. Printer: HP Laserjet 1018. (Have had for years.) Same basic family of driver as 1020: ZjStream protocol. Always used to be ok on Gentoo by installing cups, footmatic, and foo2zjs (the latter with FOO2ZJS_DEVICES="hp1018" to get firmware). Newly installed Gentoo system ~2011-07 was ok too, but only after following the foo2zjs instructions about removing some incompatible udev rules from /lib/udev/rules.d/ put there by a config-printer package (associated with gnome?). Then it stopped working (probably, in retrospect, after a further update of cups). Print jobs would be accepted, processed and removed from the queue, but nothing would come from the printer. This was with cups-1.4.6-r2 (forgotten the original version that worked). Various possibilities were suggested. E.g. here http://translate.google.co.uk/translate?sl=auto&tl=en&js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fwww.gentoo.ru%2Fnode%2F23507 it seems that the hplip package is the modern, preferable one for cups, and that anything relying (as foo2zjs) on the usblp kernel module is now deprecated. We see in /etc/modprobe.d/blacklist.conf the following (but commented out): # hplip and cups 1.4+ use raw USB devices, so it requires usblp not be loaded #blacklist usblp However, it seems the problem is only in loading the firmware: once the firmware is in the printer it runs ok. cat /usr/share/foo2zjs/firmware/sihp1018.dl >/dev/usblp0 So the main puzzle (if bothered about things working the "right" way, not just dumping something like cat .... into /etc/conf.d/local.start and hoping the printer's connected on boot) is how to make the firmware load properly. It is this file /etc/hotplug/usb/hplj1018 that should do the job. But there's no explicit hotplug package to look there (hotplug appears to be a remnant from 2004, with "hotplug" and "hotplug-base" not installed by default, replaced by udev functionality). Made a new file: /etc/udev/rules.d/71-foo2zjs-firmware.rules with this content: # The following from # http://forums.fedoraforum.org/showthread.php?t=172284 # udev rule for uploading the HP1018 firmware # the ATTR{dev}=="180:0" should be enough in order not to confuse the HP1018 with some other HP printer SUBSYSTEM=="usb", ATTR{dev}=="180:0", RUN+="/etc/hotplug/usb/hplj1018" It appears to have worked... [as of ~2011-09] --- Update: 2012-01[-29] There were some further troubles -- forget what. Tried the hplip package (proprietary parts) to try to get things working with the new CUPS principles of not liking usblp module. But hplip as well as coming with loads of cruft, was not at all as reliable; an annoying proportion of jobs just silently stuck. foo2zjs on the other hand had always (I've had it some 8 years for a HPlj1010--HPlj1018) been excellent -- I've come home to print things that "real" postscript printers at work choke on. So, tried removing hplip and emerging a recent foo2zjs again (this got a source tarball of 2011-12-2x). Was almost tempted by talk of loading the usblp module to create a /dev/usb/lp0 device (as the /proc/bus/usb/001/0xx or /dev/bus/usb/001/0xx files can't be written to upload the firmware), then unloading it to allow CUPS's new sysfs-only usb access to see the printer. But looking through the foo2zjs file /etc/hotplug/usb/hplj1018 it became clear that there is now a clean way to get the firmware upload: CUPS provides a backend file to do this. The default of this backend was under /usr/lib, but changing this to /usr/libexec suitable for gentoo, allowed the devices to be queried and firmware uploaded. The core parts are: USB_BACKEND=/usr/libexec/cups/backend/usb FW=/usr/share/foo2zjs/firmware/sihp1018.dl Running the backend command gets a list of printers; grep for HP ones; grep out the ones with "FWVER" mentioned (firmware already loaded); e.g.: /usr/libexec/cups/backend/usb direct usb://HP/LaserJet%201018 "HP LaserJet 1018" "HP LaserJet 1018" "MFG:Hewlett-Packard;MDL:HP LaserJet 1018;CMD:ACL;CLS:PRINTER;DES:HP LaserJet 1018;FWVER:20051028;" "" Then running again with suitable environment and options uploads the firmware: DEVICE_URI="usb://HP/LaserJet%201018" /usr/libexec/cups/backend/usb 1 1 1 1 '' $FW /lib64/udev/rules.d/70-printers.rules : ACTION!="add", GOTO="usb_printer_rules_end" SUBSYSTEM=="usb_device", GOTO="usb_printer_rules_begin" SUBSYSTEM!="usb_device", GOTO="usb_printer_rules_end" LABEL="usb_printer_rules_begin" # Hewlett-Packard LaserJet 1018 ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="4117", MODE="0664", GROUP="lp", RUN+="/etc/hotplug/usb/hplj1018" LABEL="usb_printer_rules_end" (and chattr +i that file to stop udev-configure-printer from killing it and putting its own stuff in there to interfere!)