Canon CAPTプリンタを Ubuntu 10.04/amd64 で使う
CAPTプリンタをLinux@amd64で使う上での問題の詳細は以前の記事(@Ubuntu 8.04)をみてください。
amd64用パッケージ
再パッケージングしたファイルを置いておきます。うまく行ったら知らせて頂ければ幸いです。どうやら問題なさそうです。報告感謝。
このファイルをインストールしたら設定に進んでください。
最近は
Fedora用のみですが64bitドライバも配布しているようですので、こちらを流用したほうがいいかも知れません(未確認)。*1
もっともドライバが期待通り動いたところで、ccpdが起動している限り(印刷には必須)CUPSのジョブはすべてccpdに流れ込んでしまい、一度送信(印刷)したら最後、CUPSからは印刷ジョブを一切管理できない残念な仕様です。なので、Canonのプリンタは二度と買いません。
ドライバのインストール
必要なライブラリを入れます。
# apt-get install ia32-libs
CanonのサイトからLinux用ドライバを2つダウンロードします。
- cndrvcups-common_2.00-2_i386.deb
- cndrvcups-capt_2.00-2_i386.deb
この2つのファイルを強制インストールします。
# dpkg -i --force-architecture cndrvcups-common_2.00-2_i386.deb # dpkg -i --force-architecture cndrvcups-capt_2.00-2_i386.deb
これで必要な設定を行えばリモートからの印刷はできますが、Linux上からは印刷できません。
ドライバのコンパイル
Linux上から印刷するのに必要なライブラリをコンパイルします。
Canonのサイトから2つのソースファイルをダウンロードします。
- cndrvcups-common-2.00-2.tar.gz
- cndrvcups-capt-2.00-2.tar.gz
CUPSが入ってない場合はまず先にインストールします。
# apt-get install cupsys libcupsys2
コンパイル環境。
# apt-get install build-essential automake libtool libbuftool libcupsys2-dev
ファイルを解凍してコンパイルします。
# tar xvf cndrvcups-common-2.00-2.tar.gz # cd cndrvcups-common-2.00/c3plmod_ipc # make # cp libcanonc3pl.so.1.0.0 /usr/lib # cd ../../
2つめのファイル。
# tar xvf cndrvcups-capt-2.00-2.tar.gz # cd cndrvcups-capt-2.00/driver # ./autogen.sh # make # cp .libs/libcanoncapt.so.1.0.0 /usr/lib
ccpd自動起動
ccpdを起動します。
# /etc/init.d/ccpd start
ccpdは再起動時などに自動起動するように設定しましょう。
# update-rc.d ccpd start 99 2 3 4 5 .
CUPSよりも先に起動させるとジョブを送ったときにCPU負荷100%で無限ループするので注意。*2
設定
ccpd(バッファリング/スプーラーデーモン)にプリンタを登録します。接続しているプリンタの型を正しく指定して登録してください。
# lpadmin -p LBP3xx0 -m CNCUPSLBP3xx0CAPTJ.ppd -v ccp://localhost:59687 -E # ccpdadmin -p LBP3xx0 -o /dev/usb/lp0
lpadminで先にCUPSに登録しないとccpadminは動きません。
ccpadminで設定を変更したらccpdを再起動します。
# /etc/init.d/ccpd restart
なお cngplp というGUI設定ツールが付属しています。1度こいつで触ってあげるといいかも。
# cngplp
トラブったり、ccpdがCPU100%で無限ループしてるときは(topコマンドで確認)、ccpdを「kill -KILL」して再起動して、それでもだめならCUPS等のすべての登録を削除して lpadmin による登録からやり直してください。次項のudevによるプリンタ自動認識を先に止めた方がいいかも知れません。
間違の少ない手順。
- ccpdを止める
- cupsを再起動
- ccpdを動かす
- プリンタの電源を入れる
1度印刷されるようになれば、あとはうまく行くのですが。
lprコマンド
# apt-get install cmap-adobe-japan1 cmap-adobe-japan2 # apt-get install ttf-mona ttf-monapo ttf-ipafont-jisx0208 # apt-get install poppler-data
なかなかうまくいかなかったのですが、poppler-data というのがミソのようでした。
プリンタの自動認識を止める
これは別にしなくてもよいのですが、気分の問題です。
ccpd経由でしか印刷できないダメプリンタでも、Linuxは賢く自動認識してCUPS上で使える状態まで設定してくれます。とても有用ですがCanonプリンタにとってはありがた迷惑なこの機能を無効にします。
# echo -n /etc/udev/rules.d/70-printers.rules
udevによる自動認識(/lib/udev/rules.d/70-printers.rules) を抑制するため空ファイルを作ります。
しかしこのままだとCUPS再起動時にまた認識してくれるので、/etc/init.d/cups を編集します。
coldplug_usb_printers() { if false && type udevadm > /dev/null 2>&1 && [ -x /lib/udev/udev-configure-printer ]; then
(おまけ)amd64用パッケージの作り方
i386用パッケージをまず解凍します。
# dpkg -x cndrvcups-common_2.00-2_i386.deb common64 # dpkg --control cndrvcups-common_2.00-2_i386.deb common64/DEBIAN # dpkg -x cndrvcups-capt_2.00-2_i386.deb capt64 # dpkg --control cndrvcups-capt_2.00-2_i386.deb capt64/DEBIAN
次の2つのファイルをamd64コンパイル済のものへ差し替え。
- libcanonc3pl.so.1.0.0
- libcanoncapt.so.1.0.0
DEBIAN/ 以下を書き換え。
$ dpkg -b common64 cndrvcups-common_2.00-2_amd64.deb $ dpkg -b capt64 cndrvcups-capt_2.00-2_amd64.deb
update-rc.d やインストール後自動起動も設定してあります。
※パッケージ作成時のファイル所有者をrootにしておかないとインストール時に問題がおこるようでした。*3
全部コンパイルした時のメモ
# apt-get install libxml2-dev libgtk2.0-dev
cndrvcups-capt 側のallgen.shを書き換え(configure前に)。
elif [ -x /usr/bin/automake-1.6 ] ; then
./autogen.sh
else
./autogen.sh
fi
(原因究明)CUPSのテストページ印刷の文字化け
[Job 55] LANGUAGE = (unset), [Job 55] LC_ALL = (unset), [Job 55] LANG = "ja.UTF-8" [Job 55] are supported and installed on your system. [Job 55] perl: warning: Falling back to the standard locale ("C").
というdebugログがとれました。jobを送り込むときのCUPSの環境変数設定に問題があるので、/usr/lib/cups/filter/cpdftocps の最初の方に
export LANG="ja_JP.UTF8"
を追加しました。この警告は消えましたが文字化けは変わらず……。
/usr/lib/cups/filter/bannertops に問題があって、こいつが出力するPostScriptファイルの時点で文字化けしています*4。どうしょうもない上、困ってないので放置。