I have Canon LBP-3010 printer, one of the models known for their bad drivers for Linux. However some folks were able to make them work. I’m trying too but still without success.
I followed the next instruction:
Downloaded and installed the last version of Canon official drivers for my model (packages cndrvcups-capt-2.60-1.x86_64.rpm
& cndrvcups-common-2.60-1.x86_64.rpm); 1. Restarted cups:
sudo /etc/init.d/cups restart
Registered the printer with lpadmin
: ```
sudo /usr/sbin/lpadmin -p LBP3010 -m CNCUPSLBP3050CAPTK.ppd -v ccp://localhost:59687 -E
(names are 100% correct)
1. Registered the printer for *ccpd*
daemon: ```
sudo /usr/sbin/ccpdadmin -p LBP1120 -o /dev/usb/lp0
(Here can be the trouble as there no usb directory inside /dev).
Replaced the content of /etc/init.d/ccpd
(see below); 1. Tried to start ccpd service:
sudo /etc/init.d/ccpd start
but get into the error:
Job for ccpd.service failed. See "systemctl statuc ccpd.service" and "journalctl -xn for details"
. Both systemctl status ccpd service & journalctl -xn report:
Failed to start SVSV: Start Canon Printer Daemon for CUPS
In /var/log/cups/error_log there are lines:
Unable to bind socket for address [v1.::1]:631 - Cannot assign requested address.
[cups driverd] Bad driver information file "/usr/share/cups/drv/sample.drv"
There was a suggestion, if lp0 is missing, then allow usblp loading with commenting line *blacklist usblp* in some file in */etc/modprobe.d* but there are no files containing such a line.
How is it possible to fix this issue?
New */etc/init.d/ccpd* content:
startup script for Canon Printer Daemon for CUPS (ccpd)
Failed to start SVSV: Start Canon Printer Daemon for CUPS
It’s not obvious to me why the ccpd daemon fails to start. I don’t own Canon hardware, but I do happen to have ‘cndrvcups-capt-2.60-1.x86_64’ and ‘cndrvcups-common-2.60-1.x86_64’ installed from way back when I last helped a user with getting a Canon printer configured. I don’t have any such issue with starting it (using openSUSE 13.1)
For reference, I have
#!/bin/sh
# startup script for Canon Printer Daemon for CUPS (ccpd)
if -f /etc/rc.d/init.d/functions ]; then
if -f /etc/slackware-version ]; then
SYS_F="SL"
else
. /etc/rc.d/init.d/functions
SYS_F="RH"
fi
elif -x /sbin/startproc ]; then
SYS_F="Su"
elif -x /sbin/start-stop-daemon ]; then
SYS_F="De"
fi
DAEMON=/usr/sbin/ccpd
LOCKFILE=/var/lock/subsys/ccpd
export PATH=$PATH:/usr/local/sbin:/usr/local/bin
ccpd_start ()
{
echo -n "Starting ${DAEMON}: "
if "$SYS_F" = "RH" ]; then
daemon ${DAEMON}
"$?" = "0" ] && touch ${LOCKFILE}
echo "."
elif "$SYS_F" = "Su" ]; then
startproc ${DAEMON}
echo "."
elif "$SYS_F" = "De" ]; then
start-stop-daemon --start --quiet --oknodo --exec ${DAEMON}
echo "."
else
`${DAEMON}`
fi
}
ccpd_stop ()
{
echo -n "Shutting down ${DAEMON}: "
if "$SYS_F" = "De" ]; then
start-stop-daemon --stop --quiet --oknodo --signal 15 --exec ${DAEMON}
echo "."
elif "$SYS_F" = "SL" ]; then
kill -KILL `pidof ${DAEMON}`
"$?" = "0" ] && rm -f ${LOCKFILE}
echo
else
killproc ${DAEMON}
"$?" = "0" ] && rm -f ${LOCKFILE}
echo
fi
}
case $1 in
start)
ccpd_start
;;
stop)
ccpd_stop
;;
status)
echo "${DAEMON}:" `pidof ${DAEMON}`
;;
restart)
ccpd_stop
ccpd_start
;;
*)
echo "Usage: ccpd {start|stop|status}"
exit 1
;;
esac
exit 0
There was a suggestion, if lp0 is missing, then allow usblp loading with commenting line blacklist usblp in some file in /etc/modprobe.d but there are no files containing such a line.
How is it possible to fix this issue?
cups starts automatically, ccpd needs manual starting. But both them became active (running) (checked via systemctl status).
I created /etc/modules-load.d/usblp.conf and /etc/systemd/system/ccpd.service according to your suggestions, rebooted and made sure that cups and ccpd were running. Then I checked printer’s settings in YaST and set the checkbox “Is turned on”. Then the button “Print testing page” became available. I tried it … and nothing happened.
/var/log/cups/error_log reports:
E [23/May/2015:19:24:22 +0300] Unable to bind socket for address [v1.::1]:631 - Cannot assign requested address.
E [23/May/2015:19:29:48 +0300] [cups-driverd] Bad driver information file "/usr/share/cups/drv/sample.drv"!
The next step is determine if /dev/usb/lp0 exists, since that is how you have it configured currently. (BTW, that configuration parameters are kept in /etc/ccpd.conf)
When you connect the printer, examine the output from
About the queue: I’ve made a mistake when posting here. In terminal command I used correct printer model (LBP3010). ccpd.conf contains exact what you’ve mentioned in your last post.
It would be useful for you to post output from commands requested. I specifically want to see what kernel output is generated when the printer is first plugged in. There should be output like the following from ‘dmesg|tail’ or journalctl -k’
[14450.290739] usblp 2-1.2:1.0: usblp0: USB Bidirectional printer dev 3 if 0 alt 1 proto 2 vid.......
[16039.588086] usb 3-1: device descriptor read/64, error -71
[16039.812056] usb 3-1: device descriptor read/64, error -71
[16040.028122] usb 3-1: new full-speed USB device number 8 using uhci_hcd
[16040.148083] usb 3-1: device descriptor read/64, error -71
[16040.372040] usb 3-1: device descriptor read/64, error -71
[16040.588063] usb 3-1: new full-speed USB device number 9 using uhci_hcd
[16040.996039] usb 3-1: device not accepting address 9, error -71
[16041.108062] usb 3-1: new full-speed USB device number 10 using uhci_hcd
[16041.516044] usb 3-1: device not accepting address 10, error -71
[16041.516103] usb usb3-port1: unable to enumerate USB device
journalctl -k outputs too much, but the onliest line, where usblp is mentioned, is
desktop kernel: usbcore: registered new interface driver usblp
[16039.588086] usb 3-1: device descriptor read/64, error -71
[16039.812056] usb 3-1: device descriptor read/64, error -71
[16040.028122] usb 3-1: new full-speed USB device number 8 using uhci_hcd
[16040.148083] usb 3-1: device descriptor read/64, error -71
[16040.372040] usb 3-1: device descriptor read/64, error -71
[16040.588063] usb 3-1: new full-speed USB device number 9 using uhci_hcd
[16040.996039] usb 3-1: device not accepting address 9, error -71
[16041.108062] usb 3-1: new full-speed USB device number 10 using uhci_hcd
[16041.516044] usb 3-1: device not accepting address 10, error -71
[16041.516103] usb usb3-port1: unable to enumerate USB device
Okay, the above indicates a problem with device recognition. I don’t know the cause, but it might depend on the number of devices concurrently plugged in. Are you connected via a passive hub perhaps? Remove all USB devices except for the printer, and also try changing ports.
OK, I unplugged all USB-devices except keyboard an printer, changed USB-port for the printer and rebooted.
When printer is turned off, dmesg|tail outputs:
8.721168] input: HDA VIA VT82xx Line Out as /devices/pci0000:00/0000:00:13.0/0000:80:01.0/sound/card0/input12
10.601676] EXT4-fs (sda6): warning: maximal mount count reached, running e2fsck is recommended
10.642642] EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: (null)
10.779268] Adding 2497532k swap on /dev/sda5. Priority:-1 extents:1 across:2497532k FS
11.435843] cfg80211: Calling CRDA to update world regulatory domain
12.080897] atl1 0000:04:00.0: Unable to enable MSI: -22
12.081010] atl1 0000:04:00.0: enp4s0 link is up 100 Mbps full duplex
12.110078] atl1 0000:04:00.0: Unable to enable MSI: -22
12.110127] atl1 0000:04:00.0: enp4s0 link is up 100 Mbps full duplex
12.162225] NET: Registered protocol family 17
But after starting ccpd and turning the printer on:
454.392039] usb 2-1: device descriptor read/64, error -71
454.620056] usb 2-1: device descriptor read/64, error -71
454.836034] usb 2-1: new full-speed USB device number 3 using uhci_hcd
454.960037] usb 2-1: device descriptor read/64, error -71
455.188077] usb 2-1: device descriptor read/64, error -71
455.404036] usb 2-1: new full-speed USB device number 4 using uhci_hcd
455.820024] usb 2-1: device not accepting address 4, error -71
455.932048] usb 2-1: new full-speed USB device number 5 using uhci_hcd
456.348064] usb 2-1: device not accepting address 5, error -71
456.348120] usb usb2-port1: unable to enumerate USB device
The output with the printer turned off doesn’t help resolve this. The full-speed interface description is worrying, since the LBP3010 has a USB 2.0 high-speed interface according the specs. So, I guess your USB hardware (host controller) is only full-speed capable? While this shouldn’t cause any issues in itself, the descriptor errors are symptomatic of a communication issue here.
Running the following might tell us more about your USB controller hardware
Something that might be worth a go. With the printer attached. Try
systemctl restart ccpd
and check if that helps with connectivity. I’ve seen references (including the page I linked to below) to using a udev rule to starting ccpd only when a Canon printer is attached.
I found a similar USB descriptor error reported here with regards to a Canon LBP7010 printer