我的佳能LBP打印机无法在Ubuntu 14.04下运行


17

我从佳能公司下载了Linux CAPT驱动程序V2.60,并安装了两个.deb软件包,这些软件包在Ubuntu Software-Center的64位文件夹下列出。我的佳能打印机仍然无法识别。我还有什么需要做的吗?我的打印机通过USB连接。

Ubuntu将取代我的办公室,但是不幸的是,如果没有打印机支持,我仍然会依赖Windows。

在此处输入图片说明


不要责怪Ubuntu缺乏佳能对Linux的支持。
Rinzwind 2014年

@Rinzwind我认为Ubuntu将有足够的能力与佳能对话以获得更好的支持。
empedokles 2014年

不,你在那里错了。简单:佳能公司想要钱。Canonical不会付款(这违反了公司的理想)。您在Ubuntu上看到的有关佳能的所有支持都来自(!)志愿者(launchpad launchpad.net/~michael-gruz/+archive/canon-trunk上的Michael gruz )。
Rinzwind 2014年

@Rinzwind根据说明,我打开了一个终端并执行了“ sudo add-apt-repository ppa:michael-gruz / canon-trunk”和“ sudo apt-get update”。还要别的吗?
empedokles 2014年

1
PPA已过时,它不支持Ubuntu 14.04。
贝恩2014年

Answers:


14

Canon CAPT打印机驱动程序是封闭源,并且Canon为i386编译了二进制库。因此,如果您使用的是amd64,则需要首先启用multiarch并安装一些库:

# amd64 only
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386

如果还没有杯子,请安装它:

apt-get install cups

下载并解压缩Canon 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

根据您的体系结构安装32位或64位驱动程序:

  • 32位

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/32-bit_Driver/Debian/*.deb
    
  • 64位

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/64-bit_Driver/Debian/*.deb
    

现在,查找/usr/share/cups/model描述打印机的ppd文件,然后选择与您的打印机匹配(或最接近)的ppd文件:

# grep -H ModelName /usr/share/cups/model/*.ppd | less
...
/usr/share/cups/model/CNCUPSLBP6018CAPTS.ppd:*ModelName: "Canon LBP6000/LBP6018 CAPT (US)"

在这种情况下,我们选择了CNCUPSLBP6018CAPTS.ppd与型号LBP6000匹配的产品。

添加打印机:

# lpadmin -p LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687
# lpadmin -p LBP6000 -E
# ccpdadmin -p LBP6000 -o /dev/usb/lp0

并配置系统以自动启动Canon ccpd守护程序:

# update-rc.d ccpd defaults

问题

佳能打印机驱动程序存在几个问题:

  • 它是为Debian构建的,最后支持的Ubuntu版本是12.04。它确实在14.04中工作。

  • 它包括为32位i386构建的封闭源二进制库,因此不能在amd64上本机运行(即使在64位程序包中)

  • captstatusui在cnsktmodule.c中包含无限制的调用,strcpy该调用aborted *** buffer overflow detected ***在某些系统上因错误而失败

  • 佳能打印机驱动程序实际上是一个单独的守护程序,可通过本地或网络套接字与杯子进行对话-它在系统上留下了开放的网络端口,而且我怀疑佳能代码是否已经过安全性审核。

  • 打印机可以在杯子中出现两次(一次用于自动检测到的USB打印机,一次作为Canon CCPD守护程序),但是如果尝试打印到该打印机,则“ USB”打印机将无法工作。在打印机设置中,如果看到打印机配置为USB打印机,则必须手动将其禁用(右键单击,禁用)

  • 佳能使用自己专有的软件和协议与打印机进行通讯,这就是为什么它不与杯子集成在一起,无法自动检测到并且需要手动安装驱动程序的原因。可以合理地预期应该自动检测到打印机并使其正常工作,但是佳能LBP无法做到这一点。我的下一个打印机将是与开源驱动程序“兼容”的打印机,可能是支持PCL-打印机命令语言标准的网络打印机,例如Brother HL-2250DN(便宜的双面网络打印机,以前是亚马逊最畅销的激光打印机)。 ,或HP Linux推荐的与其开放源HPLIP软件一起使用的打印机

  • 源代码的构建脚本很旧,有点混乱。由于包含了封闭源i386二进制库,并且在构建脚本中缺少对多体系结构的支持,因此很难编译一个完全可用的64位发行版。解决了构建系统中的各种错误之后,就可以在32位系统上编译32位发行版。


问题:ccpd挂起

有时ccpd挂起,队列仅显示“正在处理……”

尝试手动重启:

pkill -9 -x ccpd
pkill -9 -x captmoncnabc
/etc/init.d/ccpd start
/etc/init.d/ccpd status

问题:ccdd不起作用-系统启动后仅运行一个ccpd进程

为了正常运行,系统中应运行两个ccpd进程。ccpd守护程序在派生第二个进程之前依赖于运行cups守护程序。您可以使用以下方法解决该问题:

  1. 启用cups初始化脚本(默认为update-rc.d cups)。

  2. 指示ccpd初始化脚本在cups初始化之后运行(update-rc.d ccpd默认为99),或者在/etc/rc.local脚本中添加“ sleep 10 && /etc/init.d/ccpd start”。

如果要使用UDEV规则和启动脚本,请注意UDEV规则在CUPS初始化脚本之前执行,因此重新启动ccpd初始化脚本而不是简单地启动可能很有用。例如,您可以将以下字符串放在“ /etc/rc.local”中:

睡眠10 && /etc/init.d/ccpd重新启动

(来自Ubuntu Wiki的解决方案 )


向佳能支持报告错误和问题

佳能有一个官方电子邮件地址,用于报告驱动程序中的任何错误和问题:

sup-debian@list.canon.co.jp

从源构建

如果您很想尝试从源代码进行构建和安装,请遵循以下说明(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

我将其包括在内,以作为任何愿意遵循此道路的人的笔记。大多数人不应该尝试从源头上构建它。即使在amd64系统上,生成的程序包也将包含关闭的i386库。


谢谢。我也一直在寻找能源效率。那LaserJet Pro P1102呢?topten.ch/deutsch/buro/laserdrucker/...
恩培多克勒

根据HPLIP P1102页面,该打印机在Ubuntu 14.04上完全受支持。它确实需要可下载的封闭源代码插件;他们提供hp-setup了将进行下载和配置的软件()。
贝恩2014年


1
感谢您的回答!顺便问一下,您怎么知道这libstdc++6:i386 libxml2:i386 zlib1g:i386是必需的?说明确实提到了ia32-libs,此后在更高的Ubuntu版本中都没有,因此我想知道替换的是什么。
syockit 2014年

1
@syockit如果运行file canon/libcapt.so,它将佳能库标识为“ ELF 32位”,因此我们知道它需要32位动态库。像这样运行ldd- ldd canon/libcapt.so链接器将打印所有必需的动态库,并显示未找到的动态库。然后,您可以使用apt-file search libpthread.so查找包库英寸
贝恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.