在我的本地家庭网络中,我有 Debian 12 stable 和 CUPS 服务器的服务器。打印机 Epson L3100 连接到该服务器。
另外,我在本地网络中有 2 个客户端设备:Android 平板电脑和装有 Debian 12 的笔记本电脑。
如果我打开打印机(通过打印机上的按钮)并重新启动我的服务器sudo reboot
- 一切正常,我的客户端设备可以使用远程打印机打印任何页面。
但是,如果我打开打印机并且不重新启动服务器,客户端设备将无法检测到打印机。
半年前,当服务器上安装Debian 11 stable时,一切都很好,不需要每次都重新启动服务器,现在重新安装操作系统到Debian 12后,情况发生了变化。
在没有重新启动服务器的情况下,我在服务器上输入了几个命令:
> lsusb | grep L3100
Bus 001 Device 010: ID 04b8:1141 Seiko Epson Corp. L3100 Series
> lpstat -s
system default destination: L3100
device for L3100: usb://EPSON/L3100%20Series?serial=xxxxxxxxxxxxxxxxxx&interface=1
> lpstat -a
L3100 accepting requests since Tue 01 Aug 2023 17:14:32
> netstat -an | grep 631
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN
tcp6 0 0 :::631 :::* LISTEN
udp 0 0 0.0.0.0:631 0.0.0.0:*
使用命令重新启动 CUPS:sudo systemctl restart cups
没有帮助。
在我的/etc/cups/cupsd.conf
文件中:
Port 631
# Restrict access to the server...
<Location />
Order allow,deny
Allow 192.168.1.*
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow 192.168.1.*
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow 192.168.1.*
</Location>
无需重新启动所有服务器,我就可以进入 cups 界面并打印测试页 - 它可以工作。
需要做什么才能在本地网络上的客户端设备上进行打印而无需重新启动服务器?
更新:
当我在 Debian 客户端计算机上使用命令avahi-browse -art | less
(感谢)时,我看到输出:eyoung100
= wlp2s0 IPv4 Printer EPSON L3100 @ Beelink-U59 Internet Printer local
hostname = [Beelink-U59.local]
address = [192.168.1.15]
port = [631]
txt = ["printer-type=0x100E" "Color=T" "mopria-certified=1.3" "URF=V1.4,CP1,W8,PQ4,OFU0,SRGB24,RS300,FN3" "TLS=1.2" "UUID=a2d2f7b8-428a-3a50-5aef-81591a3b0180" "pdl=application/pdf,application/postscript,image/jpeg,image/png,image/pwg-raster,image/urf" "product=(EPSON L3100 Series)" "priority=0" "note=" "adminurl=https://Beelink-U59.local.:631/printers/L3100" "ty=EPSON L3100 Series , Epson Inkjet Printer Driver (ESC/P-R) for Linux" "rp=printers/L3100" "qtotal=1" "txtvers=1"]
= wlp2s0 IPv4 Printer EPSON L3100 @ Beelink-U59 UNIX Printer local
hostname = [Beelink-U59.local]
address = [192.168.1.15]
port = [0]
txt = []
= wlp2s0 IPv4 Printer EPSON L3100 @ Beelink-U59 Secure Internet Printer local
hostname = [Beelink-U59.local]
address = [192.168.1.15]
port = [631]
txt = ["printer-type=0x100E" "Color=T" "mopria-certified=1.3" "URF=V1.4,CP1,W8,PQ4,OFU0,SRGB24,RS300,FN3" "TLS=1.2" "UUID=a2d2f7b8-428a-3a50-5aef-81591a3b0180" "pdl=application/pdf,application/postscript,image/jpeg,image/png,image/pwg-raster,image/urf" "product=(EPSON L3100 Series)" "priority=0" "note=" "adminurl=https://Beelink-U59.local.:631/printers/L3100" "ty=EPSON L3100 Series , Epson Inkjet Printer Driver (ESC/P-R) for Linux" "rp=printers/L3100" "qtotal=1" "txtvers=1"]
UPD-2:
最终我解决了这个问题。我在 Docker 容器中安装了 CUPSolbat-cups
system-config-printer
,并且在客户端计算机上,我在实用程序 ( )中配置了打印机sudo apt install system-config-printer
,现在一切正常,无需重新启动服务器。
用于配置打印机的 GNOME 3 GUI 很可能存在软件错误,导致打印机无法正常配置。
在服务器端,CUPS 安装的软件包版本之间很可能存在兼容性问题,从而导致错误stopped "Filter failed"
。
答案1
自动配置
在每台计算机客户端上检查是否安装了 Avahi:
sudo apt list --installed | grep avahi
如果未安装 avahi:
apt install avahi-daemon && apt install avahi-utils
我们现在要看看打印机是否确实可以通过以下方式发现:
avahi-browse -art | less
如果您看到包含端口 631 的条目,则已发现打印机。此条目与Filter Failed
消息中的条目匹配吗?
下一步
从客户端发出以下命令:lpinfo --include-schemes dnssd -v
。记下/复制设备 URL。要手动添加打印机,请阅读CUPS:命令行打印机管理。
为了更简单,您还可以使用 Web 界面重新添加或检查打印机。 RedHat Enterprise 有这个很棒的文档:第 6 章 使用 Web 界面将打印机添加到 CUPS。我将删除您之前添加的打印机,并从一个空界面开始,并使用上面输出dnssd
中的协议和设备 URL添加打印机lpadmin
。
如果您的打印机型号不支持无驱动打印,请使用驱动程序搜索页面如果需要,可以下载ppd
文件和其他软件。我输入 L3100 作为型号,找到驱动程序和 Epson Companion Software 条目。如果使用设备 URL 后问题仍然存在,请通过评论告诉我。
来源
- Debian 维基:Avahi
- CUPS:使用网络打印机- 如果上述自动发现不起作用,此链接还包含手动配置的说明。