Jest to czystszy sposób na instalację sterowników do drukarek firmy Brother dla systemów 32bit i 64bit (z lub bez multilib).
Poniżej przedstawiam sposób instalacji sterowników do drukarek Brother’a bez zbędnych zamknięto źródłowych programów.
Ostatecznie z aplikacji w pakietach dostarczanych przez brother potrzebny jest tylko 1 plik, br<model drukarki>filter
, gdzie <model drukarki>
jest Twoim modelem drukarki, np. mfcj6510dw.
Przygotowanie
mfcj6510dwcupswrapper-3.0.0-1.i386.deb
Potrzebny jest nam jedynie plik opt/brother/Printers/<model drukarki>/cupswrapper/brother_<model drukarki>_printer_en.ppd
(np. brother_mfcj6510dw_printer_en.ppd
).
Na początku pliku znajduje sie linijka (gdzie mfcj6510dw jest modelem Twojej drukarki):
*cupsFilter: "application/vnd.cups-postscript 0 brlpdwrappermfcj6510dw"``
Zmieniamy ją na:
*cupsFilter: "application/vnd.cups-postscript 0 /opt/brother/bin/filter_mfcj6510dw"
mfcj6510dwlpr-3.0.0-1.i386.deb
Z opt/brother/Printers/<model drukarki>
potrzebne są:
lpd/br<model drukarki>filter
=> przenosimy do/opt/brother/Printers/<model>/filter
lpd/psconvertij2
=> przenosimy do/opt/nbrother/bin/
inf/
- cały katalog z wykluczeniemsetupPrintcapij
=> przenosimy do/opt/brother/Printers/<model>/inf/
Struktura katalogów
/opt/brother ├── bin │ ├── filter │ ├── filter_mfcj6510dw -> filter │ └── psconvertij2 ├── lib │ ├── ld-linux.so.2 │ ├── libc.so.6 │ └── libm.so.6 ├── lib32 -> lib ├── opt │ └── brother -> .. └── Printers └── mfcj6510dw ├── filter └── inf ├── brmfcj6510dwfunc ├── brmfcj6510dwrc ├── ImagingArea ├── lut │ ├── BRPRI10IA.BCM │ ├── BRPRI10IB.BCM │ ├── BRPRI10IC.BCM │ ├── BRPRI10ID.BCM │ ├── BRPRI10IE.BCM │ ├── BRPRI10IF.BCM │ ├── BRPRI10IG.BCM │ ├── BRPRI10IH.BCM │ └── BRPRI10II.BCM └── paperinfij2
Instalacja
[x86] Dla systemów 64bit i 32bit [x64] Dla systemów 64bit no-multilib
kernel - enable ia32 [x64]
sudo [x64]
chroot [x64]
libs [x64]
script [x86] [x64]
kernel - ia32 [x64]
Sterownik od Brother’a jest 32bitowym plikiem wykonywalnym więc musimy właczyć w kernelu obsługę takich plików
![]() |
Executable file formats / Emulations, IA32 Emulation |
sudo [x64]
Instalacja Sudo jest wymagana do uruchamiania skryptu w chroot. Próbowałem zrobić to poprzez program z setuid lecz CUPS wymaga odpowiednich uprawnień pliku filtrów (driver)
chroot [x64]
Podane w Strukturze katalogów ścieżki lib
, lib32
i opt/brother
są wymagane do poprawnego działania drivera w chroocie
libs [x64]
By zobaczyć które biblioteki są potrzebne, na maszynie ze środowiskiem 32bitowym wykonaj komendę ldd <ścieżka do filtra>
:
glorpen@example ../brother $ ldd brmfcj6510dwfilter linux-gate.so.1 (0xf779f000) libm.so.6 => /lib32/libm.so.6 (0xf7719000) libc.so.6 => /lib32/libc.so.6 (0xf756b000) /lib/ld-linux.so.2 (0xf77a1000)
Podane pliki kopiujemy do docelowego katalogu chroot.
script [x86] [x64]
Stwórz /opt/brother/bin/filter
:
#!/bin/sh DIR="/opt/brother" PRINTER="$(echo $0 | sed -e 's/.*_//')" BRCONV="${DIR}/Printers/${PRINTER}/filter" if [[ -d /usr/lib64 && ! -d /usr/lib32 ]]; then BRCONV="/usr/bin/sudo /usr/bin/chroot --userspec=``id -u``:``id -g`` /opt/brother ${BRCONV}" fi PSCONV="${DIR}/bin/psconvertij2" FILE_RC="${DIR}/Printers/${PRINTER}/inf/br${PRINTER}rc" FILE_PAPERINF="${DIR}/Printers/${PRINTER}/inf/paperinfij2" FILE_IMAGINGAREA="${DIR}/Printers/${PRINTER}/inf/ImagingArea" cat | "${PSCONV}" "${FILE_PAPERINF}" "${FILE_RC}" "${FILE_IMAGINGAREA}" | ${BRCONV} -pi "${FILE_PAPERINF}" -rc "${FILE_RC}" exit $?
Nadaj mu uprawnienie wykonywalne
chmod a+x /opt/brother/bin/filter
Następnie tworzymy symlink’a filter_mfcj6510dw
-> filter
Przygotowany wcześniej plik PPD powinien wskazywać na stworzony przez nas filter_mfcj6510dw
.
CUPS
Podczas dodawania drukarki podajemy przygotowany wcześniej plik ppd, jeśli wszystko jest ustawione poprawnie drukarka jest gotowa do użytku.
Jeśli wydrukowane strony mają zbyt mały górny margines (są obcięte) zmień linię w /opt/brother/Printers/<model>/inf/br<model>dwrc
z PaperType=Letter
na PaperType=A4
.