To make my LBP6020 (the renewed version if LBP6000 but just identical really) to work correctly i had to perform the following steps
disable usblp printer auto recognition in /lib/udev/rules.d/70-printers.rules
. my file now looks like (note 4th line):
# Low-level USB device add trigger
ACTION=="add", SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="07", ATTR{bInterfaceSubClass}=="01", TAG+="udev-configure-printer", RUN+="udev-configure-printer add %p"
# usblp device add trigger (needed when usblp is already loaded)
#ACTION=="add", KERNEL=="lp*", TAG+="udev-configure-printer", RUN+="udev-configure-printer add %p"
# Low-level USB device remove trigger
ACTION=="remove", SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:0701*:*", RUN+="udev-configure-printer remove %p"
without this step there is always an auto-discovered copy of LBP6020 which is not working, maybe there is a way to make this auto-discovered printer work, but i didn't try this
download from Canon and install Linux driver (2 deb packages from archive) - i installed 2.60
create a rule to restart ccpd when the printer is connected. i created /etc/udev/rules.d/85-canon-capt.rules
with the contents:
KERNEL=="lp[0-9]*", SUBSYSTEMS=="usb", ATTRS{serial}=="0000B1D0DLkI", ACTION=="add", SYMLINK+="canonLBP6020", RUN+="/bin/bash -c '/etc/init.d/ccpd stop && /bin/sleep 5 && /etc/init.d/ccpd start'"
be sure to change the serial number (the value of ATTRS{serial}
) to yours, which can be obtained by lsusb -d 04a9: -v | grep iSerial
. this script also creates a static symlink /dev/canonLBP6020
which is useful in case you have multiple /dev/usblp*
devices. i used this symlink in next step.
create a printer using command line
lpadmin -p LBP6020 -m CNCUPSLBP6020CAPTK.ppd -v ccp://localhost:59687 -E
sudo ccpdadmin -p LBP6020 -o /dev/canonLBP6020
restart cups
and ccpd
or restart the system.
After connecting the printer to usb each time wait 5 seconds before starting using it. This is the time that is needed to restart ccpd daemon by the rule in step 3 (note sleep 5
there, unfortunately the /etc/init.d/ccpd restart
doesn't work correctly for me, but you can try it yourself).