我对图形或打印机格式不是很有经验。我的第一个(也是唯一尝试)是通过Chromium浏览器打印265 x 314像素的Tux.png并查看Wireshark显示为USB传输的情况。 .598字节批量传输(注意到,因为它使用了指定的USB端点)。为此,我仅测量了有效载荷,该有效载荷分为188个8192字节的数据包和一个4982字节的左数据包。

然后,我尝试通过合并有效载荷来查看前81920个字节,并将内容读取为32位整数,看看是否包含一些重复的模式,看起来像是连续的白色或黑色像素-但这不起作用。

所以有人已经开始尝试理解数据吗?发送到打印机?

最好有一个驱动程序的开源版本,因为当前的驱动程序是Intel二进制文件,例如在Raspberry PI上不起作用。一种便宜且节省电流的打印服务器。


更新2014-03-10:忘了提到我已经找到了Brother的开源驱动程序-但它们不包含该驱动程序对于打印机,它们仅提供CUPS包装器的源。顺便提一下(应该没有区别),我拥有Brother DCP 135c。

#1 楼

我为Brother打印机创建了免费的驱动程序,可从github.com/pdewacht/brlaser获得。与Brother DCP-7030和DCP-7065DN一起使用是众所周知的。如果有人尝试过,我想听听您的反馈,了解哪些打印机可以与此驱动程序一起使用而哪些打印机不可以使用该驱动程序会很有用。

评论


谢谢,看起来很有希望。 brdecode.cc文件是否解码原始打印机数据流?

–Sven
2014年7月18日在10:21

是的,brdecode是一个独立的工具,可以解码和转储数据流中的位图。它跳过了PCL框架,但是无论如何这都没意思(每个页面都是相同的,而且大多是标准的)。

–pdw
2014年7月18日在12:27



#2 楼

CUPS的工作方式是结束执行在stdin上运行的程序(二进制驱动程序)。此二进制文件必须符合全面描述的CUPS支持的接口:http://www.cups.org/documentation.php/api-filter.html

驱动程序提供的所有其他内容仅是脚本和元数据(嗯,谁知道,但是后端程序是重要的)。例如,我碰巧有一个Brother MFC J415W; Brother Linux驱动程序安装了很多东西,但最终运行了名为/opt/brother/Printers/mfcj415w/lpd/brmfcj415wfilter的二进制文件。

因此,您可以做的一件事情而不是从Web浏览器中进行打印,而是使自己的生活更轻松,这是解决如何直接运行后端二进制文件的问题。通过在脚本中查找以了解如何使用哪些参数和环境变量来调用它,这应该是可行的。

这样,您可能可以更严格地控​​制要转换的确切数据以进行打印。您还可以制作一个自定义的后记文件,以将其插入该二进制或各种测试模式,例如全黑,全白,正方形等,以便最终可以更轻松地看到USB流中的模式。

FWIW我在驱动程序上运行了strings,其中包含以下内容:Compressed by Brother Ind.,Ltd.-因此,我怀疑您看到的是某种压缩数据流。在流上运行类似binwalk之类的内容以查看其是否能够检测到所使用的压缩机制可能会很有趣。

#3 楼

您似乎正在寻找驱动程序的源代码:http://welcome.solutions.brother.com/bsc/public_s/id/linux/en/download_src.html

评论


抱歉,我忘了提到我已经找到了它们,但是Brother仅将CUPS包装器作为开放源提供,而没有提供驱动程序本身。

–Sven
2014年10月10日在9:20

该链接已死。 :(

–查尔斯·爱德华·科斯特
19年6月2日在21:39