Osamu Sayama's Weblog

日曜日 12 24, 2006

Printing with BrandZ (3) - Epson USB printer

Epson の Inkjet でも同じようにできるるのでないかと思って Epson の PM-A820 で試してみました。基本的に Canon の USB inkjet プリンタと同じやり方でできましたが (nevada b55)、違いのみざっと書いておきますと、

  • Epson のドライバは Epson avasys からもってきます。最新機種だとどの機種でも pipslite-cups-1.0.0-1.i386.rpm になるようです。libxml はとくに不要なのでこれのみインストールします。
  • pipslite では ppd ファイルは入ってなくてプリンタを接続した時点で作成する linux 用のツールが入っています。すぐに USB 接続できる Linux マシンがなかったので KNOPPIX で起動する方法でつくり、/usr/share/cups/model にできた ekpma820.ppd を BrandZ にコピーして使いました (コピー後は cupsd を再起動) 。
  • Avasys のドキュメントには ekplp:/var/ekpd/ekplp0 をデバイス指定するようになってますが、Solaris 側の lpd に戻すので Canon と同様に lpd://global/canon_usb など global zone で作ったスプールを指定します
  • デフォルトの用紙サイズなどを cups の configuration で確認しておく

他は Canon USB printer と同様でいいかと思います。作成後はそのまま PS ファイルを投げれば印刷できます。うまく印刷できないときのデバッグは /dev/printers/0 をファイルに置き換えてここにプリンターコードがたまるか確認する、Linux 側の cups の status を確認してみる、ここから直接 ps を投げてみる、global zone から brandZ へ telnet <brandz> 515 でつながるか、またその逆はどうか、などやってみるといいかもしれません...


水曜日 12 20, 2006

Printing with BrandZ (2) - Canon USB printer

Printing with BrandZ のつづきです。USB プリンタを使う場合は

Solaris remote printer -> BrandZ Linux Printer -> Solaris USB local printer

と設定します。BrandZ の設定が済んでいると仮定してこの図の右側から設定していきます。なお、6502814 のバグがあるので、nevada_b54 だと動きませんので、nevada_b54 以外で使ってためしてみてください。いちおう nevada_b54 + b55 の lpsched で確認しました。

1. Solaris USB local printer の設定

ここでは BrandZ Linux Printer ですでに Canon の native プリンタコードに変換されたものを単に Solaris 側のプリンタポートに投げるだけなので、filtering は不要な USB printer を設定します。Solaris の global zone で

# lpadmin -p canon_usb -v /dev/printers/0 -I any -i /usr/lib/lp/model/standard  -o "stty=-opost" -o banner=never
# /usr/sbin/accept canon_usb
# /usr/bin/enable canon_usb

で設定します(USB プリンタは接続しておく)。canon_usb はプリンタ名です。さらに localhost 以外の host から lpd access できるように設定しておきます。

# inetadm -m svc:/application/print/rfc1179:default bind_addr=""
# svcadm refresh svc:/application/print/rfc1179:default

*) nv_77 でやってみたら inetadm はエラーになってしまった。どうも rfc1179 を有効にするだけで remote からも接続できるようなので svcs -a |grep rfc1179 で disable だったら enable にするだけでよいようだ。telnet <machine> 515 で remote から接続できれば OK

# svcadm enable svc:/application/print/rfc1179:default

2. BrandZ Linux Printer

あとは、ネットワークプリンタ同様に Canon のサイト からパッケージをもってきます。

brandz# rpm -Uvh libxml-1.8.17-9.2.i386.rpm bjfilter-common-2.50-2.i386.rpm bjfilter-pixusip4100-2.50-2.i386.rpm
brandz# /etc/init.d/cups start
brandz# chkconfig cups-lpd on  <- global zone から lpd でアクセスできるように

さ らに /etc/rc2.d, rc3.d の lx_S55cups を S55cups に remoae しておきます。あとは global zone から ssh の X fowarding などを使って mozilla を起動し cups で Canon プリンタを構成します。

% ssh -X brandz /usr/bin/mozilla http://localhost:631/

Printer name: canon_back
URI: lpd://global/canon_usb

この例ではプリンタ名は canon_back,  global は global zone のホスト名、canon_usb は 1) で設定したスプールです。ネットワークプリンタの場合は socket などで直接プリンタに投げましたが、今回は lpd で global zone の Solaris に投げます。

3. Solaris remote printer

最後に Solaris の global zone 側でリモートプリンタを設定します。 

# lpadmin -p canon -s brandz\!canon_back
# lpadmin -d canon

以上で Solaris から普通に lp コマンドから印刷できるようになります。

% lp t.ps

Solaris 側でのスプールのみで filter として使うのはまたそのうちトライしてみます...


Printing with BrandZ and Canon Linux narve driver

Canon や Epson といったプリンタメーカーのプリンタドライバも最近は Linux 用がだいぶ増えてきましたが、インクジェットの場合はたいていインクの配合にかかわる部分はバイナリのみの提供になっています。cups + foomatic や Solaris RIP + foomatic の構成で印刷することもできますが、汎用のドライバであるため精度が悪かったり遅かったりします。CentOS の cups/ghostscript ともに問題なさそうなので、家で Canon の iP4100R というネットワーク接続の Inkjet プリンタを使っているし BrandZ と CentOS に Canon サイトの Linux driver をインストールして CentOS をプリンタサーバとして試してみました。

# rpm -q cups
cups-1.1.17-13.3.37
# rpm -q ghostscript
ghostscript-7.05-32.1.10
# gs -h|grep ppmraw
pbm pbmraw pgm pgmraw pgnm pgnmraw pnm pnmraw ppm ppmraw pkm pkmraw pksm

1. BrandZ Install

まずは BrandZ のインストール。これは  BrandZ Install に従ってインストールするとすんなりいきます。要約すると
zonepath=/export/zone/brandz, ipaddress=192.168.180.121, physical=iprb0 の場合は、

create -t SUNWlx
set zonepath=/export/zone/brandz
set autoboot=true
add net
set address=192.168.180.121
set physical=iprb0
end

という中身のファイル (ex, brandZ) を作成し、zone 名が brandz なら

# zonecfg -z brandz -f brandZ
# zoneadm -z brandz install -d <where>/centos_fs_image.tar.bz2

で作成できます。centos_fs_image.tar.bz2 はここからもってこれます。あとは zlogin brandz で login して、 /etc/sysconfig/network に

NETWORKING="yes"
HOSTNAME="brandz"

を書いておきます (この例では host 名 brandz)。あとは global zone で使っているのと同じアカウントを作ります。 さらに home の automount などを設定して、global zone と共有してたり、ssh の設定もしておくと便利になります。

2. プリンタの設定 

Canon のサイト からパッケージをもってきます。共通パッケージの bjfilter-common-2.50-2.i386.rpm、 PIXUS iP4100用の bjfilter-pixusip4100-2.50-2.i386.rpm ならびにドキュメントをダウンロードします。さらに libxml-1.8.17-*.i386.rpm も必要なのでこれも準備しておきます。次にこれらをインストールし、cupsd を起動します。

brandz# rpm -Uvh libxml-1.8.17-9.2.i386.rpm bjfilter-common-2.50-2.i386.rpm bjfilter-pixusip4100-2.50-2.i386.rpm
brandz# /etc/init.d/cups start
brandz# chkconfig cups-lpd on  <- global zone から lpd でアクセスできるように

さらに /etc/rc2.d, rc3.d の lx_S55cups を S55cups に rename しておきます。あとは global zone から ssh の X fowarding などを使って mozilla を起動し cups で Canon プリンタを構成します。

% ssh -X brandz /usr/bin/mozilla http://localhost:631/

Printer name: canon
URI: socket://<printer IP>:9100

この例では printer name canon で登録しました。最後に Solaris の global zone 側でリモートプリンタを設定します。 

# lpadmin -p canon -s brandz\!canon
# lpadmin -d canon

以上で Solaris から普通に lp コマンドから印刷できるようになります。

% lp t.ps
% ssh -X brandz env LC_ALL=C /usr/local/bin/bjcups -P canon t.ps

bjcups も ssh 経由などで起動できます。今回はネットワークプリンタで問題ないのですが、USB プリンタとなると brandZ 側で見えないようなので spool 結果をさらに Solaris 側に戻すか、Solaris 側で直接フィルタを叩いて Solaris 側のみで処理するかのどちらかが必要になります。


Calendar

Feeds

Search

Links

Navigation

Referrers