以前の記事『レーザープリンター MultiWriter 5100購入』でUbuntuでの利用を試したが、ドライバが存在しないため諦めていた。
(VMWareでWindows 2000を走らせてしのいでいた)
たまたま、米国Xeroxのウエブページを見ていたところ、似たようなプリンタが見つかったので、試しにドライバを無理やりインストールしてみたら、成功。
互換性があると思われるプリンタ
Ubuntu 12.04 32bit版の場合
Ubuntu12.04にインストールしたドライバ(debパッケージ)
・Phaser 3010 / 3040 Linux Package - DEB Package
ドライバのdebパッケージを dpkg -i xerox-phaser-3010-3040_1.0-28_i386.deb
のようにインストールした後に、CUPSのWeb管理画面 http://localhost:631
にアクセスして、「管理」メニューの「プリンターの追加」からプリンタを追加するだけ。
その時に、ドライバとして強制的にXerox Phaser 3040を指定する。
テストプリントした用紙は次のようになっている。
Driver : XRP3040.PPD
Description : NEC MultiWriter 5100
Driver Version : NEC MultiWriter 5100
Make and Model : Xerox Phaser 3040 v1.0
つまり、このプリンタはXerox製で、NECやエプソンはOEMで販売してるだけということなのだろう。
海外では公開されているような情報を小出しにしたり、隠蔽したり、最近の日本のメーカーはダメやね。 グローバル市場で売れない理由は、多分そのあたりにあると思う。
Ubuntu 14.04 64bit版の場合
Xeroxは32bit版のドライバしか配布していないため、32bit版ドライバを次のように強制インストールしてみた。
$ sudo dpkg --force-all -i xerox-phaser-3010-3040_1.0-28_i386.deb
ドライバをインストール後、CUPSの管理画面でプリンタを追加し状況を観察すると、"Filter failed"
というエラーが出て停止する。
dpkgインストール時に--force-all
を付けない場合、次のような依存関係来ぶらりが無い旨を知らせていたので、それらのi386版ライブラリを強制インストールしないといけないのだろう。
$ sudo dpkg -i xerox-phaser-3010-3040_1.0-28_i386.deb Preparing to unpack xerox-phaser-3010-3040_1.0-28_i386.deb ... Unpacking xerox-phaser-3010-3040 (1.0-28) ... dpkg: 依存関係の問題により xerox-phaser-3010-3040 の設定ができません: xerox-phaser-3010-3040 は以下に依存 (depends) します: libc6 (>= 2.3.2). xerox-phaser-3010-3040 は以下に依存 (depends) します: libcups2 (>= 1.2.7) | libcupsys2 (> = 1.2.7) | libcupsys2-gnutls10 (>= 1.1.23-1). dpkg: error processing package xerox-phaser-3010-3040 (--install): 依存関係の問題 - 設定を見送ります 処理中にエラーが発生しました: xerox-phaser-3010-3040
インターネット上を検索してみると、Ubuntu 10.04まで配布されていたia32-libsというパッケージをインストールすれば何とかなるようだが、あいにく、Ubuntu 12.04以降はパッケージが削除されてしまった。
参考にしたのは、ここ → "Filter failed" printer error - Xerox Phaser 3010 on Ubuntu/Kubuntu 12.10
リポジトリに過去のパッケージ配布サイトを登録して、強制インストールしてみる。まずは、リポジトリの登録
deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
その後、コマンドラインより次のようにしてインストール。インストールされるファイルは、なんと277MBytesと特大サイズ。
$ sudo apt-get update $ sudo apt-get install ia32-libs
この処理で、プリンタはなんの問題もなく印刷できるようになった。ただ、古いライブラリ類を大量にインストールしたわけで、このパッケージが消された理由がわからない以上、システムが不安定になる可能性も...
Ubuntu 15.10 64bit版で再挑戦
無理やり過去バージョンのia32-libs
を強制インストールするのではなく、エラーメッセージを一つずつ潰していく手法を取ってみる。
まずは、Xerox社Phaser 3010 / 3040用プリンタドライバのインストールから。
$ sudo dpkg -i xerox-phaser-3010-3040_1.0-28_i386.deb 以前に未選択のパッケージ xerox-phaser-3010-3040:i386 を選択しています。 (データベースを読み込んでいます ... 現在 217273 個のファイルとディレクトリがインストールされています。) xerox-phaser-3010-3040_1.0-28_i386.deb を展開する準備をしています ... xerox-phaser-3010-3040:i386 (1.0-28) を展開しています... dpkg: 依存関係の問題により xerox-phaser-3010-3040:i386 の設定ができません: xerox-phaser-3010-3040:i386 は以下に依存 (depends) します: libc6 (>= 2.3.2). xerox-phaser-3010-3040:i386 は以下に依存 (depends) します: libcups2 (>= 1.2.7) | libcupsys2 (>= 1.2.7) | libcupsys2-gnutls10 (>= 1.1.23-1). dpkg: パッケージ xerox-phaser-3010-3040:i386 の処理中にエラーが発生しました (--install): 依存関係の問題 - 設定を見送ります 処理中にエラーが発生しました: xerox-phaser-3010-3040:i386
足りないと表示されているi386用ライブラリをインストールする
$ sudo apt-get install libc6:i386 ... 以下のパッケージが新たにインストールされます: gcc-5-base:i386 libc6:i386 libgcc1:i386 アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。 4,157 kB のアーカイブを取得する必要があります。 この操作後に追加で 9,844 kB のディスク容量が消費されます。 ... $ sudo apt-get install libcups2:i386 ... 以下のパッケージが新たにインストールされます: libavahi-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libcomerr2:i386 libcups2:i386 libdbus-1-3:i386 libffi6:i386 libgcrypt20:i386 libgmp10:i386 libgnutls-deb0-28:i386 libgpg-error0:i386 libgssapi-krb5-2:i386 libhogweed4:i386 libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 liblzma5:i386 libnettle6:i386 libp11-kit0:i386 libsystemd0:i386 libtasn1-6:i386 zlib1g:i386 アップグレード: 0 個、新規インストール: 23 個、削除: 0 個、保留: 0 個。 2,977 kB のアーカイブを取得する必要があります。 この操作後に追加で 9,281 kB のディスク容量が消費されます。 ...
その後、プリンタドライバを再インストールすると正常にインストールされる
$ sudo dpkg -i xerox-phaser-3010-3040_1.0-28_i386.deb 以前に未選択のパッケージ xerox-phaser-3010-3040:i386 を選択しています。 (データベースを読み込んでいます ... 現在 217683 個のファイルとディレクトリがインストールされています。) xerox-phaser-3010-3040_1.0-28_i386.deb を展開する準備をしています ... xerox-phaser-3010-3040:i386 (1.0-28) を展開しています... xerox-phaser-3010-3040:i386 (1.0-28) を設定しています ... [ ok ] Restarting cups (via systemctl): cups.service.
CUPSのWeb管理画面 http://localhost:631
にアクセスして、「管理」メニューの「プリンターの追加」からプリンタを追加する。追加条件は次の通り
CUPSでプリンタ追加後、テスト印刷するとエラーが出るので一つずつ潰していく。
D [30/Jan/2016:20:24:10 +0900] [Job 7] NEC_MultiWriter_5100: error while loading shared libraries: libcupsimage.so.2: cannot open shared object file: No such file or directory ... E [30/Jan/2016:20:33:27 +0900] [Job 8] /usr/lib/xrhr3acl.so: cannot open shared object file: No such file or directory E [30/Jan/2016:20:33:28 +0900] [Job 8] Unable to open raster stream - : Broken pipe ... E [30/Jan/2016:20:40:50 +0900] [Job 9] libstdc++.so.6: cannot open shared object file: No such file or directory E [30/Jan/2016:20:40:51 +0900] [Job 9] Unable to open raster stream - : Broken pipe
これらのエラーに対して、次のように対処。なお、xrhr3acl.soは同じディレクトリにあるxrhr1acl.soにシンボリックリンクを作ってやればそれで良いようだ。
$ sudo apt-get install libcupsimage2:i386 $ sudo ln -s /usr/lib/xrhr1acl.so /usr/lib/xrhr3acl.so $ sudo apt-get install libstdc++6:i386
Ubuntu 22.04 で汎用ドライバ foo2hbpl2 を使う方法
前のセクションで解説した32bitドライバ、32bitライブラリを用いる方法では、64bit Linuxに32bitライブラリを無理やりインストールしてしまっている。
今回は、Ubuntuにデフォルトでインストール済みの汎用HBPL2ドライバ(foo2hbpl2)と、プリンターメーカーから供給されているPPDファイルを用いる。
・Open Printing : Xerox Phaser 3040
XeroxからXerox Phaser 3040 Linux用ドライバをダウンロードする。rpm(32/64bit)とdeb(32bit)の2つがあるが、中身はどちらも同じ32bit版。
ダウンロードしたパッケージを解凍し、中身を比較すると、実は同一の32bitドライバ。(説明には64bitと書いてあるのに、使えないな...)
debパッケージの中身
$ 7z e xerox-phaser-3010-3040_1.0-28_i386.deb $ 7z x data.tar $ tree -sD --timefmt "%Y/%m/%d %H:%M:%S" ./usr/ usr/ ├── [ 4096 2011/10/07 14:31:11] lib │ ├── [ 4096 2011/10/07 14:31:11] cups │ │ └── [ 4096 2011/10/07 14:31:11] filter │ │ ├── [ 92801 2011/10/07 14:31:11] xrhr1ap │ │ └── [ 92801 2011/10/07 14:31:11] xrhr2ap │ └── [ 1002411 2011/10/07 14:31:11] xrhr1acl.so └── [ 4096 2011/10/07 14:31:11] share ├── [ 4096 2011/10/07 14:31:11] cups │ └── [ 4096 2011/10/07 14:31:11] Xerox │ └── [ 4096 2011/10/07 14:31:11] dlut │ └── [ 235900 2011/10/07 14:31:11] xrhr1alut.dat ├── [ 4096 2011/10/07 14:31:11] doc │ └── [ 4096 2011/10/07 14:31:12] xerox-phaser-3010-3040 │ ├── [ 184 2011/10/07 14:30:49] changelog.Debian.gz │ ├── [ 177 2011/10/07 14:31:11] changelog.gz │ └── [ 147 2011/08/23 15:03:11] copyright └── [ 4096 2011/10/07 14:31:11] ppd └── [ 4096 2011/10/07 14:31:11] Xerox ├── [ 4010 2011/10/07 14:31:11] Xerox-Phaser-3010.ppd.gz ├── [ 3343 2011/10/07 14:31:11] Xerox-Phaser-3010_fr.ppd.gz ├── [ 4009 2011/10/07 14:31:11] Xerox-Phaser-3040.ppd.gz └── [ 3342 2011/10/07 14:31:11] Xerox-Phaser-3040_fr.ppd.gz 11 directories, 11 files
rpmパッケージの中身
$ 7z e Xerox-Phaser-3010_3040-1.0-28.i586.rpm $ 7z x Xerox-Phaser-3010_3040-1.0-28.i586.cpio $ tree -sD --timefmt "%Y/%m/%d %H:%M:%S" ./usr/ usr-rpm/ ├── [ 4096 2022/05/13 23:17:45] lib │ ├── [ 4096 2022/05/13 23:17:45] cups │ │ └── [ 4096 2011/10/07 12:58:35] filter │ │ ├── [ 92801 2011/10/07 12:58:35] xrhr1ap │ │ └── [ 92801 2011/10/07 12:58:35] xrhr2ap │ └── [ 1002411 2011/10/07 12:58:35] xrhr1acl.so └── [ 4096 2022/05/13 23:17:45] share └── [ 4096 2022/05/13 23:17:45] cups ├── [ 4096 2011/10/07 12:58:35] Xerox │ └── [ 4096 2011/10/07 12:58:35] dlut │ └── [ 235900 2011/10/07 12:58:35] xrhr1alut.dat └── [ 4096 2022/05/13 23:17:45] model └── [ 4096 2011/10/07 12:58:35] Xerox ├── [ 3343 2011/10/07 12:58:35] Xerox-Phaser-3010-fr.ppd.gz ├── [ 4010 2011/10/07 12:58:35] Xerox-Phaser-3010.ppd.gz ├── [ 3342 2011/10/07 12:58:35] Xerox-Phaser-3040-fr.ppd.gz └── [ 4009 2011/10/07 12:58:35] Xerox-Phaser-3040.ppd.gz 9 directories, 8 files
Ubuntu 22.04マシンにMultiWriter PR-L5100をUSB接続すると、自動的にプリンタが認識されインストールされる。
CUPSのWeb管理画面を確認すると、
NEC MultiWriter Foomatic/npdl (recommended)
というドライバで認識されている。
MultiWriter 5100のページ記述言語は、NECのPostScript言語NBPL (NEC Printer Description Language) ではなく、単なる画像転送 HBPL (Host Based Printer Language)である。廉価版プリンタなので、PostScriptが実装されていないのだ。
デフォルトの認識は、PostScript対応のNEC製レーザープリンタを期待していて、安物のMultiWriter 5100では使えない。
そこで、Ubuntuにデフォルトでインストール済みの汎用HBPL2ドライバ(foo2hbpl2)と、プリンターメーカーから供給されているPPDファイルを用いればよいのだ。
CUPSのWebインターフェースを開いて、Xeroxのドライバを解凍して得られたPPDファイルを指定すれば、自動的に汎用HBPL2ドライバと組み合わされて認識される。
これで、次のようなドライバで認識されることになる
Xerox Phaser 3040 Foomatic/foo2hbpl2 (recommended) (en)