¿Cómo recopila Mac la información de la impresora (principalmente el controlador) después de seleccionar una impresora en la lista de impresoras para agregar?

Cuando queremos agregar una impresora a mac, vamos a "Impresoras y escáneres" en las preferencias del sistema. Allí damos clic en el botón “+” y damos clic en “Agregar Impresora o Escáner”. En el nuevo cuadro de diálogo con el título "Agregar", vemos una lista de impresoras.

Cuando seleccionamos una de las impresoras: impresora-x, vemos el estado: "Recopilando información de la impresora...". Y su controlador se selecciona automáticamente. ¿Cómo recopila Mac la información de la impresora? ¿Qué es todo este proceso de agregar una impresora en detalles? ¿Hay algún tutorial/artículo que pueda ayudar? He intentado la búsqueda de Google, no pude encontrar algo de buen interés todavía.

Quiero depurar una situación en la que Mac elige un controlador para una impresora en algún momento y, a veces, no lo hace (para la misma impresora). Controlador esperado para ver que hay AirPrint. La impresora se está agregando desde un servidor de impresión. Entonces, quiero echar un vistazo a lo que está sucediendo en el fondo.

Respuestas (2)

Después de mirar cuidadosamente el DNSCache y la red:

Más detalles en dns-sd.org sin embargo, en resumen, para que todo funcione correctamente, se necesitan los siguientes cuatro registros DNS para cada impresora en el lado del cliente en caso de airprint/secure airprint:

  • Registro PTR de tipo _universal._sub._ipp/ipps._tcp (llamémoslo universal): necesario solo si la impresora es compatible con airprint (ver dns-sd.org)

  • Registro PTR de tipo _ipp/ipps._tcp (vamos a llamarlo ipps)

  • registro SRV

  • registro de texto

El registro SRV informa sobre los datos relacionados con el servicio (servidor/puerto, etc.) y el registro TXT informa sobre las capacidades de la impresora.

En Mac, los registros "ipps" y "universal" son consultados por diferentes procesos (printtool y PKBrowserServic respectivamente). De la observación: Las consultas de registros "universales" por PKBrowserServic son más frecuentes que las consultas de registros "ipps" por printtool. Entonces, en un escenario: tiene registros universales pero no ipps, no identificará al conductor.

Para responder a la pregunta original: cuando se selecciona una impresora, consulta los registros SRV y TXT (según los registros universales o ipps que ya están en caché, así es como vemos la impresora en la lista). Si la impresora/servidor de impresión no está disponible o si falta el registro de ipps, mac no podrá realizar la 'Selección automática' para el controlador.

Este problema se puede solucionar en multidifusión mediante la autoconsulta tanto universal como ipps antes de que caduque el TTL de los registros para que se actualicen los cachés de todos los clientes Mac.

En el caso de unidifusión, mac tiene un TTL alto de registros universales/ipps, por lo que podría tomar algún tiempo para que el registro de ipps se actualice en el caché en una red nueva, pero en pocos minutos (máximo 10 minutos desde la observación), tiene ambos ipps y universal y el problema ya no existe. Otra forma de manejarlo rápidamente es borrar el caché (sierra: killall -HUP mDNSResponder)

Si la impresora es compatible con IPP o IPPS (el Protocolo de impresión de Internet ), macOS envía una consulta IPP al dispositivo de impresión para solicitar todas las funciones que admite.

Según la respuesta del dispositivo, configura la cola de impresión (mediante la generación automática de un archivo PPD, descripción de impresora PostScript ) para que las opciones de trabajo disponibles se enumeren en la interfaz de usuario del cuadro de diálogo de impresión.

Puede simular esta consulta y ver las respectivas respuestas de las impresoras con la ayuda de dos programas de línea de comandos que puede iniciar desde la terminal: ippfindy ipptool.

Primer intentoippfind

ippfind [ENTER]

Esto devolverá una lista de todos los dispositivos de impresión compatibles con IPP (o colas de impresión CUPS compartidas) en la LAN y WLAN a las que está conectado. La lista incluirá el URI del dispositivo IPP que se puede usar para dirigirse al dispositivo de impresión.

Segundo, correipptool

Ahora puede usar el URI del dispositivo IPP que se encuentra en el paso anterior para enviar una consulta Get-Printer-Attributes al dispositivo de impresión o a la cola de impresión:

ipptool -t -v                 \
    <IPP-DEVICE-URI>          \
    get-printer-attributes.test

Ahora puede ver la respuesta a la consulta en su terminal.