Raspberry piをAirprintサーバ化し WiFi接続のCanonプリンターにiphoneからプリント

Raspberry piをAirprintサーバ化し WiFi接続のCanonプリンターにiphoneからプリント
2016/12/15, 12/29 追記

スマホ初期からandroidiphoneを使っている。スマホから印刷するのは、iphoneからならairprint対応のプリンターが有れば一発。ではあるが、手持ちのプリンターはairprint非対応の Canon MP980 インクジェットプリンター。MP980は、WiFi接続対応でまだまだ現役。airprintのために買い替えるのは考慮外。

因に、これまでのiphoneから印刷は dropboxのようなiphone・パソコン両方からアクセス出来る外部ストレージに一旦移し、パソコンを起動して印刷、の手順を踏んでいた。

airprintサーバをWiFiルータ内に起てられないか、いろいろ試行錯誤したが不成功。さらに追い打ちをかけるように、iOS10ではVPN(pptp接続。WiFiルータのOSに組み込まれている。)が非サポートとなり、外から家庭内lanに接続するには、セキュリティーがより高い IPSEC/L2TP なりに移行しなければならなくなった。これらを解決すべく、最後の手段としてraspberry piを導入する事とした。

この備忘録は、airprintサーバ化とCanonプリンタへのWiFiプリントについて。VPN(L2TP)については別途で。

まず、家庭内lanの状態について。

外界との接続(gateway):光ファイバールータ。このルータを家庭内全体のDHCPサーバとする。WAN IPアドレスは、WiFiルータ(DD-WRT)のDDNSで自動アップデート(この備忘録もまだかいていない、、、な。)

WiFi無線アクセスポイント(ap):WiFiルータを、gatewayルータに固定IPでethernet接続。OSはDD-WRTを導入(この備忘録もまだ書いていなかった、、、)。WiFiルータのDHCPはオフ。家庭内のWiFi無線機器は、全てこのアクセスポイントで賄う。

プリンター: Canon inkjet printer MP980。WiFiにて上記 WiFiアクセスポイントに接続。

上記に、今回、raspberry pi 3 model B (OSはraspbian jessie)を導入。WiFiでも接続出来るが、速度を考えると ethernetに接続。固定IPで。

以下は、プリンタドライバ(cups)と、WiFi接続Canonプリンタの追加(cups-backend-bjnp)、とairprintサーバ化(share printer)の手順。

全て sshにて raspberry piにログインし、コマンドラインで作業する。コマンドは ">"記号の後ろ部分。また、editorはviを使用する(と言うことは、viの使い方を要勉強。)


1. プリンタドライバ(cups)のインストール

まず、インストール可能ソフトの最新版リストへのアップデート。

> sudo apt update

cupsのインストール。

> sudo apt install cups

cupsd.confの編集。オリジナル版は.originalとして保存。

> cd /etc/cups
> sudo cp cupsd.conf cupsd.conf.original
> sudo vi cupsd.conf

以下のように各行を編集する。

==========
Listen *:631

<Location />
  Order allow,deny
  Allow @LOCAL
</Location>

<Location /admin>
  Order allow,deny
  Allow @LOCAL
</Location>
==========


2. WiFi接続Canon printerの追加

ユーザ pi を追加。

> sudo usermod -aG lpadmin pi

cups-backend-bjnpのインストール。

> sudo apt install cups-backend-bjnp
> sudo service cups restart

家庭内lanに繋がるパソコン(iphoneでも良い)上で web ブラウザーを起動し、raspberry pi (IPアドレス: xxx.xxx.xxx.xxx)を以下のURLでアクセスし、プリンタを追加する。

https://xxx.xxx.xxx.xxx:631/
プリンタを追加
bjnp:....のプリンタを選択


3. airprintサーバ化(Share printer)

airprintサーバ化に必要な avahi、dbusはraspbian jessiに組み込まれ、既に動作している。
airprintサーバ化は、cups上でプリンターシェアをオンすることで完結。

https://xxx.xxx.xxx.xxx:631/
CUPS 「管理」で、「このシステムに接続されているプリンタを共有」をチェック。

4. iphone上で、プリンターにCanonプリンタが表示されるか確認する。


12/29 追記

iPhoneから pdf ファイルをプリントしてみると、airprint 出来ないケースがある、、、。短時間の経験だが、

可能: Acrobat reader, Remote File Manager Free, ...
不可: iBooks, Dropbox, ...

iBooks, Dropbox からは、cups/ghostscriptとの color space handlingの問題か(?)、 プリントエラーになる。Safari で気に入ったページを pdf に落とす(イメージ 1)事が可能な先は、今のところこの2つなので、これはイタイ。

仕方ないので回避策は、Dropboxに落とした後、Acrobat readerで参照して(若しくは読み込んで)から print 。(Acrobat、エラい)が、Apple Inc. のバカさか、無駄に電波/パケットを使っている。(Apple Inc. は、一体、何を考えているのか? (考えすぎているのか、、、。))

以上。

(感想: 比較的簡単なインストールだった。が、最後に落とし穴があった、、、。)