如何使打印机 Canon Laser Shot LBP-1120 在 Elementary OS Luna (Ubuntu 12.04 TLS) - 32 位版本中工作?

如何使打印机 Canon Laser Shot LBP-1120 在 Elementary OS Luna (Ubuntu 12.04 TLS) - 32 位版本中工作?

我之前创建过这个问题+回答,但一段时间后这对我不起作用。

我正在寻找替代方案。

答案1

由于 eOS Luna 基于 Ubuntu 12.04 LTS,因此我遵循了所提供的方法这里(下面大部分只是法语的翻译)。

所以,下载2.6驱动程序这里并安装 deb 文件。

然后,运行这些命令:

sudo /usr/sbin/lpadmin -p LBP1120 -m CNCUPSLBP1120CAPTK.ppd -v ccp://localhost:59787 -E

sudo /usr/sbin/ccpdadmin -p LBP1120 -o /dev/usb/lp0

sudo 服务 ccpd 启动

sudo 服务 ccpd 状态

你应该得到数字。


如果您没有得到两个数字:

- 使用管理权限进行编辑/etc/ccpd.conf

(本例中为 gedit 文本编辑器)

sudo gedit /etc/ccpd.conf

并添加以下内容:

<Printer LBP1120>

DevicePath / dev/usb/lp0

</ Printer>

然后重新启动守护进程并检查状态:

sudo 服务 ccpd 重新启动

sudo 服务 ccpd 状态

重新启动并重试


最后设置系统,使恶魔ccpd在打开打印机时正确启动;这需要两个条件:在打印机的每次操作时启动或重新启动 ccpd,以及在启动 ccpd 时 CUPS 服务处于活动状态。

使用打印机启动或重新启动 ccpd;可以使用 udev 自动执行此操作:

使用管理权限打开或创建文件:/etc/udev/rules.d/85-canon-capt.rules

sudo gedit /etc/udev/rules.d/85-canon-capt.rules

并添加这些行:

KERNEL=="lp*", SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="04a9", RUN+="/etc/init.d/ccpd start"

KERNEL=="lp*", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/etc/init.d/ccpd stop"

通过保存文件来完成。

UDEV会自动检测这条新规则,无需重新启动。


如果您使用 BASH 脚本进行自动安装(或者您已经在启动时进行了自动化,如上面链接的我的 askubuntu 答案中所示),则 ccpd 守护进程将不会考虑上述两个条件,它只是每次使用 PC 启动。

因此有必要取消这个系统性的动作,以免干扰新的udev规则。

在终端中键入以下命令:

sudo update-rc.df 删除 ccpd


自动检测文件系统中定义的打印机/lib/udev/rules.d/70-printers.rules可能会违反您刚刚创建的 udev 规则。

使用管理权限打开文件:/lib/udev/rules.d/70-printers.rules

sudo gedit /lib/udev/rules.d/70-printers.rules

并注释所有行:

# Low-level USB device add trigger
#ACTION=="add", SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="07", ATTR{bInterfaceSubClass}=="01", TAG+="udev-configure-printer", RUN+="udev-configure-printer add %p"
# usblp device add trigger (needed when usblp is already loaded)
#ACTION=="add", KERNEL=="lp*", TAG+="udev-configure-printer", RUN+="udev-configure-printer add %p"

# Low-level USB device remove trigger
#ACTION=="remove", SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:0701*:*", RUN+="udev-configure-printer remove %p"

如果在第一次打印请求时 ccpd 守护进程在 CUPS 之前运行,它将卡住,并且不会显示任何错误消息。然后,它可能会占用 100% 的 CPU,并且可能需要通过“kill -9”或转到控制台 - ctrl-alt-f1 - 并在用户名和密码之后强制注销:来停止pkill -KILL -u *username*

如果打印机已打开并已连接,则可能会出现这种情况PC 启动(Ubuntu 启动顺序 UDEV 在 CUPS 之前启动。因此,我们刚刚创建的 UDEV 规则将在 CUPS 之前检测打印机并启动 ccpd),或者在 CUPS 更新的情况下:服务停止,然后在 ccpd 时重新启动保持活跃。

为了克服这些特定问题,除了之前创建的 UDEV 规则之外,您还需要生成 Upstart 作业。当在 USB 总线上检测到打印机时,它将重新启动 ccpd 以确保正确操作。

使用管理权限创建文件:/etc/init/ccpd-restart.conf

sudo gedit /etc/init/ccpd-restart.conf

并插入:

# ccpd-restart - Relance ccpd si l'imprimante est allumée avant le PC.
 
description    "restart daemon ccpd for Canon printer LBP-serie"

start on started cups
stop on runlevel [016]

script
    if [ -e /dev/usb/lp* ]; then
                /etc/init.d/ccpd stop
        sleep 5
        /etc/init.d/ccpd start
    fi
end script

保存并关闭。

重新启动计算机。


问题解决方案:

如果后面只有 2 个数字service ccpd status- 重新启动杯子:sudo service ccpd restart。可能是注销或者重启。

如果有 2 个数字但不会打印(打印作业在打印队列中):

  • 检查“打印”下,右键单击打印机并“查看打印队列”,选择作业,右键单击并单击“释放”(如果处于活动状态)
  • 运行captstatusui -P LBP1120并检查“恢复作业”(如果处于活动状态)
  • 通过电源按钮重新启动打印机
  • 可能会重新启动计算机 - 尝试连接打印机然后断开连接。

答案2

在下面的关联,我发现了一个有趣的问题解决方案print

这对我很有用:

lsmod | grep usblp
sudo modprobe usblp
ls -l /dev/usb/lp0
sudo /etc/init.d/ccpd restart

我希望这对其他事情有用。

相关内容