0. 前置き
最近、うちのプリンタ(Canon BJ S500、2001年発売。2008年頃ヘッドを交換した)の調子が悪かった。LEDで「サービスが必要なエラー」だと訴えかけてきて、バキバキと異音を発していたのだ。結局、分解して歯車を手で回したりしたら生き返ったのだが、治るまでの間に、後継機種がFreeBSDで使えるかを検討したので、その記録をここに公開する。
注意!!!実機では試していないので、本当に印刷できるかは確認していません!!!
1. 機種の選定
うちのプリンタは、出かけるときに地図を印刷する。
論文等をちょっと印刷する。
航空券などのeチケットを印刷する。
ような感じで、使っている。BJ S500で何も不満はない。
また、手元のFreeBSDビギナーズバイブル(改訂第2版、2005/09)[1]に記載されている非ポストスクリプトプリンタは、CanonのPIXUS 2機種である(なお、PIXUSは、Wonder BJシリーズの後継である)。これらの理由から、CanonのPIXUSを第1候補に考えた。
次に、Canonの「PIXUS選べるガイド」ページに行く。http://cweb.canon.jp/pixus/special/room/index.html?id=pix1 (公式サイトのPIXUSのトップhttp://cweb.canon.jp/pixus/からタイミング良くクリックするべし。)
「くらべてわかる早見表」から、iP2700で十分と思った。
価格.comを見ると、3000円代であり、これにしようと考えた。
[1] 後藤大地著、FreeBSDビギナーズバイブル、ISBN978-4839918941、http://www.amazon.co.jp/FreeBSDビギナーズバイブル-MYCOM-UNIX-Books-後藤/dp/4839918945
2. CUPS
FreeBSDでの印刷は、「CUPSプリンタドライバを使い、CUPSで印刷する方法」「LPD用のフィルタを使い、LPDで印刷する方法」の2つに大別される。今のBJ S500はquantumの記録:FreeBSDからCanon BJ S500で印刷できた で書いたようにLPDで使っている。
前述したような用途で使っているので、pdfをatril経由で印刷するか、firefoxからpdfに保存して、atril経由で印刷することがほとんどである。したがって、CUPSはいらなくて、LPDで動けば十分である。(なお、ヘッドの位置合わせやスリープ設定等は、windows機でやればいいと割りきっている。)
一方、CUPSは色々できるが、構成が大きくて、動作させるまでもっていくのが大変そうである。(そもそもLinux用ドライバをFreeBSDで動かすのだ、困難は少ない方がいい。)
これらの理由から、iP2700のLPDでの動作確認をすることとした。
3. 予習
ビギナーズバイブルにはPIXUS iP4100が載っている。「ip4100 linux」でググって、「Canon Bubble Jet Print Filter Ver 2.50 for Linux」のダウンロードページに行く。
共通パッケージ、機種別パッケージ、LPRng追加パッケージがダウンロードできるようになっていて、それぞれ、rpmがダウンロードされる。
tar xvf *.rpm で展開すると、usrディレクトリができる。(5年前から知っているけど、tarでrpmも展開できる)
ビギナーズバイブルを見ると必要なファイルは usr/local/bin/bjfilterpixusip4100 (あえて相対パスで書いた)で、それもusrディレクトリの下にできる。これはフィルタである。
4. iP2700のドライバを試す
前提条件
マシンはFreeBSD 11.0-stable #3。Linux互換も動くように設定してある。現在BJ S500が使えていて、使えるようにしたときの記録は、quantumの記録:FreeBSDからCanon BJ S500で印刷できた に公開している。この記事の後、linux-baseをf10からc6に変更した。また、graphics/linux-f10-png10に穴が開いていて、portsで追いかけるのがしんどくなったので、必要なライブラリを確保して、パッケージをアンインストールしたあと、BJ S500のために必要最低限のライブラリだけを/compat/linux/usr/lib/に書き戻す作業もしている。(ノートに記録はあるのだが、blogでの公開はしていない。)
なお、前述のようにプリンタ本体はないので、印刷できるかまでは試していない。
4.0 ダウンロードする
「ip2700 linux」でググって、「IJ Printer Driver Ver.3.30 for Linux」のダウンロードページに行く。rpm版をダウンロードする。以下/tmp/にcnijfilter-ip2700series-3.30-1-i386-rpm.tar.gzをダウンロードしたとする。4.1 展開する
まず展開する。$ cd /tmp/
$ tar xvf cnijfilter-ip2700series-3.30-1-i386-rpm.tar.gz
その下に、install.sh、packages、resourcesがあって、packagesの下には、2つのrpmがあるので、とりあえず展開する。
$ cd cnijfilter-ip2700series-3.30-1-i386-rpm/packages
$ tar xvf cnijfilter-ip2700series-3.30-1.i386.rpm
$ tar xvf cnijfilter-common-3.30-1.i386.rpm
$ ldd usr/local/bin/* |less
4.2 動作させる
動作確認する。Linuxバイナリのライブラリパスの設定とかやや面倒だから、/compat/の下に置いてしまう。
# cp usr/local/bin/cifip2700 /compat/linux/usr/local/bin/
#!/bin/sh
/usr/local/bin/gs \
-q -r600 -dNOPROMPT -dSAFER -sPAPERSIZE=a4 -sDEVICE=ppmraw \
-sOutputFile=- - quit.ps | \
/compat/linux/usr/local/bin/cifip2700 --full --imageres 600 --lgmon
exit 0
おもむろに実行する
$ ./canon_ip2700
$ ls usr/lib/*
$ cd usr/lib
$ for i in *.so do ln -s $i ${i%%.so.*}.so
# cd ../../
# cp usr/lib/*.so* /compat/linux/usr/local/bin/
再挑戦する。
$ ./canon_ip2700
$ ls -ld /usr/ports/*/*png*
$ pkg info -xI linux_base
# cd /usr/ports/
# portupgrade -N graphics/linux-c6-png
再挑戦する。
$ ./canon_ip2700
再挑戦する。
<?xml version="1.0" encoding="utf-8" ?> (snip) </cmd>□□BJLSTART
ControlMode=Common
SetTime=2016 (snip)
BJLEND□
□