Drivers

如何讓 Brother 列印機驅動程序在 Fedora 上工作?

  • July 27, 2018

我有兩台 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 列印機驅動程序的工作。**

解決方案非常簡單。 引用上面連結的錯誤報告的結束評論:

有一個布爾值。

setsebool -P cups_execmem 1

引用自:https://unix.stackexchange.com/questions/457972