Tenho duas impressoras Brother: uma impressora de etiquetas QL-1050 (conectada por USB) e uma MFC-9330CDW (wifi).
Ambos funcionam bem com um laptop Ubuntu, mas eu luto para que eles imprimam no Fedora 28 (na verdade, tive o mesmo problema com o F23, mas nunca consegui corrigir o problema).
Baixei os drivers oficiais no site da Brother:
mfc9330cdwcupswrapper.i386
mfc9330cdwlpr.i386
ql1050cupswrapper.i386
ql1050lpr.i386
Também instalei os seguintes pacotes de 32 bits, pois a Brother não se preocupa em fornecer drivers de 64 bits:
glibc.i686
libgcc.i686
libstdc++.i686
nss-softokn-freebl.i686
Ambas as impressoras são detectadas corretamente pelo CUPS, mas nenhuma delas imprime, seja por meio lpr
de , evince
, eog
, firefox
... O trabalho desaparece silenciosamente da fila, mas nada é impresso e a impressora nunca reage.
Isso provavelmente ocorre porque o filtro Brother falha silenciosamente, conforme sugerido pelos logs do CUPS no nível de depuração:
$ 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.
…
(Como você provavelmente adivinhou, "Erreur de segmentation" é o francês para "falha de segmentação".)
Meu palpite é que o driver está tentando usar bibliotecas de 64 bits em vez das de 32 bits. Como faço para verificar isso e/ou o que posso fazer para forçá-lo a usar libs de 32 bits?
Edit: Aparentemente, eles usam as bibliotecas de 32 bits:
$ 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)
Devo mencionar que li este FAQ e que brother_lpdwrapper_mfc9330cdw
existe em ambos /usr/lib/cups/filter/
e /usr/lib64/cups/filter/
. O primeiro é realmente usado (de fato, consegui alterar o nível de depuração nele).
Na verdade, o problema não tem nada a ver com a arquitetura. Por "acaso" meu laptop congelou e eu me encontrei em uma "Falha ao carregar a política SELinux. Congelando". situação na inicialização, então com o SELinux desabilitado desajeitadamente a impressora funcionou.
Aparentemente , sabe-se que o SELinux impede que os drivers de impressora Brother façam seu trabalho desde o Fedora 21.
A solução é bem simples. Citando o comentário final do relatório de bug vinculado acima: