プリンタ(PM-900C)を使う

First Edition 2001.11.18

Linuxでもプリンタは当然使えます。しかしポストスクリプト形式のプリンタがメインで、最近のインクジェットプリンタ などは画質が良くなっているにもかかわらず、標準的な(あまり綺麗ではない)ドライバを使わざるをえませんでした。
しかし、エプソンコーワ、Canonなどからフォトクオリティー出力に対応したドライバがダウンロードできるようになり、 Linuxでも質の高い印刷が出来るようになりました。そこで、私はエプソンPM-900Cを持っているので設定を行いました。

  1. ドライバをダウンロードする(対象:2.1.5)(2001.11.18)
  2. インストールする(対象:2.1.5)(2001.11.18)
  3. パラレルポートで出力する(対象:2.1.5)(2001.11.18)
  4. USBで出力する(対象:2.1.5)(2001.11.18)
  5. /etc/printcapの書式(対象:2.1.5)(2001.11.18)
  6. コマンドラインから印刷する(対象:2.1.5)(2001.11.18)
  7. 印刷できなかったら(対象:2.1.5)(2001.11.18)

ドライバをダウンロードする

エプソンコーワからドライバをダウンロードします。
[ホーム]→[Linux]→[Photo Image Print System]→[Photo Image Print System(インクジェットプリンタ用)]にて プリンタ機種の選択、E-mailアドレスを入力し、[次へ進む]を押します。

rpmパッケージをダウンロードします。

インストールする

ルートになってインストールします。
# rpm -ivh pips900-2.1-1.i386.rpm
pips900                     ##################################################
Install Message > Described entry of pm900c in printcap.
Install Message > Backup file is /etc/printcap.bak.
Install Message > Described entry of pips900 in services.
Install Message > Backup file is /etc/services.bak.
Install Message > Start /usr/local/EPKowa/PM900C/setup to change setup.
インストーラー自動的にファイルの設定、インストールを行ってくれます。インストール直後は 双方向通信デーモンが起動していませんので、以下のようにして起動します。
# /etc/rc.d/init.d/ekpd start
コンピュータを再起動すればこの作業は必要ありません。

このあと、ルートでX-Window用環境設定ユーティリティーを起動します。
# pips900


全ての設定を確認した後、[保存]を押して下さい。これは1回だけ起動、保存すればよく、その後は 一般ユーザーそれぞれで起動、設定、保存をすることが出来ます。

パラレルポートで出力する

パラレルポート経由でプリンタを接続する場合は、コンピュータ本体と一緒にプリンタの電源を入れます。 起動したら、プリンタが認識されているかを確認します。私は以下のように出力されました。
$ dmesg |more
<省略>
parport0: PC-style at 0x378 (0x778) [SPP,ECP,ECPEPP,ECPPS2]
parport0: detected irq 7; use procfs to enable interrupt-driven operation.
parport_probe: succeeded
parport0: Printer, EPSON PM-900C
lp0: using parport0 (polling).
プリンタドライバをインストールした初期状態は、パラレルポート(lp0)に出力される設定になっていますので、 自分の環境に合わせて設定し直します。以下のファイルを編集します。

/etc/ekpdrc
PrinterName = pm900c
PrinterDevicePath = /dev/lp0←ここを編集します
DummyDevicePath = /var/ekpd/ekplp0
CommandServerPort = 35586

/etc/ekpdrcのPrinterDevicePath/dev/lp0であるのを確認して、/etc/rc.d/init.d/ekpd restartとします。

それではテスト印刷をしてみましょう。Netscape4.76から出力してみます。
[ファイル]→[印刷]を選択すると以下のダイアログが出ます。



出力先を[プリンター]、印刷コマンドを[lpr -Ppm900c]、用紙サイズを[A4]として印刷してみます。 ここで、[印刷コマンド]がポイントです。

lpr -Ppm900c

”lpr”とは印刷コマンドなのでこのままです。”-P”はプリンタを指定するオプションです。 ”pm900c”はプリンタ名です。
プリンタ名ですが、/etc/printcapで設定されています。これはドライバのインストーラが 自動的に設定してくれます。

USBで出力する

Vine 2.1.5であれば、デフォルトでUSBプリンタが使えるようになっているはずです。以下のUSBプリンタ関連 がモジュール化されている必要があります。

usb-ohci又はusb-uhci
printer

プリンタをUSB経由で使用する場合、ケーブルを本体に挿すだけで認識されるはずです。以下のようにして確認します。
$ dmesg
usb.c: USB new device connect, assigned device number 2
usb.c: USB device 2 (vend/prod 0x4b8/0x5) is not claimed by any active driver.
usb.c: registered new driver usblp
printer.c: usblp0: USB Bidirectional printer dev 2 if 0 alt 0
設定は出力ポートを変更するだけです。ルートになって以下のファイルを編集します。

/etc/ekpdrc
PrinterName = pm900c
PrinterDevicePath = /dev/usblp0←ここを編集します
DummyDevicePath = /var/ekpd/ekplp0
CommandServerPort = 35586

/etc/ekpdrcのPrinterDevicePath/dev/usblp0へ変更して、/etc/rc.d/init.d/ekpd restartとします。

それではテスト印刷をしてみましょう。Netscape4.76から出力してみます。
[ファイル]→[印刷]を選択すると以下のダイアログが出ます。



出力先を[プリンター]、印刷コマンドを[lpr -Ppm900c]、用紙サイズを[A4]として印刷してみます。 ここで、[印刷コマンド]がポイントです。

lpr -Ppm900c

”lpr”とは印刷コマンドなのでこのままです。”-P”はプリンタを指定するオプションです。 ”pm900c”はプリンタ名です。
プリンタ名ですが、/etc/printcapで設定されています。これはドライバのインストーラが 自動的に設定してくれます。

カーネル2.2では、USBでの双方向通信が出来ないので、ステータスモニタ及びユーティリティーを使用 することが出来ません。くわしくはエプソンコーワ掲示板365を参照して下さい。
2.4に入れ替えれば双方向通信が出来るようです。

/etc/printcapの書式

/etc/printcapの書式は以下のようになっています。このファイルを編集するときは、スペース、 バックスラッシュなどに十分注意しながら編集してください。ちょっと間違えただけでうまく動かなく なります。
ルートになって作業します。

/etc/printcap
# /etc/printcap
#
# Please don't edit this file directly unless you know what you are doing!
# Be warned that the control-panel printtool requires a very strict format!
# Look at the printcap(5) man page for more info.
#
# This file can be edited with the printtool in the control-panel.
# written for pips900
pm900c:\←これがプリンタ名です
:sd=/var/spool/lpd/pm900c:\
:mx#0:\
:sh:\
:lp=/var/ekpd/ekplp0:\
:if=/usr/local/EPKowa/PM900C/filter900:
# pips900 end

上記の”pm900c”以降がプリンタエントリと呼ばれます。これは自分の好きなように設定することが出来ます。 例えば、プリンタを2台持っている場合、プリンタによって設定を分けるため、以下のようにします。

/etc/printcap
# /etc/printcap
#
# Please don't edit this file directly unless you know what you are doing!
# Be warned that the control-panel printtool requires a very strict format!
# Look at the printcap(5) man page for more info.
#
# This file can be edited with the printtool in the control-panel.
##PRINTTOOL3## LOCAL mj500c 360x720 a4 {} EPSONMJ500C 8 {}
lp:\←1つ目のプリンタエントリ
:sd=/var/spool/lpd/lp:\
:mx#0:\
:sh:\
:lp=/dev/lp0:\
:if=/var/spool/lpd/lp/filter:
# written for pips900
pm900c:\←2つ目のプリンタエントリ
:sd=/var/spool/lpd/pm900c:\
:mx#0:\
:sh:\
:lp=/var/ekpd/ekplp0:\
:if=/usr/local/EPKowa/PM900C/filter900:
# pips900 end

コマンドラインから印刷する

コマンドラインからは以下のようにして印刷します。
$ lpr -Ppm900c hogehoge.ps
pipsは基本的に画像出力フィルタなのでPSファイルもしくはPNGファイルしか印刷できません。ただのテキストファイルは 印刷できないので注意が必要です。テキストファイルを印刷するときはa2psコマンドなどを使ってPSファイルに 変換してから印刷します。

印刷できなかったら

印刷できない場合はいくつか理由が考えられます。

  • スプールディレクトリがない
    印刷するデータは一端スプールディレクトリというところへ格納されます。デフォルトでは/var/spool/lpd/pm900cです。 このディレクトリがインストーラによって作成されなかった場合、印刷ができません。無い場合は以下のようにして 作成します。
    # cd /var/spool/lpd
    # mkdir pm900c
    # chmod 755 pm900c
    # chgrp lp pm900c
    
  • 入力ファイルがPSもしくはPNGではない
    pipsはPSファイルもしくはPNGファイルしか印刷できません。txtファイル、BMPファイルは一端PSもしくはPNGへ 変換してから印刷しましょう。

  • それでも印刷されない
    Vine2.1.5以前に一回この状態を経験しました。そのときは、既にprinttoolでプリンタが登録された状態で pipsをインストールしたときだと思います。詳しい状況は既に分かりません。
    そのときどうしたかというと、printtoolで設定したプリンタエントリのフィルタにpipsを指定したらうまくいきました。 そのときの/etc/printcapは以下です。

    /etc/printcap
    # /etc/printcap
    #
    # Please don't edit this file directly unless you know what you are doing!
    # Be warned that the control-panel printtool requires a very strict format!
    # Look at the printcap(5) man page for more info.
    #
    # This file can be edited with the printtool in the control-panel.

    ##PRINTTOOL3## LOCAL mj6000c 360x360 a4 {} EPSONMJ6000C 8 {}
    lp:\
    :sd=/var/spool/lpd/lp:\
    :mx#0:\
    :sh:\
    :lp=/dev/lp0:\
    :if=/usr/local/EPKowa/PM900C/filter900:←ここを変更
    # written for pips900
    pm900c:\
    :sd=/var/spool/lpd/pm900c:\
    :mx#0:\
    :sh:\
    :lp=/var/ekpd/ekplp0:\
    :if=/usr/local/EPKowa/PM900C/filter900:
    # pips900 end

    この時はpipsによるプリンタエントリが追加されており、スプールディレクトリ、出力ファイル共に間違ってはいなかった はずです。そこで、プリンタlpのフィルタを上記のように変更し、印刷の際にlpを指定したらうまくいきました。
    printtoolによるプリンタの設定は何かあるように思えます。

[HOME]
since 2001.4.22