
Android 4.4 キットの登場により、Google は何らかの組み込み印刷機能をネイティブにサポートするようになりました。
つまり、多くのプリンターが Mopria をサポートするようになりました。
IOS の Airprint と同様に、Mopria はプリンターを検出するためのマルチキャスト DNS と、実際に印刷するための IPP 2.0 にすぎません。もちろん、MDNS は電話またはタブレットがプリンターと同じサブネット上にある場合にのみ機能します。
ただし、Airprint では、プリンターを指す DNS-SD レコードを作成できるため、IOS デバイスは異なるサブネットにわたるデバイスをリストできます。
Mopria でも同様の方法はありますか?
答え1
Android用プリンターを発表Mopria プリントサービスBonjour 経由で使用:
- bonjour サービス タイプ: _ipp._tcp
- txt-record pdl: これらの pdl の 1 つ以上
- 画像/pwg-ラスター
- アプリケーション/PCLm
- アプリケーション/pdf
- txt-record ty: 存在する必要があります。例:
CUPS
- txt-record rp: 適切な IPP-URI-Path (cups-printer-name)
(コードオタクはmopria/wfds Java ソースコード)
コンセプトの証明:
dns-sd
リモート印刷サービス(rasperry pi / cups 上)をアドバタイズするには、(Mac OS X)を使用します。
dns-sd -P "mopria" _ipp._tcp local 631 pi 192.168.2.118 \
rp=printers/colorlaser \
pdl=application/pdf \
ty=CUPS
Android デバイスから、Raspberry Pi に USB 接続されている CUPS プリンターに PDF を印刷できるようになりました。
問題 1:
Mopria-Discovery は、ホストごとに 2 台以上のプリンタを処理できません。 「ハードウェア プリンタ」に関しては、IP/ホストごとに 1 つの「キュー」を想定するのが妥当です。 CUPS などの印刷スプーラに関しては、深刻な問題に直面することになります。
Mac OS X: のみ1つ共有プリンタはMopria-Print-Serviceによって検出され、使用されることができます
問題2:
何らかの理由で、cups-ipp-service を Android の Mopria-Print-Service に表示するために avahi を使用することができません。
これはそうであるべきであるが、ない私のために働く:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name>mopria</name>
<service>
<type>_ipp._tcp</type>
<port>631</port>
<txt-record>txtvers=1</txt-record>
<txt-record>qtotal=1</txt-record>
<txt-record>rp=printers/colorlaser</txt-record>
<txt-record>pdl=application/pdf</txt-record>
<txt-record>ty=CUPS</txt-record>
</service>
</service-group>
問題3:
mDNS レスポンダーが多すぎると、Mopria は混乱します。Avahi テストでは、CUPS の Bonjour アドバタイジングを無効にする必要があります。
ファイル: /etc/cupsd.conf
Browsing Off
#BrowseOrder allow,deny
#BrowseAllow all
#BrowseLocalProtocols CUPS dnssd