web-dev-qa-db-ja.com

Debian ARMおよびCUPSを備えたBrotherDCP195C

LAN経由でDCP195Cプリンター(Brother)にアクセスしたい。この目的のために、私はRaspberry Piを購入し、それにCUPSをインストールしました。 CUPSは正常に実行され、他のすべてもスムーズに実行されます。私の問題は、兄弟が提供するドライバー(x86とx64専用)をpiにインストールできないことです。 piにドライバーをインストールするのに失敗したオプションはありますか?

6
Sven Niehus

短い:Linuxドライバーからppdファイルを抽出する必要があります

長いです:

最初

2番目

  • https://192.168.1.2:631/admin [IPをpiに置き換え]を介してcupsWebインターフェイスを開きます
  • 「プリンタの追加」をクリックします。「BrotherDCP-195C(Brother DCP-195C)」を選択し、「続行」を押します。
  • 必要に応じて今後の情報を編集し、「プリンタの共有」をチェックして「続行」を押します
  • 「またはPPDファイルを提供する」で、抽出された「brother_dcp195c_printer_en.ppd」ファイルを参照してアップロードします。次の手順に従います...完了

その後、プリンターは使用可能になりましたが、「ファイル "/ usr/lib/cups/filter/brlpdwrapperdcp195c"は使用できません」というエラーが発生しました。Ubuntuラップトップにドライバーをインストールしたため、ラップトップから/にファイルをコピーするだけで済みました。 usr/lib/cups/filter /をpiに

この後、私のラップトップはプリンターを見つけることができました

3
Murmel

命令セットが異なっていても、エミュレーションを介してi386ドライバーをRaspberryPiで動作させることができます。非常に遅く、プリントアウトが到着するまで数分かかりますが、機能します。

このフォーラムの投稿でヒントを見つけました: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=15526&start=25#p708038

ステップ1:ブラザーのドキュメントの指示に従ってドライバーをインストールします

フィルタバイナリ/opt/brother/Printers/dcp195c/lpdを含むbrdcp195cfilterなどのディレクトリが必要です。このバイナリは、同じディレクトリ内のそのすぐ隣にあるfilterdcp195cシェルスクリプトによって呼び出されます。

彼らは今インストールスクリプトを提供していると思いますが、私はそれをしませんでした。プレインストールが必要なものがどこかにあります。

ステップ2:i386エミュレーションを機能させる

これは https://wiki.debian.org/QemuUserEmulation の手順に従います。

手順2の終わりに、通常のバイナリと同じようにi386バイナリを実行できるようになります。 ps axでは、次のように表示されます

Qemuをインストールする

パッケージqemubinfmt-support、およびqemu-user-staticをインストールします。

update-binfmts --displayを実行して、サポートされているバイナリ形式を確認します。 RaspbianとDebianで自動的に有効にする必要があります。

X86サポートライブラリをインストールする

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エラーログに表示されます。

ステップ3:これをCUPSで機能させる

ブラザーのWebサイトの指示に従って、CUPSをインストールする必要があります。

フレーク状のUSB接続

私のラズベリーでは、ある時点で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に制限されません)

2
Günther Noack