我有两台 Brother 打印机:一台 QL-1050 标签打印机(USB 插入)和一台 MFC-9330CDW(wifi)。
两者都可以在 Ubuntu 笔记本电脑上正常工作,但我很难让它们在 Fedora 28 下打印(实际上 F23 也有同样的问题,但从未设法解决这个问题)。
我在兄弟网站上下载了官方驱动:
mfc9330cdwcupswrapper.i386
mfc9330cdwlpr.i386
ql1050cupswrapper.i386
ql1050lpr.i386
我还安装了以下 32 位软件包,因为 Brother 不费心提供 64 位驱动程序:
glibc.i686
libgcc.i686
libstdc++.i686
nss-softokn-freebl.i686
两台打印机都被 CUPS 正确检测到,但都不会打印,无论是通过lpr
, evince
, eog
, firefox
... 作业都会默默地从队列中消失,但没有打印任何内容,并且打印机从未真正做出反应。
这可能是因为 Brother 过滤器静默失败,正如调试级别的 CUPS 日志所暗示的那样:
$ journalctl -u cups
…
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] PID 17877 (/usr/lib/cups/filter/pdftops) exited with no errors.
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] /usr/lib/cups/filter/brother_lpdwrapper_mfc9330cdw : ligne 133 : 17902 Erreur de segmentation /opt/brother/Printers/mfc9330cdw/cupswrapper/brcupsconfpt1 MFC9330CDW $PPDC $LOGCLEVEL \"$CUPSOPTION\" \"mfc9330cdw\" $BRPRINTERRCFILE >> $LOGFILE
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] /opt/brother/Printers/mfc9330cdw/lpd/filtermfc9330cdw : ligne 63 : 17914 Fini eval cat $INPUT_TEMP
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] 17915 | $PSCONV $PSCONV_OP
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] 17916 Erreur de segmentation | $BRCONV $BRCONV_OP
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] PID 17878 (/usr/lib/cups/filter/brother_lpdwrapper_mfc9330cdw) exited with no errors.
…
(你可能已经猜到了,“Erreur de segmentation”是法语中“segmentation fault”的意思。)
我的猜测是驱动程序正在尝试使用 64 位库而不是 32 位库。我该如何检查,和/或我能做些什么来强制它使用 32 位库?
编辑:显然他们确实使用 32 位库:
$ ldd /opt/brother/Printers/mfc9330cdw/cupswrapper/brcupsconfpt1
linux-gate.so.1 (0xf7ed4000)
libc.so.6 => /lib/libc.so.6 (0xf7d10000)
/lib/ld-linux.so.2 (0xf7ed6000)
我不得不提一下,我已经阅读了这个常见问题解答,并且brother_lpdwrapper_mfc9330cdw
确实存在于和 . 实际上使用了前者(实际上我能够更改其中的调试级别)。/usr/lib/cups/filter/
/usr/lib64/cups/filter/
实际上这个问题与架构无关。偶然地,我的笔记本电脑死机了,我发现自己处于“无法加载 SELinux 策略。死机”。启动时的情况,然后在禁用 SELinux 的情况下笨拙地打印机工作。
显然,自 Fedora 21 以来,SELinux 就阻止了 Brother 打印机驱动程序的工作。
解决方案非常简单。 引用上面链接的错误报告的结束评论: