emp*_*les 17 printing canon 14.04
我从佳能下载了 Linux CAPT 驱动程序 V2.60 并安装了两个 .deb 包,它们列在 Ubuntu 软件中心的 64 位文件夹下。我的佳能打印机仍然无法识别。还有什么我需要做的吗?我的打印机通过 USB 连接。
Ubuntu 可以很好地替代我的办公室,但不幸的是,如果没有打印机支持,我仍将依赖 Windows。

bai*_*ain 15
佳能 CAPT 打印机驱动程序是闭源的,佳能提供的二进制库是为 i386 编译的。因此,如果您使用的是 amd64,则需要先启用 multiarch 并安装一些库:
# amd64 only
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386
Run Code Online (Sandbox Code Playgroud)
如果您还没有杯子,请安装它:
apt-get install cups
Run Code Online (Sandbox Code Playgroud)
下载并解压佳能 CAPT 打印机驱动程序:
wget http://gdlp01.c-wss.com/gds/6/0100004596
tar -zxvf Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
Run Code Online (Sandbox Code Playgroud)
根据您的架构安装 32 位或 64 位驱动程序:
32 位
dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/32-bit_Driver/Debian/*.deb
Run Code Online (Sandbox Code Playgroud)
64 位
dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/64-bit_Driver/Debian/*.deb
Run Code Online (Sandbox Code Playgroud)
现在查找/usr/share/cups/model描述打印机的 ppd 文件并选择与您的打印机匹配(或最接近)的一个:
# grep -H ModelName /usr/share/cups/model/*.ppd | less
...
/usr/share/cups/model/CNCUPSLBP6018CAPTS.ppd:*ModelName: "Canon LBP6000/LBP6018 CAPT (US)"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们选择了CNCUPSLBP6018CAPTS.ppd匹配型号 LBP6000。
(注意 - 如果您找不到与您的打印机匹配的打印机,请查看 Canon tar.gz 存档中的 README-capt-*txt 文件 - 在名为“Object Printer”的部分中,它包含支持的打印机的确切列表每个 .ppd 文件)。
添加打印机:
# lpadmin -p LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687
# lpadmin -p LBP6000 -E
# ccpdadmin -p LBP6000 -o /dev/usb/lp0
Run Code Online (Sandbox Code Playgroud)
并将您的系统配置为自动启动 Canon ccpd 守护进程:
# update-rc.d ccpd defaults
Run Code Online (Sandbox Code Playgroud)
问题
佳能打印机驱动有几个问题:
它是为 Debian 构建的,最后支持的 Ubuntu 版本是 12.04。不过它在 14.04 中确实有效。
它包括为 32 位 i386 构建的闭源二进制库,因此不能在 amd64 上本地运行(即使在 64 位包中)
captstatusui 在 cnsktmodule.c 中包含一个无限制的调用,strcpy该调用aborted *** buffer overflow detected ***在某些系统上失败并出现错误
佳能打印机驱动程序实际上是一个单独的守护进程,它通过本地或网络套接字与cups 通信——它在你的系统上留下一个开放的网络端口,我怀疑佳能代码是否曾被审计过安全漏洞
打印机可以在杯子中出现两次(一次用于自动检测的 USB 打印机,一次用于佳能 CCPD 守护程序)但是如果您尝试打印到“USB”打印机将无法工作。在打印机设置中,如果看到您的打印机配置为USB打印机,则必须手动禁用它(右键单击,禁用)
佳能使用他们自己的专有软件和协议与打印机通信,这就是为什么它没有与杯子集成,不会被自动检测到,并且需要手动安装驱动程序。期望打印机应该被自动检测并正常工作是合理的,但这对于佳能 LBP 是不可能的。我的下一台打印机将是一台“仅适用于”开源驱动程序的打印机,可能是支持PCL - 打印机命令语言标准的网络打印机,例如Brother HL-2250DN(便宜的双工网络打印机,以前是亚马逊最畅销的激光打印机) ,或HP Linux 推荐的与其开源HPLIP软件配合使用的打印机。
源代码的构建脚本很旧而且有点乱。由于包含闭源 i386 二进制库,并且在构建脚本中缺乏对 multiarch 的支持,因此很难编译一个完全可用的 64 位版本。一旦您解决了构建系统中的各种错误,就可以在 32 位系统上编译 32 位版本。
问题:ccpd 挂起
有时 ccpd 挂起,队列只是说“正在处理……”
尝试手动重启:
pkill -9 -x ccpd
pkill -9 -x captmoncnabc
/etc/init.d/ccpd start
/etc/init.d/ccpd status
Run Code Online (Sandbox Code Playgroud)
问题:ccpd 不工作 - 系统启动后只有一个 ccpd 进程在运行
对于正常操作,系统中应该运行两个 ccpd 进程。ccpd 守护进程在派生第二个进程之前依赖于运行 cups 守护进程。您可以使用以下方法来解决此问题:
启用 cups init 脚本(update-rc.d cups 默认值)。
指示ccpd init脚本在cups init之后运行(update-rc.d ccpd默认为99),或者在/etc/rc.local脚本中添加“sleep 10 && /etc/init.d/ccpd start”。
如果您想使用 UDEV 规则和启动脚本,请注意 UDEV 规则在 CUPS init 脚本之前执行,因此重新启动 ccpd init 脚本而不是简单地启动可能会很有用。例如,您可以将以下字符串放在“/etc/rc.local”中:
睡眠 10 && /etc/init.d/ccpd 重启
(来自Ubuntu wiki 的解决方案 )
向佳能支持报告错误和问题
佳能有一个官方电子邮件地址,用于报告驱动程序的任何错误和问题:
sup-debian@list.canon.co.jp
Run Code Online (Sandbox Code Playgroud)
从源代码构建
如果您想尝试从源代码构建和安装,请遵循以下说明(Arch 构建脚本也可能有所帮助):
sudo apt-get install build-essential automake libtool libgtk2.0-dev libglade2-dev libcups2-dev
wget http://gdlp01.c-wss.com/gds/6/0100004596/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
tar -zxvf Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
cd Linux_CAPT_PrinterDriver_V260_uk_EN/Src/
# do cndrvcups-common
sudo apt-get install build-essential automake libtool libgtk2.0-dev libglade2-dev libcups2-dev
rm -rf cndrvcups-common-2.60-1/
tar -zxvf cndrvcups-common-2.60-1.tar.gz
cd cndrvcups-common-2.60-1/
sed -i -e 's/-lcups/-lcups -lgmodule-2.0/' cngplp/src/Makefile.am
dpkg-buildpackage -b -uc
cd ..
sudo apt-get install cups
sudo dpkg -i cndrvcups-common_2.60-1_amd64.deb
# do cndrvcups-capt
rm -rf cndrvcups-capt-2.60-1/
tar -zxvf cndrvcups-capt-2.60-1.tar.gz
cd cndrvcups-capt-2.60-1/
export echo=echo
sed -i -e 's/dh_shlibdeps/dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info/' debian/rules
sed -i -e 's/eval cmds=\"$old_archive_cmds/echo/' cngplp/ltmain.sh
sed -i -e 's:uimain.h":uimain.h"\n#include <cups/ppd.h>:' statusui/src/ppapdata.c
sed -i -e 's/cnsktmodule.la/cnsktmodule.la -lpthread/' statusui/src/Makefile.am
debian/rules configure
sed -i -e 's/RANLIB=/#RANLIB=/' cngplp/libtool
debian/rules build
fakeroot debian/rules install
fakeroot debian/rules binary-arch
cd ..
sudo dpkg -i cndrvcups-capt_2.60-1_amd64.deb
Run Code Online (Sandbox Code Playgroud)
我将其包括在内,作为对任何倾向于遵循这条道路的人的说明。大多数人不应该尝试从源代码构建它。即使在 amd64 系统上,生成的包也将包含封闭的 i386 库。
| 归档时间: |
|
| 查看次数: |
40638 次 |
| 最近记录: |