Mopria и DNS-SD

Mopria и DNS-SD

С появлением Android 4.4 Kit компания Google теперь изначально поддерживает некоторые встроенные функции печати.

Это означает, что многие принтеры теперь поддерживают Mopria.

Как и Airprint на IOS, Mopria — это не более чем многоадресный DNS для обнаружения принтера и IPP 2.0 для фактической печати. ​​Конечно, MDNS будет работать только тогда, когда телефон или планшет находится в той же подсети, что и принтер.

Однако в Airprint мы можем создавать записи DNS-SD, указывающие на принтеры, и, следовательно, устройства IOS могут выводить список устройств в разных подсетях.

Есть ли способ сделать то же самое с Моприей?

решение1

Анонсировать принтер для AndroidMopria-Print-Serviceчерез Bonjour используйте:

  • bonjour-service-type: _ipp._tcp
  • txt-record pdl: один или несколько из этих pdl
    • изображение/pwg-растр
    • приложение/PCLm
    • приложение/pdf
  • txt-запись ty: должна существовать, напримерCUPS
  • txt-record rp: соответствующий IPP-URI-Path (cups-printer-name)

(любители кода могут рассмотретьисходный код java mopria/wfds)

Доказательство концепции:

используйте 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 к моему Raspberry Pi.

Проблема 1:

Mopria-Discovery не может обрабатывать два или более принтеров на хост. В терминах «аппаратных принтеров» разумно предположить одну «очередь» на IP/хост. В терминах спулеров печати, таких как CUPS, вы столкнетесь с серьезными проблемами.

Mac OS X: толькоодинОбщий принтер может быть обнаружен и использован службой Mopria-Print-Service

Проблема 2:

По какой-то причине я не могу использовать avahi, чтобы сделать cups-ipp-service видимым для Mopria-Print-Service Android.

Это должно, но не делаетнетработа на меня:

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

Mopria путается, когда слишком много ответчиков mDNS. Для тестов Avahi вам следует отключить рекламу bonjour от CUPS.

Файл: /etc/cupsd.conf

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

Связанный контент