istopwg / ippeveselfcert

IPP Everywhere Printer Self-Certification Tools
https://www.pwg.org/ipp/everywhere.html
Apache License 2.0
21 stars 6 forks source link

ippfind can't detect Xerox WorkCentre 3025BI printer #100

Open pravorskyi opened 10 months ago

pravorskyi commented 10 months ago

Hello! I executed the script ./dnssd-tests.sh but it failed to detect the Xerox WorkCentre 3025BI printer. Output:

For debugging, I executed it with the command bash -x:

bash -x ./dnssd-tests.sh XRX9C934EFA5A2B
+ test 1 -lt 1
+ TARGET=XRX9C934EFA5A2B
+ test -x ../tools/ippfind
+ test -x ./ippfind
+ IPPFIND=./ippfind
+ test -x ../tools/ipptool
+ test -x ./ipptool
+ IPPTOOL=./ipptool
+ test -f ''
+ PLIST='XRX9C934EFA5A2B DNS-SD Results.plist'
+ echo 'testing\c'
+ echo 1,2,3
+ grep c
+ ac_n=-n
+ ac_c=
+ test '' = _fail2 -o '' = _fail4 -o '' = _fail4.1 -o '' = _fail5.3 -o '' = _fail5.5 -o '' = _fail5.5.1
+ cat
+ total=0
+ pass=0
+ fail=0
+ skip=0
+ start_test 'B-1. IPP Browse test'
++ expr 0 + 1
+ total=1
+ echo -n 'B-1. IPP Browse test: '
B-1. IPP Browse test: + echo '<dict><key>Name</key><string>B-1. IPP Browse test</string>'
+ echo '<key>FileId</key><string>org.pwg.ippeveselfcert11.dnssd</string>'
+ ./ippfind --literal-name XRX9C934EFA5A2B _ipp._tcp,_print.local. --quiet -T 5
+ test 1 = 0
++ expr 0 + 1
+ fail=1
+ end_test FAIL
+ echo FAIL
FAIL

It appears that the command ./ippfind --literal-name XRX9C934EFA5A2B _ipp._tcp,_print.local. --quiet -T 5 is unable to locate the printer.

Similarly, the command ./ippfind _ipp._tcp,_print.local. -T 5 also produces no output.

However, using ippfind without any flags successfully detects it:

./ippfind 
ipp://XRX9C934EFA5A2B.local:631/ipp/print

Note that the output lacks the ._ipp._tcp.local component.

Here is the output from the driverless command:

driverless
ipp://Xerox%20WorkCentre%203025%20(XRX9C934EFA5A2B)._ipp._tcp.local/

I would greatly appreciate any help or suggestions regarding this issue.

wifiprintguy commented 10 months ago

If you look closely, you will see that the commands failing to find your printer are looking for the IPP Everywhere "_print" subtype of the IPP type ("_ipp._tcp") in the domain ".local.": "_ipp._tcp,_print.local.".

Specifying this subtype in the parameter to ippfind will cause ippfind to search only for IPP Everywhere printers, not all IPP printers. Any printer supporting the subtype will respond. (DNS-SD subtypes are discussed in RFC 6763 section 7.1 - https://www.rfc-editor.org/rfc/rfc6763#section-7.1).

Either the printer isn't claiming to be capable of IPP Everywhere certification conformance, or its IPP Everywhere "capability" has been disabled somehow in firmware. If Xerox were to certify this printer, it would need to have its firmware advertise its IPP Everywhere capability using the "_print" subtype.