In che modo Mac raccoglie informazioni sulla stampante (principalmente driver) dopo che una stampante è stata selezionata nell'elenco delle stampanti da aggiungere?

2

Quando vogliamo aggiungere una stampante a mac, andiamo a "Stampanti e scanner" nelle preferenze di sistema. Qui clicchiamo sul pulsante "+" e clicchiamo su "Aggiungi stampante o scanner". Nella nuova finestra di dialogo con il titolo "Aggiungi", viene visualizzato un elenco di stampanti.

Quando selezioniamo una delle stampanti: printer-x, vediamo lo stato: "Raccolta di informazioni sulla stampante ...". E il suo driver è selezionato automaticamente. In che modo Mac raccoglie informazioni sulla stampante? Qual è l'intero processo di aggiunta di una stampante nei dettagli? C'è qualche tutorial / articolo che può aiutare? Ho provato la ricerca su google, non ho trovato ancora qualcosa di interessante.

Voglio eseguire il debug di una situazione in cui Mac sceglie driver per una stampante a volte e talvolta non lo fa (per la stessa stampante). Il driver previsto per vedere c'è AirPrint. La stampante viene aggiunta da un server di stampa. Quindi, voglio dare un'occhiata a ciò che sta accadendo in background.

    
posta Kumar Gaurav 11.02.2017 - 08:27
fonte

2 risposte

2

Dopo aver attentamente esaminato DNSCache e la rete:

Maggiori dettagli su dns-sd.org tuttavia, in breve, affinché tutto funzioni correttamente, sono necessari quattro record DNS per ogni stampante sul lato client in caso di airprint / airprint sicuro:

  • Record PTR di tipo _universal._sub._ipp / ipps._tcp (consente di chiamarlo universale): necessario solo se la stampante è compatibile con airprint (vedere dns-sd.org)

  • Record PTR di tipo _ipp / ipps._tcp (consente di chiamarlo ipps)

  • Record SRV

  • Record TXT

Il record SRV indica i dati relativi al servizio (server / porta ecc.) e il record TXT indica le funzionalità della stampante.

Su Mac, i record "ipps" e "universal" vengono interrogati da processi diversi (printtool e PKBrowserServic rispettivamente). Dall'osservazione: le query di record "universali" da parte di PKBrowserServic sono più frequenti delle query dei record "ipps" di printtool. Quindi, in uno scenario: ha record universali ma non ipps, non identificherà il driver.

Per rispondere alla domanda originale: quando viene selezionata una stampante, interroga i record SRV e TXT (in base ai record universali o ipps già presenti nella cache, ecco come vediamo la stampante nell'elenco). Se la stampante / server di stampa non è disponibile o se il record di ipps è mancante, mac non sarà in grado di eseguire la "selezione automatica" per il driver.

Questo problema può essere risolto in multicast eseguendo l'interrogazione automatica di Universal e ipp prima che il TTL dei record scada, in modo che le cache di tutti i client mac vengano aggiornate.

In caso di unicast, mac ha un elevato TTL di record universali / ipps, quindi potrebbe volerci del tempo perché il record di ipps sia aggiornato nella cache in una nuova rete ma in pochi minuti (max 10 minuti dall'osservazione), ha entrambi ipps e universale e il problema non esiste più. Un altro modo per gestirlo rapidamente è cancellare la cache (sierra: killall -HUP mDNSResponder)

    
risposta data 11.03.2017 - 05:02
fonte
0

Se la stampante supporta IPP o IPPS (il Internet Printing Protocol ), macOS invia una query IPP al dispositivo di stampa per richiedere tutte le funzionalità supportate.

In base alla risposta del dispositivo, imposta la coda di stampa (auto-generando un file PPD, Descrizione stampante PostScript ) in modo che le opzioni di lavoro disponibili siano elencate nell'interfaccia utente della stampa finestra di dialogo.

Puoi simulare questa query e vedere le rispettive risposte da parte delle stampanti con l'aiuto di due programmi a riga di comando che puoi avviare dal terminale: ippfind e < strong> ipptool .

Innanzitutto, esegui ippfind

ippfind [ENTER]

Ciò restituirà un elenco di tutti i dispositivi di stampa compatibili con IPP (o code di stampa CUPS condivise) nella LAN e WLAN a cui si è connessi. L'elenco includerà URI del dispositivo IPP che può essere utilizzato per indirizzare il dispositivo di stampa.

Secondo, esegui ipptool

Ora puoi utilizzare l'URI del dispositivo IPP trovato nel passaggio precedente per inviare una query Get-Printer-Attributes al dispositivo di stampa o alla coda di stampa:

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

Ora puoi vedere la risposta per la query sul tuo terminale.

    
risposta data 24.12.2018 - 00:15
fonte

Leggi altre domande sui tag