1. 项目概述
作为一名长期使用Linux系统的技术爱好者,我最近遇到了一个经典问题:如何在Linux Mint 19.2 XFCE系统上驱动Canon LBP2900+打印机。这款经典激光打印机虽然性能稳定,但在Linux下的驱动支持却是个老大难问题。经过多次尝试和调试,我终于找到了一套可靠的解决方案,现在将完整过程分享给大家。
LBP2900+是佳能2007年推出的经典激光打印机,虽然官方提供了Windows驱动,但Linux支持一直是个痛点。在Linux Mint这样的现代发行版上,我们需要通过Canon的CAPT(Canon Advanced Printing Technology)驱动包来实现完整功能支持。这个过程涉及到驱动安装、设备识别、服务配置等多个技术环节,每个步骤都有需要注意的细节。
2. 准备工作与环境检查
2.1 系统环境确认
在开始安装前,首先要确认系统环境是否符合要求。我使用的是Linux Mint 19.2 XFCE 64位版本,基于Ubuntu 18.04 LTS。你可以通过以下命令查看系统信息:
bash复制lsb_release -a
uname -m
输出应该显示类似这样的信息:
code复制No LSB modules are available.
Distributor ID: LinuxMint
Description: Linux Mint 19.2 Tina
Release: 19.2
Codename: tina
x86_64
2.2 依赖包安装
CAPT驱动需要一些基础依赖包,建议在安装驱动前先确保这些包已安装:
bash复制sudo apt update
sudo apt install -y libglade2-0 libpng12-0 libtiff5 libxml2
特别要注意的是,现代Linux发行版可能不再包含libpng12-0这个较旧的库,我们需要手动添加Ubuntu 16.04的源来获取:
bash复制echo "deb http://security.ubuntu.com/ubuntu xenial-security main" | sudo tee /etc/apt/sources.list.d/xenial-security.list
sudo apt update
sudo apt install -y libpng12-0
安装完成后,可以安全地移除这个临时源:
bash复制sudo rm /etc/apt/sources.list.d/xenial-security.list
sudo apt update
3. 驱动安装与配置
3.1 获取CAPT驱动包
Canon官方为LBP系列打印机提供了Linux驱动,但需要从亚洲区网站下载。我使用的是cndrvcups-capt_2.71-1_amd64.deb和cndrvcups-common_3.21-1_amd64.deb这两个包。你可以通过以下命令下载:
bash复制wget https://gdlp01.c-wss.com/gds/7/0100006587/01/cnrdrvcups-capt_2.71-1_amd64.deb
wget https://gdlp01.c-wss.com/gds/7/0100006587/01/cnrdrvcups-common_3.21-1_amd64.deb
注意:下载链接可能会变更,建议访问Canon支持网站获取最新链接。
3.2 安装驱动包
下载完成后,按顺序安装这两个包:
bash复制sudo dpkg -i cnrdrvcups-common_3.21-1_amd64.deb
sudo dpkg -i cnrdrvcups-capt_2.71-1_amd64.deb
安装过程中可能会报依赖错误,这时可以运行:
bash复制sudo apt --fix-broken install
这个命令会自动解决缺失的依赖关系。
3.3 打印机设备识别
安装完成后,我们需要确认系统是否正确识别了打印机。首先连接打印机USB线,然后运行:
bash复制lsusb
你应该能看到类似这样的输出:
code复制Bus 001 Device 004: ID 04a9:2714 Canon, Inc. LBP2900
这表示系统已经识别到了打印机设备。接下来,我们需要确定设备节点:
bash复制lpinfo -v
这个命令会列出所有可用的打印设备。对于USB打印机,通常会显示类似这样的信息:
code复制direct usb://Canon/LBP2900?serial=0000A1B2C3D4
记下这个URI,稍后配置时会用到。
4. 打印队列配置
4.1 创建打印队列
虽然驱动安装后系统可能会自动创建一个打印机实例,但为了确保最佳兼容性,我建议手动创建打印队列:
bash复制sudo /usr/sbin/lpadmin -p LBP2900 -m CNCUPSLBP3000CAPTK.ppd -v ccp://localhost:59787 -E
这里有几个关键参数需要注意:
-p LBP2900:指定打印机名称-m CNCUPSLBP3000CAPTK.ppd:使用LBP3000的PPD文件(驱动包中已包含)-v ccp://localhost:59787:指定CAPT协议通信端口-E:启用打印机
4.2 设备绑定
接下来,我们需要将打印队列与实际USB设备绑定:
bash复制sudo ccpdadmin -p LBP2900 -o /dev/usb/lp0
这里假设设备节点是/dev/usb/lp0,但实际情况可能会有所不同。如果遇到问题,可以尝试:
bash复制ls /dev/usb/lp*
查看实际的设备节点。在我的案例中,设备最终映射为/dev/usb/lp1。
4.3 服务启动
现在我们可以启动必要的服务:
bash复制sudo service cups restart
sudo service ccpd start
为了验证服务状态,可以运行:
bash复制sudo service ccpd status
应该能看到类似这样的输出:
code复制● ccpd.service - Canon Printer Daemon for CUPS
Loaded: loaded (/etc/init.d/ccpd; generated)
Active: active (running) since Mon 2023-05-15 10:23:45 CST; 5s ago
5. 常见问题排查
5.1 打印测试页失败
如果打印测试页没有反应,首先检查ccpd服务状态:
bash复制captstatusui -P LBP2900
这个GUI工具会显示打印机状态。如果显示"Ready to print",但实际无法打印,可能是USB通信问题。尝试重新加载USB打印机模块:
bash复制sudo modprobe -r usblp
sudo modprobe usblp
然后重新启动ccpd服务:
bash复制sudo service ccpd restart
5.2 设备节点变化问题
有些用户可能会遇到每次重新连接USB后设备节点变化的问题。可以通过创建udev规则来解决:
bash复制sudo nano /etc/udev/rules.d/99-canon-lbp2900.rules
添加以下内容:
code复制ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="04a9", ATTR{idProduct}=="2714", MODE="0666", GROUP="lp"
保存后重新加载udev规则:
bash复制sudo udevadm control --reload-rules
sudo udevadm trigger
这样无论打印机连接到哪个USB端口,都会获得一致的权限设置。
5.3 自动启动配置
为了确保打印机在系统启动时自动可用,我们需要配置ccpd服务自动启动:
bash复制sudo systemctl enable ccpd
同时,编辑/etc/init.d/ccpd文件,确保包含正确的LSB头信息:
bash复制sudo nano /etc/init.d/ccpd
在文件开头添加:
code复制### BEGIN INIT INFO
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
保存后更新服务配置:
bash复制sudo systemctl daemon-reload
6. 高级配置与优化
6.1 双面打印支持
虽然LBP2900+硬件不支持自动双面打印,但我们可以通过CUPS配置实现手动双面打印。在打印机属性页面中,找到"Policies"选项卡,勾选"Enable duplex printing"选项。
6.2 打印质量调整
CAPT驱动提供了多种打印质量选项。要调整这些设置,可以使用以下命令打开配置界面:
bash复制sudo system-config-printer
选择LBP2900打印机,点击"Printing Options",在这里可以调整分辨率、省墨模式等参数。
6.3 日志调试
如果遇到难以解决的问题,可以启用详细日志:
bash复制sudo cupsctl --debug-logging
sudo service cups restart
日志文件位于/var/log/cups/error_log,可以通过以下命令实时查看:
bash复制tail -f /var/log/cups/error_log
7. 维护与更新
7.1 驱动更新检查
虽然CAPT驱动更新不频繁,但建议定期检查Canon官网是否有新版本。更新驱动时,建议先卸载旧版本:
bash复制sudo dpkg -r cnrdrvcups-capt cnrdrvcups-common
然后按照前面的步骤安装新版本。
7.2 系统升级注意事项
当升级Linux Mint到新版本时,可能需要重新安装打印机驱动。建议在升级前备份当前的打印机配置:
bash复制sudo tar -czvf printer-backup.tar.gz /etc/cups /etc/ccpd.conf /etc/init.d/ccpd
升级完成后,可以尝试恢复配置:
bash复制sudo tar -xzvf printer-backup.tar.gz -C /
sudo service cups restart
sudo service ccpd restart
8. 替代方案探讨
8.1 使用Gutenprint驱动
如果CAPT驱动在你的系统上无法正常工作,可以尝试Gutenprint驱动。安装方法如下:
bash复制sudo apt install printer-driver-gutenprint
然后通过system-config-printer添加打印机,选择Gutenprint提供的驱动。
不过要注意,Gutenprint可能无法支持LBP2900+的所有功能,特别是高级打印选项。
8.2 虚拟机方案
对于实在无法在原生Linux下驱动打印机的情况,可以考虑在虚拟机中运行Windows系统,通过USB直通将打印机传递给虚拟机使用。虽然这不是最优雅的解决方案,但在某些情况下可能是唯一可行的选择。
9. 性能测试与评估
经过完整配置后,我对LBP2900+在Linux下的打印性能进行了测试:
- 文本打印:10页A4文档,平均耗时约45秒
- 图文混排:5页带图片的文档,平均耗时约1分30秒
- 高分辨率图像:1页600dpi图片,耗时约2分钟
与Windows下的性能相比,Linux驱动的打印速度略慢(约慢10-15%),但质量几乎没有差别。内存占用方面,ccpd守护进程大约占用15MB内存,对系统影响很小。
10. 使用技巧与建议
在实际使用过程中,我总结了一些实用技巧:
- 定期清洁打印机:Linux下缺少官方的维护工具,建议每月至少进行一次打印机清洁
- 耗材监控:可以通过captstatusui工具查看墨粉余量
- 批量打印:对于大量文档,建议使用CUPS的打印队列功能,避免一次性发送太多任务
- 网络共享:虽然LBP2900+是USB打印机,但可以通过CUPS的网络共享功能让其他电脑使用
对于长期不使用时,建议暂停ccpd服务以节省资源:
bash复制sudo service ccpd stop
需要时再重新启动。