avahi-daemon (Apple Bonjour互換) を使ってプリンタ名を広告してやることによって、AirPrint非対応の旧世代プリンタをAirPrint対応にできるらしいので、実験してみた。
そのためには、Linux プリンタサーバ上に、iOS デバイスへプリンタ情報を教えるための avahi 設定が必要になる。
前の記事の内容で、既にUbuntu環境でプリンタの設定はできているものとする。
1. インストール
必要なパッケージをUbuntuデスクトップにインストールする。
desktop$ sudo apt-get install avahi-discover
2. 情報の取得
端末から、avahi-discover コマンドを実行する。標準出力にダンプされる情報を利用するので、ログファイルを取っておく。
desktop$ avahi-discover > log
表示された GUI ウインドウ上で、「Internet Printer」→「EPSON EP-802A @ myserver1」を選択する。その後、×ボタンで GUI を閉じる。
logファイルの内容を確認すると、末尾近くに以下のような行がある。
Host myserver1.local (192.168.100.240), port 631, TXT data: ['printer-type=0xB01E', 'printer-state=3', 'Duplex=T', 'Color=T', 'TLS=1.2', 'UUID=3ae710a1-2d56-928f-4a19-394a152d3eca', 'URF=DM3', 'pdl=application/octet-stream,application/pdf,application/postscript,image/jpeg,image/png,image/urf', 'product=(Epson EP-902A Series)', 'priority=0', 'note=Home', 'adminurl=https://myserver1.local:631/printers/EPSON-EP-802A', 'ty=Epson EP-802A Series - epson-inkjet-printer 1.0.0-1lsb3.2 (Seiko Epson Corporation LSB 3.2)', 'rp=printers/EPSON-EP-802A', 'qtotal=1', 'txtvers=1']
3. 情報ファイルの作成
上記の情報をもとに、avahi のサービス情報ファイルを作成する。
myserver1$ sudo vi /etc/avahi/services/AirPrint-EPSON-EP-802A.service
<?xml version="1.0" standalone='no'?> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">AirPrint EPSON-EP-802A @ %h</name> <service> <type>_ipp._tcp</type> <subtype>_universal._sub._ipp._tcp</subtype> <port>631</port> <txt-record>txtvers=1</txt-record> <txt-record>qtotal=1</txt-record> <txt-record>rp=printers/EPSON-EP-802A</txt-record> <txt-record>ty=Epson EP-802A Series - epson-inkjet-printer 1.0.0-1lsb3.2 (Seiko Epson Corporation LSB 3.2)</txt-record> <txt-record>adminurl=https://myserver1.local:631/printers/EPSON-EP-802A</txt-record> <txt-record>note=Home</txt-record> <txt-record>priority=0</txt-record> <txt-record>product=(Epson EP-902A Series)</txt-record> <txt-record>pdl=application/octet-stream,application/pdf,application/postscript,image/jpeg,image/png,image/urf</txt-record> <txt-record>UUID=3ae710a1-2d56-928f-4a19-394a152d3eca</txt-record> <txt-record>TLS=1.2</txt-record> <txt-record>Color=T</txt-record> <txt-record>Duplex=T</txt-record> <txt-record>printer-state=3</txt-record> <txt-record>printer-type=0xB01E</txt-record> <txt-record>URF=none</txt-record> </service> </service-group>
ファイルができたら、サービスを再起動する。
myserver1$ sudo service avahi-daemon restart myserver1$ sudo service cups restart
設定が終わったら、iOS デバイスのアプリケーション (例えばSafari) からテスト印刷する。「メニューボタン」→「プリント」を選択して、「プリンタ」に「EP-802A」が表示されたら選択して印刷してみる。自分の環境では、きちんと印刷できた。
参考URL: 今日はLinuxのCUPSプリントサーバをAirPrintサーバにして、iPhoneからAirPrintで印刷するとPDFファイルが生成されるようにしてみた