Raspberry piをAirprintサーバ化し WiFi接続のCanonプリンターにiphoneからプリント
2016/12/15, 12/29 追記
スマホ初期からandroidやiphoneを使っている。スマホから印刷するのは、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 に落とす()事が可能な先は、今のところこの2つなので、これはイタイ。
仕方ないので回避策は、Dropboxに落とした後、Acrobat readerで参照して(若しくは読み込んで)から print 。(Acrobat、エラい)が、Apple Inc. のバカさか、無駄に電波/パケットを使っている。(Apple Inc. は、一体、何を考えているのか? (考えすぎているのか、、、。))
以上。
(感想: 比較的簡単なインストールだった。が、最後に落とし穴があった、、、。)