I had already written an article on how to install the Canon LBP2900B in Debian when SysV init was the norm but then systemd has taken over the Linux world by storm and only a handful of distro are hanging on to SysV or had moved on to Runit.
The current version of the canon capt driver is 2.71 that can be downloaded from the canon website.
before installing the canon driver we have to enable the support for 32-bit if you are the using 64-bit
Debian. The 64-bit driver needs the 32-bit driver installed for proper working otherwise it will only show printer is processing but it won't print.
Run the following commands.
[a] Enable 32-bit.
sudo dpkg --add-architecture i386
sudo apt update
[b] Install CUPS
If you hadn't installed cups already install cups and also along with other printer drivers.
sudo apt-get --no-install-recommends --no-install-suggests install cups system-config-printer system-config-printer-udev printer-driver-gutenprint foomatic-db-compressed-ppds
If cups isn't running run the command
sudo systemctl enable cups.service
[c] Install the Drivers
When installing the 32 bit driver dpkg at first will not install as there will be missing 32-bit libraries
sudo dpkg -i cndvcups-common_3.21-1_i386.deb
sudo apt install -f
sudo dpkg -i cndvcups-capt_2.71-1_i386.deb
sudo dpkg -i cndvcups-common_3.21-1_amd64.deb
sudo dpkg -i cndvcups-capt_2.71-1_amd64.deb
[d] Edit the /etc/init.d/ccpd
After installing the drivers edit the edit the /etc/init.d/ccpd file with the following info below the
#!/bin/sh
### BEGIN INIT INFO
# Provides: ccpd
# Required-Start: $local_fs $remote_fs $syslog $network $named
# Should-Start: $ALL
# Required-Stop: $syslog $remote_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start Canon Printer Daemon for CUPS
### END INIT INFO
run the following command
sudo systemctl cups restart
sudo /etc/init.d/ccpd start
IMPORTANT: systemd maps the `/etc/init.d/ccpd` script that comes with the printer driver package to the name `cppd
[e] Create a ccpd2 unit file
create a file called ccpd2.service in /etc/systemd/system with the following content
[Unit]
Description=Printer daemon for Canon printers
Requires=cups.service
After=cups.service
[Service]
ExecStart=/usr/sbin/ccpd
Type=forking
[Install]
# To run the daemon always when the system is up
#WantedBy=multi-user.target
# To run the daemon when a printer is attached
WantedBy=printer.target
Now run
sudo systemctl enable ccpd2.service
sudo systemctl restart cups.service
[f] Register the printer in the system
sudo lpadmin -p LBP2900 -m CNCUPSLBP2900CAPTK.ppd -v ccp:localhost:59687 -E
[g] Printer port definition
sudo ls /dev/usb/
[h] Registering the printer in ccpd service
sudo ccpdadmin -p LBP2900 -o /dev/usb/lp0
sudo ccpdadmin
[i] Restart Cups and ccpd service
sudo systemctl restart cups.service
sudo systemctl restart ccpd2.service
[j] setting our printer as default
sudo lpadmin -d LBP2900
Resart your computer make sure the printer the connected during boot so it can be recognized to avoid any hiccups.
To check the status run the following command
captstatusui -P LBP2900
It should show "Ready to Print" then it means you have correctly installed your printer.
If the captstatusui reports a socket error then run the following commands
sudo systemctl stop cups.service
sudo systemctl start cups.service
sudo /etc/init.d/ccpd restart
References:
[1]https://underr.space/notes/it/it-0012.html
[2]https://github.com/gkr09/Canon-CAPT
[3]https://gist.github.com/akikoskinen/98b18251ca05b152d2df3548d057ef49#file-ccpd2-service