带 CUPS 的 Debian ARM 和 Brother DCP195C

Sve*_*hus 6 linux debian cups arm raspberry-pi

我想通过 LAN 访问我的 DCP 195C 打印机(Brother)。为此,我购买了一个树莓派并在其上安装了 CUPS。CUPS 运行良好,其他一切也运行顺利。我的问题是我无法在我的pi上安装兄弟提供的驱动程序(它们仅适用于x86和x64)。我错过了在 pi 上安装驱动程序的选项吗?

Mur*_*mel 5

简而言之:您必须从 Linux 驱动程序中提取 ppd 文件

长的:

第一的

  • 转到 Brother 驱动程序网站并搜索 DCP195: http: //support.brother.com
  • 下载 Linux deb 版本的“ CUPSwrapper 打印机驱动程序(deb 包)
  • 使用压缩工具打开 deb 文件,然后沿着路径向下至“dcp195ccupswrapper-1.1.3-1.i386/opt/brother/Printers/dcp195c/cupswrapper”
  • 提取“brother_dcp195c_printer_en.ppd”文件

第二

  • https://192.168.1.2:631/admin 通过[将 ip 替换为 pi's]打开 cups 网络界面
  • 单击“添加打印机”选择“Brother DCP-195C (Brother DCP-195C)”,然后按“继续”
  • 如果需要,编辑即将出现的信息,选中“共享打印机”并按“继续”
  • 在“或提供 PPD 文件”中,浏览到提取的“brother_dcp195c_printer_en.ppd”文件并将其上传按照后续步骤操作...完成

之后,打印机可用,但出现错误:“文件“/usr/lib/cups/filter/brlpdwrapperdcp195c”不可用”因为我在我的 Ubuntu 笔记本电脑上安装了驱动程序,所以我可以简单地从我的笔记本电脑复制文件 / usr/lib/cups/filter/ 到 pi

之后,我的笔记本电脑可以找到打印机


Gün*_*ack 5

您可以通过仿真让 i386 驱动程序在 Raspberry Pi 上运行,即使它具有不同的指令集。虽然速度非常慢,需要几分钟才能打印输出,但它确实有效。

我在这个论坛帖子上找到了提示: https: //www.raspberrypi.org/forums/viewtopic.php?f =28&t=15526&start=25#p708038

步骤 1:按照 Brother 文档中的说明安装驱动程序

您应该有一个目录,例如/opt/brother/Printers/dcp195c/lpd带有过滤器二进制文件的目录brdcp195cfilterfilterdcp195c该二进制文件由同一目录中紧邻它的 shell 脚本调用。

我相信他们现在提供了安装脚本,但我没有这样做。某处有需要预安装的说明。

第 2 步:让 i386 仿真正常运行

这是按照https://wiki.debian.org/QemuUserEmulation中的步骤进行的

在步骤 2 结束时,您应该能够像常规二进制文件一样运行 i386 二进制文件。在 中ps ax,他们将展示

安装Qemu

安装软件包qemubinfmt-support并且qemu-user-static

运行update-binfmts --display以查看支持哪些二进制格式。它们应该在 Raspbian 和 Debian 上自动启用。

安装 x86 支持库

在 Raspbian 上,将如下行添加到您的/etc/apt/sources.list

## Debian i386
deb [arch=i386] http://http.debian.net/debian stable main contrib non-free
Run Code Online (Sandbox Code Playgroud)

另一个 Debian 存储库也可以。

Raspbian 存储库没有 x86 二进制文件,因此请[arch=armhf]在现有行中添加一行以deb. 以 开头的行deb-src可以保持原样。

告诉 Raspbian 你想要一个带有 i386 软件包的多架构系统,并获取 i386 libc。为了使该update步骤生效,您需要导入并信任 Debian GPG 密钥以进行包管理。

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386
Run Code Online (Sandbox Code Playgroud)

此时,您应该能够执行brdcp195cfilter驱动程序附带的二进制文件:

$ ./brdcp195cfilter 
ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libarmmem.so' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.
Error: invalid option !!
Run Code Online (Sandbox Code Playgroud)

如果您看到此输出,则说明它有效。该Error: invalid option !!线路brdcp195cfilter抱怨您应该传递参数。

可选:删除ld.so错​​误消息

Raspbian 用于/etc/ld.so.preloadlibarmmem库预加载到所有进程中。该库用 ARM 汇编语言编写的更快例程替换了一些昂贵的内存例程,但并不是运行 Raspbian 所必需的。

忽略警告是安全的,但从 中删除或注释掉该行也是安全的/etc/ld.so.preload。如果未禁用,该警告将显示在 CUPS 错误日志中。

第 3 步:使用 CUPS 进行此操作

您应该按照 Brother 网站上的说明安装 CUPS。

USB 连接不稳定

在我的 Raspberry 上,dmesg日志在某些时候在这些行之间快速交替:

[58981.586842] usblp0: removed
[59222.794260] usblp 1-1.3:1.0: usblp0: USB Bidirectional printer dev 8 if 0 alt 0 proto 2 vid 0x04F9 pid 0x0222
Run Code Online (Sandbox Code Playgroud)

对我来说解决这个问题的方法是转到localhost:631(CUPS Web 界面)并在“打印机”部分修改打印机,以便它使用 CUPS 识别的 USB 设备而不是该usb://dev/usb/lp0设备。

让打印机以正常速度接收数据

brdcp195cfilter是打印过程中的一个步骤,它接收巨大的输入位图,并将其转换为稍后通过管道传输到打印机设备的内容。我测量了页面顶部简单的“Hello world”消息的输入大小约为 90MB。

Raspberry 上的仿真速度不够快,无法跟上向打印机提供数据的速度。打印工作正常,但我听到打印机电机在等待数据时发出不健康的噪音。

要解决此问题,请spongemoreutils包中安装该实用程序并进行编辑,以便通过管道传输(aka )filterdcp195c的输出。文件末尾的“PostScript”、“PDF”和“*”情况下应该有三行,以.$BRCONV $BRCONV_OPbrdcp195cfiltersponge... | $BRCONV $BRCONV_OP | sponge

其作用是吞掉长时间运行的转换器进程的所有输出,并仅在转换器完成后一次性将其发送到打印机。这样,打印开始需要更长的时间,但打印机正在以正常速度接收数据。

sponge将缓冲的数据存储在临时目录中,因此您不受 Raspberry Pi 的 RAM 的限制)