Mopria と DNS-SD

Mopria と DNS-SD

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

関連情報