모프리아와 DNS-SD

모프리아와 DNS-SD

Android 4.4 키트의 출현으로 Google은 이제 내장된 인쇄 기능의 일부 형태를 기본적으로 지원합니다.

이는 현재 많은 프린터가 Mopria를 지원한다는 것을 의미합니다.

IOS의 Airprint와 마찬가지로 Mopria는 프린터를 감지하기 위한 멀티캐스트 DNS와 실제로 인쇄하기 위한 IPP 2.0에 지나지 않습니다. 물론 MDNS는 휴대폰이나 태블릿이 프린터와 동일한 서브넷에 있는 경우에만 작동합니다.

그러나 Airprint에서는 프린터를 가리키는 DNS-SD 레코드를 생성할 수 있으므로 IOS 장치가 여러 서브넷에 걸쳐 장치를 나열하도록 할 수 있습니다.

Mopria에도 이 방법이 있나요?

답변1

Android용 프린터를 발표하려면Mopria 인쇄 서비스Bonjour를 통해 사용:

  • 봉쥬르 서비스 유형: _ipp._tcp
  • txt-record pdl: 이러한 pdl 중 하나 이상
    • 이미지/pwg-래스터
    • 애플리케이션/PCLm
    • 신청서/PDF
  • txt-record ty: 반드시 존재해야 합니다. 예:CUPS
  • txt-record rp: 적절한 IPP-URI-경로(cups-printer-name)

(코드 전문가는 다음을 살펴볼 수 있습니다.mopria/wfds 자바 소스 코드)

개념의 증거:

(Mac OS X)을 사용하여 dns-sd원격 인쇄 서비스를 광고합니다(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 장치는 이제 내 라즈베리 파이에 USB로 연결된 내 CUPS 프린터로 PDF를 인쇄할 수 있습니다.

문제 1:

Mopria-Discovery는 호스트당 두 개 이상의 프린터를 처리할 수 없습니다. "하드웨어 프린터"의 경우 IP/호스트당 하나의 "큐"를 가정하는 것이 합리적입니다. CUPS와 같은 인쇄 스풀러의 경우 심각한 문제에 직면하게 됩니다.

맥 OS X: 전용하나Mopria-Print-Service에서 공유 프린터를 검색하고 사용할 수 있습니다.

문제 2:

어떤 이유로 cup-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의 봉쥬르 광고를 비활성화해야 합니다.

파일: /etc/cupsd.conf

Browsing Off  
#BrowseOrder allow,deny  
#BrowseAllow all  
#BrowseLocalProtocols CUPS dnssd

관련 정보