Mopria 和 DNS-SD

Mopria 和 DNS-SD

隨著 Android 4.4 Kit 的出現,Google 現在原生支援某種形式的內建列印功能。

這意味著許多印表機現在都支援 Mopria。

就像 IOS 上的 Airprint 一樣,Mopria 只不過是用來偵測印表機和 IPP 2.0 進行實際列印的多播 DNS。當然,MDNS 僅當手機或平板電腦與印表機位於同一子網路時才起作用。

但是,在 Airprint 上,我們可以建立指向印表機的 DNS-SD 記錄,因此可以讓 IOS 設備列出不同子網路中的裝置。

Mopria 也有辦法做到這一點嗎?

答案1

宣布推出適用於 Android 的印表機Mopria 列印服務透過 Bonjour 使用:

  • bonjour 服務類型:_ipp._tcp
  • txt-record pdl:這些 pdl 中的一個或多個
    • 影像/pwg-光柵
    • 應用/PCLm
    • 申請/pdf
  • txt記錄ty:必須存在,例如CUPS
  • txt-記錄 rp:對應的 IPP-URI-路徑(cups-印表機-名稱)

(程式碼極客可能會研究mopria/wfds java 原始碼

概念證明:

使用dns-sd(Mac OS X) 宣傳遠端列印服務(在 rasperry pi / cups 上):

dns-sd -P "mopria" _ipp._tcp local 631 pi 192.168.2.118 \
        rp=printers/colorlaser \
        pdl=application/pdf \
        ty=CUPS

我的 Android 裝置現在可以將 PDF 列印到我的 CUPS 印表機,該印表機透過 USB 連接到我的樹莓派。

問題一:

Mopria-Discovery 無法在每台主機上處理兩台或更多印表機。就「硬體印表機」而言,假設每個 IP/主機有一個「佇列」是合理的。對於像 CUPS 這樣的列印假脫機程序,您將面臨嚴重的問題。

Mac OS X:僅限Mopria-Print-Service 可以發現並使用共用印表機

問題2:

由於某些原因,我無法使用 avahi 來使 cups-ipp-service 對 Android 的 Mopria-Print-Service 可見。

這應該但確實不是為我工作:

<?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

相關內容