Anda bisa membuat driver i386 bekerja pada Raspberry Pi melalui emulasi, meskipun ia memiliki set instruksi yang berbeda. Ini sangat lambat dan butuh beberapa menit hingga hasil cetak tiba, tetapi berhasil.
Saya menemukan petunjuk di posting forum ini: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=15526&start=25#p708038
Langkah 1: Instal driver seperti yang diperintahkan pada dokumentasi Brother
Anda harus memiliki direktori seperti /opt/brother/Printers/dcp195c/lpd
dengan biner filter brdcp195cfilter
. Biner ini disebut oleh filterdcp195c
skrip shell tepat di sebelahnya di direktori yang sama.
Saya percaya mereka menawarkan skrip instalasi sekarang, tetapi saya melakukannya tanpa. Ada instruksi di suatu tempat yang perlu diinstal sebelumnya.
Langkah 2: Dapatkan emulasi i386 berfungsi
Ini mengikuti langkah-langkah di https://wiki.debian.org/QemuUserEmulation
Pada akhir langkah 2, Anda harus dapat menjalankan binari i386 seperti binari biasa. Di ps ax
, mereka akan menunjukkan
Instal Qemu
Instal paket qemu
, binfmt-support
dan qemu-user-static
.
Menjalankan update-binfmts --display
untuk melihat format biner mana yang didukung.
Mereka harus diaktifkan secara otomatis pada Raspbian dan Debian.
Instal pustaka dukungan x86
Di Raspbian, tambahkan baris seperti ini ke Anda /etc/apt/sources.list
:
## Debian i386
deb [arch=i386] http://http.debian.net/debian stable main contrib non-free
Repositori Debian lain juga akan dilakukan.
Repositori Raspbian tidak memiliki binari x86, jadi tambahkan [arch=armhf]
baris ke baris yang ada mulai dengan deb
. Baris dimulai dengan deb-src
bisa dijaga apa adanya.
Beri tahu Raspbian bahwa Anda menginginkan sistem multiarch dengan paket i386, dan dapatkan libc i386. Untuk update
langkah untuk bekerja, Anda harus mengimpor dan mempercayai kunci GPG Debian untuk manajemen paket.
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386
Pada titik ini, Anda harus dapat menjalankan brdcp195cfilter
biner yang disertakan dengan driver:
$ ./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 !!
Jika Anda melihat output ini, itu berhasil. Itu Error: invalid option !!
garis adalah brdcp195cfilter
mengeluh bahwa Anda harus melewati argumen.
Opsional: Hapus ld.so
pesan eror
Penggunaan raspbian /etc/ld.so.preload
untuk memuat sebelumnya libarmmem
perpustakaan ke dalam semua proses. Perpustakaan menggantikan beberapa rutinitas memori yang mahal dengan rutin yang lebih cepat yang ditulis dalam perakitan ARM, tetapi tidak sepenuhnya diperlukan untuk menjalankan Raspbian.
Aman untuk mengabaikan peringatan, tetapi juga aman untuk menghapus atau berkomentar dari garis itu /etc/ld.so.preload
. Peringatan akan muncul di log kesalahan CUPS jika tidak dinonaktifkan.
Langkah 3: Dapatkan ini berfungsi dengan CUPS
Anda harus memiliki instalasi CUPS agar tidak mengikuti instruksi dari situs web Brother.
Koneksi USB tidak stabil
Di Raspberry saya, the dmesg
log berganti-ganti dengan cepat di antara baris-baris ini di beberapa titik:
[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
Apa yang diperbaiki bagi saya adalah untuk pergi ke localhost:631
(antarmuka web CUPS) dan memodifikasi printer di bagian "Pencetak" sehingga menggunakan perangkat USB yang diakui CUPS daripada usb://dev/usb/lp0
alat.
Biarkan printer menerima data dengan kecepatan normal
brdcp195cfilter
adalah langkah dalam proses pencetakan yang menerima bitmap input besar, dan mengubahnya menjadi sesuatu yang kemudian disalurkan ke perangkat printer. Saya mengukur ukuran input ~ 90MB untuk pesan "Hello world" sederhana di bagian atas halaman.
Emulasi pada Raspberry tidak cukup cepat untuk mengimbangi memberi makan printer dengan data. Pencetakannya berhasil, tetapi saya mendengar suara tidak sehat dari motor printer sedang aktif saat menunggu data.
Untuk memperbaikinya, instal utilitas sponge
dari moreutils
paket dan edit filterdcp195c
sehingga output dari $BRCONV $BRCONV_OP
(a.k.a. brdcp195cfilter
) disalurkan melalui pipa sponge
. Seharusnya ada tiga baris dalam kasus "PostScript", "PDF" dan "*" di akhir file, berakhir dengan ... | $BRCONV $BRCONV_OP | sponge
.
Apa yang dilakukan adalah dengan melahap semua output dari proses konverter yang berjalan lama dan hanya mengirimkannya ke printer secara bersamaan ketika konverter selesai. Dengan begitu, perlu waktu lebih lama hingga pencetakan dimulai, tetapi printer menerima datanya dengan kecepatan normal.
( sponge
menyimpan data yang buffer dalam direktori sementara, jadi Anda tidak dibatasi oleh RAM Raspberry Pi)