<div dir="ltr">Hello All,<div><br></div><div>I have a couple of &quot;simple&quot; follow-up questions on IPP USB (IPP-over-USB) &quot;Host device&quot; support:<br><br>Is IPP USB designed to support connecting and printing from a device like a tablet or smartphone (e.g., iPad, iPhone, Etc.) directly connected to a printer over USB? If the answer is yes - is there any device that currently supports this? I imagine a special cable or converter would be needed?</div>
<div><br></div><div>Or is IPP USB designed only for Hosts like Linux or Mac acting as print servers/gateways for these, and other, devices?<br><br>Thanks,</div><div><br></div><div>Carlos</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Thu, Feb 27, 2014 at 11:29 AM, Michael Sweet <span dir="ltr">&lt;<a href="mailto:msweet@apple.com" target="_blank">msweet@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">Carlos,<div><br></div><div>Any Mac running OS X 10.9 supports IPP USB; note that we have a bunch of pending bug fixes (sorry, can&#39;t say when the fixes will be released...) that address issues found in testing with multiple vendors&#39; implementations of IPP USB, but the current 10.9.2 will work with all of the HP printers mentioned below.</div>
<div><div class="h5"><div><br></div><div><br></div><div><div><div>On Feb 27, 2014, at 2:23 PM, Carlos Rimola &lt;<a href="mailto:crimola@gmail.com" target="_blank">crimola@gmail.com</a>&gt; wrote:</div><br><blockquote type="cite">
<div dir="ltr">Michael,<div><br></div><div>Thanks for the comprehensive response to my questions on IPP USB and confirming my assumptions. </div><div><br></div><div>The only remaining question I have for the list at this time is - are there any Hosts, including model, OS and OS version (or other S/W requirements), presently available on the market (or otherwise) which support IPP USB as per the Specification?</div>

<div><br></div><div>Thanks again,</div><div><br></div><div>Carlos Rimola</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Feb 27, 2014 at 7:37 AM, Michael Sweet <span dir="ltr">&lt;<a href="mailto:msweet@apple.com" target="_blank">msweet@apple.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Carlos,<div><br><div><div><div>On Feb 26, 2014, at 9:33 PM, Carlos Rimola &lt;<a href="mailto:crimola@gmail.com" target="_blank">crimola@gmail.com</a>&gt; wrote:</div>

<blockquote type="cite"><div dir="ltr">Hi All,<div><br></div><div>I have some quick and general questions regarding IPP over USB (&quot;IPP USB&quot; for short). Some are related to Till&#39;s proposed project &quot;<font face="arial, helvetica, sans-serif">Google Summer of Code 2014 - IPP-over-USB printer support</font>&quot;. Any help and feedback will be greatly welcomed. I should mention that I am in favor of the proposed project for this event.</div>


<div><br></div><div><p style="font-family:arial,sans-serif;font-size:13px">Assumptions (please confirm or correct):</p><p style="font-family:arial,sans-serif;font-size:13px">1) This first one may be obvious but to be sure - I am assuming that we are referring to IPP USB as defined in the &quot;USB Print Interface Class IPP Protocol Specification Revision 1.0&quot; dated 12/5/2012 and published by USB-IF and authored by HP&#39;s Smith Kennedy and Andrew R. Mitchell. I&#39;ll refer to it as the &quot;IPP USB Spec&quot;.</p>

</div></div></blockquote></div>Correct.</div><div><div><blockquote type="cite"><div dir="ltr"><p style="font-family:arial,sans-serif;font-size:13px">2) As I understand the IPP USB Spec, there is NO network interface, NOR TCP/IP involved. The Communication Protocol to be used between Host and Device (Printer) is <i>purely HTTP + IPP directly over USB</i>. A place where this is noted is section 6.2 - &quot;HTTP Headers&quot; which states the following:</p>
<p style="font-family:arial,sans-serif;font-size:13px"><i>Since there is NO network interface connection, NO DNS hostnames or IP addresses, and NO TCP port numbers associated with USB connection, the requirements of the HTTP Host field is addressed by requiring that the value of this header MUST be &quot;localhost&quot;.</i></p>
<p style="font-family:arial,sans-serif;font-size:13px">Please correct me if I am wrong on either of these assumptions.<br></p></div></blockquote><div><br></div></div>Correct (a port number can be passed by the &quot;client&quot; over USB to allow gateways/proxies to work...)</div>

<div><div><blockquote type="cite"><div dir="ltr"><p style="font-family:arial,sans-serif;font-size:13px">Questions:</p><p style="font-family:arial,sans-serif;font-size:13px">1) I know the Spec is already cast in stone but I would like to understand what function HTTP serves and if it is only used for identifying &quot;Host: localhost&quot; and the &quot;/ipp/printer&quot; path? In other words, could pure IPP Requests/Responses and IPP expected format &quot;Print Data&quot; have sufficed?<br>

</p></div></blockquote></div><div>While you might get away with that for simple IPP messages, that wouldn&#39;t work for document data since IPP by itself has no framing or other niceties - you&#39;d never know when the data ended.</div>

<div><br></div><div>Also, the HTTP portion is used for the embedded web server, doing firmware updates, and so forth.</div><div><blockquote type="cite"><div dir="ltr"><div style="font-family:arial,sans-serif;font-size:13px">


<br></div><p><font face="arial, sans-serif" style="font-size:13px"> 2) Section 3.2 &quot;Interface Set&quot; paragraph 2 states that &quot;</font><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">All</span><span style="font-size:small;font-family:arial"> IPP USB</span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt"> capable</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">Print</span><span style="font-size:small;font-family:arial">
class</span><span style="font-size:small;font-family:arial;letter-spacing:0.1pt"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">interfaces provided</span><span style="font-size:small;font-family:arial"> by</span><span style="font-size:small;font-family:arial;letter-spacing:-0.15pt"> </span><span style="font-size:small;font-family:arial">a</span><span style="font-size:small;font-family:arial;letter-spacing:0.05pt"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">device</span><span style="font-size:small;font-family:arial;letter-spacing:0.15pt"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">MUST</span><span style="font-size:small;font-family:arial">
be</span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt"> functionally</span><span style="font-size:small;font-family:arial;letter-spacing:3.65pt"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">equal</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">from</span><span style="font-size:small;font-family:arial;letter-spacing:0.05pt"> </span><span style="font-size:small;font-family:arial">an</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial">IPP</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">operation</span><span style="font-size:small;font-family:arial">
or </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">HTTP</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">perspective.</span><span style="font-size:small;font-family:arial">  </span><span style="font-size:small;font-family:arial">In </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">other</span><span style="font-size:small;font-family:arial">
</span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">words,</span><span style="font-size:small;font-family:arial;letter-spacing:0.2pt"> </span><span style="font-size:small;font-family:arial">any</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial">IPP </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">operation</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt">
</span><span style="font-size:small;font-family:arial">or</span><span style="font-size:small;font-family:arial;letter-spacing:3.05pt"> </span><span style="font-size:small;font-family:arial">resource</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial">path </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">that</span><span style="font-size:small;font-family:arial">
is </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">valid</span><span style="font-size:small;font-family:arial"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">over</span><span style="font-size:small;font-family:arial"> one</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial">IPP</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial">USB</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">interface</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt">
</span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">MUST</span><span style="font-size:small;font-family:arial;letter-spacing:0.25pt"> </span><span style="font-size:small;font-family:arial">be</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt"> </span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">reachable</span><span style="font-size:small;font-family:arial;letter-spacing:-0.1pt">
</span><span style="font-size:small;font-family:arial;letter-spacing:-0.05pt">via</span><span style="font-size:small;font-family:arial"> any and </span><font face="arial, helvetica, sans-serif">all<span style="letter-spacing:-0.05pt"> of</span><span style="letter-spacing:0.1pt"> </span><span style="letter-spacing:-0.05pt">the</span>
<span style="letter-spacing:-0.05pt">IPP</span> <span style="letter-spacing:-0.05pt">USB</span> interfaces.&quot;</font></p><p><font face="arial, helvetica, sans-serif">Does this imply that, for example, a Request from the host can be sent over one interface (I/F #1) and the response received over a different interface (e.g., I/F #2)?</font></p>

</div></blockquote></div>No, each interface is an independent channel to the printer.</div><div><br></div><div>The reason for this requirement is to prevent having an IPP USB endpoint just for printing, and another just for scanning, and so forth.  Effectively IPP USB defines an interface protocol that allows arbitrary HTTP and IPP requests to be performed.</div>

<div><div><blockquote type="cite"><div dir="ltr"><p style="font-family:arial,sans-serif;font-size:13px">3) The last question is much simpler but would be helpful to an implementor - what specific printers (manufacturer, line and model) <i>on the market</i> support IPP USB? I have seen references to HP Photosmart and OfficeJet but no model given. Similarly, what Host(s) on the market, including OS and version, support the IPP USB protocol with these Printers?</p>

</div></blockquote></div>Here is the latest list we have from HP:</div><div><br></div><div><span style="font-family:Menlo-Regular">    Deskjet 3520</span><br style="font-family:Menlo-Regular"><span style="font-family:Menlo-Regular">    Envy 120</span><br style="font-family:Menlo-Regular">

<span style="font-family:Menlo-Regular">    Envy 4500</span><br style="font-family:Menlo-Regular"><span style="font-family:Menlo-Regular">    Envy 5530</span><br style="font-family:Menlo-Regular"><span style="font-family:Menlo-Regular">    Officejet 3620</span><br style="font-family:Menlo-Regular">

<div><span style="font-family:Menlo-Regular">    Officejet 4630</span><br style="font-family:Menlo-Regular"></div><span style="font-family:Menlo-Regular"></span><span style="font-family:Menlo-Regular">    Officejet 7610</span><br style="font-family:Menlo-Regular">

<div><span style="font-family:Menlo-Regular">    Officejet Pro 276 MFP</span></div><div><span style="font-family:Menlo-Regular">    Officejet Pro X576 dw</span><br style="font-family:Menlo-Regular"></div><div><span style="font-family:Menlo-Regular">    Photosmart 5520</span></div>

<span style="font-family:Menlo-Regular">    Photosmart 6520</span><br style="font-family:Menlo-Regular"><span style="font-family:Menlo-Regular">    Photosmart 7520</span><br style="font-family:Menlo-Regular"></div><div><br>

</div><div>I know of four other manufacturers that either have shipping products or will soon be shipping - will post here when I can do so publicly...</div><div><br><div>
<span style="border-collapse:separate;font-family:&#39;Andale Mono&#39;;border-spacing:0px"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;white-space:normal;font-family:&#39;Andale Mono&#39;;word-spacing:0px"><div style="word-wrap:break-word">

_________________________________________________________<br>Michael Sweet, Senior Printing System Engineer, PWG Chair</div></span></span>
</div>
<br></div></div></div></blockquote></div><br></div>
</blockquote></div><br><div>
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;white-space:normal;font-family:&#39;Andale Mono&#39;;word-spacing:0px"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;white-space:normal;font-family:&#39;Andale Mono&#39;;word-spacing:0px"><div style="word-wrap:break-word">
_________________________________________________________<br>Michael Sweet, Senior Printing System Engineer, PWG Chair</div></span></span>
</div>
<br></div></div></div></div></blockquote></div><br></div>