2016年5月23日月曜日

Raspberry Piをプリントサーバにできない

年に数えるほどしか使わない私のカラーページプリンタMultiWriter 5600C
昨年末、年賀状印刷という一大イベントのため
久しぶりに立ち上げても問題なく印刷できました。
これがインクジェットだとインクノズルが目詰まり起こして印刷できないわ、
クリーニングに大量のインクを使うわ、
それでも印刷できなくて新しいプリンタを物色し始めるわ、とかなります。
こういうトラブルと無縁でいられるレーザープリンタは本当にいいですね。

さて、このMultiWriter 5600C、約3万ページしか印刷できませんが、
この分だと一生かかってもそこまで到達できそうにありません。
そもそもUSBで有線接続しなくてはならず、
使い勝手の面でノートPCとの相性が悪いのが
使用頻度の上がらない原因の1つです。
長いUSBケーブルを使っているとは言っても、
プリンタとつなぐとMacBook Proの置き場所はかなり制限されます。
印刷するとなるとそれなりの覚悟が必要なのです。

その覚悟を軽減するための方法として、プリントサーバの導入があります。
ネットワーク越しに印刷できるのでUSBケーブルから開放されます。
しかし安価なプリンタに高いプリントサーバをつけるのがバカらしく、
今まで購入することもありませんでした。

世の中安価なプリントサーバも存在はしますが、
激安なRaspberry Pi Zeroが発表されたのをきっかけに
Raspberry Piをプリントサーバにすればいいんだと思いつきました。
幸い初代が埃をかぶっています。
将来的にZeroが入手可能になればをそちらを使うことにして、
とりあえず手持ちでなんとかしてみることにしました。

まずはOSがかなり古いので更新します。
Raspbianのサイトから
[RASPBIAN JESSIE LITE]のzipファイルをダウンロードして展開し、
"2016-02-26-raspbian-jessie-lite.img"を2GB以上のSDカードに書き込みます。
UNIX系での作業なら基本的には
# dd bs=1M if=2016-02-26-raspbian-jessie-lite.img of=/dev/<SDカードのデバイスファイル>
を実行するだけですが、
詳細がINSTALLING OPERATING SYSTEM IMAGESにあるので、
間違ってHDDを消さないように注意しましょう。
Macなら以下のような感じです。
$ diskutil list
$ diskutil unmountDisk /dev/disk1
$ sudo su
# dd bs=1m if=2016-02-26-raspbian-jessie-lite.img of=/dev/rdisk1
なお、ここではSDカードは"/dev/disk1"として認識されていますが、
書き込み先には"/dev/rdisk1"を指定しています。
これはアンバッファモードで書き込むためです。

さて、書き込んだSDカードに差し替えて、
プリンタとUSBケーブルで接続し、Raspberry Piを起動します。
作り付けのログインID"pi"、パスワード"raspberry"でログインし、
以下を実行します。
$ sudo su -
# raspi-config
設定ツールが立ち上がるので、
[1 Expand Filesystem]メニューを実行し、
[5 Internationalisation]メニューの
[Option]-[I3 Change Keyboard Layout]で
順に[Sanwa Supply SKB-KG3]、[Japanese]、[Japanese]と指定、
あとはデフォルトとします。
リモートログインして設定等する方が便利なので、
[9 Advanced Options]メニューの[A4 SSH]を<Enable>にします。

リモートログインする際にIPアドレスがころころ変わると面倒なので
固定設定に変更します。
設定ファイル"/etc/dhcpcd.conf"を以下の様にします。
interface eth0
static ip_address=<Raspberry PiのIPアドレス>/24
static routers=<デフォルトゲートウェイのIPアドレス>
static domain_name_servers=<DNSサーバのIPアドレス> <必要なら2つ目のDNSサーバ>

次にCUPSの準備です。以下を実行してインストールします。
# apt-get update
# apt-get install cups
そして設定ファイル"/etc/cups/cupsd.conf"を修正します。
Listen localhost:631
の行を
Port 631
に変更します。
また、"/"と"/admin"ディレクトリに対するLocationディレクティブ
("<Location />"、"<Location /admin>")内に
Allow @Local
の行を追加します。 それから
# /etc/init.d/cups restart
# adduser pi lpadmin
を実行します。

あとはネットワークにつながるPCから設定します。
ウェブブラウザで"https://<Raspberry PiのIPアドレス>:631/"を開き、
[プリンターとクラスの追加]メニューで[プリンターの追加]をし、
"ローカルプリンター: NEC MultiWriter 5600C (NEC MultiWriter 5600C)"
を選んで[続ける]をクリックします。
[場所]は適当に設定し、[このプリンターを共有する]にチェックを入れ
[続ける]をクリックします。
[メーカー]は(Fuji Xerox)、[モデル]は[Fuji Xerox (en)]とします。

ところがこれ、
W [<日時>] CreateProfile failed: org.freedesktop.ColorManager.AlreadyExists:profile id 'NEC_MultiWriter_5600C-CMYK..' already exists
W [<日時>] CreateProfile failed: org.freedesktop.ColorManager.AlreadyExists:profile id 'NEC_MultiWriter_5600C-Gray..' already exists
W [<日時>] CreateProfile failed: org.freedesktop.ColorManager.AlreadyExists:profile id 'NEC_MultiWriter_5600C-CMYK..' already exists
のようなエラーになって全然印刷できない…orz
そもそもRaspberry Piのローカルからlprコマンドで印刷できないんです。
実はこのあともいろいろ試したのですが結局諦めました。

0 件のコメント:

コメントを投稿