打印机无法向CUPS报告问题

Kyl*_*zin 5 cups zebra-printers ubuntu-16.04

CUPS有3个字段用于问题报告,

  1. printer-state(枚举):空闲,处理或停止.
  2. printer-state-message:纯文本人类可读的解释.
  3. printer-state-reasons:列出的打印机状态描述,如RFC8011第 152页所述,这是真正的问题报告发生的地方.它有一个逗号分隔的关键字列表,用于描述打印机的状态,例如."需要媒体"或"碳粉不足"

当使用Zebra EPL2标签打印机驱动程序在Ubuntu 16.04上测试Zebra LP 2844(以及mac,但现在让我们保持这个简单)时,我得到以下结果.

----Printer out of paper----
Status Enum: processing
Status Message: printer-state-message: 1 textWithoutLanguage {Waiting for 
printer to become available.}
Status Reason: printer-state-reasons: 1 keyword {none}

----Printer rejecting jobs----
Status Enum: idle
Status Message: printer-state-message: 1 textWithoutLanguage {Rejecting Jobs}
Status Reason: printer-state-reasons: 1 keyword {none}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,"打印机缺纸"问题以及阻止打印机打印的大多数问题都解决为"处理"问题,并且从未向我提供更多信息.你可以弄清楚打印机已经"处理"了多长时间并推断出是否存在问题,但除了那些笨拙之外,问题的原因仍然未知.

同时,'打印机拒绝作业'状态绝对没有告诉我(记住,状态消息只是人类可读的纯文本,并且由于没有关于放置什么的指导原则而无法解析).除了雇用某人阅读状态消息之外,我的程序无法知道存在问题.

所有打印机都不是这种情况,例如,这是Brother HL-L2380DW的输出

----Printer out of paper----
Status Enum: processing
Status Message: printer-state-message: 1 textWithoutLanguage {Waiting for job to complete.}
Status Reason: printer-state-reasons: 2 keyword {cups-waiting-for-job-completed, media-needed-error} 
Run Code Online (Sandbox Code Playgroud)

到目前为止测试的3台打印机(HP,Brother和Zebra)中,Brother HL-L2380DW是唯一能够正确通信问题的打印机.如果你想自己测试一下,你可以运行这个粗糙的CUPS工具我在java中一起扔了https://github.com/Vzor-/cupstool更多数据有帮助!

我不知道问题出在杯子还是制造商身上.无论哪种方式,我都需要前进的方式,无论是作为修复还是我可以帮助修复的组.

编辑:似乎Zebra没有制作或维护自己的Linux驱动程序.

Kyl*_*zin 3

来自迈克尔·斯威特,

凯尔,

状态报告很复杂,但一般来说,基于驱动程序的队列的问题可能来自驱动程序未实现 STATE:消息支持(通常是因为打印机的通信通道不提供支持)或来自打印机本身不支持任何类型的状态报告。

对于 Zebra 打印机,它不支持带内状态报告,因此 CUPS 捆绑驱动程序无法以这种方式从打印机获取状态。它也不支持 SNMP 打印机 MIB 状态,因此我们甚至无法获得带外状态...:/ 遗憾的是,这些类型的打印机通常不支持状态报告,这很有趣,因为很多打印机都支持状态报告。部署在远程监控很常见的工业环境中......

实现 IPP 的打印机(通常是当今除标签打印机之外的所有打印机 - 因此 98% 以上的打印机)除了其他 IPP 属性和(在许多情况下)SNMP 打印机 MIB 属性之外,还支持 IPP 打印机状态原因关键字作为状态出色地。

因此,这似乎主要只是某些标签打印机的问题。