Raspberry Pi 2 をプリントサーバ化しようとしたが失敗したときのメモ
Raspberry Piをホームネットワーク上のプリントサーバとして使うやり方がいろいろなところで解説されているので、試してみた。自宅のプリンタはUSBプリンタなので、いつもプリンタのある部屋に移動してUSBを接続して印刷しないといけないところが面倒だったが、Raspiberry Piとプリンタをつなげば、無線プリンタとして使えるという。
・・・結論から言うと、プリンタとの連携設定はうまくいったのだが、印刷しようとしても、プリンタのヘッダはガーと音を出すだけで全く印刷できなかった。しかしプリンタ上は「印刷が正常に完了」というステータスになっている。いろいろ試したが結局解消できなかった。
おそらくRaspberry Piとドライバもしくはプリンタとの相性の問題であり、Raspberry Piプリントサーバ化手順としては問題ないと信じて、調査ログの意味も兼ねて記事にしておく。
以下、参考にした記事。
https://blog.bartbania.com/linux-2/cups-raspberry-printer/?utm_source=feedly
http://deviceplus.jp/hobby/raspberrypi_entry_011/
プリンタとRaspberry Pi を接続する
プリンタの電源を入れて、USBで接続しておく。ちなみに我が家のプリンタはEPSONのPX-403Aという数年前に1万円くらいで買った機種。
Linux用のプリントサーバソフトウェアであるCUPS(カップス)をインストール
apt-getでインストールする
pi@raspberrypi~ $sudo apt-get update pi@raspberrypi~ $sudo apt-get install cups pi@raspberrypi~ $service cups status Status of Common Unix Printing System: cupsd is running.
CUPSが正常にインストールされ、起動していることを確認。
piユーザにlpadminグループを付与
pi@raspberrypi~ $sudo usermod -a -G lpadmin pi
CUPSの設定をする
設定ファイルはここにできているよう
pi@raspberrypi~ $ls /etc/cups/ cups-files.conf cupsd.conf cupsd.conf.default ppd raw.convs raw.types snmp.conf ssl
設定ファイルをいじるので、後の作業はrootユーザで。まずcuspsd.confのバックアップをとっておく。
pi@raspberrypi~ $sudo su - root@raspberrypi:~# cp -p /etc/cups/cupsd.conf /etc/cups/cupsd.conf.org
cupsd.confのListenがlocalhostしか許可しないので、任意のサーバからアクセスできるように変更する。
root@raspberrypi:~# vi /etc/cups/cupsd.conf
変更箇所は
Listen localhost:631
となっているところを以下に直す。
Port 631
続いて、各Locationの設定に、以下の設定を追加する。
Allow @local
変更した結果、以下のようになる。
# # "$Id: cupsd.conf.in 9407 2010-12-09 21:24:51Z mike $" # # Sample configuration file for the CUPS scheduler. See "man cupsd.conf" for a # complete description of this file. # # Log general information in error_log - change "warn" to "debug" # for troubleshooting... LogLevel warn # Deactivate CUPS' internal logrotating, as we provide a better one, especially # LogLevel debug2 gets usable now MaxLogSize 0 # Only listen for connections from the local machine.Port 631 Listen /var/run/cups/cups.sock # Show shared printers on the local network. Browsing On BrowseOrder allow,deny BrowseAllow all BrowseLocalProtocols CUPS dnssd # Default authentication type, when authentication is required... DefaultAuthType Basic # Web interface setting... WebInterface Yes # Restrict access to the server... <Location /> Order allow,denyAllow @local </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny Allow @local </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny Allow @local </Location>
設定変更を反映のため、CUPSを再起動する。
root@raspberrypi:~# service cups restart [ ok] Restarting Common Unix Printing System: cupsd.
MacからCUPSの管理コンソールにログイン
以下のURLからログインできる。
http://[Raspiberry PiのIPアドレス]:631/
ちなみに接続元の/etc/hostsを適当なアドレスにして接続するとエラーになる。
Raspberry Piのhostnameはそのままなのに、クライアント側(Mac)の/etc/hostsだけに以下のような設定を入れて、
[Raspiberry PiのIPアドレス] raspi
URLにhostsで接続しても、「不正なリクエスト」となってしまう。
http://raspi:631/
なので、私の環境の場合はRaspberry PiのIPは192.168.11.11なので以下のようにアクセスするとちゃんと見れる。
http://192.168.11.11:631/
正しく管理画面にログインできた
CUPSにプリンタ追加
CUPSにプリンタを追加する。
プリンターとクラスの追加 > プリンターの追加
EPSONのプリンタがローカルプリンターに検知されているので、選択し「続ける」をクリック
プリンタの名前や場所は適当に入力し、「続ける」をクリック
ドライバを選択する。モデルは「PX-403A」がないので適当に近そうな「PX-404A」を選択し、「プリンターの追加」をクリック
デフォルトオプションを指定し、「デフォルトオプションの設定」をクリック
完了。
これでCUPS側の設定は完了。CUPSからのテストページ印刷で印刷できることを確認する(うちはできませんでした)。
Macでプリンタ設定
Macからネットワークプリンタとして、設定を追加する。
「プリンタとスキャナ」から「+」アイコンをクリック
※以下のEPSON PX-403AはUSBをmacに直接つないだときの設定。
今回はネットワークプリンタとして設定を追加する。
自動でraspberrypiと接続したプリンタが認識されるので、「追加」をクリック
設定できたよう。
追加したプリンタを開き、メニューバーの「プリンタ」から「テストページをプリント」を選択
私の環境では、ここで正しく印刷できなかった。プリンタは印刷ジョブ依頼を検知してヘッダが動く音はするが印刷はされず。CUPS上は完了ステータスになる。CUPS画面上のテストページも試したが同様だった。
普通はここで正しく印刷できるはず。
その後の調査メモ
結局原因分からずだが、いろいろ調査した場所をメモしておく。
デバッグログ確認
/etc/cups/cupsd.conf を編集
LogLevel warn
これを以下に変更する。
LogLevel debug
CUPSを再起動する。
エラーログ確認しつつテストページをプリントする
# less /var/log/cups/error_log
エラーログらしきものは特に出力されておらず、正常終了しているように見える。(まあ、プリントキュー上は「正常に完了」と見えるのだから、きっとCUPSはエラーと思っていないのだろう)
Raspberry Pi の画面からCUPSを使わずに印刷してみる
system-config-printerをインストール
root@raspberrypi:~# apt-get install system-config-printer
画面から「Menu」 > 「設定」 > 「印刷」からプリンタの「テストページの印刷」をやってみる。
やはりドキュメントの印刷ステータスは「完了しました」となり、プリンタは無反応のまま。つまり、CUPSは関係なく印刷ができない。これはもうRaspberry Piとドライバとプリンタの問題っぽい。
まとめ
その後、製品サイトから正しいLinuxドライバを入れて試したりしたが、結局分からず。エラーログとかも出ていないので、きっとプリンタとRaspberry Piの間の問題。CUPSの手順は問題ないと思われるので、今度は別のプリンタで試してみたいと思う。
ということで残念ながら我が家のRaspberry Piプリントサーバ化計画は失敗しました。