LAN経由でDCP195Cプリンター(Brother)にアクセスしたい。この目的のために、私はRaspberry Piを購入し、それにCUPSをインストールしました。 CUPSは正常に実行され、他のすべてもスムーズに実行されます。私の問題は、兄弟が提供するドライバー(x86とx64専用)をpiにインストールできないことです。 piにドライバーをインストールするのに失敗したオプションはありますか?
短い:Linuxドライバーからppdファイルを抽出する必要があります
長いです:
最初
2番目
https://192.168.1.2:631/admin
[IPをpiに置き換え]を介してcupsWebインターフェイスを開きますその後、プリンターは使用可能になりましたが、「ファイル "/ usr/lib/cups/filter/brlpdwrapperdcp195c"は使用できません」というエラーが発生しました。Ubuntuラップトップにドライバーをインストールしたため、ラップトップから/にファイルをコピーするだけで済みました。 usr/lib/cups/filter /をpiに
この後、私のラップトップはプリンターを見つけることができました
命令セットが異なっていても、エミュレーションを介してi386ドライバーをRaspberryPiで動作させることができます。非常に遅く、プリントアウトが到着するまで数分かかりますが、機能します。
このフォーラムの投稿でヒントを見つけました: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=15526&start=25#p708038
フィルタバイナリ/opt/brother/Printers/dcp195c/lpd
を含むbrdcp195cfilter
などのディレクトリが必要です。このバイナリは、同じディレクトリ内のそのすぐ隣にあるfilterdcp195c
シェルスクリプトによって呼び出されます。
彼らは今インストールスクリプトを提供していると思いますが、私はそれをしませんでした。プレインストールが必要なものがどこかにあります。
これは https://wiki.debian.org/QemuUserEmulation の手順に従います。
手順2の終わりに、通常のバイナリと同じようにi386バイナリを実行できるようになります。 ps ax
では、次のように表示されます
パッケージqemu
、binfmt-support
、およびqemu-user-static
をインストールします。
update-binfmts --display
を実行して、サポートされているバイナリ形式を確認します。 RaspbianとDebianで自動的に有効にする必要があります。
Raspbianで、次のような行を/etc/apt/sources.list
に追加します。
## Debian i386
deb [Arch=i386] http://http.debian.net/debian stable main contrib non-free
別のDebianリポジトリでもかまいません。
Raspbianリポジトリにはx86バイナリがないため、deb
で始まる既存の行に[Arch=armhf]
行を追加します。 deb-src
で始まる行はそのままにしておくことができます。
I386パッケージを備えたマルチアーチシステムが必要であることをRaspbianに伝え、i386libcを入手します。 update
ステップを機能させるには、パッケージ管理用のDebianGPGキーをインポートして信頼する必要があります。
Sudo dpkg --add-architecture i386
Sudo apt-get update
Sudo apt-get install libc6:i386
この時点で、ドライバーに付属のbrdcp195cfilter
バイナリーを実行できるはずです。
$ ./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 !!
この出力が表示されれば、機能しました。 Error: invalid option !!
行はbrdcp195cfilter
であり、引数を渡す必要があると文句を言っています。
ld.so
エラーメッセージを削除しますRaspbianは/etc/ld.so.preload
を使用して、libarmmem
ライブラリをすべてのプロセスにプリロードします。ライブラリは、いくつかの高価なメモリルーチンをARM Assemblyで記述されたより高速なルーチンに置き換えますが、Raspbianを実行するために厳密に必要なわけではありません。
警告を無視しても安全ですが、/etc/ld.so.preload
からその行を削除またはコメントアウトすることも安全です。無効にしない場合、警告はCUPSエラーログに表示されます。
ブラザーのWebサイトの指示に従って、CUPSをインストールする必要があります。
私のラズベリーでは、ある時点でdmesg
ログがこれらの行の間ですばやく交互に表示されていました。
[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
私にとってそれを修正したのは、localhost:631
(CUPS Webインターフェイス)に移動し、[プリンター]セクションのプリンターを変更して、usb://dev/usb/lp0
デバイスではなくCUPS認識のUSBデバイスを使用するようにすることでした。
brdcp195cfilter
は、巨大な入力ビットマップを受け取り、それを後でプリンターデバイスにパイプされるものに変換する印刷プロセスのステップです。ページ上部の単純な「Helloworld」メッセージの入力サイズを約90MBと測定しました。
Raspberryでのエミュレーションは、プリンターにデータを供給するのに十分な速さではありません。印刷はできますが、データを待っている間、プリンターのモーターが作動していると異音がします。
これを修正するには、sponge
パッケージからユーティリティmoreutils
をインストールし、filterdcp195c
を編集して、$BRCONV $BRCONV_OP
(別名brdcp195cfilter
)の出力がパイプされるようにします。 sponge
。ファイルの最後の「PostScript」、「PDF」、「*」のケースには、... | $BRCONV $BRCONV_OP | sponge
で終わる3行が必要です。
これは、長時間実行されるコンバータープロセスからのすべての出力を飲み込み、コンバーターが完了したときに一度だけプリンターに送信することです。そうすれば、印刷が開始されるまでに時間がかかりますが、プリンターは通常のペースでデータを受信しています。
(sponge
は、バッファリングするデータを一時ディレクトリに保存するため、Raspberry PiのRAMに制限されません)